hallo, ich will mir einen Autobatterie wächter bauen. Das Grundprinzip ist schon klar: Spannungsteiler und dann an den ADC (vom ATMega). ABER: da bekomm ich ja lineare Werte von 0-12 bzw hier dann 5V. Wie kann ich es machen, dass ich eig nur den Bereich zwischen 10-14V messe, damit ich die volle genauigkeit habe? also im endeffekt zB 0x00 für 10V bis 0xFF für 14V ? MFG luxx
Differentiell messen. Spannungsteiler mit drei Widerständen, über dem mittleren messen. Spannungsbereich kannst du leicht ausrechnen.
Hallo luxx, die Einschränkung des Meßbereiches auf Werte zwischen 10-14V macht m.E. keinen Sinn. die Spannung einer Autobatterie kann durchaus auch Werte kleiner 10 V annehmen (zum Beispiel beim Starten). Gruß Otto
also genauer: - Die spannung sinkt nicht unter 10V da die batterie nicht in einem Auto ist. - 10V (softwaremäßig) subtrahieren bringt ja nix, ich will ja die genauigkeit erhöhen. @ power: wie ghet das genau? hab ich nämlich nocgh nie gehört... DANKE schonmal! luxx
... die von Power vorgeschlagene Methode geht aber nur, wenn der Atmega galvanisch von der Autobatterie getrennt ist (also eine eigene Spannungsversorgung, z.B. eine eigene Batterie hat oder über einen galvanisch getrennten DC/DC Wandler gespeist wird). Gruss, Thorsten
Also die differentielle Messung steht im Datenblatt, ist von µC zu µC verschieden. Der Spannungsteiler sieht so aus: Ubatt-----| | R1 | | | | | |----( Umess+ zum µC | R2 | | | | | |----( Umess- zum µC | R3 | | | | | | GND-----| wie der Spannungsteiler zu dimensionieren ist musst du selbst ausrechnen. Steht in jedem Tabellenbuch.
was pasiiert wenn sie nicht galvansich getrennt sind? (wäre in meinem fall so) luxx
Naja, wenn die galvanisch nicht getrennt sind überschreitest Du die Limiten für die Spannung am Pin. Z.B. hat der Atmega Schutzdioden nach GND und VCC an den Eingängen. Werden ca. VCC+0.5V überschritten, werden diese leitend und je nach Ausgangswiderstand der Quelle fliesst dann ein mehr oder weniger grosser Strom. Ist die Ausgansimpedanz hoch und der Strom klein wird nur Deine Messung falsch, ist der Strom gross wird der Mega heiss und geht kaputt. Du musst daher bei galvanisch nicht getrennter Messung erstmal die Spannung in einen Bereich bringen, den der Controller abkann (mit einem Opamp als Summierverstärker). In diesem Bereich kannst Du dann, wie von Power beschrieben, differentiell die Spannung messen. Gruss, Thorsten
>Du musst daher bei galvanisch nicht getrennter Messung erstmal die Spannung in einen Bereich bringen, den der Controller abkann Dem ist nicht so! Der AVR ist da mit einigen 100kOhm geschützt. Ich betreibe ein Relais-Kontakt-Prüfgerät an 24V und habe noch keinerlei Ausfälle zu beklagen. + vom ADC liegt an +24V!
@Power Lies mal das Datenblatt unter Absolute Maximum Ratings (für Mega32 z.B. auf Seite 285): Voltage on any Pin except RESET with respect to Ground ................................-0.5V to VCC+0.5V Ist die Quelle entsprechend hochohmig, fliesst aber kaum Strom und der Mega kann das schon ab. Dann noch präzise Messungen machen ist aber nicht drin. Gruss, Thorsten
@Thorsten: Das ist der Unterschied zwischen Theoretiker und Praktiker. Mein Gerät läuft seit einem Jahr nachgemessenermaßen genau! Einfach mal probieren, die paar € die ein kaputter µC kostet sind's wert! ;-)
Hallo, mal so provokatorisch gefragt: bei max. 14V ist die Auflösung des ADC rund 14mV pro Schritt. Wofür brauche ich bei einer Autobatterie einen aktuellen Spannungswert mit dieser Genauigkeit? Kommt mir etwas wie "so genau wie möglich" statt "so geanu wie nötig" vor. ;) Gruß aus berlin Michael
@Power: Poste mal Deine Schaltung, so rein interessehalber ;-) Habe aber eigentlich nicht vor es auszuprobieren: Ich halte mich lieber an die Specs und nehme einen 20cent Opamp statt einen XEuro AVR zu zerschiessen. Gruss, Thorsten
Hallo, > Kommt mir etwas wie "so genau wie möglich" statt > "so genau wie nötig" vor. das sehe ich genauso - bei einem Bereich von 0 - 25V beträgt die Auflösung 100 mV bei einem 8-bit Wandler und das ist MEHR als ausreichend. Gruß Otto
Bischen heavy zu posten, geht bei EAGLE über 4 Seiten. Aber glaub's ruhig, er kann das ab!
Ich messe die Spannung eines Blei-Gel-Akkus, der über 78L05 einen Mega8535 versorgt, mit einem Spannungsteiler aus drei gleichen Widerständen. Am ADC liegt der Spannungsabfall des unteren Widerstandes, also max 5V bei 15V am Akku. Die Ausleseroutine ist sehr simpel und wird alle paarhundert Millisekunden (eine Sekunde reicht völlig) aufgerufen, wobei der ADC im Free-Run-Mode gemütlich vor sich hin klappert:
1 | in r0,adch ;ADC (linksbündig, also nur 8 Bit) einlesen |
2 | ldi wl,151 ;Skalierungsfaktor in r24 |
3 | mul r0,wl ;skalieren auf Zehntel Volt |
4 | locate 6,5 ;Ausgabeposition auf LCD 8x24 |
5 | print16 null,r1,1,using ;formatierte Ausgabe mit 1 Stelle nach Komma |
6 | print 'V',1 ;Einheitszeichen ausgeben |
Als ADC-Referenz dient dabei die AVR-Betriebsspannung, die vom 78L05 erzeugt wird. Auf eine Mittelwertbildung wurde erstmal verzichtet, wird vermutlich nachgerüstet, wenn auch eine zweite, per StepUp-Wandler erzeugte Spannung (um die 30V) gemessen und angezeigt werden muss. Im aktuellen Fall wird die Spannung nur am LCD angezeigt. Sie kann aber bei Bedarf ohne Weiteres auch als Istwert für eine Regelung oder zum Auslösen von Ereignissen (Ladegerät einschalten, Lastabwurf bei Tiefentladung) verwendet werden. ...
Wenn es unbedingt Subtraktion von 10V sein muss, dann geht das mit Operationsverstärker (Subtrahierer) oder einfach mit einer Z.Diode. Ersteres braucht Rail2rail-OPV oder negative Hilfsspannung, letzteres ist nicht allzu genau, wenn man keine negative Spannung für eine Konstantstromquelle bereitstellen will. Allerdings ist diese hohe Auflösung (nicht "Genauigkeit") vermutlich gar nicht erforderlich. Ich werfe in meinem obigen Beispiel 2/3 des Messbereiches weg, verzichte bewusst auf zwei Bit ADC-Auflösung und werfe noch das untere Byte des errechneten Ergebnisses weg und habe immernoch genügend "Genauigkeit". ;-) ...
Jetzt mal ein vernünftiger Vorschlag: Einfacher Spannungsteiler: R1 4k7 an +, R2 10k an Masse. Der Spannungsabfall an R1 über einen Differenzverstärker auf 0..5V übersetzt. Brauchst halt einen Rail-to-Rail. Negative Spannung kannst Du Dir schenken. Damit steuerst Du dann den Mega an. Oder: Wenn's geht, legst Du die Masse vom Mega auf +10V. Dann kannst Du direkt die +UBatt messen, die wird ja kaum über 15V gehen.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.