blogy logo
login PRIHLÁS SA
BLOG deadawp
ČLÁNKY
DISKUSIE
3
SLEDUJETE BLOG
Programátor
deadawp



Monitorovanie napätia olovenej batérie
pridal deadawp 9.5. 2025 o 18:51 (naposledy upravené 25.5. 2025 o 0:32)

Dnes si ukážeme implementáciu senzorového uzla pre LoRa PPP (Point-to-Point) komunikáciu, ktorý bude postavený na DPS (doske plošných spojov) 433_LoRa_Lolin32. Tento senzorový uzol bude merať napätie 12V olovenej batérie (trakčná / autobatéria) skrz napäťový delič a svoj analógový pin 12-bitového ADC prevodníka. Táto trakčná batéria napája elektrický oplotok, resp. zdroj impulzov, ktorý do oplotku generuje krátke vysokonapäťové pulzy, ktoré odrádzajú zver od prekročenia plota a chránia tak úrodu pred možnou škodou, prípadne chované zvieratá pred únikom z ohrady, či pred zverou, ktorá sa k ním môže dostať. Projekt je tak vhodný aj pre malých roľníkov, poľnohospodárov, chovateľov dobytka a zvierat všeobecne. Nájde využitie aj pre monitorovanie napätia v iných aplikáciách priemyselného charakteru.

V tomto prípade je trakčná batéria dobíjaná solárnym panelom skrz kompatibilný kontróler, ktorý celý proces dobíjania riadi. Kontróler má konfigurovateľné režimy prevádzky, prahové napätia. Má dokonca aj relé výstup, kde je možné pripojiť záťaž, či už do svorkovníc, alebo do USB-A výstupov (len 5V). Taktiež nechýba ani funkcia časovača pre spúšťanie záťaže v potrebnom čase a ďalšie... Toto je len doplnková funkcionalita, ktorá nie je potrebná aplikáciu zbierania napätia batérie. Nakoľko ale je batéria dobíjaná, je možné sledovať aj napätie na svorkovách batérie počas dobíjania a kontrolovať tak, či bola počas dňa batéria dobíjaná a v akých napätiach sa pohybuje. Inými slovami, uvidíme napätie batérie aj nad 12,6V, čo je napätie plne nabitej batérie v kľudovom stave. Pri prevádzke bez dobíjania batérie by sme videli len úmerne klesajúce napätie.

Stávalo sa po minulé roky, že divá zver (jelene, divé svine) strhla plot na zem pri pokuse o prekročenie plotu a to malo za následok prebíjanie oplotku do zeme, čo drasticky zvýšilo odber. Druhým faktorom bolo, že ak narástla dostatočne vysoká tráva a dotýkala sa oplotku, býval problém najmä pri a po daždi, keď bola tráva mokrá a skrz ňu prebíjal oplotok taktiež do zeme. Behom 24 až 48 hodín toto dokázalo vybiť batériu aj pod 8V z plne nabitého stavu.

Z dlhodobého hľadiska to má negatívny vplyv aj na kapacitu batérie z dôvodu sulfatácie a podobne. Preto sa musela batéria pravidelne chodiť merať minimálne raz za 2 až 3 dni. V záujme o uľahčenie si života a automatizácie tejto funkcionality využijeme pre tento účel senzorový uzol (LoRa vysielač založený na mikrokontréri ESP32), ktorý bude vykonávať merania napätia batérie v pravidelných intervaloch a posielať tieto dáta ďalej.

Pôvodne som riešenie chcel vytvoriť na doske XIAO_LoRa, avšak pájkovanie batérie priamo na pady zo spodnej časti XIAO dosky sa mi veľmi nepáčilo, zvlášť, keď som nemal JST XH konektor (v SMD verzii) s roztečou 2,54 mm, teda v obdobnom prevedení ako to má PH 2.0 verzia na Lolin32 devkite. Baterku som nechcel natvrdo pájkovať bez možnosti odpojenia, keďže som zariadenie zostavoval vždy až na mieste.


Neosadená DPS XIAO_LoRa a 433_LoRa_Lolin32


Osadená DPS XIAO_LoRa a druhá DPS 433_LoRa_Lolin32 (okrem OneWire a ADC1_CH5 konektora) a porovnanie ich veľkostí oproti 2€ minci

Doska 433_LoRa_Lolin32 obsahuje možnosti pripojiť:

  • ADC vstup (3V3, GND, ADC_IN)
  • OneWire senzor (3V3, GND, DATA)
  • I2C periféria (3V3, GND, SDA, SCL) - hardvérová I2C
  • Solárny panel (5V_IN, GND)
  • RA-02 (Semtech SX1278 - SPI bus + DIO0)
  • Lolin32 (Wemos V1.0.0)

V porovnaní s XIAO_LoRa doskou, 433_LoRa_Lolin32 nediposnuje miestom pre spájkovanie rezistorov priamo na DPS. Z toho dôvodu ich bolo nutné napájkovať priamo na kábel, ktorý ide k batérii. Použil som rezistory, ktoré šuflík dal. Pri výbere som dbal nato, aby som pokryl celé možné napätie batérie, ktorá je dobíjaná samostatným systémom. Štandardne môže mať až 14,8 V (pre ľahšie výpočty zaokrúhlime na 15V).

Nakoniec som sa rozhodol pre 470K rezistor na vstup a 100K rezistor do zeme na napäťovom deliči. Z takéhoto pomeru rezistorov vzniklo to, že výstupná napätie deliča je 5,7-krát menšie od vstupného. Nevyužije sa tak celý 3V3 rozsah ESP32 a jeho ADC pinu, pri napätí batérie 15V bude na výstupe deliča 2.63V, teda je tam ete viac ako 0,6V rezerva na zvyšovanie vstupného napätia ešte o viac ako 3V, teda limit je niekde okolo (nad) 18V vstupu.


Napäťový delič v pomere 1:5,7, t.j. výstupné napätie je 5,7-krát nižšie ako vstupné

Samotná spotreba deliča sú nízke desiatky uA, ktoré sú ťahané z batérie, v operačnom rozsahu je to od 18 uA to 26 uA. Pri 12,6V je to niečo cez 20 uA, čo je zanedbateľný prúd, ktorý prakticky ani neovplyvňuje výdrž trakčnej batérie, keďže denná spotreba (za 24 hodín) bude niekde na úrovni 480 uA až 600 uA v závislosti od vstupného napätia meranej trakčnej batérie, ktoré sa mení, nakoľko je batéria nabíjacím obvodom dobíjaná počas dňa a slnečného žiarenia, teda v danom čase je napätie vyššie v porovnaní napr. s nocou, kedy solárny panel negerenuje dostatočné napätie pre nabíjanie.

Túto formulu používa aj senzorový uzol (LoRa vysielač) po meraní mV na ADC pine na prepočet vstupného napätia. Vysielač vysiela ADC napätie a aj vypočítané vstupné napätie deliča v preddefinovanej štruktúre, ktorú pozná aj prijímač, aby dokázal dáta dekódovať. Pri meraní ADC pinom mikrokontroléra ESP32 sa vykonáva jedno skúšobné meranie, ktoré ma za úlohu eliminovať šum, či naindukované napätie a následne sa vykonáva 5 priemerovaných meraní, ktorých výsledok sa berie za finálnu hodnotu napätia deliča. Z tejto hodnoty sa počíta aj vstupné napätie deliča.

Ako vidíme na blokovej schéme riešenia, vysielač neposiela dáta priamo do databázy, ale iba prijímaču cez LoRa technológiu. Prijímač má k dispozícii WiFi AP v dosahu, ktorý mu poskytuje konektivitu pre pripojenie sa na internet a vykonanie prenosu dekódovaných dát po HTTPS protokole POST metódou do databázy vlastnej webovej aplikácie, či cloudovej IoT služby. Umiestnenie prijímača voči vysielaču tak bude mať prioritu pre spoľahlivé a najmä periodické prijímanie dát.

Vysielač a prijímač boli umiestnené do elektrikárskych krabíc s rozmermi 100x100x38 mm, vrátane napájacieho lítiového článku. Na predný kryt krabíc som dopasoval solárny panel 100x100 mm. Tento panel má 5V výstup a dokáže dodávať špičkový výkon až 3W, štandardne 1,2W, čo je dostatočné. Vysielač funguje v režime hlbokého spánku, do ktorého uspáva aj LoRa modul RA-02 (AI-Thinker) pre šetrenie energie v neaktívnom stave. Prebúdza sa v pravidelných niekoľko-minútových intervaloch iba pre účel merania napätia a odoslania dát na prijímač.


Krabička 100x100 a solárny panel s výkonom 3Wp

Celkový uptime vysielača v aktívnom stave je pod 2 sekundy, keďže meranie trvá prakticky niekoľko nanosekúnd a samotný prenos dát okolo 1,2 sekundy. Spotreba v režime hlbokého spánku pre vysielač bude niekde nad 2 mA. Je to dané najmä integrovanými LED diódami, trvale napájaným USB-UART prevodníkom CH340, napájaným step-down meničom. Vzhľadom na dobíjanie batérie nie je problémom ani táto spotreba, ktorá sa môže zdať vysoká pre LoRa zariadenie. Ak by sme prešli na XIAO, spotreba by bolo niekde okolo 50 uA, tak snáď nabudúce :-).

Prijímač ale musí byť trvale napájaný, teda u neho je vyššia požiadavka na prevádzku na batériu. Z toho dôvodu som tu siahol po 2000 mAh Li-Ion batérii z dôvodu, že spotreba môže byť od 17 mA po 80 mA v závislosti od nastavenia Lolin32 devkitu, resp. firmvéru. Devkit môže byť v aktívnom stave a spotrebúvať okolo 50 mA, aby dokázal kontrolovať v programovej slučke loop, či dorazili nejaké dáta.

Druhou možnosťou je, že devkit môže spať, ale musí predtým urobiť niekoľko vecí. RA-02 musí byť nastavený do režimu posluchu (RX) pre aktívny príjem paketov, čo má za následok jeho konštantnú spotrebu 15 mA. Interrupt pin DIO0 na RA-02 (SX1278) module dokáže zmeniť svoj stav na HIGH pri prijatí paketu a môže byť použitý ako externý interrupt pre prebudenie mikrokontroléra ESP32 z režimu spánku, ktorý už dáta spracuje.

Sú tu ale určité úskalia... Prijímač môže byť maximálne v light sleepe, čo znamená vyššiu spotrebu v porovnaní s deep sleep režimom u vysielača. Je to práve z dôvodu, že pri prebudení z light sleepu mikrokontróler pokračuje v programe tam, kde skončil (od bodu, kde bol uspatý). Ak by šlo o deep sleep, mikrokontróler by musel byť reštartovaný a tak musí znova nastaviť aj LoRa modul, teda dáta sa stratia, respektíve by sa premeškali. Aby ich ESP32 dokázalo prečítať, musí to byť naozaj maximálne light sleep režim, ktorý má mať spotrebu okolo 0,8 mA (z datasheetu pre samotný ESP32-WROOM-32 modul, nie devkit), Lolin32 devkit bude mať minimálne 2,5 mA v tomto režime + treba rátať do celkovej spotreby aj 15 mA modulu RA-02, teda budeme niekde na úrovni 17 až 18 mA, čo je najnižšia možná spotreba pre takúto konfiguráciu s aktívnym prijímačom. Opäť, ak by sme použili XIAO, spotreba by mala niekde okolo 15 mA.

Vysielač vyzerá identicky, ako prijímač s dvoma rozdielmi, že má z krabičky okrem antény vyvedené aj vodiče s nalisovanými očkami, ktoré sa pripájajú k svorkám trakčnej batérie pod skrutku. Druhým rozdielom je použitie Li-pol batérie miesto Li-Ion, ktorá sa pripája identicky, no má navyše aj ochranný obvod. Obvod by mal fungovať najmä proti skratu a prebitiu.

Vysielač vybavený Li-pol batériou a integrovaným napäťovým deličom 1:5,7 so svorkami pre pripojenie k batérii a  solárnym panelom

Ochranu proti vybitiu batérie nemá, nakoľko ako som sa už skôr sám presvedčil, vybilo batériu až do 0V. Po dosiahnutí nízkeho napätia, kedy sa už ESP32 nedokázalo spustiť to robilo nekonečný reštart (brownout) a vyťahalo batériu dočista za jednu noc (možno len za pár hodín, nemeral som kedy to nastalo).

Kritickým bodom bolo umiestnenie prijímača voči vysielaču. Vysielač už bol stacionárny a prišlo k problému s nepriamou viditeľnosťou pri prvom plánovanom osadení prijímača. Vysielač a prijímač boli od seba asi 662 metrov. Nedošlo k priamej viditeľnosti, čo potvrdzuje model prepočtu HeyWhatsThat Path Profiler, alebo UISP Design Center. Druhý model je presnejší, nakoľko umožňuje nastavenie výšky antén nad zemským povrchom voči sebe, čo umožňuje dostať presnejší výstup. Ani jeden z modelov ale nepočíta s budovami, stromami vo výhľade. Ich prepočet je relevantný iba k povrchu ako takému pre overenie "priamej viditeľnosti".

 

Takéto umiestnenie vysielača a prijímača malo za následok nekonzistentnosť v prijatých paketoch a značnú variáciu pomeru signálu voči šumu (nižšia hodnota je horšia). RSSI je možné vyhodnotiť ako dosť zlé, až takmer nedostatočné (i keď LoRa má nato rezervu až niekde k -137 dBm, možno až -141 dBm) s takýmito podmienkami prenosu dát bez priamej viditeľnosti. Rovnako tak občas prijímač nebol schopný prijať paket, alebo dekódovať ho v dôsledku čoho bol zahodený.

Signál v takomto posadení vysielača  a prijímača prechádza prakticky po takmer jednu tretinu cesty skrz kopec a blízko prijímača ešte aj cez asi 3 strechy budov a veľký listnatý strom. Do budúcna bude treba poupraviť pozíciu prijímača, prípadne zvýšiť výšku antény na vysielači. V aktuálnej konštalácii je väčší problém s parametrom SNR, ktorý reprezentuje pomer signálu voči šumu. Hodnoty by mali byť od +20 dB do -5, čo sa už považuje za nekvalitný signál. V našom prípade máme hodnoty SNR, ktoré kolíšu a sú blízko k -20 dB, čo reprezentuje veľmi nekvalitný signál, prakticky plný šumu.

Keď pomer presiahne -20 dB, je to prakticky nedekódovateľný signál. -20 je to ale iba pre Spreading Factor 12, u iných spreading factorov je to bližšie smerom k 0 dB. Ako môžeme vidieť aj variáciu SNR za poslednú hodinu, dosť sa mení, čo je spôsobené najmä tým, že sa signál nechytá na prijímači priamo, ale iba z odrazov. Stáva sa tak, že občas prjímač nie je schopný dekódovať paket, inokedy je zase X minút ticho, kým sa prijímaču opäť podarí prijať dáta.


Po navýšení výšky antény sa pomer signálu voči šumu môže radikálne zvýšiť


Ako môžeme aj z grafu vidieť, loguje sa napätie trakčnej batérie a posiela sa do SQ" databázy. Túto webaplikáciu nazývam aj Batmonitor. Môžeme vidieť, že pred šiestou hodinou ráno začína byť aktívny aj solárny panel, ktorý túto batériu dobíja a stará sa o jej power management. Po štvrtej hodine poobede klesá prúd z panela, čím sa znižuje napätie na batérii, až neskôr nie je batéria nabíjaná vôbec a počas noci dosahuje napätie niekde na úrovni 12,6 až 12,5V, čo značí takmer plne nabitú batériu aj počas tohto obdobia.

Systém dokáže pri nízkom napätí batérie zaslať aj email s informáciou o stave napätia, teda nie je nutné sústavne monitorovať webovú vizualizáciu s grafom. Aby emaily neboli otravné, pošle sa maximálne 1 e-mail za 6 hodín a aj to iba v prípade, že napätie batérie kleslo pod 11V, čo už indikuje značné vybíjanie, keď maximálne prípustné vybíjanie olovenej batérie je do 10,5V a pod túto hodnotu by nemal klesnúť, teda notifikácia je včasná a s meraním v XX minútovom intervale dokáže upozorniť tak, aby obsluha mohla vykonať obhliadku, či meranie batérie.

Čo sa týka LoRa komunikácie, vysielač a prijímač používa rovnakú prednastavenú nosnú (strednú) frekvenciu, šírku pásma, rovnaký spreading factor, coding rate, alebo čo je najdôležitejšie, spoločný sync word, vďaka ktorému môžem mať viacero PPP LoRa komunikácii, ktoré budú iba logicky oddelené sync wordom, ktorý filtruje pakety. Vďaka tomu prijímač bude reagovať iba na pakety od určeného vysielača, ktorý používa identický sync word a iný odignoruje (resp. odfiltruje).

V praxi je tu super napríklad pre produkčnú verziu LoRa aplikácie a testovaciu, kedy sa nemusíte báť, že by vám prijímač v produkcii zachytil aj testovacie dáta, i keď pracujete blízko neho. Využíva sa iný sync word, hoci stredná frevencia, i šírka pásma je rovnaká. Všetky zariadenia tak budú používať identickú frekvenciu, šírku pásma t.j. kanál, ale budú rozdelené len logicky na základe iného sync wordu (môžeme to nazvať aj inou podsieťou). Existujú aj špecifické sync wordy, ktorým by ste sa mali vyhnúť, napríklad 0x34, ktorý je vyhradený pre verejné LoRaWAN siete. V tomto prípade najde o LoRaWAN sieť, ale o vlastnú LoRa PPP (Point-to-Point) aplikáciu s dátami, ktoré sú prakticky verejné a ak si niekto vhodne nastaví prijímač a vie dekódovať aj obsah, ktorý sa prenáša, dokáže vidieť to, čo sa tam posiela.

Pre túto kontrétnu aplikáciu používam "striktný" vysielač a prijímač. Samozrejme je možné zariadenia prepínať aj medzi režimami vysielania, alebo prijímania dát. Nedokážu ale prijímať a vysielať v reálnom čase, vždy je nutné navoliť režim. Z toho pohľadu označujeme takúto komunikáciu ako half-duplex. V podobnej aplikácii by príjem na vysielači mohol slúžiť na prijímanie konfiguračných dát, zmenu parametrov, napr. časovača početnosti vysielaní a podobne. Režim prijímania by ale na vysielači musel byť aktívny napr. po vysielaní po určitú dobu a samozrejme modul by spotrebuvával 15 mA len na RA-02 module. V snahe o low power end-node ide iba o striktný vysielač, ktorý je neaktívny a zobudí sa iba v preddefinovaný čas na krátke vyslanie informácie, po ktorom opäť prechádza do režimu hlbokého spánku. Aj keby sa niečo po jeho sync worde posielalo, nepríjme nič, lebo je "hluchý".

Na videu nižšie môžete vidieť vizuál webaplikácie Batmonitor a moment, kedy dôjde k prijatiu nových dát (simulované skrz Postman), ktoré sa automaticky objavia v hornej časti, ktorá poukazuje na poslednú hodnotu napätia batérie a čas prijatia týchto dát. Dáta sú dynamicky zapísané aj do grafu s vizualizáciou napätia batérie v čase, aj do tabuľky nižšie, ktorá vypisuje aj dáta technického charakteru o RSSI, SNR...

Nakoľko simulované prijaté dáta obsahujú napätie batérie pod 11V, odosiela sa aj notifikácia e-mailom s informáciou o poklese napätia batérie. To pomôže pri informovaní prevádzkovateľa o potrebe vykonania obhliadky oplotku, jeho celistvosti, či potrebe výmena oloveného akumulátora. Takto sa zníži aj šanca, že by v prípade spadnutého oplotku došlo k vybitiu batérie do nebezpečných hodnôt. Informácia je včasná. Ak by sa použil iný napäťový delič s iným pomerom, je možné identický hardvér použiť aj na meranie napätia pre 24V, alebo 48V systémy.

Chceli by ste podobné riešenie aj pre Váš oplotok, či obdobnú aplikáciu? Možné prispôsobiť na mieru a prenášať aj senzorové dáta napríklad o teplote skrz DS18B20 OneWire snímač s extra spotrebou len 3µA v standby režime, ale je možné doplniť aj ďalšie snímače pre získanie dát o GPS polohe, či dáta z vyššieho systému založeného na RS485, či inej priemyselnej zbernici. Rovnako tak je možné takýto senzorový uzol integrovať aj do LoRaWAN siete s použitím LMIC knižnice, ktorá podporuje aktivačné režimy ABP, alebo OTAA. Pre Európu je ale skôr preferovaná LoRaWAN sieť na 868 MHz.

V prípade záujmu, či otázok mi napíšte na: martin.ch.youriot@gmail.com 

Aktuálne napätie batérie pre túto konkrétnu aplikáciu môžete sledovať na: https://hladinomer.eu/LoRa/ za predpokladu, že LoRa vysielač a prijímač stále beží a neboli použité do iného projektu.



Prístupov 803
Kvalita článku
hlasov 0

PRÍSPEVKY
SLEDOVAŤ
Prosím prihláste sa pre možnosť pridania komentáru.
Prihláste sa, alebo použite facebook login facebook login
ĎALŠIE ČLÁNKY V BLOGU
Monitorovanie napätia olovenej batérie
[ 9.5.2025] (príspevkov 0)
Recenzia YATO YT-8272
[ 16.4.2025] (príspevkov 0)
Loud ESP32 pre Webrádio
[ 14.4.2025] (príspevkov 0)
NFC karta s WiFi konfiguráciou
[ 8.4.2025] (príspevkov 0)
Návrh jednoduchých PCB v EasyEDA
[ 5.4.2025] (príspevkov 0)
Test dosahu LoRa 433 MHz RA-02
[ 4.4.2025] (príspevkov 0)
Lolin32 vs. Lolin32 Lite - čo je dobré v...
[ 21.3.2025] (príspevkov 0)
ZK-4KX buck/boost regulátor s krabičkou
[ 16.3.2025] (príspevkov 0)