Forum: Mikrocontroller und Digitale Elektronik Digitale Wasserwaage mit Arduino / Embedded


von Mike L. (loug)


Lesenswert?

Hallo zusammen,

ich würde gerne ein eigentlich simples Projekt umsetzen:

Eine digitale Wasserwaage, welche je nach Winkel LEDs in rot, gelb und 
grün ansteuert.

Es werden also nur drei Ausgänge benötigt + Neigungssensor.

Ich suche nach einem uC/Arduino welcher einerseits möglichst kompakt 
ist, alles benötigte an Board hat und für eine Embedded-Version leicht 
adaptierbar ist.
Mit leicht adaptierbar meine ich, dass Bauteile vorhanden sind, welche 
ich später bei einer Platinen-Eigenentwicklung übernehmen kann, oder das 
ganze Modul entsprechend schon so verwendbar ist.

Habt ihr da Empfehlungen für mich?

Vielen Dank!

: Bearbeitet durch User
von Helmut -. (dc3yc)


Lesenswert?

Wie schaffst du so ein kompliziertes Projekt, wenn du nicht mal das 
Prozessorboard auswählen kannst? Welche Schnittstelle hat dein 
Neigungssensor? Die LEDs kann jeder ansteuern. Vielleicht reicht ja ein 
Pro Mini oder ein Nano?

von Monk (Gast)


Lesenswert?

Digispark

von Rainer W. (rawi)


Lesenswert?

Mike L. schrieb:
> Ich suche nach einem uC/Arduino welcher einerseits möglichst kompakt
> ist, alles benötigte an Board hat und für eine Embedded-Version leicht
> adaptierbar ist.

Du meinst einen uC/Arduino, der auf dem Board bereits über einen 
Neigungssensor verfügt?

von Mike L. (loug)


Lesenswert?

Rainer W. schrieb:
> Mike L. schrieb:
>> Ich suche nach einem uC/Arduino welcher einerseits möglichst kompakt
>> ist, alles benötigte an Board hat und für eine Embedded-Version leicht
>> adaptierbar ist.
>
> Du meinst einen uC/Arduino, der auf dem Board bereits über einen
> Neigungssensor verfügt?

Genau.

von Monk (Gast)


Lesenswert?

Den Neigungssensor wirst du wohl selbst dran löten müssen.

von Mike L. (loug)


Lesenswert?

Monk schrieb:
> Den Neigungssensor wirst du wohl selbst dran löten müssen.

Denke ich so langsam auch. Hab z.B. an einen MPU6050 gedacht - 
wahrscheinlich wird es dann wohl auf eine Eigenentwicklung 
hinauslaufen...

von Rainer W. (rawi)


Lesenswert?

Mike L. schrieb:
> Hab z.B. an einen MPU6050 gedacht -

Für eine Wasserwaage brauchst du keine IMU. Da reicht ein ADXL345 o.ä.
Oder möchtest du mehr in die Klasse eines SCL3300 kommen?

von Mike L. (loug)


Lesenswert?

Rainer W. schrieb:
> Mike L. schrieb:
>> Hab z.B. an einen MPU6050 gedacht -
>
> Für eine Wasserwaage brauchst du keine IMU. Da reicht ein ADXL345 o.ä.
> Oder möchtest du mehr in die Klasse eines SCL3300 kommen?

Danke für den Tipp, ja, so ein ADXL345 sollte reichen. Es muss nur 
Grad-Genau für die x-Achse, ohne Nachkommastellen sein.

: Bearbeitet durch User
von Obelix X. (obelix)


Lesenswert?

Schau mal ob hier :

https://de.aliexpress.com/item/1005007188964742.html

alle Sensoren drauf sind die du brauchst.

von Cyblord -. (cyblord)


Lesenswert?

Mike L. schrieb:
> simples Projekt

Ach und das ist so simpel dass du nicht mal alleine starten kannst? Fang 
doch erst mal mit was an, was du kannst. Eine LED blinken lassen. Am 
besten ohne fertiges Board. Da lernst du die Grundlagen um später deinen 
Controller und deine Sensoren auf eine Platine zu bringen.

von Mike L. (loug)


Angehängte Dateien:

Lesenswert?

Rainer W. schrieb:
> Mike L. schrieb:
>> Hab z.B. an einen MPU6050 gedacht -
>
> Für eine Wasserwaage brauchst du keine IMU. Da reicht ein ADXL345 o.ä.

Ich habe mal auf die Schnelle etwas in Eagle gezeichnet. Als uC ein 
Atmega 328P und als Beschleunigungssensor den ADXL345BCCZ, angebunden 
über I2C.

Die Versorgungsspannung soll 4,5V betragen (3 D Zellen).

Die Funktion soll (wenn der uC programmiert ist) recht simpel sein:

X-Achse wird über die ersten 5 LED-Strings angezeigt, Y-Achse über die 
letzten 5 LED-Strings. Je nach Winkel tendiert die Anzeige zu 
rot(jeweils links/rechts), gelb(jeweils links/rechts oder grün(mitte).

Könnte meine Schaltung so funktionieren, oder siehst du (ihr) da Fehler?

Bei der Berechnung der Basiswiderstände von Q5 und Q10 war ich mir etwas 
unsicher, weil bei den grünen LEDs die Durchlasspannung 2,2V beträgt, 
somit würden auf der E-C-Strecke nur ca. 100mV abfallen...

: Bearbeitet durch User
von Rainer W. (rawi)


Lesenswert?

Mike L. schrieb:
> Ich habe mal auf die Schnelle etwas in Eagle gezeichnet.

Das sieht man.
Um Schaltpläne nicht durch Versorgungs- und Groundgestrüpp bis zur 
Unlesbarkeit mit Leitungen zuzupflastern, verwendet man statt des 
Leitungsgewirrs gewöhnlich Symbole für VCC und Gnd.

p.s.
Wieso eigentlich "VCC" in einer Schaltung in MOS-Technologie?
Der Anschluss, von dem der Index abgeleitet ist, heißt "Drain".

: Bearbeitet durch User
von Sherlock 🕵🏽‍♂️ (rubbel-die-katz)


Lesenswert?

Mike L. schrieb:
> siehst du (ihr) da Fehler?

Das übliche: Abblock-Kondensatoren an fehlen an allen 
Stronversorgungs-Pins.

Und: Die Versorgungsspannung ist für zwe LEDs in Reihe zu niedrig. Drei 
Primärzellen haben 2,7 bis 4,5 Volt.

Der ADXL verträgt keine 4,5 Volt.

AVCC vom Mikrocontroller muss versorgt werden.

Die Transistoren an den LEDs sind nicht nötig.

Beitrag #7755801 wurde vom Autor gelöscht.
von Rainer W. (rawi)


Lesenswert?

Sherlock 🕵🏽‍♂️ schrieb:
> AVCC vom Mikrocontroller muss versorgt werden.

So würde ich ein "should" nicht unbedingt übersetzen.

: Bearbeitet durch User
von Sherlock 🕵🏽‍♂️ (rubbel-die-katz)


Lesenswert?

R3 und R4 sind zu hochohmig. Lasse da mindestens 1 mA fließen. 2,2 oder 
2,7 kOhm fände ich besser.

Beitrag #7755844 wurde vom Autor gelöscht.
von Mike L. (loug)


Angehängte Dateien:

Lesenswert?

Sherlock 🕵🏽‍♂️ schrieb:
> Mike L. schrieb:
>> siehst du (ihr) da Fehler?
>
> Das übliche: Abblock-Kondensatoren an fehlen an allen
> Stronversorgungs-Pins.
>
> Und: Die Versorgungsspannung ist für zwe LEDs in Reihe zu niedrig. Drei
> Primärzellen haben 2,7 bis 4,5 Volt.
>
> Der ADXL verträgt keine 4,5 Volt.
>
> AVCC vom Mikrocontroller muss versorgt werden.
>
> Die Transistoren an den LEDs sind nicht nötig.

Dankeschön für die Hinweise - hab ich alles umgesetzt - sieht das so 
besser aus? Der ADXL wird nun mit 3.3V versorgt, wobei ich mir noch die 
Frage stelle:

Wenn der uC mit 4,5V versorgt wird und der ADXL mit 3,3V, passt das doch 
mit der I2C Schnittstelle nicht zusammen, oder?

von Helmut -. (dc3yc)


Lesenswert?

Rainer W. schrieb:
> So würde ich ein "should" nicht unbedingt übersetzen.

Wie dann? Wenn es in einem Datenblatt steht, ist es ein guter Ratschlag, 
das zu machen.

von Helmut -. (dc3yc)


Lesenswert?

Mike L. schrieb:
> Wenn der uC mit 4,5V versorgt wird und der ADXL mit 3,3V, passt das doch
> mit der I2C Schnittstelle nicht zusammen, oder?

Dafür gibt es Datenblätter, wo die genauen Pegel drinstehen. Da muss man 
halt drin lesen!

von Sherlock 🕵🏽‍♂️ (rubbel-die-katz)


Lesenswert?

Mike L. schrieb:
> hab ich alles umgesetzt - sieht das so besser aus?

Besser, noch nicht gut.

Unterschiedliche Versorgungsspannungen sind am I2C Bus Ok. Die Pull-Up 
Widerstände R3 und R4 müssen aber an 3,3V!

Aber LEDs schaltet man nicht direkt parallel. Wenn sie nicht zufällig 
exakt die gleiche Flussspannung haben, leuchten sie ungleichmäßig hell. 
Jede LED braucht ihren eigenen Vorwiderstand. Wenn du dir nicht die 
Augen weg brennen willst, lass weniger Strom durch die LEDs fließen. 1-5 
mA sind inzwischen üblich.

Ein Abblock-Kondensator am AVR ist zu wenig. Jedes Versorgungspin-Paar 
braucht einen eigenen.

Da die Versorgungspins in deinem Plan zusammengefasst dargestellt sind 
würde ich entsprechend viele Kondensatoren nebeneinander zeichnen. Beim 
Erstellen des Layoutes muss man sie dann sinnvoll anordnen.

Dein 3,3V Spannungsregler wird so nicht funktionieren, da er eine höhere 
Eingangsspannung braucht. Schätzungsweise etwa 5,3 Volt. Nimm einen 
MCP1702 oder HT7333 oder XC6220B331 (der kommt mit weniger aus) und vier 
Batterien.

: Bearbeitet durch User
von Sherlock 🕵🏽‍♂️ (rubbel-die-katz)


Lesenswert?

Der Alt_Address Pin darf nicht in der Luft hängen. Schau ins Datenblatt, 
wie er für I2C beschaltet werden muss.

Ich habe vorhin 4 Batterien empfohlen. Der AVR muss dann mit den 3,3V 
versorgt werden, weil 6V ja zu viel wären.

Bei 3,3V sollte der Quarz besser langsamer sein, z.B 8 MHz. Brauchst du 
den Quarz überhaupt? Wenn ja, wozu? Der AVR und I2C funktionieren ohne 
ihn.

Am ISP Stecker ist Pin 2 nicht belegt. Der gehört an die 
Versorgungsspannung des AVR.

Über diesen Pin versorgt normalerweise die Zielschaltung den 
Programmieradapter, so dass er sich an die Spannung anpassen kann.

: Bearbeitet durch User
Beitrag #7755916 wurde vom Autor gelöscht.
von Mike L. (loug)


Angehängte Dateien:

Lesenswert?

Sherlock 🕵🏽‍♂️ schrieb:
> Bei 3,3V sollte der Quarz besser langsamer sein, z.B 8 MHz. Brauchst du
> den Quarz überhaupt? Wenn ja, wozu? Der AVR und I2C funktionieren ohne
> ihn.

Ich möchte mir gerne die Möglichkeit offen lassen, später den Winkel bei 
welchem die LEDs angehen sollen, über USB ändern zu können. Daher will 
ich im Layout zumindest schonmal den Quarz einplanen - der Rest kommt 
irgendwann nach, wenn ich klüger bin...

4 Zellen bekomme ich in das Gehäuse leider nicht rein, da ich die 
Batterie-Halter auf der Platine haben möchte. Daher bin ich auf 9V Block 
umgeschwenkt und nun wird alles mit 3.3V versorgt.

Ich bin bei den LEDs mal auf 10mA runter gegangen, da die schon hell 
seien sollten - kann man dann ja ggfls. noch korrigieren.

Zum Thema Abblockkondensatoren - könnte man sich diese theoretisch nicht 
einsparen, wenn man die VCC/GND Leiterbahnen niederohmiger (breiter) 
plant, oder finden die Spannungseinbrüche dennoch statt?

Achso, es leuchten nur max. 4 LEDs (2 x-Achse, 2 Y-Achse) gleichzeitig. 
Damit sollte der Spannungsregler nicht überlastet werden - ist nur die 
Frage was das die Schaltung im Programmieradapter zieht...

: Bearbeitet durch User
von Sherlock 🕵🏽‍♂️ (rubbel-die-katz)


Lesenswert?

Mike L. schrieb:
> Daher bin ich auf 9V Block umgeschwenkt
> LEDs mal auf 10mA runter gegangen

Ich bezweifle, dass durch deine LEDs tatsächlich 10 mA fließen. Rechne 
das nochmal nach.

Bedenke, dass 9V Blöcke nur wenig Strom liefern können. Vier LEDs zu 
jeweils 10mA gehen wohl noch. Alle gleichzeitig ein wäre sicher zu viel.

Ich würde einen Schaltwandler (Step-Down) verwenden, hat bei so hoher 
Spannungsdifferenz erheblich weniger Verluste als Linear Regler.

Ich kann nur davon abraten, an Abblock-Kondensatoren zu sparen. Damit 
provoziert man Probleme, die niemand haben will.

Da der Quarz für serielle Kommunikation da ist  nimm 7,3728 Mhz, denn 
damit kann man alle normalen Baudraten exakt erzeugen. Siehe die 
Baudraten Tabellen im Datenblatt des AVR.

: Bearbeitet durch User
von Frank E. (Firma: Q3) (qualidat)


Lesenswert?

An Stelle des LED-Massgengrabs mit Widerständen oder gar Transistoren 
sollte man 5cm WS2812 verwenden ...

von Hannes J. (Firma: _⌨_) (pnuebergang)


Lesenswert?

Warum überhaupt die zwei LED pro Ausgang? Moderne LEDs brennen dir schon 
bei 5 mA so auf die Netzhaut dass du Sternchen siehst.

Noch dazu können die Pins von AVRs recht anständige Ströme treiben. Auch 
hier, schau ins Datenblatt wo die Grenzen pro Pin, Port und gesamter 
Stromversorgung des AVR liegen. Das müsste (ich habe lange nichts mehr 
mit AVRs gemacht) bei 5 mA pro LED ohne externe Treibertransistoren 
gehen.

: Bearbeitet durch User
von Spess53 .. (hardygroeger)


Lesenswert?

Hi

>An Stelle des LED-Massgengrabs mit Widerständen oder gar Transistoren
>sollte man 5cm WS2812 verwenden ...

>...bei 5 mA pro LED ohne externe Treibertransistoren

Und ich würde mit einem EA DOGS102N-6 eine Dosenlibelle statt diesem 
LED-Gedödel programmieren.

MfG Spess

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.