Forum: Mikrocontroller und Digitale Elektronik ADC Messbereich verschieben nach 3,0 - 4,2V


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Ralf M. M. (ramime)


Lesenswert?

Hallo,

ich weiß nicht, ob das Thema hier oder zu Analogtechnik gehört, aber ich 
denke hier passt es durchaus auch.

Ich möchte mit einem Arduino Mega, der mit 5V betrieben wird (nur um ein 
konkretes Modell zu benennen, es kann genauso gut auch ein STM32F103 
sein) gerne eine Spannung im Bereich 3,0 V bis 4,2V messen.

Dies geht ja mit den Standardmitteln. Nur dachte ich mir, warum soll ich 
denn den restlichen Bereich "verschwenden" und somit gut ein bis zwei 
Bit in der Auflösung.

Deshalb die Frage wie verschiebe und vergrößere ich mein zu messendes 
Fenster von 3,0V - 4,2V auf 0V - 5V.

Dass ich dazu ziemlich sicher einen oder mehrere OpAmps brauche vermute 
ich schon (bin da erst am lernen wie die genau eingesetzt werden). Ich 
wollte nur schon mal fragen, ob ich mir durch die Verschieberei nicht 
wieder Ungenauigkeiten und Unlinearitäten hole und dadurch vielleicht 
mehr an Genauigkeit verliere als ich gewinne?

Ich brauche als keine fertige Lösung, sondern lediglich Hinweise wo ich 
was nachlesen kann, denn das Thema ADC lässt sich nicht wirklich gut 
googeln, weil da sehr viel kommt, was mir nicht weiterhilft.

von Joe F. (easylife)


Lesenswert?

Ralf M. M. schrieb:
> Ich wollte nur schon mal fragen, ob ich mir durch die Verschieberei
> nicht wieder Ungenauigkeiten und Unlinearitäten hole

wenn man es richtig macht nicht.
stichwort ist op-amp subtrahierer.

von Andreas S. (igel1)


Lesenswert?

Wenn Dein Meßobjekt und der AD-Wandler keine gemeinsame
Masse haben, so kannst Du auch GND vom Messobjectes um
3V gegenüber dem GND des AD-Wandlers absenken.

von Karl (Gast)


Lesenswert?

Joe F. schrieb:
> wenn man es richtig macht nicht.

Mit entsprechend teuren opamps vielleicht. Mit Standard Ware holst du 
dir schnell etliche 10 mV Offset. Wenn das keine Rolle spielt dann erst 
subtrahieren bzw. Differenz bilden und dann verstärken. Geht mit einem 
op wenn keine übertriebenen Anforderungen an Eingangswiderstand gestellt 
wird.

Der Messbereich wäre nur verschwendet wenn man die Auflösung unbedingt 
braucht. Gerade bei 12 Bit Wandlern ist das nur selten der Fall.

von Wolfgang (Gast)


Lesenswert?

Ralf M. M. schrieb:
> Deshalb die Frage wie verschiebe und vergrößere ich mein zu messendes
> Fenster von 3,0V - 4,2V auf 0V - 5V.

Wie willst du genau einen Messbereich bis 5V realisieren?
Dafür benötigst du eine Referenzspannung mit 5V, die in einem 5V-System 
nur mit zusätzlichem Aufwand zu betreiben ist. Oder bist du mit der 
Genauigkeit der µC Versorgungsspannung für die Messung zufrieden?

von Andreas S. (igel1)


Lesenswert?

@Ralf M. Metzing:

Beschreibe mal genauer, ob Messobjekt und Dein Arduino irgendwie
auf einem Potential zusammenhängen oder ob das nicht der Fall ist.

Sind beide getrennt, so lautet mein Vorschlag:

Schritt 1:

Du erzeugst eine negative Spannung nach dem Prinzip der Ladungspumpen:
http://www.loetstelle.net/praxis/negativevoltage/negativevoltage.php
http://www.sprut.de/electronic/switch/minus.html

Schritt 2:

Du schaltest an diese negative Spannung einen TL431 als Referenz und
schaffst Dir so einen Bezugspunkt (Hilfsmasse), der 2,5V unter Deiner
"echten" Masse liegt.

Schritt 3:

Du schließt Dein Meßobjekt zwischen dieser Hilfsmasse und dem AD-Wandler
Eingang an.  Dann "sieht" Dein AD-Wandler bei einer zu messenden
Spannung von 3V nur 0,5V.

Mit ein paar Zusatz-Tricks kannst Du die Hilfsmasse auch auf -3V
justieren.

Viele Grüße

Igel1

von Andreas S. (igel1)


Lesenswert?

Ach ja: wenn Du etwas mehr Geld investieren möchtest, so kannst Du 
natürlich auch bessere Referenzen als den TL431 einsetzen, z.B. den
LT1004, oder andere Käfer:
https://www.mikrocontroller.net/articles/Standardbauelemente#Shuntregler.2FSpannungsreferenz

Oder Du suchst bei Distributoren nach Spannungsreferenzen und
sortierst dort per Filter direkt die 3V Referenzen raus, z.B. so:
http://de.farnell.com/webapp/wcs/stores/servlet/Search?catalogId=15001&langId=-3&storeId=10161&categoryId=700000004344&sort=P_ATT_BASE_VALUE_1012845_DE_DE&eq=N%3D203961%2B312893079%2B2008%26amp%3BNs%3DP_PRICE_FARNELL_DE%257c0%26amp%3BNtpc%3D1%26amp%3BNtpr%3D1&showResults=true&aa=true&pf=312893079&vw=

Im obigen Link habe ich die 192 Treffer direkt nach Anfangsgenauigkeit
sortieren lassen. Man erkennt: schon für 1-2 EUR gibt's Genauigkeit,
die über der Genauigkeit eines AD-Wandlers der ATmega- oder ST-Serie
liegen dürfte.

Das Problem wird allerdings die Beschaffbarkeit solcher Bauteile beim
Hobby-Online-Versand sein. Dort mußt Du einfach nach
"Spannungsreferenz, 3V" suchen und dann nehmen, was halt verfügbar ist.

Am Ende der gesamten Übung hast Du Deinen Spannungsbereich
von 3,0 ... 4,2V auf einen Bereich von 0,0 ... 1,2V  "transformiert"
... und damit - das fällt mir leider jetzt erst auf - Deine Aufgaben-
stellung total verfehlt ... uppps .....

Viele Grüße

Igel1


PS: Sorry - habe zuletzt wohl zu viel mit ESP8266-Bausteinen
    herumgespielt, bei den der AD-Wandler von 0...1V auflöst.

: Bearbeitet durch User
von Andreas S. (igel1)


Lesenswert?

Also: nächster Versuch - ganz anderer Ansatz:


Du willst Deine Spannung 3 ... 4,2V auf 0 ... 5V abbilden/mappen.

Dann ist ein sogenannter "Instrumentenverstärker" das Mittel
Deiner Wahl. Das Prinzip wird hier erklärt:
https://www.mikrocontroller.net/articles/Operationsverst%C3%A4rker-Grundschaltungen#Der_Instrumenten-Verst.C3.A4rker

Wenn Du Dir die Details schenken möchtest, so suche Dir einfach einen
Käfer Deiner Wahl beim Distributor Deiner Wahl aus, z.B. hier:
http://www.reichelt.de/index.html?ACTION=446&LA=0;SID=96WBONTKwQATcAABtu%405se77da140ab17e82327be2755615e96fe

So ein Instrumentenverstärker wirft Dir hinten auch immer schön
die Spannungsdifferenz heraus, die Du mit dem Ding auch direkt
zusätzlich verstärken - also  auf den gewünschten Bereich
spreizen - kannst.

Der AD623 als "Single-Supply, Rail-to-Rail, Low Cost"-Instrumenten-
verstärker wäre ganz gut für Deine Zwecke:
http://cdn-reichelt.de/documents/datenblatt/A200/DATASHEET_AD623-AD-EN.pdf

INA118 könnte auch gehen - ist aber teurer.

Allerdings wirst Du an den oberen und unteren Grenzen (0V bzw. 5V)
ggf. etwas Abstriche machen müssen, weil die Teile nicht alle bis
zu Ihrer Versorgungsspannung hoch-/runterregeln können
(Stichwort: "Output Swing"). Der AD623 käme z.B. nur von 0,01V ... 4,5V.

So - ich hoffe, dass ich diesmal Deine eigentliche Fragestellung
besser getroffen habe. Sorry für die beiden "Irrläufer" meiner vorigen
2 Posts.

Viele Grüße

Igel1

von Harald W. (wilhelms)


Lesenswert?

Ralf M. M. schrieb:

> ADC Messbereich verschieben nach 3,0 - 4,2V

Siehe hier:
https://www.mikrocontroller.net/articles/Spannungsteiler#Spannungsteiler_mit_Offset.2C_passiv
Zusätzlich brauchst Du noch eine einfache OPV- Verstärker-
Schaltung

von THOR (Gast)


Lesenswert?

Ralf M. M. schrieb:
> Hallo,
>
> ich weiß nicht, ob das Thema hier oder zu Analogtechnik gehört, aber ich
> denke hier passt es durchaus auch.
>
> Ich möchte mit einem Arduino Mega, der mit 5V betrieben wird (nur um ein
> konkretes Modell zu benennen, es kann genauso gut auch ein STM32F103
> sein) gerne eine Spannung im Bereich 3,0 V bis 4,2V messen.

Sag doch einfach Li-Ion Spannungsüberwachung, spart uns hier das 
Rätselraten.


Ich empfehle dir, die interne 2,54V Bandgap einzuschalten und die 
Akkuspannung mit einem 1:2 Spannungsteiler und Abblockkondensator an den 
ADC Port zu führen.

Das ergibt Wertebereiche von 3/2/2,54*256= 151 und 211.

Wenn dir die Auflösung davon zu gering ist, kannst du auch ne 
differentielle Messung machen indem du 3V an einen ADC Port hängst und 
deine Akkuspannung an einen anderen.

von Jörg R. (solar77)


Lesenswert?

THOR schrieb:
> Sag doch einfach Li-Ion Spannungsüberwachung, spart uns hier das
> Rätselraten.


An Li-Ion dachte ich auch bei den Werten.

Ohne Veränderungen misst er ja schon mit einer Auflösung von ca. 5mV, 
bei 10Bit. Es stehen ca. 245 Messwerte zur Verfügung.

Wenn die 1,2 Volt um die es eigentlich geht so verstärkt werden das der 
komplette Messbereich des uC von 5 Volt ausgenutzt wird sind es ca. 1mV 
Auflösung. Was nutzt das aber wenn die Genauigkeit nicht stimmt weil die 
Zusatzschaltung sowie die Referenzspannung für den ADC das Ergebnis 
verschieben?

Wenn es wirklich um Li-Ion geht reichen die 5mV aus. Evtl. würde ich mit 
einer ext. Referenzspannung für den ADC arbeiten.

@TO
Wie genau möchtest Du den messen. Und, geht es um Li-Ion?

von Crazy H. (crazy_h)


Lesenswert?

Oder du verwendest einen externen AD-Wandler, der eine wesentlich höhere 
Auflösung hat, dann kannst du getrost auf deine paar Bit verzichten.

von Thomas E. (picalic)


Lesenswert?

THOR schrieb:
> Ich empfehle dir, die interne 2,54V Bandgap einzuschalten

Warum? Vielleicht, weil die besonders genau ist, weil der Hersteller ja 
die Spannung auf 2 Stellen hinter dem Komma angibt? Da empfehle ich doch 
einen PIC, da werden die 1.024V sogar auf 3 Stellen hinter dem Komma 
angegeben!
(SCNR)

Sorry, mit der internen Referenz ist die Auflösung des AD-Wandlers wohl 
das geringere Genauigkeitsproblem...

von Harald W. (wilhelms)


Lesenswert?

Thomas E. schrieb:

>> Ich empfehle dir, die interne 2,54V Bandgap einzuschalten
>
> Warum? Vielleicht,

...weil sie eher zum gewünschten Meßbereich von 1,2V passt?

> Sorry, mit der internen Referenz ist die Auflösung des AD-Wandlers wohl
> das geringere Genauigkeitsproblem...

Immerhin die "interne" besser als die 5V Betriebsspannung
als Referenz sein.

von Christoph db1uq K. (christoph_kessler)


Lesenswert?

So schwer ist die Berechnung eines nichtinvertierenden 
Operationsverstärkers nicht.
Von 1,2 V Spannungshub am Eingang auf 5V (oder wie schon gesagt wurde 
besser etwas weniger) wäre eine Spannungsverstärkung von 5/1,2=4,167

Für den Spannungsteiler vom Ausgang über den inv. Eingang nach einer 
niederohmigen positiven Gleichspannung (statt GND) muss man noch 1 
subtrahieren. Damit ist das Widerstandsverhältnis 1:3,1567 oder als 
Kehrwert 0,3158:1
Dazu findet man z.B. 47:150 oder noch näher 160:510
https://www.mikrocontroller.net/articles/E24-Teiler

Statt einer sehr niederohmigen Referenz kann man auch zwei passende 
Widerstände nach GND und +V nehmen, da dauert die Berechnung etwas 
länger.

von Thomas E. (picalic)


Lesenswert?

Harald W. schrieb:
> ...weil sie eher zum gewünschten Meßbereich von 1,2V passt?

Der sollte AFAIK 3,0 bis 4,2V sein. Mit ca. Halbierung von Referenz und 
Spannungsteilung 1:2 des Messignals kann man hier nichts gewinnen.

Harald W. schrieb:
> Immerhin die "interne" besser als die 5V Betriebsspannung
> als Referenz sein.

Es ist leicht, einen auf <1% genauen Spannungsregler zu finden. Ich 
würde mal vage behaupten, daß dann die 5V Versorgungsspannung deutlich 
genauer sind, als die +/-10% der internen Referenz...

von Noch einer (Gast)


Lesenswert?

Hier fehlt noch der Hinweis auf "Op amps for everyone"
http://web.mit.edu/6.101/www/reference/op_amps_everyone.pdf

In Kapitel 4.3 findest du die grundlegenden Schaltungen und Berechnungen 
zum Verschieben des Messbereichs.

In Kapitel 12 die Berechnung der zu erwartenden Abweichungen vom 
Messwert.

von Ralf M. M. (ramime)


Lesenswert?

Erst mal vielen Dank für die zahlreichen und umfangreichen Antworten, 
ich muss mir diese nun erst mal im Detail ansehen, möchte aber hier 
einige der Fragen beantworten.

Ja in der Tat geht es in einem ersten konkreten Fall um die Überwachung 
der eigenen(!) Spannungs-Versorgung die per Step-Up-Converter aus einem 
LiPo Akku kommt, somit also gemeinsamer GND.

Grundsätzlich geht es mir aber darum zu verstehen, wie ich sowas 
generell messen kann, da ich auch andere Planungen habe für die 
Versorgung mit Batterien und Step-Down oder Längsregler. Allen gemeinsam 
ist, dass sich der Messbereich immer deutlich oberhalb der "Null" 
befindet und ich die Auflösung des ADC eben so gut es mit vertretbaren 
Mitteln möglich ist ausnutzen möchte.
Die Messungen selbst sind nicht so zeitkritisch, d.h. 5-10 Mal pro 
Sekunde reicht völlig aus. Die Umgebung wird auch (zumindest für die 
ersten Projekte) Raumtemperatur sein, also im Bereich 15 - 30°C 
(natürlich könnte das jeweilige "Projekt" sich etwas aufwärmen)

Es geht mir hier vor allem darum zu lernen und zu verstehen, bis zu 
welcher Auflösung es wirklich Sinn macht, dies im Hobby Bereich 
umzusetzen. Kann gut sein, dass ich einfach die 10Bit von 0-5V nehme und 
gut ist.

von Ralf M. M. (ramime)


Lesenswert?

Noch einer schrieb:
> Hier fehlt noch der Hinweis auf "Op amps for everyone"
> http://web.mit.edu/6.101/www/reference/op_amps_everyone.pdf
>
> In Kapitel 4.3 findest du die grundlegenden Schaltungen und Berechnungen
> zum Verschieben des Messbereichs.
>
> In Kapitel 12 die Berechnung der zu erwartenden Abweichungen vom
> Messwert.

Super, genau sowas habe ich gesucht (auf deutsch gibt es sowas nicht, 
oder? Wobei englisch eigentlich kein Problem ist, bloß wenn es um den 
letzten Kniff geht, will ich sicher sein, dass ich den Satz dann immer 
wirklich korrekt verstanden habe)

Und vielen Dank auch für die direkten Links in die Kapitel!

Vor allem die Abbildung 4-12 zeigt mir, dass dies in der Theorie 
tatsächlich linear geht.

Und Kapitel 12 wird die Lektüre für die nächsten Tage ...

von --- (Gast)


Lesenswert?

Zu lustig wenn ueberwiegend die Generation "Antuino" mit
ihrem nicht vorhandenen Analogwissen um sich wirft.

Von Instrumentationsverstaerker bis Hilfsmasse...


(Ausgenommen sind alle die Vorschlaege das ganze so zu
lassen wie es ist, und der Subtrahierverstarker. Wobei
die Generation "Antuino" natuerlich wieder Schwierigkeiten
haben wird, den OPV mit einer ordentlichen Versorgung
zu fuettern.)

von Andreas S. (igel1)


Lesenswert?

@---:

Hier meldet sich Generation "Antuino".

Bitte erkläre, was am Instrumentenverstärker falsch ist.
Bitte konkret und präzise.

Und wenn Du schon dabei bist, so widerlege auch konkret
und präzise das oben beschriebene Konstrukt mit der "Hilfsmasse".

Letzte Bitte:
Wenn Du anonym unterwegs bist, dann verzichte bitte darauf, über
andere "abfällig" zu schreiben - das ist einfach kein guter Stil.
Hier kannst Du technisch gerne wetteifern, aber nicht persönlich
verletzend sein.

Sorry - aber Generation "Antuino" ist so etwas wichtig.

Gruß

Igel1

von Harald W. (wilhelms)


Lesenswert?

Thomas E. schrieb:
> Harald W. schrieb:
>> ...weil sie eher zum gewünschten Meßbereich von 1,2V passt?
>
> Der sollte AFAIK 3,0 bis 4,2V sein. Mit ca. Halbierung von Referenz und
> Spannungsteilung 1:2 des Messignals kann man hier nichts gewinnen.
>
> Harald W. schrieb:
>> Immerhin die "interne" besser als die 5V Betriebsspannung
>> als Referenz sein.
>
> Es ist leicht, einen auf <1% genauen Spannungsregler zu finden. Ich
> würde mal vage behaupten, daß dann die 5V Versorgungsspannung deutlich
> genauer sind, als die +/-10% der internen Referenz...

Du hast wohl noch nicht viel mit der Entwicklung von Präzisions-
Schaltungen zu tun gehabt?

von Thomas E. (picalic)


Lesenswert?

Harald W. schrieb:
> Du hast wohl noch nicht viel mit der Entwicklung von Präzisions-
> Schaltungen zu tun gehabt?

Ich entwickele meine Schaltungen so präzise, wie sie sein müssen.

Nochmal:
hier wurde dem TO vorgeschlagen, statt die 5V der Versorgungsspannung 
(selbst ein alter 7805 stabiliert die auf 5% genau) die interne Referenz 
des Mikrocontrollers zu benutzen. Diese hat, soweit ich es aus AVR 
Datenblättern kenne, eine deutlich höhere Ungenauigkeit, nämlich im 
Bereich von +/- 10%. Wie soll denn da eine genauere Messung 
zustandekommen, als mit der Versorgungsspannung als Referenz?

von Walter S. (avatar)


Lesenswert?

Thomas E. schrieb:
> Wie soll denn da eine genauere Messung
> zustandekommen, als mit der Versorgungsspannung als Referenz?

mit Kalibrierung

von Walter S. (avatar)


Lesenswert?

THOR schrieb:
> kannst du auch ne
> differentielle Messung machen indem du 3V an einen ADC Port hängst und
> deine Akkuspannung an einen anderen.

der Beitrag wird zu Unrecht ignoriert

von Ralf M. M. (ramime)


Lesenswert?

Thomas E. schrieb:
> Nochmal:
> hier wurde dem TO vorgeschlagen, statt die 5V der Versorgungsspannung
> (selbst ein alter 7805 stabiliert die auf 5% genau) die interne Referenz
> des Mikrocontrollers zu benutzen. Diese hat, soweit ich es aus AVR
> Datenblättern kenne, eine deutlich höhere Ungenauigkeit, nämlich im
> Bereich von +/- 10%. Wie soll denn da eine genauere Messung
> zustandekommen, als mit der Versorgungsspannung als Referenz?

Vielen Dank für den Hinweis, und ja es sind laut Datenblatt beim 
ATMega2560 tatsächlich fast 10% mögliche Abweichung bei den internen 
Referenzen und genau das ist auch der Punkt, denn ich mir genau 
anschauen wollte, nicht dass ich einen höheren Aufwand betreibe um das 
Messfenster zu verschieben und habe an anderer Stelle eine 
Ungenauigkeit, welche mir den vermeintlichen Genauigkeitsgewinn zunichte 
macht.

Ein 7805 wird bei mir nicht wirklich funktionieren, da ich ja mit einem 
Step-Up arbeite, der die 5 Volt erzeugt, aber es gibt ja andere 
Möglichkeiten eine genauere Referenzspannung zu erzeugen. Ich schaue 
mich da mal um.

von Ralf M. M. (ramime)


Lesenswert?

Walter S. schrieb:
> THOR schrieb:
>> kannst du auch ne
>> differentielle Messung machen indem du 3V an einen ADC Port hängst und
>> deine Akkuspannung an einen anderen.
>
> der Beitrag wird zu Unrecht ignoriert

Er wird nicht ignoriert, nur muss ich mich hier erst noch genauer 
einlesen, bis ich genau verstehe wie es geht und dann ggf. dazu 
Rückfragen kann.

von Jörg R. (solar77)


Lesenswert?

Ralf M. M. schrieb:
> ...aber es gibt ja andere Möglichkeiten eine genauere Referenzspannung zu
> erzeugen. Ich schaue mich da mal um.

Nur ein Beispiel:

https://www.reichelt.de/ICs-NE-STV-/REF-02-BP/3/index.html?ACTION=3&GROUPID=2915&ARTICLE=147325

von Thomas E. (picalic)


Lesenswert?

Walter S. schrieb:
>> Wie soll denn da eine genauere Messung
>> zustandekommen, als mit der Versorgungsspannung als Referenz?
>
> mit Kalibrierung

Logisch - dabei nicht vergessen, die Kalibrierung mehrfach bei 
verschiedenen Temperaturen durchzuführen und eine 
Temperatur-Korrekturkurve zu programmieren!

Walter S. schrieb:
>> differentielle Messung machen indem du 3V an einen ADC Port hängst und
>> deine Akkuspannung an einen anderen.
>
> der Beitrag wird zu Unrecht ignoriert

und wo kommen die 3V her?

Ralf M. M. schrieb:
> Ein 7805 wird bei mir nicht wirklich funktionieren, da ich ja mit einem
> Step-Up arbeite, der die 5 Volt erzeugt, aber es gibt ja andere
> Möglichkeiten eine genauere Referenzspannung zu erzeugen. Ich schaue
> mich da mal um.

Der 7805 war nicht als Bauteile-Empfehlung gedacht, sondern sollte nur 
zeigen, daß der immer noch besser wäre, als +/- 10% der internen 
Referenz. - obwohl er nicht gerade ein Muster an Präzision ist. Guck 
doch mal ins Datenblatt Deines Step Up Controllers. Auch da gibt es ICs, 
die deutlich genauer regeln, als der alte 7805.

von Jörg R. (solar77)


Lesenswert?

Thomas E. schrieb:
> und wo kommen die 3V her?

Spannungsteiler aus 2 Widerständen 1% oder 0,1% an Uref.

von Thomas E. (picalic)


Lesenswert?

Ralf M. M. schrieb:
> und ja es sind laut Datenblatt beim
> ATMega2560

Mal ne andere Frage so nebenbei: gibt es überhaupt einen Grund, einen 
Stepup-Wandler zu verwenden? Der Mega läuft doch ganz hervorragend 
direkt im gesamten Betriebsspannungsbereich der Li-Zelle!

von Thomas E. (picalic)


Lesenswert?

Also, zu der Sache mit der differentiellen Messung: Soweit ich das beim 
Überfliegen des Datenblatts gesehen habe, verschiebt das Anklemmen des 
invertierenden Eingangs an ein festes Potential lediglich den Mittelwert 
des AD-Wandlers, d.h. mit 3V am invertierenden Eingang hat man bei einer 
Eingangsspannung von 3V am nichtinvertierenden Eingang einen Ausgabewert 
von 0x000, die Auflösung des AD-Wandlers (mV/Schritt) ändert sich aber 
nicht! Davon bekommt man also keine bessere Auflösung.
Nun könnte man die Schritte über den "Gain"-Parameter kleiner machen, 
aber die nächste Gain-Stufe scheint dann x10 zu sein, das ist aber schon 
wieder viel zuviel!
Außerdem, wenn man mal die "Absolute Accuracy" von Single Ended Channels 
und Differential Channels vergleicht, darf bezweifelt werden, ob die 
Verwendung von differentieller Messung wirklich der Genauigkeit 
zuträglich ist...

: Bearbeitet durch User
von Jörg R. (solar77)


Lesenswert?

Thomas E. schrieb:
> Also, zu der Sache mit der differentiellen Messung: Soweit ich das beim
> Überfliegen des Datenblatts gesehen habe, verschiebt das Anklemmen des
> invertierenden Eingangs an ein festes Potential lediglich den Mittelwert
> des AD-Wandlers, d.h. mit 3V am invertierenden Eingang hat man bei einer
> Eingangsspannung von 3V am nichtinvertierenden Eingang einen Ausgabewert
> von 0x000, die Auflösung des AD-Wandlers (mV/Schritt) ändert sich aber
> nicht! Davon bekommt man also keine bessere Auflösung.

Eine bessere Auflösung bekommt der TO hin wenn er das Messignal 
verstärkt und den kompletten Messbereich des uC ausnutzt. Oder er nimmt, 
wie auch schon vorgeschlagen, einen externen ADC.

Ich meine eine externe Referenzspannung reicht vollkommen aus. Bei 10 
Bit hat er eine Auflösung von ca. 5 mV. Das reicht auch für einen 
Li-Ion.
Da muss dann auch nix verschoben werden. Umrechnen reicht.

: Bearbeitet durch User
von Ralf M. M. (ramime)


Lesenswert?

Thomas E. schrieb:
> Ralf M. M. schrieb:
>> und ja es sind laut Datenblatt beim
>> ATMega2560
>
> Mal ne andere Frage so nebenbei: gibt es überhaupt einen Grund, einen
> Stepup-Wandler zu verwenden? Der Mega läuft doch ganz hervorragend
> direkt im gesamten Betriebsspannungsbereich der Li-Zelle!

Hmm, ich habe hier absichtlich nur ein(!) konkretes Beispiel gewählt, da 
ich gerne wollte, dass der Fokus auf dem eigentlichen "Problem" bleibt, 
also wie ich die Messung in den Bereich verschiebe. Tatsächlich nehme 
ich zum Basteln inzwischen meist einen STM32F0/1/4xx oder STM32L0xx aber 
eben auch den verpönten Arduino Uno / Mega oder Nano, je nachdem, ob ich 
gerade ein neues Display ausprobiere oder wie hier ein neues 
"Wissensfeld", dann ist der Arduino eben toll wegen der Libs und ich 
kann dann das Feld Stück für Stück erkunden und dann die Erkenntnisse 
z.B. auf einen STM32F103 umsetzen und dort dann ohne StdLib und HAL 
sondern direkt mit den Registern aus dem Datenblatt dann eine Umsetzung 
machen.

Aber hätte ich das in meiner Eingangsfrage dazugeschrieben wäre der 
Thread wieder in Grundsatzdiskussionen über Arduino abgetrifftet und 
hätte das Thema nicht, wie geschehen, nur kurz gestreift.

Aber Du hast sicherlich recht für den ATMega2560 bräuchte ich kein 
StepUp, aber für ein Projekt wie z.B. das hier
https://www.youtube.com/channel/UCe8xO6ANyH9VR9KUkA85Spg
ist es zu Beginn einfach hilfreich es auf 5V auszulegen, mit allen 
Nachteilen.

von Harald W. (wilhelms)


Lesenswert?

Ralf M. M. schrieb:

> Vielen Dank für den Hinweis, und ja es sind laut Datenblatt beim
> ATMega2560 tatsächlich fast 10% mögliche Abweichung bei den internen
> Referenzen

Solche Referenzen sollte man wirklich bei jedem einzelnen Exemplar
nachmessen und Spannungsteiler mit dem echten Wert der Referenz
berechnen. Alternativ kann man die Korrektur per Software machen.
Das kann man dann auch automatisieren, wenn man eine grössere
Serie baut.

> Ein 7805 wird bei mir nicht wirklich funktionieren,

Insbesondere wenn auch noch andere Schaltungsteile damit versorgt
werden ist eine Betriebsspannung als Referenz technischer Unsinn.

> aber es gibt ja andere
> Möglichkeiten eine genauere Referenzspannung zu erzeugen.

Wenn Dir die Genauigkeit der internen Referenz nicht reicht,
solltest Du Dich besser gleich nach einem präziseren, externen
AD-Wandler umsehen.

von Ralf M. M. (ramime)


Lesenswert?

Harald W. schrieb:
> Das kann man dann auch automatisieren, wenn man eine grössere
> Serie baut.

Ist im Augenblick nicht mal am Horizont absehbar oder angedacht

Harald W. schrieb:
>> aber es gibt ja andere
>> Möglichkeiten eine genauere Referenzspannung zu erzeugen.
>
> Wenn Dir die Genauigkeit der internen Referenz nicht reicht,
> solltest Du Dich besser gleich nach einem präziseren, externen
> AD-Wandler umsehen.

ist bereits geschehen:
http://www.ebay.de/itm/172346369970

Und bis der eintrifft, werde ich mich intensiv mit den OpAmps 
auseinandersetzen. Die habe ich bereits inkl. Breadboard, +- 
Spannungsversorgung, Signalgenerator und "Oszi" zum Glück inzwischen da.

Ist zwar etwas ungewohnt auch mal was zwischen 0 und 1 zu haben und 
einen "int" statt einen "uint" zu verwenden :-D

von MaWin (Gast)


Lesenswert?

--- schrieb:
> Zu lustig wenn ueberwiegend die Generation "Antuino" mit
> ihrem nicht vorhandenen Analogwissen um sich wirft.
> Von Instrumentationsverstaerker bis Hilfsmasse...

Ja, krass was hier so alles an Falschem vom Stapel gelassen wurde, aber 
wenn man Arduino nicht schreiben kann, sollte man die Füsse stillhalten.

> Ausgenommen sind alle die Vorschlaege das ganze so zu
> lassen wie es ist, und der Subtrahierverstarker.

Nicht ausgenommen, sondern auch unpassend, er hat ja nicht danach 
gefragt, und Subtrahieren reicht nicht.

Ralf M. M. schrieb:
> Deshalb die Frage wie verschiebe und vergrößere ich mein zu messendes
> Fenster von 3,0V - 4,2V auf 0V - 5V.

Mit einem einzelnen OpAmp. Nimmst du einen Rail-To-Rail OpAmp wie AD820, 
kann der fast 0V und fast 5V liefern wenn er selbst mit 0V/5V versorgt 
wird. Ansonsten brauchst du für den OpAmp eine negativere und positivere 
Versorgungsspannung, z.B. -5V und +10V für einen OP07.

Die Schaltung ist:
1
     +5V +Ub
2
      |   |
3
     R1   |
4
      |   |
5
      +---(--R2--+
6
      |   |      |
7
------(--|+\     |
8
      |  |  >----+--
9
      +--|-/    
10
      |   |
11
     100k |
12
      |   |
13
      0V -Ub
Die Vorgabe 3V -> 0V und 4.2V -> 5V sagt, bei 3.95V geht dasselbe rein 
wie rauskommen soll. R1 muss also 26.6k haben damit an dem 10k 
Widerstand und damit am anderen OpAmp Eingang auch 3.95V anliegen. R1 
parallel zu 100k hat 21k. Die Verstärkung muss 3.95/0.95 = 4.16 
betragen, also R2 3.16 mal so gross sein, also 66.36k.

Damit das Ergebnis genau genug für den (5V/1024=5mV) / 4.16 ~= 1mV wird, 
sollte der OpAmp eine Offsetspannung besser als 0.5mV haben (die 
genannten haben) und die Widerstände besser als 0.05% sein und natürlich 
die 5V Referensspannung ausreichend sein.

Aber unsere Arduinokinder können nicht mal Grundschulrechenarten, du 
wirst sie gleich jammern hören, oder dummschwätzen, das können sie eher, 
dabei ist eine der einfachsten OpAmp Schaltungen die es gibt, das 
allererste was man lernen und können sollte.

von --- (Gast)


Lesenswert?

> Ja, krass was hier so alles an Falschem vom Stapel gelassen wurde, aber
> wenn man Arduino nicht schreiben kann, sollte man die Füsse stillhalten.

Ich mag nur das phoese Wort nicht schreiben.

von Walter S. (avatar)


Lesenswert?

Thomas E. schrieb:
> und wo kommen die 3V her?

und wo kommen sie bei einem Subtrahierer her?

Thomas E. schrieb:
> die Auflösung des AD-Wandlers (mV/Schritt) ändert sich aber
> nicht! Davon bekommt man also keine bessere Auflösung.

wenn du eine kleinere Referenzspannung nimmst schon

MaWin schrieb:
> und die Widerstände besser als 0.05% sein

wo bekomme ich die her?

von Jan W. (jannyboy)


Lesenswert?

Karl schrieb:
> Mit entsprechend teuren opamps vielleicht. Mit Standard Ware holst du
> dir schnell etliche 10 mV Offset.

Der Offset ist egal den kann man naher wieder per Software 
herausrechnen.

von THOR (Gast)


Lesenswert?

Harald W. schrieb:
> Wenn Dir die Genauigkeit der internen Referenz nicht reicht,
> solltest Du Dich besser gleich nach einem präziseren, externen
> AD-Wandler umsehen.

Der interne ADC ist genau genug, den brauchste nicht ersetzen. Da muss 
dann nur ne genaue Vref her.

Das ergibt dann 10mV Auflösung und die Genauigkeit hängt hauptsächlich 
von Vref ab.

Ich hab mal nen Li Ion UVLO gebaut wo einfach ein 3V Festspannungsregler 
die Referenz war, das ist auch genau genug. Der hohe Innenwiderstand der 
Zellen war ne viel größere Fehlerquelle als die Vref.

von MaWin (Gast)


Lesenswert?

Walter S. schrieb:
> wo bekomme ich die her?

Von einem Elektronikhändler
http://www.voelkner.de/products/34265/SMD-Widerstand-100k-Ohm-0805-0.05.html
oder Arrow, Digikey und wie sie alle heissen.

Ja, bei Reichelt nur 0.1%, so daß dein letztes Bit im A/D-Wandler nicht 
mehr stimmt.

1% Widerstände machen jedoch das Messergebnis so schlecht, daß man 
besser auf die Verstärkung verzichtet hätte.

Auch dann reicht die Messung problemlos nicht nur zur 
Unterspannungsabschaltung einer LiIon, sondern so gar zur 
Ladeschlusserkennnug bei entsprechend genauer Referenzspannung, und erst 
recht zur Ladezustandeserkennug die sowieso mehr als 10% daneben liegt 
wenn man von der Spannung auf den Ladezustand schliessen will.

von Harald W. (wilhelms)


Lesenswert?

Jan W. schrieb:
> Karl schrieb:
>> Mit entsprechend teuren opamps vielleicht. Mit Standard Ware holst du
>> dir schnell etliche 10 mV Offset.
>
> Der Offset ist egal den kann man naher wieder per Software
> herausrechnen.

Die Offsetdrift auch?

von Peter D. (peda)


Lesenswert?

Der ATmega2560 kann differentiell messen mit 1,1V Referenz.
Du brauchst also nur noch nen Spannungsteiler 1,2V -> 1,1V, z.B. 1k + 
11k.

von Thomas E. (picalic)


Lesenswert?

Peter D. schrieb:
> Der ATmega2560 kann differentiell messen mit 1,1V Referenz.

Und wozu? Um die Genauigkeit des AD-Wandlers herabzusetzen? Guck doch 
mal ins Datenblatt!

von Jörg R. (solar77)


Lesenswert?

MaWin schrieb:
> Die Vorgabe 3V -> 0V und 4.2V -> 5V sagt, bei 3.95V geht dasselbe rein
> wie rauskommen soll.

Hallo MaWin,

auf den Verstärkungsfaktor von 4,16 komme ich auch. Wenn aber 3,95V 
reingehen, die gemmessene Akkuspannung, können nicht 3,95V rauskommen. 
Ohne jetzt nachzurechnen muss es in Richtung > 4,5 Volt gehen. Oder 
mache ich jetzt einen Denkfehler?

von Walter S. (avatar)


Lesenswert?

(3.95-3)*4.16 = ?

von Jörg R. (solar77)


Lesenswert?

Walter S. schrieb:
> (3.95-3)*4.16 = ?

Ok. Danke.

von Harald W. (wilhelms)


Lesenswert?

Walter S. schrieb:

> (3.95-3)*4.16 = ?

Braucht man für solch komplizierte Berechnungen
nicht mindestens den Bachelor? :-)

von Brad Hard (Gast)


Lesenswert?

Harald W. schrieb:
> Braucht man für solch komplizierte Berechnungen
> nicht mindestens den Bachelor? :-)


>> Der Offset ist egal den kann man naher wieder per Software
>> herausrechnen.
Harald W. schrieb:
> Die Offsetdrift auch?

Gegenfrage: Muß man für solche saublöden Antworten Ingenieur sein?

von Harald W. (wilhelms)


Lesenswert?

Brad Hard schrieb:

> Gegenfrage: Muß man für solche saublöden Antworten Ingenieur sein?

Du beziehst Dich darauf?

Der Offset ist egal den kann man naher wieder per Software
herausrechnen.

von Jörg R. (solar77)


Lesenswert?

Harald W. schrieb:
> Walter S. schrieb:
>
>> (3.95-3)*4.16 = ?
>
> Braucht man für solch komplizierte Berechnungen
> nicht mindestens den Bachelor? :-)

Ne, braucht man nicht. Ich bin aber auch nicht so unfehlbar wie Du und 
traue mich zu fragen wenn ich mal ein Brett vor dem Kopf habe.

Hast du das noch nie erlebt das du stundenlang über ein total simples 
Problem nachdenkst oder einen Fehler in einer Schaltung suchst - und 
dann kommt ein Kollege vorbei und zeigt sofort auf den Fehler?

Mit dem kurzen Kommentar von Walter S. viel es mir dann wie Schuppen aus 
den Augen. Dein langer Kommentar darauf war einfach nur überflüssig.

: Bearbeitet durch User
von Andreas S. (igel1)


Lesenswert?

Hi Leute,

ich hatte in einem Post weiter oben geschrieben:

> Du willst Deine Spannung 3 ... 4,2V auf 0 ... 5V abbilden/mappen.
>
> Dann ist ein sogenannter "Instrumentenverstärker" das Mittel
> Deiner Wahl. Das Prinzip wird hier erklärt:
> https://www.mikrocontroller.net/articles/Operation...

Damit ich wieder gut schlafen kann, muss ich meinen obigen Tipp
noch etwas geraderücken, denn man kann so einen Instrumentenver-
stärker in diesem Fall nicht ohne Klimmzüge nutzen.

Intern verstärkt so ein Instrumentenverstärker die Differenz-
spannung an seinen Eingängen nämlich symmetrisch zum
"Mittelpotential", welches gedacht zwischen seinen Eingängen anliegt
(siehe z.B. http://elektroniktutor.de/analogverstaerker/instrum.html).

Und genau dort liegt das Problem:
Lege ich am -IN Eingang via Referenzspannungsquelle eine
Fixspannung von 3V an und ist der Akku voll geladen (4,2V),
so liegt die gedachte "Mittelspannung" bei 3,6V.

Will ich die Spannungsdifferenz auf 5V verstärken, so wird
im Instrumentenverstärker intern am Ausgang der beiden
internen Eingangs-OpAmps eine Spannung erzeugt, die +2,5V
bzw. -2,5V von der gedachten "Mittelspannung" entfernt liegt.
Das wären dann 3,6V + 2,5V = 6,1V  bzw. 3,6V - 2,5V = 1,1V.

Während die 1,1V ja noch kein Problem darstellen, liegen
die 6,1V locker über der Versorgungsspannung des Instrumenten-
verstärkers. Das ist nicht möglich. Der Instrumentenverstärker
wird daher Spannungen im Bereich 4,2V (und noch einiges darunter)
maximal verzerren.

Kurzum: wenn's halbwegs funktionieren soll, muß zwischen den
Eingängen des Instrumentenverstärkers im Maximalfall (Akku voll)
eine  gedachte "Mittelspannung" von 2,5V anliegen.
Der -IN Eingang müßte dann auf 1,9V und der +IN Eingang auf 3,1V
liegen. Dann erreicht die Spannung hinter den beiden internen
Eingangs-OpAmps genau 5V bzw. 0V (nur beim "idealen Instrumenten-
verstärker" - in Realität ist oftmals schon bei einigen 100mV
Abstand von 5V bzw. 0V Schluß.)

Beläßt man -IN Eingang bei 1,9V, und verkleinert die Spannungen
an +IN so verkleinert sich auch die gedachte "Mittelspannung".
Es passiert aber trotzdem nichts Schlimmes, weil auch die
verstärkte Spannung nicht mehr so groß ist und hinter den beiden
Eingangs-OpAmps alles innerhalb der Betriebsspannungsgrenzen bleibt.

Somit klappt die Idee mit dem Instrumentenverstärker nur, wenn
der -IN Eingang fix auf 1,9V gelegt wird und über einen Widerstands-
teiler die max. 4,2V auf 3,1V an +IN Eingang heruntergeteilt werden.

Spätestens dann sind aber so viele Widerstände im Spiel, dass ich
die erhöhte Auflösung des AD-Converters wieder an die Widerstands-
toleranzen  und die Nichtlinearität des Instrumentenverstärkers
verliere (zugegeben: ich hab's nicht genau nachgerechnet, ist eher
eine Vermutung).

Somit lautet mein Tipp eher: Brute Force Methode:
Versorge Deinen STM32F103 mit einer 2,5V Referenzspannungsquelle
für die ADC-Referenz (z.B. TL431). Dann teilst Du die 4,2V per
Widerstandsteiler auf 2,5V herunter.  Bei leerem Akku liegst Du
dann bei 3V * 2,5V/4,2V = 1,786V.  Dir bleiben somit mit den 12 Bits
des STM32F103 insgesamt 2^12/2,5*(2,5-1,786) = 1170 Steps, um
Spannungen zwischen 3 und 4,2V auszulösen. Das sind ca. 1,0mV/Step.
Wirfst Du nochmals 2 Steps ADC-Ungenauigkeit und 50ppm/C Ungenauigkeit
für Deine 2,5V Referenz in den Ring, und nochmals 50ppm/C für Deinen
0,1% Spannungsteiler so liegst Du bei normalen 
Zimmertemperaturschwankungen immer noch unter 5mV Ungenauigkeit.

Wegen Verwendung des TL431 und der 0,1% Widerstände mußt Du vorab
kalibrieren, weil allein der TL431 mit +-45mV Toleranz daherkommt.
Allerdings mußt Du mit deutlich unter 0,1% Genauigkeit kalibrieren,
weil Du sonst schon bei der Kalibrierung die +-5mV verspielst.

Notfalls tut's auch die interne Referenz, die aber mit 100ppm/C
nicht gerade rekordverdächtig temperaturstabil ist. Kalibrierung
ist natürlich auch hier angesagt.

Hoffe, ich habe alles bedacht - bin kein Profi auf diesem Gebiet.
Daher bitte alles vor Gebrauch gut gegenprüfen.

Viele Grüße

Igel1

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.