U kunt de ADC op de ESP8266 gebruiken om spanningen te meten. Dit is bijvoorbeeld handig om een accuspanning en daarmee de laadtoestand van de accu of een helderheid te registreren met behulp van een LDR en een voorschakelweerstand.
De ADC van de ESP8266 is echter een beetje speciaal. Helaas kan deze zonder extra externe bedrading alleen spanningen tot maximaal 1V bepalen. Het is dus niet mogelijk om direct de spanning van een LiPo accu te bepalen omdat het spanningsbereik van een gezonde LiPo van 3,2 tot 4,2V is.
Er wordt een truc gebruikt zodat de ADC ook hogere spanningen kan meten. Een spanningsdeler wordt gebruikt om de te meten spanning te schalen naar het mogelijke spanningsbereik van de ADC.
De ADC meet dan spanningen in het bereik van 0V tot 1V die staan voor een hogere waarde op de daadwerkelijke spanningsdeler. Op de printplaat van de Wemos D1 Mini is bijvoorbeeld een spanningsdeler geïnstalleerd om spanningen tot 3,3V te meten. Dit is praktisch, maar helaas niet voldoende om bijvoorbeeld de spanning van een LiPo te kunnen meten.
Hoe u dit maximale spanningsbereik van de ADC kunt uitbreiden, wordt beschreven in het volgende artikel.
Inhoud
Eisen
Handige artikelen:
Voordat u met dit artikel begint, moet u de basisprincipes van solderen hebben behandeld. Informatie hierover vind je in het volgende artikel.
Elektronica - Mijn vriend de soldeerbout
Vereist gereedschap:
In de volgende lijst vind je alle tools die je nodig hebt om dit artikel te implementeren.
Benodigd materiaal:
In de volgende lijst vindt u alle onderdelen die u nodig heeft om dit artikel te implementeren.
Veiligheidsinstructies
Ik weet dat de volgende opmerkingen altijd een beetje vervelend zijn en onnodig lijken. Helaas hebben veel mensen die "beter" wisten door onvoorzichtigheid ogen, vingers of andere dingen verloren of zichzelf verwond. Gegevensverlies is in vergelijking bijna te verwaarlozen, maar zelfs dit kan erg vervelend zijn. Neem daarom vijf minuten de tijd om de veiligheidsinstructies te lezen. Omdat zelfs het coolste project geen blessure of andere problemen waard is.
https://www.nerdiy.de/sicherheitshinweise/
Affiliate links / reclame links
De hier vermelde links naar online winkels zijn zogenaamde affiliate-links. Als u op zo'n affiliate-link klikt en via deze link een aankoop doet, ontvangt Nerdiy.de een commissie van de betreffende onlineshop of aanbieder. De prijs verandert voor jou niet. Als u via deze links uw aankopen doet, steunt u Nerdiy.de om in de toekomst andere nuttige projecten aan te kunnen bieden. 🙂
Hoe werkt een spanningsdeler
Een eenvoudige spanningsdeler bestaat eigenlijk altijd uit minimaal twee weerstanden. In het onderstaande schakelschema van de Wemos D1 Mini ziet u in het rood gemarkeerde gebied een spanningsdeler.
Als u niet geïnteresseerd bent in de functie van een spanningsdeler, kunt u deze paragraaf gewoon overslaan. 🙂
Er zijn twee weerstanden in serie geïnstalleerd. De bovenste aansluiting “A0” komt van de verbindingspin “A0” op het Wemos D1 Mini-bord. De te meten spanning (bijvoorbeeld uw LiPo) wordt aangesloten op “A0”.
De “ADC”-verbinding leidt vervolgens naar de daadwerkelijke ADC van de ESP8266.
Waarom doe je dit allemaal?
Hier wordt een eigenschap van een serieschakeling van twee weerstanden gebruikt.
Bij een serieschakeling van twee weerstanden is de verhouding van de totale spanning tot een individuele spanning over een van de weerstanden gelijk aan de verhouding van de totale weerstand tot een van de individuele weerstanden. Dit klinkt in eerste instantie ingewikkeld, maar wordt hieronder uitgelegd. 🙂
Vooraf: Als formule zou het geheel er zo uitzien:
Formule 1:
of
Formule 1.2:
“U1” en “U2” zijn de spanningen die over de weerstanden “R1” en “R2” vallen. “U” is hetzelfde als U1 + U2 omdat bij een serieschakeling van (eenvoudige ohmse) weerstanden de afzonderlijke spanningen optellen tot de totale spanning.
In het kort geldt het volgende:
Hetzelfde geldt voor de weerstanden, want de totale weerstand van een serieschakeling bestaat uit de som van de individuele weerstanden.
Deze formules kunnen nu redelijk goed gebruikt worden in formule 1 en we krijgen het volgende:
"U1" en "U2" zijn de spanningen die respectievelijk over de weerstand "R1" en "R2" vallen. “U” is hetzelfde als U1+U2 omdat bij een serieschakeling van (eenvoudige ohmse) weerstanden de afzonderlijke spanningen bij elkaar opgeteld de totale spanning vormen.
Om dit te doen, moet de formule zodanig worden gewijzigd dat de totale spanning “U” kan worden berekend op basis van de gegeven waarden. De geconverteerde formule resulteert in:
Formule 2:
Als je nu de bijbehorende waarden hier invoert, krijg je het volgende resultaat:
Met de gebruikte weerstandswaarden in de spanningsdeler kunnen spanningen tot 3,2V gemeten worden op de ADC.
Het praktische: als je deze weerstandswaarden verandert, kun je met de ADC ook hogere spanningen meten. In het volgende voorbeeld de spanning van een LiPo.
Spanningsdeler op de Wemos D1 Mini
Zo weet je nu ongeveer hoe een spanningsdeler werkt en waar hij onder andere voor gebruikt kan worden. Met deze kennis willen we nu weerstandswaarden vinden voor de spanningsdeler om de spanning van een LiPo accu te kunnen meten. De laadspanning is maximaal 4,2V. Om ook deze bovenspanning met zekerheid te kunnen meten is het aan te raden een iets hogere spanning te kiezen. Laten we zeggen 4,3V.
Voor de gebruikelijke spanningswaarden van 4,3V, 5V, 9V en 12V staan voorbeelden voor de weerstanden R1 in de volgende paragraaf. U kunt uzelf dus de berekening besparen. 🙂
Het doel is nu om de weerstandswaarden voor R1 en R2 te bepalen.
Tegelijkertijd weten we dat al U=4,3V en U2=1V moeten zijn. Er blijft dus maar één waarde over om met formule 2 een waarde te berekenen, die we moeten bepalen om de laatste open waarde te kunnen berekenen. Maar we maken het onszelf hier gemakkelijk en stellen gewoon deze waarde in. 🙂
We zetten eerst R2 op 100kOhm en kijken welke waarde we krijgen voor R1.
Overgeschakeld resulteert de Formule 1 inclusief de verzamelde kennis nu
Formule 3:
In deze formule kennen we alle (groene) waarden behalve R1 (rood). Dus we proberen de formule te herschikken volgens R1 en krijgen het volgende:
vereenvoudigd en herschikt, is het resultaat:
en dienovereenkomstig dezelfde kleur:
In deze formule kennen we nu alle groene waarden en de (rode) waarde die we zoeken staat aan de rechterkant van het gelijkteken. 🙂
De vereiste waarde voor R1 kan nu worden berekend door in te voegen:
Dit resulteert in een waarde van 330kOhm voor R1. Vervangen we dus de in de printplaat van de Wemos D1 Mini ingebouwde weerstand van 220kOhm door een weerstand van 330kOhm, dan vergroot je het maximaal meetbare spanningsbereik van 3,3V naar 4,3V en kun je dus ook het gehele spanningsbereik van een LiPo-accu meten. 🙂
Formule voor berekening:
- U2 is altijd 1V
- U is de gewenste maximaal meetbare spanning, bijvoorbeeld 4,3V
- U moet gewoon R2 instellen. Beste in een bereik van 10kOhm tot 100kOhm om de stroom door de spanningsdeler laag te houden.
Voorbeeldwaarden voor maximale spanningen en de bijbehorende weerstandswaarden
U kunt de volgende weerstandswaarden gebruiken om de maximaal meetbare spanning van de ADC uit te breiden naar de opgegeven spanning.
Maximaal meetbare spanning: 4,3V
R1=330 kOhm, R2=100 kOhm
Maximaal meetbare spanning: 5V:
R1=400 kOhm, R2=100 kOhm
Maximaal meetbare spanning: 9V:
R1=200 kOhm, R2=25 kOhm
Maximaal meetbare spanning: 12V:
R1=275kOhm, R2=25kOhm
U kunt nu eenvoudig de gemarkeerde 0805-weerstanden R1 en R2 omwisselen voor de gewenste weerstanden. 🙂
Configuratie in ESPEasy
In ESPEasy kan de omzetting van de ADC naar een spanning heel gemakkelijk worden gedaan.
Om dit te doen, stelt u eenvoudigweg het apparaat “Analoge ingang – intern” in, zoals weergegeven.
Als je een andere maximale spanning dan 4.300V gebruikt, moet je deze waarde natuurlijk aanpassen. 🙂
Veel plezier met het project
Ik hoop dat alles werkte zoals beschreven. Zo niet, of als je vragen of suggesties hebt, laat het me weten in de commentaren. Ik zal dit dan zo nodig aan het artikel toevoegen.
Ideeën voor nieuwe projecten zijn altijd welkom. 🙂
PS Veel van deze projecten - vooral de hardwareprojecten - kosten veel tijd en geld. Natuurlijk doe ik dit omdat ik het leuk vind, maar als je het cool vindt dat ik de informatie met je deel, dan zou ik blij zijn met een kleine donatie aan het koffiefonds. 🙂
Hoi, heb net je site gevonden, dat is precies wat ik zoek. Hoe bouw ik het geheel als ik de weerstanden extern wil maken? Ik denk niet dat ik dat op de Wemos kan doen met het doorsolderen.
Hé Mathias,
Voor welk spanningsbereik wil je de spanningsdeler aanpassen? Theoretisch kun je de spanningsdeler ook veranderen door er geschikte externe weerstanden op te solderen. Men zou moeten rekenen. misschien het is zelfs voldoende om gewoon een andere serieweerstand te gebruiken (voor het bovenste deel van de spanningsdeler). 🙂
Hoi en bedankt voor je antwoord. Ik zou graag een normale 18650-cel op de Wemos willen meten die als batterij zou moeten dienen. Zou niet graag op de Wemos willen solderen, aangezien hij erg klein is. Zou je er gewoon twee weerstanden voor willen bouwen als dat mogelijk is?
Hé Mathias,
Met een weerstand van 100k zou dat moeten kunnen. Je moet het dan zo schakelen:
A0–>100k_weerstand–>LiPo_plus | LiPo_minus -> GND
Dan zou er over de twee serieweerstanden 3,2V moeten vallen en dus precies 1V over “R2”. Om een lang verhaal kort te maken: 4,2V op de LiPo zou dan overeenkomen met de ADC-waarde van 1023. Gezien de hoge weerstanden en de bijbehorende toleranties is de meting waarschijnlijk niet supernauwkeurig. Maar het is zeker genoeg om het niveau van de LiPo vast te leggen. 🙂
Houd er rekening mee dat de relatie tussen LiPo-spanning en “niveau” niet volledig lineair is. En ik zou de gemeten waarden ook een beetje ‘gladmaken’ met behulp van een voortschrijdend gemiddelde. Anders kunt u een “vals alarm” krijgen als de belasting hoger wordt (en als gevolg daarvan de accuspanning daalt). 🙂
Hoop dat het duidelijk is uitgelegd.
Hartelijke groeten
Fab
Hoi! Je hebt echt een geweldige site gebouwd. Zeer informatief en in kleine stapjes uitgelegd. Ik werk voor het eerst met een Wemos en kwam je tutorial tegen toen ik onderzoek deed naar de ADC.
Ik wil graag een niveausensor uitlezen voor mijn stortbak. Deze meet de waterkolom en laat afhankelijk van de vulstand 4-20mA door. Hij wordt geleverd met 24V. Heb je een tip hoe ik de input van de Wemos hiervoor zou kunnen omvormen?
Het allerbeste, Martijn
hoi martijn,
Bedankt. 🙂
In principe heb je een geschikte weerstand nodig. De ADC van het Wemos breakout-bord kan spanningen meten van nul tot 3,3V. U kunt een weerstand gebruiken om het ‘stroomsignaal’ van uw sensor om te zetten in een spanning. Ik heb er overheen gekeken. Er zou een weerstand van 175 ohm moeten passen.
Je zou het dan als volgt moeten aansluiten: (De zigzaglijn moet de weerstand voorstellen.) Ik zou ook aanraden om een hoogohmige (bijv. 10k) weerstand voor de ADC te schakelen. 🙂
Sensor_signaal 4-20mA
|
+————–ESP_ADC
|
\
/ 175 ohm
\
/
|
|
|
|
|
GND
Als je wilt, laat me weten of het gelukt is. 🙂
Oh en op de ADC zou je dan een spanning moeten kunnen meten die evenredig is met de huidige stroom. De formule U=R*I is van toepassing (dit is de wet van Ohm). R is de weerstand (d.w.z. 175Ohm), I de stroom van de sensor (d.w.z. een waarde tussen 4-20mA) en U is de spanning die dan wordt gemeten aan de ADC of over de weerstand zakt. Je kunt de schakeling ook testen zonder de Wemos aangesloten te hebben. Meet eenvoudig de spanning met een multimeter. 🙂
Hartelijke groeten
Fabian
Hallo Fabian,
Hartelijk dank voor de hulp!
Gebruikte een precisietrimmer als weerstand om de spanning te kalibreren.
Werkt tot nu toe prima, maar de waardes van de ADC springen plus/min 5 punten omhoog. Ik heb al een 100n tegen de grond gezet om te stabiliseren, maar dat helpt maar in beperkte mate.
Als ik de mA van de sensor zo meet, is deze waarde stabiel. Afhankelijk van de ADC van de Wemo.
Hebben jullie tips hoe ik dit nog beter kan gladstrijken?
Met vriendelijke groeten Martijn
hoi martijn,
Ik ben blij, dat het gelukt is. Goed idee met de precisietrimmer. 🙂
Een idee hoe je dat nog beter zou kunnen gladstrijken (in software) zou een voortschrijdend gemiddelde zijn.
Dit is eigenlijk een veel voorkomende procedure als je een signaal hebt dat je snel kunt inlezen.
Om dit te doen, leest u eenvoudigweg de ADC meerdere keren uit (bijvoorbeeld 100 keer) en berekent u het gemiddelde ervan. Kleine afwijkingen zouden dan eigenlijk gecompenseerd moeten worden en niet meer merkbaar zijn. 🙂
Hartelijke groeten
Fabian
Hoi,
Bedankt voor je geweldige infopagina 🙂
Moet een hoop werk geweest zijn.
Kan dat direct in de Wemos in espeasy
omrekenen naar percentage?
Groetjes Heiko
Hé Heiko,
Heel erg bedankt. Ja, ik heb hier al een uur of twee geïnvesteerd. 😀
Ja, dat zou moeten werken. Hier is een artikel dat je misschien kan helpen: https://www.letscontrolit.com/wiki/index.php/EasyFormula
Hartelijke groeten
Fabian
Hallo Fabian, geweldig artikel hier !! goed gedaan 🙂
Ik heb een wemos d1 mini met zijn originele smd weerstanden R1 220kOhm en R2 100kOhm
Ik wil spanningen meten tot 29,4V (7s batterij)
dus welke weerstanden denk je dat het beter is om te kiezen?
solution1= R1 300kOhm + R2 10kOhm (tot 32v) minst efficiënt maar best nauwkeurig
oplossing2= R1 680kOhm + R2 20kOhm (tot 36V) laag efficiënt gemiddelde nauwkeurigheid
oplossing3= R1 470kOhm + R2 10kOhm (tot 49v) = meest efficiënte maar minst nauwkeurige
Reken alstublieft uit en help me de beste oplossing te kiezen.
Bedankt 🙂
Hoi Nick,
Bedankt 🙂
Om eerlijk te zijn zou ik voor solution1 gaan. Natuurlijk kunnen de ~ 9 micro-versterkers van alles zijn (afhankelijk van uw usecase), maar in de meeste gevallen zouden ze niet zoveel moeten storen.
Of bent u van plan iets te bouwen waarbij deze 9µA problematisch kan zijn? 🙂
hartelijke groeten
Fab
Ik zal Wemos D1 Mini gewoon gebruiken met tasmota om mijn 24V (7s-batterij) te bewaken die is opgeladen met een zonnepaneel. HUUUGE bedankt voor de feedback 🙂
Klinkt cool, ik denk dat je in dit geval niet zoveel om de 9µA hoeft te geven 🙂
Veel succes met het project. 🙂
hartelijke groeten
Fab
RE bewerken
of u kunt een andere combinatie aanbevelen. Ik heb die metalen weerstanden: 10Ω, 22Ω, 47Ω, 100Ω, 150Ω, 200Ω, 220Ω, 270Ω, 330Ω, 470Ω, 510Ω, 680Ω, 1KΩ, 2KΩ, 2.2K Ω, 3.3KΩ, 4.7KΩ, 5.7KΩ, 5.7KΩ, 5.7KΩ, 5.7KΩ, 5.7KΩ 10KΩ, 20KΩ, 47KΩ, 51KΩ, 68KΩ, 100KΩ, 220KΩ, 300KΩ, 470KΩ, 680KΩ, 1M
Hallo Fab,
Ik heb net dit artikel gecontroleerd en helaas zijn er een paar fouten in geslopen...
1.
Formule 2 is fout!
In plaats van Rsum / R2 + U2 = U zou het Rsum/R2 * U2 = U moeten zijn
Ongeacht het feit dat de regel eronder wiskundig onjuist is.
330/100+1 zou 4,3 zijn ... en de eenheden zijn ook niet correct (kOhm/kOhm heft op)
Verder: Waar komt die 330 kOhm vandaan? R1=220 kOhm en R2 = 100 kOhm -> dus Rsum = 320 kOhm en niet 330 kOhm
Met deze ohm waarden (220 en 100 kOhm) krijg je ruim 1 volt op de ADC ... namelijk 1,03 volt
Maar ik kan niet beoordelen of dit al schadelijk is voor de analoge ingang.
2.
De Formule 3 is tot nu toe oké, maar die is niet afgeleid van formule 1.2 maar van formule 1
(Dit heeft uiteraard geen verdere invloed op de verdere berekeningsmethodes.... alleen vermeld voor de duidelijkheid)
3.
Ik begrijp de berekende waarde voor de 175 ohm niet (vraag van Martin over de niveausensor). Volgens mijn berekeningen zou de waarde voor de weerstand rond de 52 ohm liggen...
Begrijp mijn opmerking niet verkeerd...
LG Ralf
Hallo Ralph,
bedankt voor je tips. Ik corrigeerde de fouten die ik kon begrijpen. 🙂
tot 1. Wat bedoel je met de eenheden kloppen niet? Aangezien de kOhms zijn verkort, blijft V boven: [kOhm/kOhm*V=V] Dat staat daar toch?
tot 3. Uw berekening heeft betrekking op een maximaal meetbare spanningswaarde van 1V. De Wemos D1 Mini (waar Martin in de opmerking op ingaat) is een breakout-board voor de ESP8266. Stroomopwaarts van de ADC is een spanningsdeler aangesloten (die hij uitdrukkelijk niet wilde wijzigen). Daarom passen de 175 ohm heel goed bij het uitgebreide meetbereik (tot 3,3V) van de Wemos D1 Mini. 🙂
Oh geen probleem. Ik ben blij als iemand een fout vindt en het me laat weten. 🙂
Bedankt en vriendelijke groet
Fabian
Hallo, ik weet dat dit hier al een beetje geschreven is, maar voor mij zou batterijbewaking belangrijk zijn voor een camper. Ik zou nu 1MOhm en 470k als weerstanden hebben genomen. Ben ik op de goede weg? Ik wil ook werken met diepe slaap. Het gaat er eigenlijk alleen om te voorkomen dat de accu diep ontlaadt en mij op de hoogte te houden. Een ontkoppeling van de belasting is tot nu toe niet gepland. Het zou mooi zijn als er een manier was om de batterij op te laden als dat nodig is.
Hoi Sascha,
Kijk eens naar het gedeelte met de voorbeeldwaarden. Daar heb ik ook een weerstandscombinatie gegeven voor 12V. 🙂
Hartelijke groeten
Fabian
Hallo, ik heb eindelijk een goede website gevonden.
Ik deel veel onderwerpen met jullie.
Ik ben van plan een spanningsgestuurde overmaatregeling voor zonne-energie te bouwen.
Momenteel meet ik de prestaties van de zonnepanelen en schakel ik een verbruiker bij een bepaalde waarde aan en uit. Dit doe ik via een ESP 8266 en een Mosfet (IXFK44N50P). Ik heb de modules zo ontworpen dat ik ze kan gebruiken voor het bedienen van verwarming of het schakelen van voedingen (230V). Het geheel zonder omvormer.
Mijn vraag: met een spanningsdeler van 1,1Mo + 47Ko kan ik rond de 1V komen. bij een ingangsspanning van DC 230V. De stelling dat je bij het ESP maar maximaal 42V mag meten begrijp ik niet.
Hoi Uwe,
Wat je daar doet is levensbedreigend. Vooral hoge gelijkspanningen (nog niet gezekerd) zijn levensgevaarlijk! Je MOET (!) deze overschotregeling anders oplossen.
Zelfs als dit theoretisch technisch mogelijk zou zijn, is het levensbedreigend en uiterst nalatig om dit te doen. Houd er rekening mee dat er al mensen zijn omgekomen bij dergelijke constructies. Zelfs de mensen die dachten dat ze het beter wisten.
Ik weet niet hoe je aan de 42V komt, maar hoogstwaarschijnlijk heeft de waarde betrekking op de maximaal toegestane aanraakspanning. Informatie hierover vindt u hier: https://de.wikipedia.org/wiki/Ber%C3%BChrungsspannung
Als je zo'n overschotregeling wilt bouwen, raad ik een andere aanpak aan: meet de huidige opwekkingsoutput van het paneel met een WiFi-compatibele smart socket en schakel vervolgens de verbruikers afhankelijk van de huidige vermogenswaarde.
Nogmaals: elke omgang met hoge gelijkspanningen is levensbedreigend. Dit risico moet je absoluut niet nemen!
Hartelijke groeten
Fabian
Hoi,
Bedankt voor je antwoord.
Ik doe deze hobby al sinds de creatie van de transistor, dus ongeveer 50 jaar.
Bedankt voor je veiligheidstips, maar hoe voorzichtig je ook bent, het gebeurt altijd vanuit een ELKO.
Nu verder met het onderwerp:
Er is weinig kant-en-klare elektronica voor deze hoge gelijkspanning, dus ik moet het meeste zelf bouwen.
Ik gebruik Fhem en bedien en monitor er alles mee.
Het enige wat nieuw voor mij is, is het meten van de spanning op de ESP 8266.
Jammer dat je niet zoveel op mijn vraag reageert.
Hoi Uwe,
Ik heb uw vraag beantwoord: namelijk dat wat u daar gaat doen levensbedreigend is. Dit is ook de reden dat er zo weinig over dit onderwerp te vinden is.
Bovendien is het meten van de uitgangsspanning van een zonnecel niet geschikt om conclusies te trekken over de huidige prestaties. Uitgangsspanning is niet lineair met het vermogen. Vooral bij gebruik van een MPP-tracker kan het werkpunt verschuiven waardoor de uitgangsspanning zelfs kleiner wordt naarmate het vermogen toeneemt.
Ik wil je niet beledigen, maar de tijd dat je iets doet zegt niets over hoe goed/zelfverzekerd je een onderwerp beheerst. Trefwoord ‘operationele blindheid’.
Daarom wil ik u nogmaals vragen uw probleem anders op te lossen en nogmaals te benadrukken dat wat u doet levensbedreigend is.
Ik help je graag om het probleem anders en veilig op te lossen. Om dit te doen, moet je gedetailleerder beschrijven wat je eigenlijk wilt doen.
Hartelijke groeten
Fabian