Bascom Positive- und negative Spannung am ADC

Holger

Mitglied
02. Juli 2012
37
0
6
75
Sprachen
Hallo,

ich möchte die Eingangs- und Ausgangsströme aus einem Akku messen.
Bisher ging ich wie folgt vor: Einen Shunt (aus alten Telekom Beständen) habe ich so zurecht gefeilt, dass bei 1 A ein Spannungsabfall von 1 mV erfolgte. Mit einem einfachen Vielfachmessgerät konnte ich nun im 200 mV Bereich den Verbrauch anzeigen. Das geht sehr gut, besonders weil, wenn bei der Ladung des Akkus die Spannung die Polarität wechselte, in der Anzeige ebenso der negative Wert angezeigt wurde. Nachteil bei der Sache ist das große Vielfachmessgerät.
Da ich jetzt seit einiger Zeit versuche mich mit den µC zu befassen, möchte ich das gleiche mit einem solchen realisieren und die Ausgabe über Siebensegment Anzeigen ermöglichen.
Den Spannungsabfall am Shunt würde ich an den ADC geben. Das müsste doch funktionieren. Wie ist es aber wenn die Polarität wechselt?
Der zu messende Bereich liegt zwischen 20 A Eingang ( Ladung durch Ladegerät oder Lichtmaschine) und 200 A Ausgang (max. Verbrauch) entsprechend also - 20 mV und + 200 mV (die Bereiche können durch Ops verändert werden). Ich habe gelesen, das es µC mit unsymetrischen Eingängen gibt. Wäre das die Lösung?

Gruß
Holger
 
Hallo :)

Ich hatte das bei meinem "Netzteil" mit dem ATtiny 861 gelöst, der hat auch gleich einen (optionalen) internen Verstärker für die Differentialeingänge. Wichtig ist nur dass die Spannungen zwischen GND und VCC liegen müssen. Sprich man müsste noch etwas davor schalten, weil negative Spannungen mögen die AVRs nicht. Was die Differentialeingänge vermutlich unnötig machen würde da man es anders eleganter lösen könnte. Beispielsweise mit einer Schaltung die 0V bei -200A und 1V bei +200A raus gibt (0A wäre denn 0,5V). Da gibt es hier garantiert Experten die dir da helfen könnten :)

Alles Andere sollte relativ easy goin' sein, grade bei nicht-ASM Sprachen :)
 
Schau Dir mal den Tiny25/45/85 an, der kann AFAIR 2 Eingänge differentiell messen. Entweder Unipolar, oder Bipolar (wobei jeder Eingang trotzdem innerhalb der Grenzen der Versorgungsspannung (AGnd..AVcc) liegen müssen). Unipolar mißt er mit 10 Bit Auflösung, bei bipolar sind die 10bit im Zweierkomplement (also 9bit plus Vorzeichen).

Du kannst aber erstmal bipolar messen, feststellen "wierum" die Polarität ist (Vorzeichen), entsprechend das Input Polarity Reversal Bit (in ADCSRB) setzen (also die Interne "Verdrahtung" der Eingänge auf den Differenzverstärker festlegen), und dann (immer "richtigrum") mit 10 bit Unipolar messen...

LotadaC
Nachtrag:
Der Tiny261/461/861 kann auch auf Unipolar geschaltet werden (mit 9Bit+Polaritätsbit (Zweierkomplement)). Er verfügt zwar über kein Input Polarity Reversal Bit (für den Unipolaren Differenzmodus), ABER Du kannst hier im ADMUX die Eingänge "andersrum" auf die beiden Eingangsmuxe schalten lassen (also zb MUX[5..0]=0b100001 mißt die Differenz zwischen ADC0 am positiven Eingang des Gain Amplifiers und ADC1 am negativen; MUX[5..0]=0b100011 mit ADC1 am positiven, und ADC0 am negativen Eingang. Also kannst Du auch hier erstmal Bipolar messend die Richtung bestimmen, und wenn Dir Die 9Bit nicht reichen auf den entsprechenden unipolaren Modus umschalten(erst MUX[5..0], dann BIN in ADCSRB)).

Der 261/461/861 bietet Dir mehr Pins für Deine Ausgabe usw, beide ICs besitzen aber lediglich 'n USI für die Kommunikation.
 
Hallo,
danke Euch erst einmal für die Tipps!
Nachdem ich die Sache dank eurer Anregungen weiter überlegt habe, bin ich auch auf ein weiteres Problem gestoßen.
-Die Spannung, die am Shunt abfällt, hat ja je nach "Verbrauch" oder "Ladung" ein negatives oder positiven Potential. Wenn ich den AVR aus dem gleichen System versorgen möchte kann ich aber mit der positiven Leitung, die ja auch negativ werden kann nicht auf GND gehen, da die Werte ja aus der positiven Leitung stammen.
Es wäre am besten, wenn ich das aufzeichnen würde. Zur Zeit bin ich aber im Urlaub :cool:und weiß nicht mit welchem Programm ich zeichnen kann, um das dann hier reinzustellen. Habt ihr einen Tipp?
Gruß
Holger
 
Eagle (Freeware) Schaltplan und den dann als .png exportieren ;)
Wäre eine Möglichkeit.

p.s.: Ich glaub genau das Problem meinten wir beide ;P
 
Hallo Holger,

Die Spannung, die am Shunt abfällt, hat ja je nach "Verbrauch" oder "Ladung" ein negatives oder positiven Potential. Wenn ich den AVR aus dem gleichen System versorgen möchte kann ich aber mit der positiven Leitung, die ja auch negativ werden kann nicht auf GND gehen, da die Werte ja aus der positiven Leitung stammen.

Du könntest die Betriebsspannung für den µC mit einem DC/DC-Wandler erzeugen, bei dem Ein- und Ausgang galvanisch entkoppelt sind, wie z.B. diesem hier :
http://www.reichelt.de/Wandler-Modu...6&artnr=SIM1-1205+SIL4&SEARCH=DC/DC+KONVERTER

Das Modul habe ich letztens selbst für ein Milliamperemeter verwendet, dessen Tiny13 aus der Spannungsquelle des zu messenden Stroms mit versorgt wird und es funktioniert bestens.

Du müßtest jetzt nur mal sehen, ob es auch ein Modul mit zu deiner Spannung passendem Eingang gibt. Diese Module sind bei der Eingangsspannung auf +/- 10% limitiert.

Gruß
Pirx
 
Hallo Holger,

Es wäre am besten, wenn ich das aufzeichnen würde. Zur Zeit bin ich aber im Urlaub :cool:und weiß nicht mit welchem Programm ich zeichnen kann, um das dann hier reinzustellen. Habt ihr einen Tipp?

... also notfalls nen Stift und Papier. Dann einscannen und hochladen. Mit ein wenig rumdrehen an der Farbanzahl, Auflösung und Dateityp (jpg/png/gif) sollte da auch was halbwegs kleines bei rauskommen.

Gruß
Dino
 
...Nachdem ich die Sache dank eurer Anregungen weiter überlegt habe, bin ich auch auf ein weiteres Problem gestoßen.
-Die Spannung, die am Shunt abfällt, hat ja je nach "Verbrauch" oder "Ladung" ein negatives oder positiven Potential. Wenn ich den AVR aus dem gleichen System versorgen möchte kann ich aber mit der positiven Leitung, die ja auch negativ werden kann nicht auf GND gehen...
Irgendwie verstehe ich das Problem jetzt nicht, kann mal wer erklären?

Du hast den Akku. Direkt am Pluspol dann den Shunt. Dahinter dann die Last (u.a. irgendwie runtergeregelt den AVR). Zum Laden wird dort auch die (positive) Ladespannung angelegt. Gnd des Akkus=Gnd des AVR=Gnd der Ladespannung=Gnd der Last. Direkt vor und hinter dem Shunt mißt Du nun die Spannungen. Die sind doch immer positiv gegen Gnd, oder etwa nicht?
Du mußt ggf nur dafür sorgen, daß die gemessene Spannung kleiner als 5V ist, also ggf präzise (Drift) Spannungsteiler einsetzen.
Diese positiven Spannungen liegen also an den Eingängen an, Du stellst den ADC auf differenzielle Messung.
Beim Entladen ist die akkuseitige Spannung größer als die lastseitige, also die Differenz Akku-Last positiv; beim Laden ist die akkuseitige Spannung kleine als die Ladespannung/lastseitige also die Differenz Akku-Last negativ.
Also muß der ADC auch noch bipolar messen. Dann spielt die Polarität der Differenz der Eingänge keine Rolle/wird diese mitermittelt (wobei beide Eingänge für sich innerhalb AGnd/AVcc liegen müssen). Das Ergebnis ist dann vorzeichenbehaftet, also im Zweierkomplement. Die 10Bit-Auflösung des ADC verteilen sich dabei auf den Bereich [-Referenz..+Referenz[, also je 9Bit auf jeder Seite der 0. Du kannst aber so das Vorzeichen bestimmen, und dann entsprechend die Polarität der Eingänge das Polarity Reversal Bit (Tiny25...) bzw die Zuordnung der Eingänge im ADMUX (Tiny261...) so einstellen, daß der ADC garantiert 'ne positive Differenz mißt, und diese dann Unipolar mit 10Bit (größer Null) messen (wenn Du die Auflösung wirklich brauchst.

Was ist, wenn bei bipolarer Messung die positive Eingangsspannung kleiner als die negative ist?
In the unipolar mode only one-sided conversions are supported and the voltage on the positive input must always be larger than the voltage on the negative input. Otherwise the result is saturated to the voltage reference.

Wo habe ich jetzt Eure negativen Spannungen übersehen?
 
Wo habe ich jetzt Eure negativen Spannungen übersehen?

...
Mit einem einfachen Vielfachmessgerät konnte ich nun im 200 mV Bereich den Verbrauch anzeigen. Das geht sehr gut, besonders weil, wenn bei der Ladung des Akkus die Spannung die Polarität wechselte, in der Anzeige ebenso der negative Wert angezeigt wurde.
...

Da :)

Es kommt eben drauf an wie der AVR versorgt wird. Wenn es verbunden wird wie mit dem Multimeter hat man die negativen Spannungen. Und auch wie die Messungen verschaltet sind. Wenn, wie bei meinem Netzteil, die Spannung vor und nach dem Shunt gemessen wird (ggf. Spannungsteiler) mit dem diff. ADC ... Sonderlich präzise ist das nicht, auch wenn mir eine Stelle nach dem Komma dafür reicht (max 30V 3A). Hat etwas von diesen Typ-K Temperaturfühler-Schätzeisen ;)
Aber vielleicht reichts ja?
 
Die -20mV..+200mV sind doch aber der Spannungsabfall über dem Shunt. Die tatsächlichen (gemessenen) Spannungen, also das was an den ADC Eingängen ankommt, ist doch aber trotzdem immer ca Akku- bzw Ladespannung +/- die 200mV, also immer positiv gegen Gnd.

Was Ihr mit Versorgung des AVR sonst meint, versteh ich nicht... Versorgung aus der Differenz selbst reicht nicht, hinter dem Shunt gegen Gnd paßt, was sonst?
 
Guten Morgen,
den Rat von Dino habe ich befolgt und einen Kuli genommen und gezeichnet. Ich versuche die "Zeichnung" hier reinzustellen.
Wenn ich den µC als vollkommen autarkes System behandle, also mit einer eigenen Stromversorgung, habe ich sicherlich kein Problem. Ich möchte aber den AVR aus dem Batteriekreis (24 V, 225 Ah) mit versorgen.
Das würde ja auch keine Probleme bereiten, wenn ich nur den Strom messen wollte, der aus dem Akku entnommen wird. In dem Moment, wo aber die Ladung durch die Lichtmaschine erfolgt, ändert sich doch die Polarität am Shunt.
Gruß
Holger
 

Anhänge

  • Urlaub Herbst 2014 Mosel 017.jpg
    Urlaub Herbst 2014 Mosel 017.jpg
    254,6 KB · Aufrufe: 16
Dann ist das Ganze ja kein Problem, weil du keine negativen Spannungen hast. Beide Signale liegen bei rund 24V +- n bissl, eben das zu messende. Brauchst du eigentlich nur noch 2 Spannungsteiler um die 2 Messwerte auf <Vref zu bringen. Ich nehm für sowas meißt Spindeltrimmer (da faul, Präzisionswiderstände würden natürlich genau so gehen). Dann hast du beispielsweise bei 24V durch den Teiler 4,5V am ADC Pin, was ok ist (wenn Vref = Vacc). Den ADC stellst du auf Differentialmessung, ggf. mit Gain (wie und ob das mit Bascom geht ohne selbst die Register zu setzen kA, in LunaAVR wars der umständliche Weg.), fertig :)

Also im Datenblatt schaun welche ADC pins sich als Differenzialeingänge verschalten lassen und denn Probeaufbau :)
 
... Brauchst du eigentlich nur noch 2 Spannungsteiler um die 2 Messwerte auf <Vref zu bringen...

Nicht ganz: Die müssen kleiner Vcc sein, den Betrag der maximalen Differenz willst Du gut auf Aref abbilden. Also erstmal den Controller festlegen (Tn261...?)

Beachte eventuelle Spitzen, insbesondere durch die Lichtmaschine...
 
Zitai von TommyB
Dann ist das Ganze ja kein Problem, weil du keine negativen Spannungen hast. Beide Signale liegen bei rund 24V +- n bissl, eben das zu messende. Brauchst du eigentlich nur noch 2 Spannungsteiler um die 2 Messwerte auf <Vref zu bringen. Ich nehm für sowas meißt Spindeltrimmer (da faul, Präzisionswiderstände würden natürlich genau so gehen). Dann hast du beispielsweise bei 24V durch den Teiler 4,5V am ADC Pin, was ok ist (wenn Vref = Vacc). Den ADC stellst du auf Differentialmessung, ggf. mit Gain (wie und ob das mit Bascom geht ohne selbst die Register zu setzen kA, in LunaAVR wars der umständliche Weg.), fertig
------------------------------------------------------------
Ich messe den Spannungsabfall am Shunt. Der Shunt hat einen Widerstand von 0,12 Ohm. Dadurch ergeben sich bei einem Durchgang von
1 A = 1 mV
10 A = 10 mV
100 A = 100 mV
und nur so kann ich doch einigermaßen genau den Verbrauch messen, oder?
Wenn der Strom durch den Shunt zum Verbraucher läuft haben wir den Spannungsabfall. Es ist dabei egal ob der Shunt in der positiven Leitung, oder in der negativen Leitung liegt. So hatte ich das in der Vergangenheit in einem Praxisbeispiel.
Der Shunt besteht bei mir aus zwei Kupferklötzen 25mm x 15mm x 6mm die durch eine Kupferstange 5mm verbunden sind. Beide Klötze haben eine Gewindebohrung zur Befestigung des Kabelsteckers. An diesen beiden Punkten wird der Spannungsabfall gemessen. Das von mir eingesetzte Vielfachmessgerät zeigte den Verbrauch 10 A = 10 mV mit negativem Vorzeichen an. Bei Ladung über die Lichtmaschine wurde z.Bsp. 5 A = 5 mV ohne Vorzeichen angezeigt.

Holger
 
Ja, aber mit dem Multimeter misst du ja die Spannung an dem Shunt. Also + an Batterie, - an Netz. So misst du natürlich die +200mV / -200mV. Aber der AVR bezieht sich immer gegen GND. Daher muss das was in den AVR rein geht im Bereich von GND und Vcc liegen (bzw. Vacc, je nach Controller und Einstellung). Das ist pflicht, auch bei differenzieller Nutzung. Ob nun Eingang 1 höher ist als Eingang 2 (positives Ergebnis) oder anders herum (dementsprechend negatives Ergebnis), es ist denn für den AVR keine negative Spannung sondern nur ein Unterschied von z. B. 4,6V zu 4,8V. Alles grün :)

Also so in etwa:
Unbenannt.jpg

Oben sitzt ein normaler 7805 für die 5V Generierung (exemplarisch). R1 und R2 sind die Spannungsteiler (hier als Trimmer) um aus den ~24V sagen wir 4,5 zu machen (um noch etwas Luft zu haben).
 
Hallo,

mit den beiden Spannungsteilern kann man zwar die 24V auf gesunde 5V runterteilen und dann beide Seiten des Shunts an je einem ADC-Eingang messen aber ...

Damit teilt man dann auch die zu messende Spannungsdifferenz am Shunt um den selben Faktor. :p

Damit bleiben also von den 1mV bei 1A nur noch 0,2mV (oder 200µV) übrig :rolleyes:
Da läßt die Genauigkeit schon stark zu wünschen übrig.

Ich würde da lieber nen OPAmp einsetzen der die Spannungsdifferenz am Shunt auf für den AVR gesunde Werte bringt. Das hätte nach meiner Meinung mehr Nährwert.

Gruß
Dino
 
Genau sowas meinte ich schon in #2 ;)
Kommt drauf an wie genau es sein muss. Mit diesem Weg ist es eher ein Schätzeisen, für einige Zwecke reicht es ja aber schon
 
Rechnerisch kommt man ganz gut hin, inwiefern Rauschen etc die Ergebnisse verfälscht, ist die Frage.

Nehmen wir mal den Tiny261/461/861...
An beiden Enden des Shunt je einen Spannungsteiler aus 4K7 und 1K (möglichst Präzise, Temperaturstabil etc)..
Theoretische 28,5V werden auf 5V geteilt.
Die geteilten Spannungen gehen auf zusammengehörende differentielle Eingänge, landen dort intern bipolar auf dem Gain-Amplifier (mit Gain=32), ihre verstärkte Differenz letztendlich auf dem ADC. Der mißt sie gegen die interne 1,1V-Referenz.

Eine tatsächliche Differenz von knapp 196mV würde dann die Referenz treffen.
 
Hi,

der Ansatz könnte gehen. Allerdings ...

An beiden Enden des Shunt je einen Spannungsteiler aus 4K7 und 1K (möglichst Präzise, Temperaturstabil etc)..

warum denn immer so niederohmig ... :rolleyes: ... ich würde da 47k und 10k nehmen da ja die vollen 24V da drüber liegen. Das sind sonst 4mA Querstrom durch den Teiler. Das muß nicht sein. Für die Widerstände gibts bei Reichelt 0,1%ige Metallfilmwiderstände. Die sollten reichen. Um es aber vernünftig zu haben muß man sowieso noch ein wenig von der Software "justieren".

Gruß
Dino
 
hatte ich auch erst... dachte, daß da dann Störungen leichter draufkoppeln (die ja mitverstärkt werden)...
also hochohmiger, und die Teilerwiderstände dicht an die AVR-Beine...
 

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)