HowTo: ESPEasy / Wemos D1 Mini – ADC an eine andere Maximalspannungen anpassen

Mithilfe des ADC auf dem ESP8266 könnt Ihr Spannungen messen. Dies ist praktisch um zum Beispiel eine Akkuspannung und damit den Ladezustand des Akkus oder mithilfe eines LDRs und einem Serienwiderstand eine Helligkeit zu erfassen.

Dabei ist der ADC des ESP8266 aber etwas speziell. Ohne weitere externe Beschaltung kann dieser leider nur Spannungen bis max. 1V bestimmen. Damit direkt die Spannung eines LiPo-Akkus zu ermitteln ist also nicht möglich, weil der Spannungsbereich eines gesunden LipOs von 3,2 bis 4,2V reicht.

Damit der ADC aber auch höhere Spannungen messen kann bedient man sich eines Tricks. Man verwendet einen Spannungsteiler um die zu messende Spannung auf den möglichen Spannungsbereich des ADCs runter zu skalieren.

Der ADC misst dann also Spannungen im Bereich von 0V bis 1V welche für einen höheren Wert an dem eigentlichen Spannungsteiler stehen. So ist zum Beispiel auch auf der Platine des Wemos D1 Mini ein Spannungsteiler verbaut um Spannungen bis 3,3V zu messen. Das ist schon mal praktisch, reicht aber leider nicht um zum Beispiel die Spannung eines LiPos messen zu können.

Wie Ihr diesen maximalen Spannungsbereich des ADCs erweitern könnt, ist im folgenden Artikel beschrieben.


Voraussetzungen

Hilfreiche Artikel:
Bevor ihr mit diesem Artikel startet solltet Ihr euch mit den Grundlagen des Lötens beschäftigt haben. Informationen dazu findet Ihr in dem folgenden Artikel.
Elektronik – Mein Freund der Lötkolben

Benötigtes Werkzeug:

In der folgenden Liste findet Ihr alle Werkzeuge die Ihr zur Umsetzung dieses Artikels benötigt.

Benötigtes Material:

In der folgenden Liste findet Ihr alle Teile die Ihr zur Umsetzung dieses Artikels benötigt.


Sicherheitshinweise

Ich weiß die folgenden Hinweise sind immer irgendwie lästig und wirken unnötig. Aber leider haben schon viele Menschen die es "besser" wussten aus Leichtsinnigkeit Augen, Finger oder anderes verloren bzw. sich verletzt. Im Vergleich dazu ist ein Datenverlust fast nicht der Rede Wert, aber auch diese können echt ärgerlich sein. Deswegen nehmt Euch bitte fünf Minuten Zeit um die Sicherheitshinweise zu lesen. Denn auch das coolste Projekt ist keine Verletzung oder anderen Ärger wert.
https://www.nerdiy.de/sicherheitshinweise/


Wie funktioniert ein Spannungsteiler

Ein einfacher Spannungsteiler besteht eigentlich immer aus mindestens zwei Widerständen. Im unten stehenden Schaltplan des Wemos D1 Mini könnt Ihr im Rot markierten Bereich einen Spannungsteiler erkennen.

Falls Euch die Funktion eines Spannungsteilers nicht interessiert, könnt Ihr diesen Absatz auch einfach überspringen. 🙂

Quelle: https://www.reddit.com/r/esp8266/comments/9idpbe/does_anyone_know_where_to_buy_genuine_wemos_d1/

Dort sind zwei Widerstände in Reihenschaltung verbaut. Der obere Anschluss „A0“ kommt dabei von dem Anschluss Pin „A0“ auf der Wemos D1 Mini Platine. An „A0“ wird also die zu messende Spannung (zum Beispiel Euer LiPo) angeschlossen.

Der Anschluss „ADC“ führt dann zu dem eigentlichen ADC des ESP8266.

Warum macht man das ganze?

Man nutzt hier eine Eigenschaft einer Reihenschaltung aus zwei Widerständen.

Für eine Reihenschaltung aus zwei Widerständen gilt nämlich unter anderem, dass das Verhältnis der Gesamtspannung zu einer Einzelspannungen an einem der Widerstände gleich dem Verhältnis des Gesamtwiderstands zu einem der Einzelwiderstände ist. Das klingt erst mal kompliziert aber wird im folgenden erklärt. 🙂

Vorab: Als Formel würde das ganze so aussehen:

Formel 1:          \frac{R1+R2}{R2}=\frac{U1+U2}{U2} 

oder

Formel 1.2:    \frac{R1+R2}{R1}=\frac{U1+U2}{U1}

„U1“ and „U2“ are the voltages that drop across the resistor „R1“ and „R2“. „U“ is the same as U1 + U2 because in a series connection of (simple ohmic) resistors, the individual voltages add up to the total voltage.

Kurz, es gilt: U=U1+U2

Ähnliches gilt auch für die Widerstände, denn auch der Gesamtwiderstand einer Reihenschaltung besteht aus der Summe der Einzelwiderstände.

Rsum=R1+R2

Diese Formeln lassen sich nun ganz gut in Formel 1 einsetzen und man erhält folgendes:

\frac{Rsum}{R2}=\frac{U}{U2}

„U1“ und „U2“ sind hierbei die Spannungen die an dem Widerstand „R1“ bzw. „R2“ abfallen. „U“ ist dabei das gleiche wie U1+U2 weil sich in einer Reihenschaltung aus (einfachen ohmschen) Widerständen die Einzelspannungen addieren um auf die Gesamtspannung zu kommen.

Dazu muss die Formel so umgestellt werden, dass sich aus den gegeben Werten die Gesamtspannung „U“ berechnen lässt. Die umgestellte Formel ergibt:

Formel 2:       \frac{Rsum}{R2}+U2=U

Wenn man hier nun die entsprechenden Werte einsetzt ergibt sich folgendes:

\frac{330k}{100k}+1V=3.3V

Mit den im Spannungsteiler verwendeten Widerstandswerten lassen sich also Spannungen bis 3,3V am ADC messen.

Das praktische: Wenn man diese Widerstandswerte ändert kann man mit dem ADC auch höhere Spannungen messen. Im folgenden zum Beispiel die Spannung eines LiPos.


Spannungsteiler auf dem Wemos D1 Mini

So nun wisst Ihr in etwa wie ein Spannungsteiler funktioniert und wozu sich dieser unter anderem nutzen lässt. Mit diesem Wissen wollen wir nun Widerstandswerte für den Spannungsteiler finden um die Spannung eines LiPo-Akkus messen zu können. Dessen Ladeschlusspannung liegt bei maximal 4,2V. Damit wir diese obere Spannung auch sicher messen können ist es ratsam eine etwas höhere Spannung zu wählen. Sagen wir einfach mal 4,3V.

Für die üblichen Spannungswerte von 4.3V, 5V, 9V und 12V sind im nächsten Absatz auch schon Beispiele für die Widerstände R1 angegeben. So könnt Ihr Euch das rechnen sparen. 🙂

Ziel ist es also nun die Widerstandswerte für R1 und R2 zu ermitteln.

Gleichzeitig wissen wir schon, dass U=4,3V und U2=1V sein muss. Damit bleiben zum Berechnen eines Wertes mit Formel 2 nur noch ein Wert den wir ermitteln müssen um den letzten offenen Wert berechnen zu können. Aber wir machen es uns hier einfach und legen diesen Wert einfach fest. 🙂

Wir setzen R2 erst mal auf 100kOhm und gucken welchen Wert wir für R1 erhalten.

Umgestellt ergibt Formel 1.2 inkl. des gesammelten Wissens nun

Formel 3: \frac{{\color{Red} R1}+{\color{Green} R2}}{{\color{Green} R2}}=\frac{{\color{Green} U}}{{\color{Green} U2}}

In dieser Formel kennen wir alle (grünen) Werte bis auf R1 (rot). Also versuchen wir die Formel nach R1 umzustellen und erhalten folgendes:

1+\frac{R1}{R2}=\frac{U}{U2}

vereinfacht und umgestellt ergibt sich:

(\frac{U}{U2}-1)*R2=R1

und das gleiche entsprechend eingefärbt:

(\frac{{\color{Green} U}}{{\color{Green} U2}}-{\color{Green} 1})*{\color{Green} R2}={\color{Red} R1}

In dieser Formel kennen wir nun alle grünen Werte und der gesuchte (rote) Wert steht brav auf der rechten Seite des Gleichheitszeichens. 🙂

Durch Einsetzen lässt sich nun der gesuchte Wert für R1 berechnen:

(\frac{4.3V}{1V}-1)*100kOhm=330kOhm

Es ergibt sich für R1 ein Wert von 330kOhm. Wenn wir also den auf der Platine des Wemos D1 Mini verbauten 220kOhm Widerstand gegen einen 330kOhm Widerstand ersetzen erweitert man den maximal messbaren Spannungsbereich von 3,3V auf 4,3V und kann somit auch den kompletten Spannungsbereich eines LiPo-Akkus messen. 🙂

Das ist die Ansicht der Unterseite des Wemos D1 Mini. Dort ist unter anderem auch der Spannungsteiler für den ADC verbaut.

Formel zur Berechnung:

(\frac{U}{U2}-1)*R2=R1

  • Dabei ist U2 immer 1V
  • U ist die gewünschte maximal messbare Spannung z.b. 4,3V
  • R2 solltet Ihr einfach festlegen. Am besten in einem bereich von 10kOhm bis 100kOhm um den Strom über den Spannungsteiler gering zu halten.

Beispielwerte für Maximalspannungen und die dazugehörigen Widerstandswerte

Die folgenden Widerstandswerte könnt Ihr verwenden um die maximal messbare Spannung des ADCs auf die angegebene Spannung zu erweitern.

Maximal messbare Spannung: 4,3V
R1=330kOhm, R2=100kOhm

Maximal messbare Spannung: 5V:
R1=400kOhm, R2=100kOhm

Maximal messbare Spannung: 9V:
R1=200kOhm, R2=25kOhm

Maximal messbare Spannung: 12V:
R1=275kOhm, R2=25kOhm

Die markierten 0805 Widerstände R1 und R2 könnt Ihr nun einfach gegen die von Euch gewünschten Widerstände austauschen. 🙂

Detailansicht des Spannungsteilers auf dem Wemos D1 Mini

Konfiguration in ESPEasy

In ESPEasy lässt sich die Umrechnung des ADCs in eine Spannung sehr komfortabel erledigen.

Stellt dazu einfach das Device „Analog input – internal“ wie abgebildet ein.

Wenn Ihr eine andere Maximalspannung als 4.300V verwendet müsst ihr diesen Wert natürlich entsprechend anpassen. 🙂


Ich hoffe bei euch hat alles wie beschrieben funktioniert. Falls nicht oder ihr Fragen oder Anregungen habt lasst es mich in den Kommentaren bitte wissen. Ich trage dies dann ggf. in den Artikel nach.
Auch Ideen für neue Projekte sind immer gerne willkommen. 🙂

Fab

P.S. Viele dieser Projekte - besonders die Hardwareprojekte - kosten viel Zeit und Geld. Natürlich mache ich das weil ich Spaß daran habe, aber wenn Du es cool findest, dass ich die Infos dazu mit Euch teile, würde ich mich über eine kleine Spende an die Kaffeekasse freuen. 🙂

Buy Me a Coffee at ko-fi.com

4 Kommentare

  1. Hi, habe gerade deine Seite gefunden, dass ist genau das was ich suche. Wie baue ich das ganze auf, wenn ich die Widerstände extern machen will? Ich glaube ich bekomme das auf dem Wemos mit dem umlöten nicht hin.

    1. Hey Mathias,
      für welchen Spannungsbereich möchtest du den Spannungsteiler denn anpassen? Man kann den Spannungsteiler theoretisch auch durch das anlöten passender externer Widerstände verändern. Müsste man mal durchrechnen. Vllt. reicht es sogar einfach einen weitere Vorwiderstand (für den oberen Teil des Spannungsteilers) zu verwenden. 🙂

      1. Hi und danke für deine Antwort. Ich möchte einen normale 18650 Zelle am Wemos messen die als Akku dienen soll. Möchte nur ungern am Wemos rum löten, da es ja sehr klein ist. Würde gerne einfach nur zwei Wiederstände davor bauen wenn das geht?

        1. Hey Mathias,
          das müsste man sogar mit nur einem 100k Widerstand hinbekommen. Den musst du dann so verschalten:
          A0–>100k_widerstand–>LiPo_plus | LiPo_minus–> GND
          Dann müssten 3,2V an den beiden Vorwiderständen abfallen und somit genau 1V an dem „R2“. Lange rede kurzer Sinn: 4,2V am LiPo würden dann dem ADC-Wert von 1023 entsprechen. Bei den hohen Widerständen und den entsprechenden Toleranzen ist die Messung wahrscheinlich nicht super genau. Aber es reicht auf jeden Fall aus um den Füllstand des LiPos zu erfassen. 🙂
          Denk dran, dass der Zusammenhang zwischen LiPo Spannung und „Füllstand“ nicht komplett linear ist. Und ich würde die Messwerte auch über einen gleitenden Mittelwert etwas „glätten“. Sonst könntest du bei höherer Belastung (und dadurch Spannungseinbrüchen der Akkuspannung) einen „falschen Alarm“ bekommen. 🙂
          Hoffe es ist verständlich erklärt.
          Beste Grüße
          Fab

Kommentar hinterlassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.