Forum: Analoge Elektronik und Schaltungstechnik Messen der uC_eigenen Ub mit Arduino Nano


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Toxic (Gast)


Angehängte Dateien:

Bewertung
2 lesenswert
nicht lesenswert
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

von Oliver S. (oliverso)


Bewertung
0 lesenswert
nicht lesenswert
Ich hol schon mal Bier und Popkorn ;)

Oliver

von Alfred T. (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Toxic schrieb:
> ohne die Verwendung eines Analogpins

Sieht aber nicht so aus :-)

...
> result = ADCL;
> result |= ADCH<<8;
...

von M. K. (sylaina)


Bewertung
0 lesenswert
nicht lesenswert
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 ;)

von Toxic (Gast)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.