mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik AVR Versorgungsspannung messen mit ADC


Autor: jimbo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hi
ich habe folgendes problem....
ich betreibe den atmega324p mit ca. 3.3V Batteriespannung....
nun möchte ich mit diesem controller mit dem adc beliebige 
spannungswerte z.b. von sensoren messen...

da diese werte jedoch über 2.54 volt liegen muss ich eine externe 
referenzspannung verwenden.
da ich beim benutzen einer dieser externen referenzspannung genau diesen 
wert ja zur umrechnung benötige (also ADCW*AREF / 1024 oder?), und die 
batteriespannung mit der zeit ja kleiner wird kann ich nie einen genauen 
messwert erzeugen... nun wollte ich fragen, obs eine möglichkeit gibt, 
den aref wert ebenfalls zu messen und diesen wert dann für die 
umrechnung zu benutzen?

mfg

Autor: aglavi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du könntest natürlich auch die 3.3V per Spannungteiler runterschrauben 
und nachher zurückrechnen..

Autor: Thomas Eckmann (Firma: Thomas Eckmann Informationst.) (thomase)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn du deine Aref gegen sich selber misst, ist dein Messwert immer 
1023.

Du brauchst einen Spannungsteiler. Dann kannst du auch die interne 
Referenzspannung verwenden.

mfg.

Autor: Stefan B. (stefan) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
jimbo schrieb:

> ich betreibe den atmega324p mit ca. 3.3V Batteriespannung....
> nun möchte ich mit diesem controller mit dem adc beliebige
> spannungswerte z.b. von sensoren messen...
>
> da diese werte jedoch über 2.54 volt liegen muss ich eine externe
> referenzspannung verwenden.

Wieso?

Kann der atmega324p nicht wie andere AVR auch die Vcc intern auf AREF 
schalten?

Bei anderen AVR kann man auch die bekannte, intere Bandgap-Referenz (< 
Vcc) gegen AREF (interne Vcc) messen und damit zurückrechnen wie groß 
Vcc ist.

Beim Atmega8 hatte ich das nach Anregung aus dem Forum mal gemacht:
http://www.mikrocontroller.net/articles/Pollin_Fun...

Autor: jimbo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ja aber müsst ich so dann nicht jeden weiteren eingang des adc wieder 
mit einem spannungsteiler beschalten? weil ich kann ja aufgrund der 
beschaltung nicht einfach einmal die interene vref benutzen udn dann 
wieder die externe oder? wegen dem buffer bzw. glättungskondensator am 
vref gegen masse...

Autor: usuru (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn eine interne Referenz nicht zur Verfügung steht oder nicht genau 
genug ist, verbindet man den VREF-Eingang mit der Versorgungsspannung 
und misst dann an einem Analog-Eingang des µC eine externe Referenz, die 
gibt es hochgenau z.B. um 1.2 / 1.25 Volt herum (z.B. 
http://www.maxim-ic.com/products/references/). Wenn ich nun eine 
bekannte Spannung mit dem ADC messe, kann ich auf die Spannung am 
VREF-Eingang der ja mit der Versorungsspannung verbunden ist, 
zurückrechnen, das funktioniert herunter bis zur Spannung der externen 
Referenz.

Weiterer Vorteil: keine Messfehler durch Spannungsteiler.

Autor: Peter R. (pnu)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
mit VCC als Referenzspannung die interne Referenzspannung messen, indem 
aref mit einem analogeingang verbunden wird.(Puffer-C nicht vergessen). 
Das Verhältnis Messwert durch 1023 entspricht dann doch Aref durch VCC.

Mit diesem Faktor können, auch bei langsam absinkendem VCC die an den 
anderen Eingängen gewonnenen Messergebnisse korrigiert werden. Der 
Korrekturfaktor wandert natürlich mit dem sich ändernden VCC.

Da brauchts keinen einzigen Spannungsteiler, solange im Inbtervall 
0..VCC gemessen wird.

Autor: Stefan B. (stefan) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Peter R. schrieb:

> mit VCC als Referenzspannung die interne Referenzspannung messen, indem
> aref mit einem analogeingang verbunden wird.(Puffer-C nicht vergessen).

Bei manchen AVR z.B. Atmega8 in meinem Versuch kann exakt diese 
Verbindung intern im Chip ein- und ausgeschaltet werden. Durch die 
Konfigurationsregister des ADC. Näheres im Datenblatt.

> Das Verhältnis Messwert durch 1023 entspricht dann doch Aref durch VCC.

1024

Autor: Peter R. (pnu)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das interne Umschalten ist da nicht so gut.

Aref sollte einegeschaltet sein, sodass am Puffer-C-Anschluss die 
interne Referenzspannung ständig ansteht. Intern bleibt aber ständig die 
Verbindung AD-Wandler zu Vcc erhalten. Mit VCC als "Ref" wird dann 
gemessen. Es werden nur die Analog-Eingänge umgeschaltet.

Also 1. Schritt Aref am zugehörigen Eingang messen. entsprechenden 
Korrekturfaktor ermitteln und speichern.
2. auf Eingang X umschalten, messen, mit Korrekturfaktor echte Spannung 
an Eingang X errechnen.

Vorgerechnet mit : VCC = 3,4V  , Aref 2,48V

AD misst zuerst die 2,48V, mit 3,4V als "Referenz". Ergebnis N = 747.

Man weiß also, das 2,48V an einem Eingang N = 747 erzeugen.

Am anderen Eingang ist das Messergebnis z.B.800

Dann ist U = ( 800 / 747 ) *2,48 V = 2,66V

Autor: ulrich (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Man kann über den MUX intern die Bandgap Referenz (ca. 1.1 V) messen. 
Dafür braucht man die Ref. Spannungnicht umschalten. Es ist also egal ob 
man AREF fest extern auf VCC verdrahtet, oder einen Kondensator an AREF 
hat, und intern AVcc an ARef legt.

Die Messung der Bandgap Ref. gibt dann  1.1 V / Vcc * 1023.


Die einzige Schwierigkeit ist das die Bandgap Ref. eventuell einige Zeit 
braucht um stabil zu werden. Etwas Zeit sollte man also für die Messung 
einplanen - man sollte ohnehin besser mehrfach (z.B. 8 mal) messen, weil 
man mit den 1,1 V nur einen Teil des Wertebereichs ausnutzt.

Autor: Knut Ballhause (Firma: TravelRec.) (travelrec) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ulrich schrieb:
> Die einzige Schwierigkeit ist das die Bandgap Ref. eventuell einige Zeit
> braucht um stabil zu werden.

Größer 70µs.

ulrich schrieb:
> Etwas Zeit sollte man also für die Messung
> einplanen

Maximal mit 100kHz Abtastrate messen.

ulrich schrieb:
> man sollte ohnehin besser mehrfach (z.B. 8 mal) messen,

Muss man nicht, 1x reicht.

Autor: jimbo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ok hab das jetzt mit der bandgap spannung gemacht und es funktioniert 
sehr gut. mit nur einmal messen kommt man schon auf 2 kommastellen genau 
hin...

danke auf jedenfall

Autor: Torsten B. (torty)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Gemeinde
Ich habe eine Frage zu dem QuellCode aus:
http://www.mikrocontroller.net/articles/Pollin_Fun...

Warum muss bei der Mittelwertberechnung so gerechnet werden ?

  return (adcval + NUM_MESS_ADC/2)/NUM_MESS_ADC;

Ich würde verstehen, dass der aufsummierte Wert in adcval durch die 
Anzahl der Messungen dividiert wird.
Warum wird zu der Summe der Messwerte auch noch die halbe Anzahl der 
Messungen addiert ?

return (adcval ???+ NUM_MESS_ADC/2???)/NUM_MESS_ADC;

Grüße
Torsten

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]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [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.