Ein Posting fuer Newbies. Eventuell wurde das Thema hier auch schon behandelt. Der Code gilt fuer den Atmega 128/328 Wer einen Arduino mit Batterien betreibt,moechte sicherlich auch wissen in welchem Zustand sich dieselbigen befinden. Man koennte also einen Analogeingang nehmen und per Spannungsteiler die Batteriespannung messen. Das ist allerdings nicht noetig.Man kann ohne externe Bauteile und ohne die Verwendung eines Analogpins einfach per simpler Software Messungen durchfuehren. Ein fertiger Code zum Testen siehe Anhang.Einfach uploaden Serialmonitor oeffnen und sich ansehen was angezeigt wird.Eigentlich etwa 5V(USBspannung) - duerfte aber wegen der Schutzdiode auf dem Nanoboard etwas geringer sein. Der Code ist wie gesagt simpel und NICHT von mir.Ich bin mit Pics vertraut und kenne mich mit den Atmega-Instruktionen nur wage aus und hatte keine Lust mich eine Stunde lang wegen ein paar Registerbefehlen mit dem Datenblatt zu beschaeftigen.Genauso wenig wie 99% der Atmega-Freaks auf dem Forum sich den Pic nicht antun wollen.Beim Googeln bin ich auf eine Webseite gestossen,die mir genau das lieferte was ich wollte - siehe Anhang Wie funktionierts: Die "schwabbelnde"(!) Ub des Arduinos wird als Referenz genommen und wird gegen die interne stabile Referenz von 1.1V (+/-9%)gemessen. Die 1.1V werden per Registerzuweisung dem internen A/D-Wandler zugefuehrt. Normalerweise ist dies ja umgekehrt.... Die Gleichung lautet wie folgt: Ub/1024 = 1.1V/Wert im Analogregister => Ub = (1.1V/Wert im Analogregister) * 1024 Die FVR(1.1V) kann von Nano zu Nano verschieden sein.Am besten die echte Betriebsspannung messen und den FVR-Wert anpassen - in der Regel duerfte aber die Toleranz ok sein - es geht ja "nur" um die Batterieueberwachung... Das ist auch meine Vorgehensweise in Pics - mir war erst nach einem kurzen Blick in's Datenblatt bewusst,dass auch die Atmegas die interne FVR messen koennen.Es bedarf aber halt Hardwarekenntnisse mit denen sich Arduino-Newbies sicherlich etwas schwer tun wuerden. Hinweis: Der auskommentierte Code ist das Original - den ausgefuehrten Code habe ich fuer meine Beduerfnisse und dem besseren Verstaendnis wegen leicht geaendert... Eine ausfuehrlichere Beschreibung(auf englisch) gibt es auch im Anhang
Toxic schrieb: > ohne die Verwendung eines Analogpins Sieht aber nicht so aus :-) ... > result = ADCL; > result |= ADCH<<8; ...
Alfred T. schrieb: > Toxic schrieb: >> ohne die Verwendung eines Analogpins > > Sieht aber nicht so aus :-) > > ... >> result = ADCL; >> result |= ADCH<<8; > ... Manual lesen und den Code genau studieren: Mit dem Setzen von MUX 1 bis 3 wird die interne Referenz auf den ADC-Eingang geschaltet: da ist kein Analogpin des Atmegas involviert ;)
M. K. schrieb: > Manual lesen und den Code genau studieren Man sieht es auf einen Blick im Bockdiagramm,dass neben ADC0-ADC7 auch die Bandgapreferenz als zusaetzliche Analogquelle abgefragt werden kann - sofern die Register richtig gesetzt sind - und keinen der Standard-Analogpins in Anspruch nimmt.Waere ja auch ein Jammer wenn es so waere..... ADCL und ADCH sind ja "nur" die Ergebnisregister nach der A/D-Konvertierung.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.