Měření stavu baterie v bateriově napájeném Arduinu

Odpovědět
AstroMiK
Příspěvky: 592
Registrován: 08 pro 2017, 19:05
Reputation: 0

Měření stavu baterie v bateriově napájeném Arduinu

Příspěvek od AstroMiK » 25 črc 2021, 20:39

Zkouším trochu vylepšit jeden svůj starý program pro bateriově napájený GSM Alarm ( http://astromik.org/raspi/gsmalarm/index.htm ).

Zajímal by mě váš názor na následující úvahu:

Napadlo mě, že by možná bylo dobré do alarmu přidat i hlídání stavu baterie (3x tužkovka AA).
Jako že by se Arduino třeba 1x týdně vzbudilo, změřilo napětí a kdyby kleslo pod nějakou hodnotu, tak by se odeslala varovná SMS.

Problém je v tom, že měření baterie na prázdno nemá v podstatě smysl. Baterii je nutné zatížit, aby se projevil její vnitřní odpor.
Jenže při zapnutí GSM modulu je odběr strašně rozkolísaný a zároveň trvá docela dlouhou dobu než se naváže spojení s GSM sítí a tím se baterie zbytečně vybíjí.
Takže takovéhle měření je podle mě taky nepoužitelné.

Tak jsem si myslel, že by se při testování připnul (přes FET) na pár desetin sekundy k baterii obyčejný zatěžovací odpor.
Hodnota odporu by byla taková, aby proud odpovídal maximálnímu odebíranému proudu GSM modulu.
Jestli si modul bere maximálně 0.5A na 4V, tak by tomu odpovídal odpor nějakých 8R (od toho by se ještě muselo odečíst saturační R_DS na FETu).
Výkonově to sice vychází na 2W, ale vzhledem k tomu, že to bude jen na strašně krátkou dobu, tak si myslím, že nemá cenu se s výkonem vůbec zabývat.

Během těch pár desetin sekundy by se měřilo napětí na zatížené baterii analogovým vstupem a když by se blížilo ke spodní hranici při které
by měl ještě GSM modul fungovat, tak by se zatěžovací odpor odpojil, zapnul by se GSM modul a odeslala varovná SMS.


Velký problém je ale v tom, že teď uspávám Arduino do nejhlubšího možného spánku s minimálním odběrem (asi 10uA), ze kterého se probouzí až interruptem na pinu D2.
Pokud bych chtěl 1x týdně testovat baterii, musel bych mít v Arduinu zapnutý watchdog (už to je samo o sobě výrazné zvětšení odběru).
Každých 8 sekund (maximální čas watchdogu) by se Arduino muselo probudit, přičíst někam jedničku a zase usnout.
Tohle přičítání by trvalo do čísla 75600 (1 týden rozdělený na 8-sekundové intervaly).
To je další zbytečný odběr. K tomu ještě ten maximální odběr při měření zatížené baterie a případně při odesílání SMS.

Prostě, když o tom tak uvažuju, tak je celý tenhle princip asi taky nepoužitelný - baterie by se tímhle způsobem za pár týdnů vybily tak, že už by GSM modul neutáhly.


Napadá mě ještě, že probouzení 1x týdně by mohlo být řešené pomocí nějakého RTC obvodu.
(něco na principu mého krmítka pro psa: http://astromik.org/raspi/krmitko/v2/index.htm )
Pak by Arduino mohlo klidně zůstat v nejhlubším spánku (bez watchdogu) a probouzelo by se pomocí /INT výstupu RTC.
Hned po probuzení by otestovalo, jestli bylo probuzení způsobeno plánovaně pomocí RTC, nebo jestli to bylo způsobeno sepnutím kontaktu (otevření hlídaných dveří).
Ale to už se mi zdá trochu přehnaný.


A teď teda nevím, jestli se na to nevykašlat.
Do teď jsem prostě jen jednou za čas "ručně" otestoval funkci a po půl roce jsem preventivně vyměnil baterky.



Tak co na to říkáte?
Máte nějaký jiný nápad jak testovat baterii?
Nebo dokonce už něco podobného máte prakticky vyzkoušené?
Nebo to mám fakt zabalit?

Uživatelský avatar
Caster
Příspěvky: 380
Registrován: 11 zář 2019, 09:02
Reputation: 0

Re: Měření stavu baterie v bateriově napájeném Arduinu

Příspěvek od Caster » 25 črc 2021, 23:07

Pro dálkové měření napětí autobaterie používám ATtiny202, které pomocí interního RTC probudím každou hodinu, pomocí ADC změřím napětí a přes SigFox vysílač pošlu na server. Napětí měřím odporovým děličem R1 = 1M, R2 = 270k (15V/3,3V). Ukázka naměřených hodnot zde

Pro nový projekt, mikro GPS/LoRa lokátor (ATSAMR34 + GPS u-Blox ZOE-M8Q) do obojku pro kočky se chystám měřit napětí kondezátorovým děličem, aby mi odporový dělič neodebíral žádný proud.

jankop
Příspěvky: 1029
Registrován: 06 zář 2017, 20:04
Reputation: 0
Bydliště: Brno
Kontaktovat uživatele:

Re: Měření stavu baterie v bateriově napájeném Arduinu

Příspěvek od jankop » 26 črc 2021, 07:57

Vysvětli mi princip kapacitního děliče fungujícího na stejnosměrném proudu.

AstroMiK
Příspěvky: 592
Registrován: 08 pro 2017, 19:05
Reputation: 0

Re: Měření stavu baterie v bateriově napájeném Arduinu

Příspěvek od AstroMiK » 26 črc 2021, 08:12

Díky za tip.

Takže probouzení pomocí RTC není až tak úplně špatný nápad.

LoRa a Sigfox mají narozdíl od GSM i při vysílání malý odběr, takže tam se asi dá měřit napětí baterie na prázdno.

A k tomu kapacitnímu děliči:
Nikdy jsem ho nezkoušel, ale nebude už vstupní odpor (svod) analogového pinu nějak ovlivňovat měření?
V Atmega už jsem se setkal s tím, že když byl na vstupu odporový dělič složený z vysokých hodnot (stovky kiloohmů), tak to měřilo špatně.
U kondenzátorů je stejnosměrná impedance daleko větší, takže předpokládám, že by ten problém byl ještě výraznější.

Uživatelský avatar
Caster
Příspěvky: 380
Registrován: 11 zář 2019, 09:02
Reputation: 0

Re: Měření stavu baterie v bateriově napájeném Arduinu

Příspěvek od Caster » 26 črc 2021, 08:48

Jak na kapacitní dělič zde

Samozřejmě bude chtít měření vyzkoušet a vybrat správné hodnoty kondenzátorů podle vstupní impedance a zvolené doby převodu ADC. Provedl bych také vždy pouze jediné měření. Pozor !!! readanalog() function executes 10 reads viz poslední odkaz dole. Další možností by bylo změřit několik hodnot napětí voltmetrem (odporovým děličem) a přes kapacitní dělič, dát si je do tabulky a aproximovat převodní vzorec výpočtu správných hodnot polynomem.

Podíval bych se také na Analog-to-Digital Converter (ADC), with computation module (ADC2), One of the features of ADCC module is the CVD. CVD uses capacitors as components for the voltage divider circuit viz Microchip TB3146 Analog-to-Digital Converter with Computation Technical Brief a popis včetně grafů měření napětí Microchip TB3198 Capacitive Voltage Divider (CVD) Operation on 8-Bit PIC® Microcontrollers.

Další vyzkoušenou možností je použít klasický odporový dělič a aktivovat ho jen při měření MOSFETy viz popis tady

Odpovědět

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 14 hostů