Go Down

Topic: Spannungsmessung bis 15V (Read 2929 times) previous topic - next topic

Arduinoianer

Mar 28, 2013, 08:45 pm Last Edit: Mar 28, 2013, 08:52 pm by Arduinoianer Reason: 1
Hallo,

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

Spannungsteilerschaltung:

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


Mein Sketch:
Quote

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 ?


marau

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

Arduinoianer




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


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 ?

uwefed

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

ardubu

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.

Marcus W

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

ardubu

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

Arduinoianer

Hallo,

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

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


Formel:

Quote
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?


Eisebaer

hi,

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

gruß stefan

ardubu

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

uwefed

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

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!

ardubu

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

Bitklopfer


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



Go Up