Hallo, ich möchte die spannung eines 6V Blei-Vlies akkus messen, welcher das zum Messen verwendete Arduino Pro Mini 5V versorgt.
Habe nun mehrfach etwas von der 1.1V Referenzspannung gelesen, doch die Beispielsketche funktionieren bei mir nicht, die ausgegebenen Werte sind bei 5V (~5400mV laut readVcc Funktion) Versorgung jedoch höher als bei Versorgung mit dem 6V Blei Vlies Akku (~5400mV).. was mache ich falsch?
Hier das verwendete Sketch:
long readVcc() {
// Read 1.1V reference against AVcc
// set the reference to Vcc and the measurement to the internal 1.1V reference
#if defined(__AVR_ATmega32U4__) || defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__)
ADMUX = _BV(REFS0) | _BV(MUX4) | _BV(MUX3) | _BV(MUX2) | _BV(MUX1);
#elif defined (__AVR_ATtiny24__) || defined(__AVR_ATtiny44__) || defined(__AVR_ATtiny84__)
ADMUX = _BV(MUX5) | _BV(MUX0);
#elif defined (__AVR_ATtiny25__) || defined(__AVR_ATtiny45__) || defined(__AVR_ATtiny85__)
ADMUX = _BV(MUX3) | _BV(MUX2);
#else
ADMUX = _BV(REFS0) | _BV(MUX3) | _BV(MUX2) | _BV(MUX1);
#endif
delay(2); // Wait for Vref to settle
ADCSRA |= _BV(ADSC); // Start conversion
while (bit_is_set(ADCSRA,ADSC)); // measuring
uint8_t low = ADCL; // must read ADCL first - it then locks ADCH
uint8_t high = ADCH; // unlocks both
long result = (high<<8) | low;
result = 1125300L / result; // Calculate Vcc (in mV); 1125300 = 1.1*1023*1000
return result; // Vcc in millivolts
}
wenn du eine Spannung messen willst, die höher ist als die Versorgungsspannung des Arduino brauchst du immer einen Spannungsteiler aus zwei Widerständen, um die Spannung zu reduzieren. Der AD-Wandler hat mehrere Betriebsarten, einmal kannst du die Versorgungsspannung (also 5V) als Referenz (=100%) nehmen oder die eingebaute Referenzspannungsquelle mit 1,1V. Das ist das, was ich machen würde, weil sonst deine Messung beeinflusst wird von Schwankungen der Versorgungsspannung. Also 6V Akkuspannung (max. wohl 7V wenn du ihn vollädst) runterteilen auf 1V, dann messen und den Wert ausrechnen.
5400mA ist ein Strom, von 5,4A - also schon stattlich.
Das hat NICHTS mit einer Spannung zu tun, sofern Du nicht über einen Shunt diesen Strom 'siehst' (wobei ein Shunt auch 'nur' eine Spannung erzeugt, also irgend was mit Volt).
Du kannst den Arduino nicht direkt an den 6V Akku zur Spannungsversorgung anschließen. Für den 5V Eingang ist diese Spannung zu hoch und für den Vin Pin zu wenig.
Du brauchst einen DC/DC Wandler der mit 7,2V bis 4,8 V Eingangsspannung klarkommt.
Grüße Uwe
Das mit der Referenzspannung klingt gut.. hatte ich soweit auch verstanden..
Nur so lege ich meine Spannung an? In dem Sketch ist nirgendwo ein Input angegeben oder irre ich mich und erkenne es nicht?
Das fummeln an den Registern ist nicht unbedingt der falsche Weg, aber man sollte dann schon wissen, was man da tut.
Und die Frage nach dem Pin zeigt, dass du dafür noch etwas lesen werden musst.
Ja, die 1,1V Referenz ist schon richtig.
Und ein Spannungsteiler, so ca 10 zu 1.
Verwende eine Kalibrierung, z.B. die "Ein Punkt Kalibrierung" sollte hier reichen.
uwefed:
Du kannst den Arduino nicht direkt an den 6V Akku zur Spannungsversorgung anschließen. Für den 5V Eingang ist diese Spannung zu hoch und für den Vin Pin zu wenig.
Du brauchst einen DC/DC Wandler der mit 7,2V bis 4,8 V Eingangsspannung klarkommt.
Grüße Uwe
Vin von Bleigel-6V Akkus versorgt, das mag auf dem Papier etwas Out of specs sein, immerhin bekommt der Nano/Uno damit mehr Vcc, als sonst von USB-versorgt. Läuft bestens.
Die Specs sind auch etwas kurios: Zwischen den Stromstecker und Vin liegt beim Uno eine Diode, die 0,6 V Spannungsabfall einbringt, so muss auch unterschieden werden, ob der Arduino über Stecker oder über Vin versorgt wird. Dieser Unterschied gibt es in der Specs nicht.
janneswa:
Das pro Mini läuft am Raw pin mit 6.4V perfekt.
Ok beim Mini PRO ist es anders als beim UNO.
Aber ein Bleiakku hat nicht immer 6,4V.
Die Entladeschlußspannung beträgt 1,75V pro Zelle und damit 5,25V für einen 6V Akku.
Das ist kein Problem, das ganze arbeitet mit einem gsm modul welches täglich eine Status SMS versendet die Guthaben und Akkustand enthalten soll.. wird die akkuspannung zu gering wird der Akku aufgeladen.
RIN67630:
Vin von Bleigel-6V Akkus versorgt, das mag auf dem Papier etwas Out of specs sein, immerhin bekommt der Nano/Uno damit mehr Vcc, als sonst von USB-versorgt.
Wie kommst du auf das dünne Brett?
Bei USB Betrieb ist Vin unbeschaltet, die 5V vom USB gehen zu 5V, also hinter den Regler.
1 V Spannungsdifferenz reichen für den linearen Regler nicht (sagt die Spezifikation).
Board Power Supply: 3.35 -12 V (3.3V model) or 5 - 12 V (5V model)
Grüße Uwe
Das ist natürlich die ganze Bandbreite von der direkte Versorgung über Vcc bis zur Speisung am Stecker, nicht die Grenzen an Vin.
Die Spezifikationen der Spannungsreglern werden auch so ausgelegt, dass bei einem Vermessen eines Parameters, die anderen auch eingehalten werden.
Beim Betrieb unter dem Limit wird z.B. die Spannungsgenauigkeit und die Wellenglättung nach Spezifikation nicht mehr eingehalten, das heiße noch lange nicht, dass der Uno damit nicht mehr zuverlässig läuft (abgesehen von der Genauigkeit der Analogeingänge bei DEFAULT).