PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Denkfehler bei Spannungsmessung über AD-Wandler ???



Ret0b0R
20.11.2007, 18:13
hi,
ich möchte mit einem ATmega8 über den AD wandler eine spannung messen.
hab dazu einen Spannungsteiler mit

+Vcc
|
12k
|
+---->ADC5
|
10k
|
GND

bekomm auch sinnvolle werte raus, nur beim umrechnen auf die spannung hängts iwo.

ich möchte Vcc ermitteln, mit dem der uC betrieben wird, um rechtzeitig zu erkennen wenn der akku leer wird.
AVcc hängt aber auch an Vcc. somit lande ich immer in einer sackgasse.

über
Ua/Ue = R2 / (R1 + R2) gehts nich da beide Spannungen "unbekannt" sind.
mit Ue = 1023 / ADC5 * Ua geht auch nicht.

vllt kann mir jemand hier n fertigen rechenweg aufschreiben oder anderweitig
helfen. Iwo muss sich doch der Denkfehler verstecken.

Danke

Ringo
20.11.2007, 18:17
Also:

Vref /1023 * ADCwert = Ua

Der Rest müsste mit der Spannungsteilerregel wie du oben beschrieben hast gehn!

MfG
Ringo

beppo
20.11.2007, 18:34
Wenn Deine Referenz auch an VCC hängt, kann das nicht funktionieren. Du brauchst eine unabhängige Referenz. Du könntest z.B. statt dem unteren Widerstand eine Zenerdiode als Referenz reinhängen. Wenn der AD-Wert steigt, weisst Du, dass deine AVCC sinkt. Die entsprechenden Gleichungen stehen schon oben.
mfg beppo

Ret0b0R
20.11.2007, 18:50
mein problem ist das Vref auch die gesuchte größe ist. somit wird des wohl nicht gehn.

kann ich dann nich einfach auf des interne Vref von 2,56V umschalten oder darf dann an AVCC keine spannung anliegen ?
hier mal der schaltplan.

an ADC5 wird die spannung gemessen.
http://freenet-homepage.de/bilder-klein/asuro.jpg

radbruch
20.11.2007, 19:02
Hallo

Bei Ubat=5,5V (volle Akkus) und Spannungsteiler 12/10 (=6/5) wird die Spannung am ADC maximal 2,5V (5,5/11*5). Man könnte vielleicht vorsichtshalber 15/10 wählen, dann dürfte aber nichts mehr passieren und die 2,56V interne Referenz wäre ok.

Noch 'ne Ergänzung:

...and the reference
voltage can be made more immune to noise by connecting a capacitor between the
AREF pin and ground.

...

If no external voltage is applied to the AREF pin, the user may switch
between AVCC and 2.56V as reference selection.
Steht im Datenblatt auf Seite 201. Wenn also am AREF keine externe Spannung angeschlossen ist, kann man zwischen Vcc und 2,56V wählen. Und man kann einen Kondensator zur Rauschunterdrückung an Pin AREF anschliessen. Beim asuro ist das so.

mic

beppo
20.11.2007, 19:03
Mit interner Referenz ist die Messung von VCC kein Problem. Du musst die VCC halt per Spannungsteiler runterteilen (muss kleiner als Vref sein) und dann per Software wieder draufmultiplizieren. Ich kenn den Atmega nicht aber normalerweise muss die Spannung an AVCC bleiben. Da hilft dir aber das Datenblatt.

mfg beppo

Hubert.G
20.11.2007, 21:22
Am einfachsten ist es die AVCC an AREF zu legen und die interne BG-Spannung messen. Siehe Datenblatt Seite 203.

Ret0b0R
20.11.2007, 21:38
So vielen dank, nun gehts.
habs wie folgt gelöst:
Vref intern genommen. 2,56V
Ue = Vref / 1023 * ADC5_wert * ( 1+ R1 / R2 )


#define R1 12 // 12k
#define R2 10 // 10k
#define Vref 2.56 // Internal 2.56V Voltage Reference

// Ue = Vref / 1023 * ADC5_wert * ( 1+ R1 / R2 )
float BatPower(){

// REFS0=1; REFS1=1; MUX0=1; MUX2=1
ADMUX |= 0b11000101;
ADCSRA |= (1 << ADSC); // Start conversion
while (!(ADCSRA & (1 << ADIF))); // wait for conversion complete
ADCSRA |= (1 << ADIF); // clear ADCIF

return( (float)Vref / (float)1023.0 * (float)(ADCL + (ADCH << 8)) * ( 1+ (float)R1 / (float)R2 ) );
}