Forum: Mikrocontroller und Digitale Elektronik 12V mit Atmega messen (Bascom)


von Hans C. (hans55)


Lesenswert?

Könnte mir einer bitte einer erklären woher diese Ungenauigkeit beim 
Messen einer 12V Spannung kommt?
Oder stimmt was nicht mit meinem Programm und der Umrechnung?

Ich will 12V mit dem ADU des ATMega messen:

12V werden über einen Spannungsteiler auf 1,5V geteilt (1/8) .
Am Pin des AVR liegen 1,5V an das den 12V vor dem Spannungsteiler 
entspricht.

Als AREF habe ich Interal mit 2,56V
2,56V/ 1024= 0,0025

Als WertAmPin bekomme ich 1,465 statt 1,5V angezeigt.
Wenn ich das x Faktor 8 nehme (Die vom Spannungsteiler) kommt
eine Spannung von 11,72V statt 12V raus.

Ist diese Ungenauigkeit Normal?
Passt man das in der Praxis einfach durch einen entsprechenden Faktor 
an,
z.B. statt Faktor 8 eben 8,2?

Gruß
  Hans


Das ist mein Programm:
========================================================================
$regfile = "m8def.dat"
$crystal = 14745600           'Externes Quarz   14,7456 Mhz
$baud = 9600

Config Lcd = 20 * 4
Config Lcdbus = 4
Config Lcdpin = Pin , Db4 = Portd.2 , Db5 = Portd.3 , Db6 = Portd.4
Config Lcdpin = Pin , Db7 = Portd.5 , E = Portd.7 , Rs = Portd.6
Cls

Dim Adu0 As Word
Dim Wertampin As Single
Dim Umes As Single

Config Adc = Single , Prescaler = Auto , Reference = Internal
Start Adc

Do
 Adu0 = Getadc(0)
 Wertampin = Adu0 * 0.0025    '2,56 Volt / 1024
 Umes = Wertampin * 8         ' Faktor vom Spannungsteiler

'//// LCD ANZEIGE //////////////////
 Locate 1 , 1
 Lcd "adu0=   " ; " " ; Hex(adu0)
 Waitms 100
 ' ANZEIGE am LCD= 024A ... 024B

 Locate 2 , 1
 Lcd "WertAmPin= " ; Fusing(wertampin , "##.###")
 Waitms 100
 ' ANZEIGE am LCD= 1,465 .. 1,467

 Locate 3 , 1
 Lcd "Umes=        " ; Fusing(umes , "##.##")
 Waitms 100
 ' ANZEIGE am LCD= 11,72 ... 11,74
Loop
End

von Falk B. (falk)


Lesenswert?

@ Hans C. (hans55)

>12V werden über einen Spannungsteiler auf 1,5V geteilt (1/8) .
>Am Pin des AVR liegen 1,5V an das den 12V vor dem Spannungsteiler
>entspricht.

Hast du das nachgemessen?

>Als AREF habe ich Interal mit 2,56V

Schön, aber die ist nicht sonderlich genau. +/-5% oder so. Siehe 
Datenblatt.

>Als WertAmPin bekomme ich 1,465 statt 1,5V angezeigt.
>Wenn ich das x Faktor 8 nehme (Die vom Spannungsteiler) kommt
>eine Spannung von 11,72V statt 12V raus.

Das sind gerade mal  2,3%. Passt.

>Ist diese Ungenauigkeit Normal?

Ja.

>Passt man das in der Praxis einfach durch einen entsprechenden Faktor
>an,
>z.B. statt Faktor 8 eben 8,2?

Ja, nennt sich Kalibrierung.

MfG
Falk

von Hans C. (hans55)


Lesenswert?

Prima und Danke
für die schnelle Antwort!
Die Spannungen hab ich mit einem Fluke Digitalmessgerät gemessen, das
vermutlich auch noch einen Fehler hat.
Mir kams nur etwas viel vor.

Aber im Prinzip ist auch mein Programm Richtig?

Gruß
 Hans

von Falk B. (falk)


Lesenswert?

@ Hans C. (hans55)

>Aber im Prinzip ist auch mein Programm Richtig?

Fast. Die Umrechnung von ADC-Wert in Spannung macht man sinnvollerweise 
in einem Schritt, das verringert die Rundungsfehler. Also 0,0025*8 
ausrechnen und direkt hinschreiben. Siehe Festkommaarithmetik.

MfG
Falk

von Hans C. (hans55)


Lesenswert?

Danke Falk
 Gruß
  Hans

von Hans C. (hans55)


Lesenswert?

Noch eine Frage.
Meine Spannungsmessung mit dem ATMega funktioniert nun wunderbar.
Die Strommessung geht auch, aber da der Bereich größer ist, messe ich
bei höheren Stromen um 80A statt 80A (gemessen mit Fluke) eben nur 
87,6A.
Im Bereich von 10A bis runter auf 1A passt es ziemlich genau, weil ich 
bei 10A justiert habe.
Unter 1A wird's dann wieder ungenauer, liegt vermutlich daran, weil ja 
dort nur noch 0,xx mV gemessen werden.
1mV entspricht über den Shunt= 1A. Die Referenz ist intern = 2,56V

Was könnte ich machen, damit die Anzeige über den gesamten Bereich
genauer wird?
Eine Gerade reinlegen? Aber wie programmiert man das in Bascom?

Oder gleich einen ADU mit 12Bit nur für die Strommessung an den ATMega 
anschließen? Ist vermutlich recht umständlich und für einen Anfänger 
schwer zu handeln, Oder?

Gruß
  Hans

von Avr N. (avrnix) Benutzerseite


Lesenswert?

Mache eine externe REF rein die Genauer ist.
Zwei Messbereiche  der einmal vielleicht < 2,56 A und Einmal > 2,56 A

Die entspreched eingestellt und über OPV Verstärken sind und Widerstände 
mit 1% oder besser nehmen.

Das Problem ist das 0...80000mA gemessen werden soll und Toleranzen ja 
aufadiert werden da kommen dann schnell 5..10% zusammen.

Dann zwei Messbereiche machen und eine Automatische Umschaltung 
erstellen.

Vielleicht braucht du nur die Verstärkung des ( über OPV ) 
Stromabnehmers zu ändern wenn unter/oberhalb einen Strom Bereich ist.


http://www.comwebnet.de - Bascom Projekte

von Hans C. (hans55)


Lesenswert?

Ok, das mit der Externen Referenz, da bin ich dabei.
Ich hab mir ein paar LM336 Spannungsreferenzen besorgt die ich noch 
einbauen werde.
Noch hab ich zum Test Wald- und Wiesenwiderstände eingesetzt die ich 
durch 1% ige ersetzen werde.
Das mit zwei verschiedenen Bereichen könnte ich auch machen.
z.B. würde das so gehen?:
  IF Imess > 30A THEN Imess+0,6
  IF Imess > 50A THEN Imess+0,8
  IF Imess > 80A THEN Imess+1,4
   IF Imess < 10A THEN Imess-0,2

Kann ich ich nicht eine oder zwei Geraden reinlegen? Wie mache ich das 
mit Bascom? Einfach so:  y=mx+b ?

Oder macht man das nicht so?
Gruß
  Hans

von Falk B. (falk)


Lesenswert?

@ Hans C. (hans55)

>Ich hab mir ein paar LM336 Spannungsreferenzen besorgt die ich noch
>einbauen werde.

Naja, so dolle ist die ach nicht. vor allem die Temperaturdrift. nimm 
mal lieber LM285 oder so.

>Noch hab ich zum Test Wald- und Wiesenwiderstände eingesetzt die ich
>durch 1% ige ersetzen werde.

Ist egal, du musst/solltest sowieso kalibrieren.

>Das mit zwei verschiedenen Bereichen könnte ich auch machen.
>z.B. würde das so gehen?:
>  IF Imess > 30A THEN Imess+0,6
>  IF Imess > 50A THEN Imess+0,8
>  IF Imess > 80A THEN Imess+1,4
>   IF Imess < 10A THEN Imess-0,2

Nein. Das ist Murks. Du kannst eine nichtvorhandene Auflösung/Dynamik 
nicht ersetzen.

>Kann ich ich nicht eine oder zwei Geraden reinlegen? Wie mache ich das

Nein, nicht wirklich.

Im einfachsten Fall baust du deine Messchaltung zweimal parallel auf und 
gibst sie auf zwei ADC-Eingänge. Eine für kleine Ströme bis 8A, eine bis 
80A.

Mfg
Falk

von Hans C. (hans55)


Lesenswert?

Na gut.
 Danke erst mal.
Gruß
  Hans

von Michael U. (amiga)


Lesenswert?

Hallo,

miß als ersts mal die tatsächliche Referenzspannung, die liegt am 
AREF-Pin ja an, wenn er auf intern 2,56V steht.
Die Stabilität der Referenz ist durchaus brauchbar, der absolute Wert 
kann aber bei jedem Exemplar des AVR merklich abweichen.

Rechne dann mit der tatsächlichen Spannung, nicht mit den theoretischen 
2,56V.

Gruß aus Berlin
Michael

von Hans C. (hans55)


Lesenswert?

Hallo Michael!
Du hast recht, da liegen statt 2,56V => 2,62V an wenn ich meinem 
Meßgerät glauben darf.
Das werd ich gleich mal probieren obs dann besser wird.
Danke!
 Gruß
   Hans

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.