Hallo Technikfreunde.
Ich habe ein Problem mit einem Spannungsteiler.
Und zwar habe ich eine 12V DC Spannungsquelle (derzeit Netzteil, ggf.
später Akku) und einen Arduino Pro Mini (5V) verwenden. Ich möchte gern
die Spannung messen und habe mir dazu überlegt, dass ich das über einen
Spannungsteiler mit einem analogen Eingang die Spannung messe und dann
entsprechend umrechne.
Als Teiler habe ich mir
[+] ### 10 MOhm ### GPIO ### 3.3 MOhm ### [-]
überlegt. Mit den Werten sollte ich selbst bis 20V save sein(?).
Zwischen den beiden Widerständen möchte ich dann direkt an den analogen
Eingang. Das Problem ist aber, dass scheinbar der analoge Eingang intern
auch einen Widerstand hat (viel geringer).
Das verfälscht doch dann meinen Spannungsteilerergebnis oder? Es kommen
komische Werte zustande. Mit dem Multimeter messe ich 0.81V bei 11.4V DC
Eingang. Müssten das nicht 2.82V sein? --> (11,4 / 13,3) * 3,3
Hat das vllt etwas mit einem Innenwiderstand des GPIO zu tun? Es wäre
nett wenn sich das mal jemand mit durchdenkt der Ahnung von
Elektrotechnik hat. :-)
Grüße Dooom.
Sieh dir mal das Datenblatt deines uC an. Dort steht was, dass die
Impedanz am PIN nicht höher als 10k sein darf. Da bist du gut 250 mal
druber.
Du könntest jetzt einen 100nF Kondensator zwischen den PIN und GND
schalten und schauen, was dann passiert. Oder einfach mal bei anderen
abgucken, wie die das machen...
DrDooom schrieb:> Mit den Werten sollte ich selbst bis 20V save sein(?).
Oder mach die Widerstände einfach 1000 mal kleiner. Dann bist du auch
bis 20V save...
Lothar M. schrieb:> Dort steht was, dass die Impedanz am PIN nicht höher als 10k sein darf.
Hallo Lothar.
Vielen Dank für die Info. Ja so lerne ich dazu. Ich dachte dass der
Spannungsteiler für den Mikrocontroller egal ist....und dass nur die
ankommende Spannung relevant ist. Aber irgendwie auch klar. Wenn quasi
kaum mehr Strom ankommt.
Ich suche mal nach dem Datenblatt. Aber bei Arduino findet man da
nichts. Sollte ich eher nach dem Datenblatt für den Chip selbst suchen?
Grüße Dooom.
DrDooom schrieb:> Das Problem ist aber, dass scheinbar der analoge Eingang intern> auch einen Widerstand hat (viel geringer).
Korrekt. Grade die ollen AVR im Arduino haben verdamm geringe
Innenwiderstände an den analogen ADC Pins - nur rund 15kOhm IIRC.
Abhilfe: Widerstände drastisch verkleinern oder Opamp als
Impedanzwandler dazwischen schalten.
DrDooom schrieb:> Sollte ich eher nach dem Datenblatt für den Chip selbst suchen?
Jup, nach dem DB bei Microchip für den Atmega Chip.
Jim M. schrieb:> Grade die ollen AVR im Arduino haben verdamm geringe> Innenwiderstände an den analogen ADC Pins - nur rund 15kOhm
Ich würde das gerne etwas korrekter darstellen:
Im Eingang des ADC befindet sich ein Kondensator mit ca. 15pF Kapazität.
Bei jeder Messung wird dieser Kondensator zuerst kurz mit einem Eingang
verbunden (um ihn aufzuladen). Dann wird er wieder getrennt und seine
Ladung gemessen.
Der entscheidende Punkt ist, dass der Kondensator in diesem kurzen
Moment vollständig geladen werden muss. Wenn der Spannungsteiler zu
hochohmig ist, funktioniert das nicht.
Atmel hat empfohlen, dass die Quelle (also der Spannungsteiler) maximal
10kΩ haben soll, dann ist man einigermaßen auf der sicheren Seite.
Der klassische Workaround ist wie gesagt, einen 100nF Kondensator vom
analogen Eingang nach GND zu legen. Dieser wird vom Spannungsteiler
langsam aufgeladen. Wenn der ADC misst, wird ein Teil seiner Energie in
den inneren Kondensator des ADC umgeladen. Da der externe Kondensator
etwa die 7000 fache Kapazität hat, als der innere, fällt die Spannung
bei diesem Umladeprozess nur minimal ab.
Nach der Messung musst du aber lange warten, bevor du die nächste
Messung machen kannst, denn der hochohmige Spannungsteiler braucht
mehrere Sekunden, um deinen 100nF Kondensator wieder nachzuladen.
Jim M. schrieb:> haben verdamm geringe Innenwiderstände an den analogen ADC Pins - nur> rund 15kOhm IIRC.
Ahh. Danke. Das hilft mir weiter. Kann ich die selbst messen? Einfach
Widerstand zwischen AI und GND??? Ich würde den Spannungsteiler gern
ausrechnen bzw damit ich die Ergebnisse vergleichen kann.
Habe gerade noch folgendes gefunden:
Page 244 states: "The ADC is optimized for analog signals with an output
impedance of approximately 10 kΩ or less. If such a source is used, the
sampling time will be negligible.
DrDooom schrieb:> Kann ich die selbst messen? Einfach> Widerstand zwischen AI und GND??? Ich würde den Spannungsteiler gern> ausrechnen bzw damit ich die Ergebnisse vergleichen kann.
Lies meinen obigen Beitrag, dann verstehst du, warum die Antwort "2x
Nein" lautet.
Hier hat das einer schön skiziert:
http://www.openmusiclabs.com/learning/digital/atmega-adc/index.html
Stefanus F. schrieb:> Der klassische Workaround ist wie gesagt, einen 100nF Kondensator vom> analogen Eingang nach GND zu legen
Daaanke. Das lustige ist. Mein Chef (seines Zeichens ebenfalls eifriger
"Hobby" Elektroniker) hat mir das ebenfalls so ähnlich empfohlen. Wusste
aber nicht warum! Ha ha.
Aber hier hast du die Erklärung ja verständlich geschrieben. Viele Dank
dafür. Die paar Beiträge haben da Problem auf jeden Fall super erklärt.
Ich werde das morgen mal simulieren und ausrechnen.
Top. Danke an alle!!!
Stefanus F. schrieb:> denn der hochohmige Spannungsteiler braucht> mehrere Sekunden, um deinen 100nF Kondensator wieder nachzuladen.
Ich glaube, ganz so viel zeit wird es wohl nur vor der ersten Messung
dauern. Danach ist der Spannungsabfall pro Messung ja gering, und daher
auch die Nachladezeit gering.
Ich würde ihm aus dem Buch heraus wenigstens 100ms Zeit gönnen. Häufiger
messen macht in diesem Fall ohnehin keinen Sinn, oder?
DrDooom schrieb:> DrDooom schrieb:>> Einfach Widerstand zwischen AI und GND?>> ....messen?
Nope. Diesen R kannste (bis jetzt mit deinen vorhandenene Kenntnissen)
weder selbst messen, noch dich (irgendwann) auf dessen
Reproduzierbarkeit verlassen.
Mache dich mit "belasteten Spannungsteilern" vertraut zum Verständnis,
und/oder folge den genannten Hinweisen, dann klappts auch.
Danke. Auch 1x pro Sekunde würde vollkommen ausreichen.
Ich kann das ja morgen Simulieren und poste dann nochmal die Ladedauer.
Wenn ein 100nF so viel größer ist als der interne, warum nicht einen
kleineren nehmen? Oder ist es wichtig den Kondensator nur zu einem sehr
geringen Teil zu entladen? Hatte mal gesehen dass das entladen nicht
linear verläuft.
PS: hatte mal einen Induktionssensor mit Alufolie gebaut und die Zeit
zum Laden/Entladen gemessen.
DrDooom schrieb:> Wenn ein 100nF so viel größer ist als der interne, warum nicht einen> kleineren nehmen?
Weil er sich beim umladen stärker entlädt und das dann womöglich die
Messung beeinträchtigt. 10nF ist auf jeden Fall schon zu wenig.
Erlaube mir die Gegenfrage: Warum nicht einen größeren nehmen? Kostet
genau so viel.
Stefanus F. schrieb:> Erlaube mir die Gegenfrage: Warum nicht einen größeren nehmen? Kostet> genau so viel.
Aber sicher doch. Weil ich gern frage und lerne. Ist nur damit ich ein
besseres Gefühl für Werte und Bauteile bekomme.
Ich setzte das erstmal um und poste morgen meine Ergebnisse. :-)
Danke erstmal an alle.
DrDooom schrieb:> Sollte ich eher nach dem Datenblatt für den Chip selbst suchen?
Ja, wie ich sagte: in erster Linie ist das Datenblatt des uC relevant.
Und dann in zweiter Näherung das, was ein paar Bastler draus gemacht
haben. Also der Schaltplan des Andruiden.
DrDooom schrieb:>> Einfach Widerstand zwischen AI und GND messen?
Nein. Du kannst da sowieso nichts messen. Deshalb gilt: Datenblatt
anschauen und verstehen! Unbedingt.
Stefanus F. schrieb:> Nach der Messung musst du aber lange warten, bevor du die nächste> Messung machen kannst, denn der hochohmige Spannungsteiler braucht> mehrere Sekunden, um deinen 100nF Kondensator wieder nachzuladen.
Wenn der ADC immmer den selben Pin misst, dann gilt das mit der
"1/7000stel Entladung" nur beim ersten Mal. Alle nachfolgenden Male ist
die Entladung wesentlich geringer, weil der interne
15pF-Sample-Kondensator ja schon geladen ist.
Stefanus F. schrieb:> Weil er sich beim umladen stärker entlädt und das dann womöglich die> Messung beeinträchtigt. 10nF ist auf jeden Fall schon zu wenig.
Der 10nF ist fast 1000 mal größer als der 15pF, damit reicht der
hinreichend aus, um das letzte LSB des 10Bit ADC nicht zu verfälschen.
Und dann ist der 10nF Kondensator schon nach knapp 100ms wieder
ausreichend geladen.
Allerdings kommen bei diesen hohen Widerstandswerten im MOhm Bereich
dann schon irgendwelche Leckströme ins Spiel, die Offsets und
Nichtlinearitäten bis hin zur Luftfeuchteabhängigkeit bringen.
Wie gesagt: einfach den ganzen Spannungeteiler um den Faktor 1000
niederohmiger dimensionieren.
Ahhhh. Jetzt ärgere ich mich aber.
.....allerdings erstmal vielen Dank nochmal für die viele Hilfe!!!
Habe heute einen Kondensator "104" gefunden und zwischen Analog-In und
GND geschaltet.
Dann gemessen....und...wieder Müll. Habe immer 1023 als "analogen Wert"
bekommen. In der Software war jedenfalls kein Problem vorhanden.
Daher dachte ich, dass der Pro Mini mit den hochohmigen Widerständen
einfach irgendein Problem hat. Habe dann die Widerstände des
Spannungsteiler aus der Platine gelötet und gegen 10kOhm und 3.3kOhm
getauscht und....gleiches Ergebnis.
Bis ich gesehen habe, dass von unten an der Platine die GND Verbindung
nicht zum GND sondern zum RST geht. Also lag der Fehler nur an diesem
falsch verlöteten Beinchen. Aber nun hatte ich ja schon die Widerstände
ersetzt und belasse es dabei.
Bei der nächsten Platine werde ich trotzdem nochmal 10M+3.3M und einen
kleinen Kondensator testen.
Allerdings hätte ich nun noch eine Frage zu einem kleinen
Nachfolgeproblem bzw. Problemchen.
An dem Arduino kommen über den Spannungsteiler 2,83V an (gemessen mit 2
Multimeter). Der Arduino misst jedoch einen Wert von 2,78V ("568" analog
in).
Die 2,78V berechne ich wie folgt:
Handelt es sich dabei um allgemeine Abweichungen (0,05V weniger) oder
habe ich da noch einen Denkfehler? Die 0,05V finde ich nicht störend,
allerdings rechne ich ja den Spannungsteiler wieder zurück und dann ist
die Abweichung schon 0,2V (11,19V zu 11,42V).
Wieviel Zuwendung hat Deine Referenz bekommen?
Das volle Programm aus Widerstand (eventuell), Spule und eigenem
Kondensator? Oder nur Vcc und beten.
Wenn Du die (ich glaube ja nicht) vollen 10 Bit rausholen musst, hilft
beten nicht.
Manchmal musst Du sogar zweimal hinschauen (messen) und dann den
Mittelwert verwenden.
DrDooom schrieb:> Handelt es sich dabei um allgemeine Abweichungen (0,05V weniger) oder> habe ich da noch einen Denkfehler?
Hallo,
man hat Dir halt verschwiegen daß der Analog-pin bis zu 1uA Leckstrom
(je nach Temperatur) haben kann. Mit 3.3 Meg am Eingang ergeben sich
dann halt bis zu 3.3V Meßfehler.
Ich empfehle daher einen niederohmigen abschaltbaren Spannungsteiler
siehe
Batteriewächterhttps://www.mikrocontroller.net/articles/Datei:BMON_1048_PIC.PNG
(T2, R4, R5)
Gruß Anja
Sebastian S. schrieb:> Manchmal musst Du sogar zweimal hinschauen (messen) und dann den> Mittelwert verwenden.
Das habe ich. Lese alle 500ms. Es ist immer die Differenz.
Anja schrieb:> Mit 3.3 Meg am Eingang
Hatte ich ja heute bereits abgeändert:
DrDooom schrieb:> Habe dann die Widerstände des Spannungsteiler aus der Platine gelötet> und gegen 10kOhm und 3.3kOhm getauschtStefanus F. schrieb:> So ein bisschen Abweichung (nicht-linearität) ist normal.
Alles klar. Dann werde ich einen weiteren Test mit einem anderen Arduino
machen und überlegen ob ich das softwareseitig sinnvoll anpassen kann
oder evtl den Spannungsteiler noch mal anders aufteile um weniger
Abweichung zu bekommen. Danke nochmal. :-)
Lothar M. schrieb:> Wenn der ADC immmer den selben Pin misst, dann gilt das mit der> "1/7000stel Entladung" nur beim ersten Mal. Alle nachfolgenden Male ist> die Entladung wesentlich geringer, weil der interne> 15pF-Sample-Kondensator ja schon geladen ist.
Bist du sicher, dass der Sample-C bei der AD-Wandlung nicht entladen
wird oder dass am Ende sowas wie ein "Ladungsreset" erfolgt?
Ich weiß es nicht und würde es deshalb zumindest nicht außer Acht
lassen. Wenn deine Annahme (dein Wissen?) gilt, ist es zumindest dann
nicht mehr so, wenn mehr als ein ADC-Kanal verwendet wird.
DrDooom schrieb:> Die 2,78V berechne ich wie folgt:uint16_t powerValue => analogRead(PIN_12V_POWER_ANALOG_IN);> float powerVoltage = map(powerValue, 0, 1023, 0, 5000) / 1000.0;
Wie kommst Du zu der Annahme, dass "5000" stimmt, also wirklich 5,000
Volt als ADC-Referenz vorliegen?
Kleiner Richtwert zum auslegen von belasteten Spannungsteilern.
Der Strom durch den Spannungsteiler sollte etwa 10x so groß sein wie der
Messstrom, welcher aus dem Spannungsteiler in den uC fließt.
DrDooom schrieb:> Ich denke dass müsste passen
Nicht denken, messen und nachdenken !
Es ist unwahrscheinlich, dass Deine Versorgung exakt 5,000 Volt beträgt.
Dein Meßfehler 50mV von 2,8V beträgt gerade mal 1,8%, das ist für ein
nicht justiertes System schon mal sehr gut.
HildeK schrieb:> Bist du sicher, dass der Sample-C bei der AD-Wandlung nicht entladen> wird
Da hat er schon Recht. Bei AVR wird der Sample&Hold Kondensator durch
die Messung nicht entladen.
mahwe schrieb:> Kleiner Richtwert zum auslegen von belasteten Spannungsteilern.> Der Strom durch den Spannungsteiler sollte etwa 10x so groß sein wie der> Messstrom, welcher aus dem Spannungsteiler in den uC fließt.
Die Formel galt für Transistor-vorspannungen. Beim ADC ist das Müll.
Entweder Spannungsfolger, oder ggf. C, also Faktor eher 2^N bei N Bits.
Manfred schrieb:> Es ist unwahrscheinlich, dass Deine Versorgung exakt 5,000 Volt beträgt.
Ich verstehe nicht worauf du hinaus willst! Was hat die
Versorgungsspannung mit der Spannung am analogen Eingang zu tun wenn ich
kein analogReference() verwende (default Einstellungen der Referenz =
exakt 5000 mV)? Ich hatte doch schon aus der Dokumentation zum Arduino
rezensiert.
mahwe schrieb:> belasteten Spannungsteilern.
Das hat mir ja keine Ruhe gelassen. Klar. Wenn man dort noch ein (nicht
messbarer) Widerstand vorhanden ist....dann verändert der natürlich
auch die Berechnung. Laut Recherche soll der zwar etwa 100 mOhm
betragen....aber wer weiß das schon.
Habe Dann eine Internetseite gefunden mit der man online die
Eingangsspannung und Widerstände eintragen kann.
https://www.electronicsplanet.ch/Spannungsteiler/spannungsteiler-belastet-berechnen.php
Das habe ich gemacht und komme auf einen Eingangswiderstand von 120-150
kOhm.
Dann erhalte ich laut berechnung nicht die anliegende gemessene Spannung
(Multimeter) von 2.83V sondern die 2.78V (Arduino).
Holzweg oder Erleuchtung? ;-)
DrDooom schrieb:> allerdings rechne ich ja den Spannungsteiler wieder zurück und dann ist> die Abweichung schon 0,2V (11,19V zu 11,42V).
Mal überschlagen: Solange du mit etwa 568 counts "misst" beträgt deine
Auflösung 1/568, also rund 0,2%. Das sind an 12V etwa 20mV Auflösung.
Deine erreichbare Genauigkeit wird deutlich darunter liegen!
Manfred schrieb:> Dein Meßfehler 50mV von 2,8V beträgt gerade mal 1,8%, das ist für ein> nicht justiertes System schon mal sehr gut.
Überschlag: 1,8%/0,2% ---> 9 counts daneben, sieht wirklich gut aus.
SCNR:
Die Marketingabteilung pimpt dann daraus ein Datenblatt: Abweichung
0,05% plusminus 18digits, und schwupps ist es ein hochgenaues
(Hauptsache 0,05%) Supermessgerät :D
DrDooom schrieb:> Dann werde ich einen weiteren Test mit einem anderen Arduino> machen
Nimm dann auch mal einen anderen 5V-Spannungsregler (hier erzeugt dieser
deine Referenzspannung).
> und überlegen ob ich das softwareseitig sinnvoll anpassen kann
Bei der "schlechten" Auflösung ist schönrechnerei eher zwecklos.
> oder evtl den Spannungsteiler noch mal anders aufteile um weniger> Abweichung zu bekommen.
Meine Empfehlung: Mit Trimmer zum Abgleich
DrDooom schrieb:> Ok. Die Rechnung ist nachvollziehbar.>> 2 Cent schrieb:>> Meine Empfehlung: Mit Trimmer zum Abgleich>> Kannst du das erklären was du damit meinst?
Einen der beiden Spannungsteilerwiderstände minimal verstellbar machen.
https://de.wikipedia.org/wiki/Potentiometer#Trimmpotentiometer
Leider must du dort etwas nach unten scrollen, der Link trifft im Moment
nicht wirklich "Trimmpotentiometer".
Mit einem Trimm-Potentiometer kann man genau einen Messwert schön
hinbiegen. Aber eine gewisse Nicht-Linearität bleibt, so dass dann
andere Spannungen immer noch abweichen.
Stefanus F. schrieb:> Mit einem Trimm-Potentiometer kann man genau einen Messwert schön> hinbiegen.
Ok, und selbst dieses "schön" klemmt dann an der nutzbaren Auflösung,
hier etwa 9bit.
> Aber eine gewisse Nicht-Linearität bleibt, so dass dann> andere Spannungen immer noch abweichen.
Auch Alterung und der Temparaturgang (Spannungsregler als
Referenzspannung, weiss der Geier welche Lasten der wann zu ertragen
hat, und welcher Spannungsabfall dabei auf den Leiterbahnen zum
Controller auftritt)...
Nichts ist unmöglich: Das komplette A/D-Kennlinienfeld (für mehrere
Temperaturen im Betriebstemperaturbereich, der ATMega328p hat ja
schliesslich sogar ein Thermometer onchip) als "Korrekturtabelle"
abspeichern. Allerdings wird der TE diesen Aufwand bestimmt nicht
treiben wollen, damit wäre ausserdem die Spannungsreglerreferenz völlig
absurd...
Um den drohenden Zustand "Akku bald leer" zu erfassen ist das meiner
Meinung nach auch nicht wirklich notwendig:
DrDooom schrieb:> eine 12V DC Spannungsquelle (derzeit Netzteil, ggf. später Akku...
HildeK schrieb:> Bist du sicher, dass der Sample-C bei der AD-Wandlung nicht entladen> wird oder dass am Ende sowas wie ein "Ladungsreset" erfolgt?
Ja.
> ist es zumindest dann nicht mehr so, wenn mehr als ein ADC-Kanal> verwendet wird.
Wenn mehr als 1 Kanal verwendet wird und die am Pin angschlossene Quelle
(bzw. der Spannungsteiler) zu hochohmig ist, dann "erbt" beim Umschalten
des Pins der jeweils nachfolgende "ein wenig" vom Vorgänger, weil der
S&H-Kondensator nich komplett umgeladen werden kann. Wenn man dann also
am Kanal 1 dreht, ändert sich der Wert vom Kanal 2 ein wenig mit. An
diesem Verhalten haben sich schon einige die Zähne ausgebissen...
DrDooom schrieb:> Alles klar. Dann werde ich einen weiteren Test mit einem anderen Arduino> machen und überlegen ob ich das softwareseitig sinnvoll anpassen kann> oder evtl den Spannungsteiler noch mal anders aufteile um weniger> Abweichung zu bekommen. Danke nochmal. :-)
du könntest auch externe Spannungsreferenz nehmen, das macht dich dann
von der internen Arduino Referenz unabhängig, besser bei Arduinowechsel.
DrDooom schrieb:> Ich verstehe nicht worauf du hinaus willst! Was hat die> Versorgungsspannung mit der Spannung am analogen Eingang zu tun wenn ich> kein analogReference() verwende (default Einstellungen der Referenz => exakt 5000 mV)? Ich hatte doch schon aus der Dokumentation zum Arduino> rezensiert.
Mantra:
Versorgungsspannung als Referenz für ratiometrische Messungen.
Interne/Externe Referenz für absolute Messungen.
Du möchtest eine absolute Messung.
Ich empfehle bei Verwendung der internen Referenz min eine
EinPunktKalibrierung.
Eine 2 Punkt Kalibrierung schadet nicht.
DrDooom schrieb:> Manfred schrieb:>> Es ist unwahrscheinlich, dass Deine Versorgung exakt 5,000 Volt beträgt.>> Ich verstehe nicht worauf du hinaus willst! Was hat die> Versorgungsspannung mit der Spannung am analogen Eingang zu tun wenn ich> kein analogReference() verwende (default Einstellungen der Referenz => exakt 5000 mV)? Ich hatte doch schon aus der Dokumentation zum Arduino> rezensiert.
Dann müssen wir mal über das Grundprinzip der A/D-Wandler sprechen: Der
Wandler vergleicht das Signal gegen seine Referenzspannung und errechnet
daraus den Wert. Am AT-Mega / ProMini gibt es keine 5,000 Volt-Referenz,
der nutzt die Betriebsspannung.
Beweis: Setze ein Drehpoti (oder einen festen Teiler) zwischen seine +5V
und GND, die Mitte an den Analogeingang, Du bekommst einen Wert x.
Ändere die Betriebsspannung auf 4 Volt herunter oder auf 5,5 Volt hoch,
der Wert bleibt fast gleich, obwohl die messbare Spannung am Analog-In
sich deutlich ändert.
In Deinem Aufbau musst Du die Betriebsspannung messen und genau den
gemessenen Wert in die Berechnug einsetzen.
Joachim B. schrieb:> du könntest auch externe Spannungsreferenz nehmen, das macht dich dann> von der internen Arduino Referenz unabhängig, besser bei Arduinowechsel.
Das ist richtig, aber aktuell scheint der Doktor ja die 5V =
Betriebsspannung zu benutzen.
Arduino Fanboy D. schrieb:> Ich empfehle bei Verwendung der internen Referenz
Genau so mache ich das in meinen Aufbauten:
1
analogReference(INTERNAL);// min 1.0 / typ 1.1 / max. 1.2 Volt
Da hat man aber leider auch Toleranzen und muß individuell pro Arduino /
AVR kalibrieren.
Da käme der Vorschlag von Joachim B. mit der externen Referenz ins
Spiel, aber auch die kann ja von Aufbau zu Aufbau Toelranzen haben.
Wir können uns auf den Kopf stellen und mit den Füßen wackeln ... wer
messen will, muß jeden Aufbau individuell einjustieren.
Manfred schrieb:> Da käme der Vorschlag von Joachim B. mit der externen Referenz ins> Spiel, aber auch die kann ja von Aufbau zu Aufbau Toelranzen haben.
Allerdings bekommt man gegen Bezahlung externe Referenzen, die schon vom
Hersteller ab Werk kalibriert sind und danach nochmal selektiert werden.
Die sehr guten werden dann für viel Geld verkauft, die weniger guten
deutlich billiger.
Empfehlen kann ich da die Ref19x Reihe, die gibt es teilweise sogar bei
Conrad.
https://www.analog.com/media/en/technical-documentation/data-sheets/REF19xSeries.pdf
Hallo nochmal. Ich war das Wochenende mal offline und habe mich um Frau
und Kind gekümmert.
Nur nochmal zur Klärung: Ich nutze eine externe 12V Spannungsquelle und
einen Step-Down auf ca. 5V womit ich den Arduino versorge und nicht den
internen Spannungswandler zu sehr aufheize. Der Arduino hat an seinem
VCC dann auch seine 5,003 V (gemessen).
Von der externen 12V Spannungsquelle nutze ich dann einen
Spannungsteiler (10 kOhm + 3.3 kOhm) und werte diese Spannung mit dem
analogen Eingang aus. Laut Dokumentation misst der analoge Eingang dann
mit 10 bit 0-1023 (0V bis 5V).
Eine Abhängigkeit zur Versorgungsspannung (5V vom Stepdown) erkenne ich
da nicht. Oder meint ihr die Spannung des Arduino's selbst?
DrDooom schrieb:> Laut Dokumentation misst der analoge Eingang dann> mit 10 bit 0-1023 (0V bis 5V).
Nööö...
Sondern:
Laut Dokumentation misst der analoge Eingang dann
mit 10 bit 0-1023 (0V bis Vcc).
Arduino default ist Aref == Vcc
Und die Vcc Quelle ist dein zappelnder, Last und Temperatur abhängiger
Step Down.
Arduino Fanboy D. schrieb:> (0V bis Vcc)
Gut, ich lese zwar überall immer 5V nicht VCC, aber gehen wir mal davon
aus. Ich habe gemessen: VCC ist 5,003V.
Aus welchem Grund messe ich am Spannungsteiler 2,84V und mit dem Arduino
2,78V?
Die 0,003V Unterschied können es ja nicht sein. Daher bin ich davon
ausgegangen, dass der Innenwiderstand noch in die Berechnung aufgenommen
werden muss um auf die effektiven 11,42V vor dem Spannungsteiler zu
kommen. Kennt sich damit jemand aus? Ich habe verschiedene Widerstände
mit in die Berechnungen aufgenommen und bei einem Innenwiderstand von
150kOhm komme ich genau auf die 2,78V (11,42V Uges, R1 = 10kOhm, R2 =
3,3kOhm, R3 = 150kOhm). Kennt sich damit jemand aus wie man aus der
Spannung U2 und dem Spannungsteiler die eingangsspannung von 11,42V
berechnet? Mathematik ist schon zu lang her. :-|
DrDooom schrieb:> VCC ist 5,003V.
Welche Vcc? Direkt am µC? Und welche Referenz verwendest du?
DrDooom schrieb:> Aus welchem Grund messe ich am Spannungsteiler 2,84V und mit dem Arduino> 2,78V?
Wo genau misst du da? Der µC nimmt die Spannung zwischen dem Pin und
AGND und vergleicht die sukzessive mit der Spannung, die zwischen Varef
und AGND liegen. Das musst du im Prizip auch tun.
Wenn du da an den Arduino-Pinleisten herummisst, fängst du dir leicht
die paar mV Potentialverschiebung ein.
DrDooom schrieb:> Dann erhalte ich laut berechnung nicht die anliegende gemessene> Spannung (Multimeter) von 2.83V sondern die 2.78V (Arduino).
Vielleicht ist dein Multimeter auch noch ein wenig ungenau. Das hat
gerne mal +-1%+-einpaarLSB (und +-1% bei 3V sind +-30mV). Für mich sind
das auf jeden Fall im Rahmen der Möglichkeiten des Aufbaus die gleichen
Werte.
Lothar M. schrieb:> Vielleicht ist dein Multimeter auch noch ein wenig ungenau.
Vielen Dank. Ich habe ein anderes verwendet welches ein paar mV mehr
anzeigt. Und damit passt die Messung recht genau (+/- 20 mV zwischen
Arduino und dem neueren Multimeter). Dann kann ich erstmal unter das
Thema einen Strich machen. Top! :-)
Ich finde ja weiterhin, dass du die interne Referenz verwenden solltest.
Und verstehe nicht, warum du dich da so quer stellst.
Macht aber auch nix.
Muss nicht alles verstehen.....
Wenn du die Spannungsversorgung als Referenz verwendest, hängen alle
Messungen davon ab.
Bei 3V Versorgungsspannung führt ein 2,5V Signal zum Messwert 853.
Bei 4V Versorgungsspannung führt ein 2,5V Signal zum Messwert 640.
Bei 5V Versorgungsspannung führt ein 2,5V Signal zum Messwert 512.
Bei 5,5V Versorgungsspannung führt ein 2,5V Signal zum Messwert 465.
Alle Messwerte sind relativ zur Versorgungsspannung. Schwankungen der
Versorgungsspannung wirken sich umgekehrt proportional auf die Messwerte
aus.
Dazu kommt eine gewisse Nicht-Linearität des ADC. Es wäre schön, wenn er
bei 1/4 Spannung genau 1/4 von 1023 ausgeben würde und bei 1/2 Spannung
genau 1/2 von 1023. Aber das leider nur ungefähr der Fall.
Auch dein Multimeter enthält einen nicht 100% linearen ADC und eine
nicht 100% präzise Referenzspannung. Deswegen sind Abweichungen in der
von Dir beobachteten Größenordnung völlig normal.
DrDooom schrieb:> Kennt sich damit jemand aus
Den meisten Antwortern hier darfst (und solltest) du erstmal (allerdings
Vorsicht vor Zynikern wie mir :P) zutrauen sich damit auszukennen und
dir nach bestem Wissen und Gewissen helfen zu wollen.
> Mathematik ist schon zu lang her. :-|
Mathematik ist eine wunderschöne(!), ganaue(!), und absolut
fehlerfreie(!) Parallelwelt zur heutigen analogen Messtechnik. Man
kann beides lieben, aber niemals beides (Hobbymässig) in exakt(!)
gleiche Zahlenwerte pressen, solches darf nur die PTB :D
Ein ausgezeichnetes einfaches Beispiel dazu:
Stefanus F. schrieb:> Dazu kommt eine gewisse Nicht-Linearität des ADC. Es wäre schön, wenn er> bei 1/4 Spannung genau 1/4 von 1023
Genau? Da gehts mit der (kleinen) Auflösung schon los: 1/4 von 1023 =
255,75. Das ist halt mit Ganzzahlen nicht möglich. Entweder 255, oder
256, was denn nun? Kleinere Zwischenabstufungen im Digitalteil gibt es
hier nicht, also sind mathematische Abweichungen zwangläufig. Dieses
einfache Beispiel spricht die (praktische Problematik) einer
Nichtlinearität eines ADC noch nicht einmal an, sondern nur dessen
Auflösung. Die daraus folgende Genauigkeit steht auf einem anderen Blatt
(sorry für diese Wiederholung).