Arduino Spannung messen - Werte stimmen nicht

Gast #3175592
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
Gast #3175788
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.
(Firma: privatfrickler.de) #3175801
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
#3175816
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.
Gast #3175869
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ß

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 13 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.