Spannungsmessung bis 15V

Hallo,

ich möchte eine Spannung von 0 bis 15V mit einem Analog Pin messen:

Spannungsteilerschaltung:

15V ----- 10kOhm ----- | ------ 4,7kOhm ----- GND
|
|
Arduino Pin A5

Mein Sketch:

const int analogInPin = A5;
int sensorValue = 0;
float volt;

void setup() {

Serial.begin(9600);
}

void loop() {
sensorValue = analogRead(analogInPin);
volt = (sensorValue / 1023.0) * 15;
Serial.println(sensorValue);
Serial.println(volt);
delay(1500);
}

bei 15V (Digital Oszi gemessen) am Eingang misst der Uno einen Wert von 14,4 V (per Serial Out).

Wo liegt mein Fehler ?

Hallo,

zum einen kommt bei dieser Schaltung rechnerisch 14,74V raus, Du müsstest den Widerstand von 4K7 durch eine Reihenschaltung aus 3K3 + 2K7 ersetzen, um ein Teilerverhältnis von exakt 1:3 zu bekommen.

Den zweiten Fehler handelst Du Dir dadurch ein, dass der ARDUINO als Referenzspannung die Versorgungsspannung benutzt, und die wird in den seltensten Fällen exakt 5,0V sein (bei meinemARDUINO sind es 4,85V).

Gruß

Martin

marau:
zum einen kommt bei dieser Schaltung rechnerisch 14,74V raus, Du müsstest den Widerstand von 4K7 durch eine Reihenschaltung aus 3K3 + 2K7 ersetzen, um ein Teilerverhältnis von exakt 1:3 zu bekommen.

okay das habe ich nun so gemacht

marau:
Den zweiten Fehler handelst Du Dir dadurch ein, dass der ARDUINO als Referenzspannung die Versorgungsspannung benutzt, und die wird in den seltensten Fällen exakt 5,0V sein (bei meinemARDUINO sind es 4,85V).

Was kann ich dagegen tun ?

http://code.google.com/p/tinkerit/wiki/SecretVoltmeter

Es werden die 1,1V Referenz mit Referenz Versorgugnsspannung gemessen und daraus die 5V berechnet. Die 1,1 V können von Atmega zu ATmega leicht falsch sein. Die kannst Du aber messen indem Du auf interne 1,1V referenz schaltest und dann zwischen Aref und masse mißt. Mit dem gemessenen Wert kannst Du die Konstante in der Rechnung korigieren.

Grüße Uwe

Hallo,
bei mir kommen rechnerisch ca. 15,64 V raus, und wenn du die mit deinem Analogwert /1023 multiplizierst, müsste das Ergebnis etwa passen.

Wieso durch 1023? 1024 - 0 ist auch ein wert.

der ADC hat 10 Bit (2^10=1024) wenn man bei 0 anfängt zu zählen, ist 1023 der 1024ste Wert.

Hallo,

muss das Thema nochmal ausgraben ... also folgende Ausgangssituation:

1V bis 15V ----- 10kOhm ----- | ------5 kOhm (Präzisionspoti) ----- GND
|
Arduino Pin A5

Formel:

void loop() {
sensorValue = analogRead(analogInPin);
volt = (sensorValue / 1023.0) * 15;
Serial.println(sensorValue);
Serial.println(volt);
delay(1500);
}

Gemessen mit Multimeter und Digital Oszi:

Eingangsspannung Spannungsteiler: 12,18V
Ausgabe Arduino: 12,43V
Aref am Arduino: 5.00V

Wo liegt meine Fehler oder was muss ich an meiner Formel ändern?

hi,

könnte man das präzisionspoti nicht gleich als spannungsteiler verwenden und dort die abweichung korrigieren?

gruß stefan

Hallo,
dreh mal die Eingangsspannung solange hoch, bis sensorValue 1023 wird. Der Spannungswert, den du jetzt an deinem Multimeter abliest, ist der Multiplikator für dein Voltwert.

gruß
ardubu

Ich glaube daß die 5,00V Versorgungspannung nicht genu 5,00V sind. Miß mal die Versorgungsspannung des Arduino nach.
Grüße Uwe

Hallo,

als ich hab 5V am Arduino .... durch einen externen Schaltregler.

Hab das Problem mit einer 10er Z-Diode gelöst anstelle des 10kOhms am Anfang.

Danke euch für eure mühen!

und was machst du, wenn du Spannungen < 10V messen willst?

Arduinoianer:
Hallo,

als ich hab 5V am Arduino .... durch einen externen Schaltregler.

Hab das Problem mit einer 10er Z-Diode gelöst anstelle des 10kOhms am Anfang.

Danke euch für eure mühen!

Kleiner Nachtrag, also eine Z-Diode hat eine Spannungskennlinie wo vom Z-Strom abhängig ist, also eine bischen unlineare Sache
und für Messzwecke eigentlich ungeeignet.

Nimm lieber den 10KOhm mit dem 4,7KOhm Widerstand zusammen und dann rechne mal ein bischen anderster.

volt = (( 5.0 * 3,12765) / 1023.0) * sensorValue;

Damit rechnest du erst mal Volt/Digit aus und dann wird mit dem ADC Wert multipliziert und dann passt das auch bis Ue +15,63 Volt
Die 3,12765 ergeben sich aus (10K + 4,7K) / 4,7K