VCC und Batteriespannung per µC (Arduino) messen

[o.0]

Lt. Commander
Registriert
Apr. 2008
Beiträge
1.059
Hallo,

erstmal sorry falls das im falschen Forum gelandet ist, aber so wirklich passt das leider nirgends rein.

Zur Einleitung: Ich bastel mir im Moment einen kleinen Roboter, nen Ultraschall-Sensor, Fototransistoren zum Linienfolgen, zwei Motoren mit Kettenantrieb, das übliche für den Anfang eben.

Mein Problem ist jetzt, dass der Roboter später natürlich per Batterie betrieben werden soll.. was das Problem mit sich bringt, dass irgendwann die Batterie leer sein wird und um ungewolltes Verhalten zu vermeiden, sollte der µC das idealerweise vorher erkennen und sich geeignet Verhalten, zB anhalten und eine LED blinken lassen oder etwas in der Art.

Das sollte ja prinzipiell simpel sein, einfach VCC und die Batterie jeweils an einen A/D Wandler anschließen. Ich hab mich dann ein bisschen umgeschaut, und in der Tat wird das wohl so gemacht, beispielsweise wie hier beschrieben.

Was mir nicht ganz klar ist, warum verwenden die dort einen 12k sowie einen 10k Widerstand um die Spannung zu teilen? Wäre es nicht (minimal) einfacher zum berechnen wenn man zwei gleiche Widerstände benutzen würde? Und warum wurden dort die Widerstände so "gering" gewählt?
Ich hätte spontan gesagt, 2 * 1M Ohm in Reihe zwischen VCC und GND und zwischen den beiden Widerständen per A/D Wandler die Spannung abgreifen. Das ergibt irgend eine Zahl, die multipliziert mit zwei eben dem entspricht, was bei einem direkten Anschluss der Spannungsquelle an den A/D rauskommen würde.

Je höher die Widerstände umso geringer die Stromstärke -> Energie gespart. Der spannungsteilende Effekt ist ja der selbe egal ob mit 10 oder mit 10M Ohm. Oder überseh ich da grade irgendwas?

Zusätzlich noch eine spezialisten-Frage: Zum Linienfolgen habe ich zwei Fototransistoren und eine IR-LED, die klassisch in einer Reihe orthogonal zur Fahrtrichtung verbaut werden soll (FT --- IR-LED --- FT). Welcher Abstand zwischen den drei Elementen wäre denn sinnvoll? Ich hätte das jetzt erstmal mit vll einem cm probiert, aber das wäre mehr per Trial n'Error Methode :(

lg
 
Naja, ein AD Wandler ist vielleicht etwas übertrieben für sowas, aber wenn man einen Kanal übrig hat, warum nicht?

Die Dimensionierung hängt vom A/D Wandler und dessen Eingangswiederstand ab, sowie die Störfestigkeit.

Die Widerstände des Spannungsteilers etwa 1/100 des Eingangswiderstandes betragen, damit sie keinen Einfluß auf das Meßergebnis haben. Natürlich kann man die auch rausrechnen. Sowieso kommen da ja noch die Toleranzen hinzu und so genau wird's ja auch nicht kommen.

Je hochohmiger der Eingang wird, desto anfälliger ist er für Störungen. So kann z.B. eine Berührung des Eingangs diesen übersteuern.

Den Abstand deiner Fotoelemente hängt weitestgehend vom Öffnungwinkel und Strahlstärke der LED ab. Da ist Ausprobieren wirklich die beste Methode.
 
Ja. klar, A/D Wandler sind wirklich bisschen übertrieben, aber hab noch 4 davon übrig und sonst nichts zum anschließen^^

Ah, an die Störfestigkeit und daran das der Eingangswiderstand einen Einfluss hat hab ich gar nicht gedacht. Danke für den Hinweis. Ich werde mich mal ein bisschen einlesen und dann hoffentlich die Widerstände sinnvoll dimensionieren.

Danke für die Hilfe ;)
 
Was willst du mit nem extra AD Wandler?
In dem Failduino arbeitet nen normaler AVR, der hat nen AD Wandler integriert.
Wird zudem dann nen großer Drahtverhau, weil man das Ding nicht auf Lochraster Stecken kann.

Diesen überteuerten Arduino sollteste übrigens nicht nehmen, 30€ fürn AVR auf ner Platine mitn bissel Hühnerfutter drum und ner IDE von der ich jetz mal nich sprechen will.
Wenne das mitm AVR machen willst, beles dich in diversen Totorials.
Als Programmer nimmste nen USBasp (10€ bei ebay).
Als Programmierumgebung nimmste dann WinAVR (C).

Dann nen C Buch lesen und hier gucken für AVR spezifisches C:
http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial

Mein Problem ist jetzt, dass der Roboter später natürlich per Batterie betrieben werden soll.. was das Problem mit sich bringt, dass irgendwann die Batterie leer sein wird und um ungewolltes Verhalten zu vermeiden, sollte der µC das idealerweise vorher erkennen und sich geeignet Verhalten

Der AVR hat nen eingebauten Brown Out Detector, also wenn seine Versorgungsspannung unter 4,3V? fällt, geht er auf Dauerreset (einschaltbar per Fusebits).
 
Ich will nichts mit nem extra A/D Wandler, klar nehm ich die integrierten.

Überteuert? Kommt drauf an. Für unter 30€ hab ich mir einen (Nachbau) mit Ultraschall, Proto Shield, zwei zeiliges Display und Jumper Kabeln ersteigert. Da muss die Konkurrenz erstmal mithalten können.

Warum ich mich für einen Arduino entschieden hab: Eben weil ich ohne extra Programmer arbeiten will. Ich hab hier auch diverse Development Boards von ST mit ARM Prozessoren oder Freescale HCS12/8 Boards. Beides ist zum einrichten ne Qual. Codewarrior (Studiumsbedingt vorhanden) läuft noch nichtmal vernünftig unter Win 7, von Linux ganz zu schweigen. Die ST Lösungen erfordern ne komplette Tool-Chain, die zum Einrichten schon nicht lustig ist.. das muss zum rumspielen nicht sein.
Arduino ist eben nur entpacken, einstecken, Treiber installieren, läuft. Riesen Spannungsbereich der für die Stromversorgung in Ordnung ist. Das passt genau zu meinen Anforderungen.

Klar, die IDE ist gruselig und diese Arduino-Vereinfachungen auch irgendwie seltsam. Ob man überhaupt auf Register-Ebene runter kommt hab ich noch nichtmal getestet.

Am gleichen Akku hängen auch die Motoren und ggf irgendwann noch mehr Hardware, ob die Brown Out Detection des AVR was bringt hängt eben davon ab, welchem Teil zuerst die Spannung ausgeht.

... und nein, nen C Tutorial ist das letzte was ich brauche ;)
 
Wenne C kannst, dann lass die Arduino IDE außen vor.
Mit dem Arduino Bootloader bekommste auch die Compiles vom WinAVR (gibt auch nen LInux GCC für AVR), der AVRdude (Flash Software) unterstützt den.
 
Zurück
Oben