Archiv verlassen und diese Seite im Standarddesign anzeigen : Denkfehler bei Spannungsmessung über AD-Wandler ???
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
Also:
Vref /1023 * ADCwert = Ua
Der Rest müsste mit der Spannungsteilerregel wie du oben beschrieben hast gehn!
MfG
Ringo
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
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
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.
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 ) );
}
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.