Hallo zusammen,
ich möchte mit dem Arduino UNO die Spannung einer 12V Batterie (100Ah, Gel) messen. Und habe es mit einem Spannungsteiler und dem A4 Pin des UNOs probiert. Leider kommen bei der Messung keine gescheiten Werte raus und die Werte schwanken auch sehr stark. Könnte sich das bitte jemand von euch anschauen und mir damit Helfen? Vielen Dank im Voraus!
Spannungsteiler Berechnung
Da die Spannung beim Laden der Batterie mit der Lichtmaschine mehr als 12V beträgt, habe ich als maximale Eingangsspannung U=15V gewählt und den Spannungsteiler so berechnet, dass er diese Eingangsspannung auf die U2=1,1 V der internen Referenz des Arduino herunterbricht.
Für Widerstand R2 habe ich 1100 Ohm gewählt. Der Widerstand R1 ergibt sich somit zu:
Schaltplan
Das ganze habe ich so aufgebaut:
Code
Und folgenden Code verwendet:
(Zu beachten ist, dass ich bisher nur auf die gemessenen Byte Werte und auf die Spannung geachtet habe. Der constrain
Befehl und der map
Befehl für die Prozentausgabe sind noch mit willkürlichen Zahlenwerten versehen, da ich soweit leider noch gar nicht gekommen bin. )
int mess1 = 0;
void setup() {
Serial.begin(9600);
analogReference(INTERNAL); //interne Arduino UNo 1,1V Referenz
// analogReference(INTERNAL1V1) //für interne MEGA Referenz
}
void loop() {
char volt_string[5];
getCurrentVolt(volt_string);
delay(1000);
Serial.println(volt_string);
}
void getCurrentVolt(char *temp)
{
int mess1 = analogRead(A4); //Spannung an Analog Pin A4 wird gemessen
Serial.println(mess1);
float Spannung = map(mess1, 0, 1024, 0 , 1500)/100.00;
float perc = constrain(mess1, 815, 898);
float Prozent = map(perc, 809, 898, 0 , 100); // 736=12,8V=100% - 616=9V=Leer - Muss noch auf 11,8 V
Serial.println(Spannung);
Serial.println(Prozent);
Serial.println("----");
char volt[5];
printf(volt,"%-.2f",Spannung);
}
Für den Test habe ich zuerst die Batteriespannung mit einem Multimeter gemessen, dabei wurden 11,46V angezeigt.
Dann habe ich die Messung mit dem Arduino durchgeführt und im seriellen Monitor leider nur Quatsch rausbekommen.
Im seriellen Monitor wurde folgendes ausgegeben:
---
762
11.16
6.00
----
749
10.97
6.00
----
737
10.79
6.00
----
728
10.66
6.00
----
719
10.53
6.00
----
711
10.41
6.00
----
703
10.29
6.00
----
696
10.19
6.00
----
690
10.10
6.00
----
684
10.01
6.00
----
678
9.93
6.00
----
673
9.85
6.00
----
669
9.79
6.00
----
665
9.74
6.00
----
661
9.68
6.00
----
658
9.63
6.00
----
655
9.59
6.00
----
652
9.55
6.00
----
651
9.53
6.00
----
649
9.50
6.00
----
647
9.47
6.00
----
646
9.46
6.00
----
646
9.46
6.00
----
646
9.46
6.00
----
646
9.46
6.00
----
646
9.46
6.00
----
646
9.46
6.00
----
646
9.46
6.00
----
647
9.47
6.00
----
647
9.47
6.00
----
647
9.47
6.00
----
648
9.49
6.00
----
648
9.49
6.00
----
649
9.50
6.00
----
649
9.50
6.00
----
649
9.50
6.00
----
650
9.52
6.00
----
651
9.53
6.00
----
650
9.52
6.00
----
651
9.53
6.00
----
651
9.53
6.00
----
652
9.55
6.00
----
652
9.55
6.00
----
652
9.55
6.00
----
652
9.55
6.00
----
653
9.56
6.00
----
653
9.56
6.00
----
653
9.56
6.00
----
653
9.56
6.00
----
653
9.56
6.00
----
654
9.58
6.00
----
654
9.58
6.00
----
654
9.58
6.00
----
655
9.59
6.00
----
654
9.58
6.00
----
Ich habe im Anschluss noch eine 2. Messung durchgeführt, dabei fielen die Werte ähnlich aus. Gestartet sind die Bytewerte mit 743 bzw. 10,88 V. Nach und nach sind die Werte dann abgesunken bis auf 652 Byte und 9,55 V, danach sind die wieder etwas angestiegen auf 657 Byte und 9,62 V.
Vielen Dank im Voraus für die Hilfe!
Liebe Grüße
Maja