Forum: Mikrocontroller und Digitale Elektronik Arduino Spannung messen - Werte stimmen nicht


von Maxxe89 (Gast)


Lesenswert?

Hallo zusammen,

ich wir mit einem Arudino Pro Mini unter anderem die Spannung am Akku 
messen. Es ist ein 12V Bleiakku mit 7Ah. Der Arduino wird mit einem 
Step-Down Wandler mit 5V versorgt.

Nun habe ich folgende Schaltung aufgebaut:
1
 
2
   +  <- Akku
3
  _|_
4
 |   |
5
 |   | R1 10K
6
 |___|
7
   |
8
   o----> A2
9
  _|_      
10
 |   |
11
 |   | R2 4,7k
12
 |___|      
13
   |
14
   -  <- Akku
Und folgenden Code:
1
int holeSpannug()
2
{
3
  int mess = analogRead(0);
4
  int spannung = map(mess, 0, 1024, 0 , 1475);
5
  return spannung;
6
}
Leider bekomme ich aber immer eine Spannung, die um 0,5 V zu viel 
angezeigt??!
Weiß jemand warum

Grüße

von Dave C. (dave_chappelle)


Lesenswert?

Maxxe89 schrieb:
> Leider bekomme ich aber immer eine Spannung, die um 0,5 V zu viel
> angezeigt??!

Wie kommst du darauf? Resp. wie sieht deine Referenzmessung aus?

Falls du nur mit rechnen auf den Wert gekommen bist.. wenn du 
Widerstände mit 10% Toleranz hast, könnte das im Worst Case (9K und 
5.17k) sogar hinkommen.

von Maxxe89 (Gast)


Lesenswert?

Hallo.

Danke für die Antwort.
Es sind 1% Toleranz-Widerstände, das war auch mein erster Gedanke.

Vergleichen tue ich mit einem Rodeo-Billig Multimeter und einem 
Voltcraft VC170.

von Timm R. (Firma: privatfrickler.de) (treinisch)


Lesenswert?

Hallo,

naja, wenn Du Schaltung und Programm genau so zusammenschusterst wie 
Deine Sätze,
ist das Ergebnis ja wohl nicht erstaunlich!

Zur Sache:

kannst Du mal kurz erklären, was genau Du mit dem Ergebnis von

int spannung = map(mess, 0, 1024, 0 , 1475);

machst, um festzustellen, dass eine Spannung 0,5 V zu hoch ist? Ich sehe 
weder eine Spannung noch eine Möglichkeit für ein Komma. Vielleicht bei 
der Gelegenheit noch erklären, was überhaupt der Sinn dieser Zeile sein 
soll?

vlg

 Timm

von Karl H. (kbuchegg)


Lesenswert?

Timm Reinisch schrieb:

> kannst Du mal kurz erklären, was genau Du mit dem Ergebnis von
>
> int spannung = map(mess, 0, 1024, 0 , 1475);


Ich denke das kann ich aufklären.
map ist eine Funktion die eine lineare Transformation macht.
Der Bereich 0..1024 wird auf 0..1475 abgebildet.

> weder eine Spannung noch eine Möglichkeit für ein Komma.

Ich schätze mal das ganze ist Fixpunkt, wobei die 1475 einer Spannung 
von 14.75V entspricht.

Wo die 14.75V allerdings herkommen ist mir auch nicht klar.

Wenn ich den Spannungsteiler ausgehend von 5V <==> 1024 zurückrechne, 
dann sollten das eigentlich 15.63V sein und somit da eigentlich IMHO 
1563 stehen.

von Sly (Gast)


Lesenswert?

Hallo

Dein Problem liegt da :
> int spannung = map(mess, 0, 1024, 0 , 1475);

Das musst so aussehen :
> int spannung = map(mess, 0, 1023, 0 , 1475);


Bei 1023 is schluß

von Lukas (Gast)


Lesenswert?

Da gibts auch eine komplette Lösung: 
http://www.aeq-web.com/vernetztes-voltmeter/

von Walter S. (avatar)


Lesenswert?

Maxxe89 schrieb:
> Leider bekomme ich aber immer eine Spannung, die um 0,5 V zu viel
> angezeigt??!
> Weiß jemand warum

was wird als Referenzspannung genommen, die interne ist jedenfalls nicht 
besonders genau

von Wolfgang A. (Gast)


Lesenswert?

Maxxe89 schrieb:
> Leider bekomme ich aber immer eine Spannung, die um 0,5 V zu viel
> angezeigt??!

Vielleicht ist dein Akku gar nicht so leer wie du denkst und liefert 
tatsächlich 12.5V

von Thomas F. (igel)


Lesenswert?

Wolfgang A. schrieb:
> Vielleicht ist dein Akku gar nicht so leer wie du denkst und liefert
> tatsächlich 12.5V

Nach 2 1/2 Jahren ist der bestimmt leer....

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.