Schmiddi
01.09.2012, 15:05
Hallo zusammen,
ich bin neu hier im Forum und was Microcontroller angeht noch absoluter Anfänger. Ich bastle bereits seit einigen Tagen mit einem Arduino Einsteigerset herum und hatte auch schon so meinen ein oder anderen Erfolg damit.
Jetzt versuche ich mit dem Arduino eine externe Spannung zu messen, im aktuellen Fall die Gesamtspannung eines 4-Mignon Akkupacks (ca 5,2 Volt). Im Internet habe ich eine Möglichkeit gefunden die aktuelle Betriebsspannung zu messen (readVCC), aus dieser (Referenzspannung) berechne ich dann die gemessene Spannung. Um den Controller nicht zu beschädigen arbeite ich mit einem Spannungsteiler, die Messpannung sollte dann also 2,6V ergeben (Mit Mulimeter nachgemessen). Der Controller misst jedoch nur eine Spannung mit 2,0V. Ist es falsch die gemessene Vcc als Referenzspannung in der Berechnung zu nutzen?
Hier mein Code:
int Betriebsspannung = 0;
int Messspannung = 0;
int ADC0=0;
void setup() {
Serial.begin(9600);
}
void loop() {
Betriebsspannung = readVcc(); //Millivolt
Messspannung = readInput0();
Serial.print("Betriebsspannung: ");
Serial.print(Betriebsspannung);
Serial.println(" Volt");
Serial.print("Messspannung: ");
Serial.print(Messspannung);
Serial.println(" Volt");
Serial.println("");
delay(1000);
}
int readInput0()
{
int Ergebnis1024 = analogRead(ADC0);
int Ergebnis = Betriebsspannung / 1024 * Ergebnis1024;
return Ergebnis;
}
//Funktion zum Auslesen der Betriebsspannung Vcc des Controllers
int readVcc() {
int Ergebnis; //Variable für Millivolt
// Lesen der 1.1V Referenz gegen AVcc
ADMUX = _BV(REFS0) | _BV(MUX3) | _BV(MUX2) | _BV(MUX1);
delay(2); // Wartet bis Vref abgeglichen ist
ADCSRA |= _BV(ADSC); // Umwandeln
while (bit_is_set(ADCSRA,ADSC));
Ergebnis = ADCL;
Ergebnis |= ADCH<<8;
Ergebnis = 1126400L / Ergebnis; // Back-calculate AVcc in mV
return Ergebnis;
}
Vielen Dank!
ich bin neu hier im Forum und was Microcontroller angeht noch absoluter Anfänger. Ich bastle bereits seit einigen Tagen mit einem Arduino Einsteigerset herum und hatte auch schon so meinen ein oder anderen Erfolg damit.
Jetzt versuche ich mit dem Arduino eine externe Spannung zu messen, im aktuellen Fall die Gesamtspannung eines 4-Mignon Akkupacks (ca 5,2 Volt). Im Internet habe ich eine Möglichkeit gefunden die aktuelle Betriebsspannung zu messen (readVCC), aus dieser (Referenzspannung) berechne ich dann die gemessene Spannung. Um den Controller nicht zu beschädigen arbeite ich mit einem Spannungsteiler, die Messpannung sollte dann also 2,6V ergeben (Mit Mulimeter nachgemessen). Der Controller misst jedoch nur eine Spannung mit 2,0V. Ist es falsch die gemessene Vcc als Referenzspannung in der Berechnung zu nutzen?
Hier mein Code:
int Betriebsspannung = 0;
int Messspannung = 0;
int ADC0=0;
void setup() {
Serial.begin(9600);
}
void loop() {
Betriebsspannung = readVcc(); //Millivolt
Messspannung = readInput0();
Serial.print("Betriebsspannung: ");
Serial.print(Betriebsspannung);
Serial.println(" Volt");
Serial.print("Messspannung: ");
Serial.print(Messspannung);
Serial.println(" Volt");
Serial.println("");
delay(1000);
}
int readInput0()
{
int Ergebnis1024 = analogRead(ADC0);
int Ergebnis = Betriebsspannung / 1024 * Ergebnis1024;
return Ergebnis;
}
//Funktion zum Auslesen der Betriebsspannung Vcc des Controllers
int readVcc() {
int Ergebnis; //Variable für Millivolt
// Lesen der 1.1V Referenz gegen AVcc
ADMUX = _BV(REFS0) | _BV(MUX3) | _BV(MUX2) | _BV(MUX1);
delay(2); // Wartet bis Vref abgeglichen ist
ADCSRA |= _BV(ADSC); // Umwandeln
while (bit_is_set(ADCSRA,ADSC));
Ergebnis = ADCL;
Ergebnis |= ADCH<<8;
Ergebnis = 1126400L / Ergebnis; // Back-calculate AVcc in mV
return Ergebnis;
}
Vielen Dank!