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...
:
Bearbeitet durch Moderator
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.
:
Bearbeitet durch Moderator
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:
1 | uint16_t powerValue = analogRead(PIN_12V_POWER_ANALOG_IN); |
2 | float powerVoltage = map(powerValue, 0, 1023, 0, 5000) / 1000.0; |
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ächter https://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 getauscht Stefanus 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.
Manfred schrieb: > Wie kommst Du zu der Annahme, dass "5000" stimmt, also wirklich 5,000 > Volt als ADC-Referenz vorliegen?
1 | By default the power supply voltage is used so if you run your Arduino on 5 V, then 1023 = 5 V |
Ich denke dass müsste passen da ich analogReference() nicht verwende und die default werte nutze (Messbereich 0-5V).
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
Ok. Die Rechnung ist nachvollziehbar. 2 Cent schrieb: > Meine Empfehlung: Mit Trimmer zum Abgleich Kannst du das erklären was du damit meinst?
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.
:
Bearbeitet durch User
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).
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.