www.belza.cz - homepage

Nabíječka k vrtačce s termistorem
The tools charger with thermistor

This charger circuit improves old simple tools charger. Circuit terminates charging when the temperature or time is exceeded.
For NiMH and NiCd accumulators!

Když jsem již potřetí vyměňoval akumulátory ve své staré vrtačce, napadlo mne vylepšit primitivní nabíječku, dodanou s vrtačkou. Akumulátor byl v nabíječce dobíjen trvale, bez ohledu na jeho stav a dobu nabíjení. Občas se stalo, že jsem na akumulátor v nabíječce zapomněl. Ten se pak přebíjel, což mu zcela jistě nesvědčilo. Doplnil jsem proto nabíječku modulem, který nabíjení ukončí buď po uplynutí doby potřebné k nabití akumulátoru, nebo v případě, že se akumulátor zahřeje, což je neklamnou známkou jeho nabití.


Obr. 1. Zapojení původní nabíječky
Fig. 1. Original charger circuit


Obr. 2. Zapojení nabíjecího modulu v nabíječce
Fig. 2. Connecting the charging module


Charger

The original charger schematic is on Fig. 1. Fig. 2 is a diagram of the original charger with charging module.

While charging is in process, display shows: " t" --> temperature in Celsius like "28" --> " c" --> charge progress in % --> " t" ... Letters "t" and "c" are shown 0.45 sec, temperature and progress are shown 1.35 second. When charging is complete, display shows " F" instead " t". If charging is terminated by temperature, display shows actual temperature and last progress.  If charging is terminated by time, display shows actual temperature and "--".

If jumper J1 is shorted, this module works as a thermometer and both transistors are always off.

Software can be freely modified and redistributed. On adress 3F0h is stored charging time in 6 minutes (for example 60 = 6 hours). On adress 3F1h is stored max. temperature by look-up table in program.
 


Nabíječka

Původní nabíječka byla opravdu jednoduchá (obr. 1). Akumulátor je dobíjen proudem, který prochází ze síťového adaptéru 15 V přes rezistor 15 ohmů. Zelená LED indikuje přítomnost napájecího napětí, červená LED se rozsvítí po připojení akumulátoru. Dále popsaný nabíjecí obvod jsem do nabíječky zapojil podle obr. 2.


Obr. 3. Modul s mikrokontrolérem a displejem použitý v nabíječce
Fig. 3. Multipurpose module used in charger

Popis zapojení

Zapojení nabíjecího modulu je na obr. 3. Jádrem zařízení je mikrokontrolér PIC12F675 (IC2). Po připojení napájecího napětí se na vývodu GP0 (7) objeví úroveň H, tranzistor T1A sepne a akumulátor se začne nabíjet. Každých 450 ms je vyvoláno přerušení programu, ve kterém se inkrementuje čítač času. Následně se změří teplota a aktualizuje stav displeje. Na displeji se střídavě zobrazuje postup nabíjení v procentech a teplota změřená termistorem.

K měření teploty je použit běžný termistor NTC. Termistor tvoří napěťový dělič s rezistorem R1. Napětí na dělič je přivedeno jen po dobu měření nastavením vývodu GP1 (6) do úrovně H. Napětí na děliči je měřeno AD převodníkem uvnitř mikrokontroléru. Napájecí napětí je zároveň použito jako referenční pro AD převodník, takže změřený údaj je nezávislý na napájecím napětí.
Displej je dvoumístný, osazený sedmisegmentovkami s malým příkonem. Data o tom, který segment má svítit, jsou nahrávána sériově do posuvných registrů 4094 (IO4 a IO5). Toto řešení mi přijde výhodnější než použití mikrokontroléru s větším počtem vývodů a přímým nebo multiplexním řízením displeje. Deska s plošnými spoji je jednodušší, jednodušší je i programová obsluha a také cena je nižší než při použití většího mikrokontroléru PIC. Znakovky jsou k posuvným registrům připojeny bez omezovacích rezistorů, které do jisté míry nahrazuje výstupní odpor spínačů v posuvném registru. Proud tekoucí jednotlivými segmenty displeje určuje kromě výstupního odporu spínačů i napájecí napětí, které je pro displej zmenšeno stabilizátorem LM317L (IC3). Pro znakovky s proudem 1 mA na segment jsou vhodnější IO z obyčejné řady CMOS. Obvody z řady 74HC či HCT mají výstupní odpor asi o řád menší a nastavení správného napětí pro displej je velmi ostré.
Displej slouží jen pro informaci obsluhy o průběhu nabíjení a pro funkci nabíječky není nutný. Lze ho proto ze zapojení vypustit. Ze zapojení na obr.3 se pak vypustí část napravo od červené přerušované čáry.

Napájecí napětí pro mikrokontrolér a displej je stabilizováno obvodem IC1. Přesná velikost napětí není důležitá. Napájecí napětí musí být tak velké, aby byl tranzistor T1 spolehlivě otevřen, když se na vývodu GP0 objeví úroveň H, nemělo by však být větší než 5,5 V. Propojka J1 slouží ke změně funkce. Po zkratování propojky se s dále uvedeným programem zařízení změní na teploměr.

Za zmínku pak už stojí jen LED1, která svítí, když je T1A sepnut, a konektor ICSP, který umožňuje naprogramovat mikrokontrolér přímo v zařízení. T1B je zbylý tranzistor z dvojice MOSFET v jednom pouzdře. V nabíječce není využit.

Popis programu

Po startu programu je inicializován port GP, AD převodník a časovač T1. Program čeká na přerušení, které je vyvoláno každých 450 ms. Délku nabíjení lze nastavit konstantou na adrese 3F0h po desetině hodiny, tj. po 6 minutách. Požadujeme-li např. nabíjení po dobu 6 hodin, bude na adrese 3F0h instrukce RETLW .60, ve strojovém kódu a hexadecimálním vyjádření 343Ch, kde 34 je strojový kód instrukce a dekadické číslo 60 je v hexadecimálním kódu 3C. Od čísla 60 se při každém přerušení odečte 1. Dočítá-li se do nuly, nastaví se v registru opět číslo 60 z adresy 3F0h. Dočítá-li program do nuly 8x, zvýší se stav ukazatele postupu nabíjení v procentech. Celková délka je tedy 0,45 x 60 x 8 x 100 = 21 600 s = 6 h.

Současně s měřením času se měří teplota článku termistorem. Závislost odporu termistoru na teplotě je přibližně exponenciální a k jejímu popisu se používá Steinhart-Hartova rovnice: 1/T = a + b.ln(R) + c.ln3(R), kde T je teplota v kelvinech, R odpor termistoru při této teplotě a a, b, c materiálové konstanty. V katalozích termistorů je zpravidla udáván parametr B, který vypočteme B = 1/b. Pro nás je důležité vědět, že tento parametr vyjadřuje, jak rychle se mění odpor s teplotou, viz obr. 4.


Obr. 4. Závislost odporu termistoru na materiálové konstantě B a teplotě
Fig. 3. The Slope of the curve thermistor resistance is depend on B constant


Obr. 5. Závislost výstupního napětí děliče s termistorem na teplotě
Fig. 5. Resistor-thernistor voltage divider characteristic

Závislost výstupního napětí děliče s termistorem je na obr. 5. Vhodnou volbou odporu rezistoru R1 lze zajistit, že v určitém rozsahu teplot je změna výstupního napětí děliče téměř lineární. AD převodník v mikrokontroléru je 10bitový, program využívá jen horních 8 bitů. Ty slouží jako adresa do tabulky (look-up table), ve které je ke každé hodnotě přiřazena konkrétní teplota. Jak je zřejmé z obr. 4, převodní tabulka bude platit jen pro termistor s konkrétní materiálovou konstantou B. Použije-li se termistor s jiným parameterm B, bude se chyba měření zvětšovat tím více, čím více se bude teplota lišit od 25 °C, při které je odpor termistoru definován. Například použijeme-li místo termistoru s B = 4300 K termistor s B = 3300 K, bude se při teplotě 65 °C údaj lišit asi o 10 °C. Tabulka v programu platí pro termistor K164NK010 (B = 4300 K) od firmy Epcos, který lze zakoupit v prodejnách GM Electronic. Ve zdrojovém kódu programu jsou připraveny tabulky i pro termistory s konstantami 3380 a 3900 K. Přesnost měření je dána především přesností odporu termistoru. Pokud by zapojení mělo sloužit jako teploměr, doporučuji nahradit rezistor R1 sériovou kombinací rezistor 3k3 + trimr 1k a trimrem nastavit správný údaj teploty na displeji. Teploměr stačí seřídit při jediné teplotě blízko středu uvažovaného rozsahu měření.
Zvýší-li se teplota nad mez, která je uložena jako konstanta na adrese 3F1h, nabíjení se ukončí před uplynutím nastavené doby. Konstanta však nyní odpovídá výsledku AD převodu. Chceme-li, aby se nabíjení ukončilo např. při 45 °C, bude na adrese 3F1h uložen kód 3484, opět jako instrukce RETLW. Na adrese 84h je v tabulce hodnota 45 odpovídající teplotě termistoru 45 °C.
Ukončí-li se nabíjení, zastaví se měření času. Na displeji je pak střídavě poslední stav postupu nabíjení a aktuální teplota. Ukazuje-li se „--“, bylo nabíjení ukončeno po uplynutí nastaveného času. Zobrazuje-li se např. číslo 68, bylo nabíjení ukončeno překročením teploty článků. Do akumulátoru bylo dodáno přibližně 68 % náboje, což znamená, že před nabíjením nebyl akumulátor zcela vybit.

Nabíjení se spouští startem programu po připojení napájecího napětí. Rozsvítí se LED1 a na displeji se cyklicky střídá znak „c“ následovaný údajem o postupu nabíjení, znakem „t“ a aktuální změřenou teplotou. Porty GP1 a GP2 jsou sdíleny pro napájení termistoru, resp. řízení výstupního tranzistoru a zápis dat do posuvného registru displeje. Tranzistor T1A je tak po dobu zápisu do registru několikrát otevřen a uzavřen. Na funkci to však nemá vliv, protože zápis je velmi rychlý.

Po zapojení propojky J1 se v programu přeskočí části řídící nabíjení a měří se jen teplota, která je trvale zobrazena na displeji. Modul pak může sloužit jako teploměr.
Mikrokontrolér je řízen vnitřním RC oscilátorem. Zkalibrovaný oscilátor má kmitočet 4 MHz ±1 %, což je pro potřeby nabíječky přesnost zcela postačující. Před prvním programováním mikrokontroléru je třeba načíst a uložit kalibrační údaje daného kusu mikrokontroléru. Jedná se především o kalibrační konstantu oscilátoru, která je z výroby uložena na adrese 3FFh. Tato konstanta se po startu programu z této adresy načte a uloží do registru OSCCAL, čímž se oscilátor seřídí. Většina programátorů součástku před programováním nejdříve celou smaže, čímž se tato informace ztratí. Nastavením registru OSCCAL lze oscilátor doladit v rozsahu asi ±12 %, takže nalezení správné kalibrační konstanty může být zdlouhavé. Při výrobě se oscilátor kalibruje při napájecím napětí 3,5 V. Při napájecím napětí 5 V je kmitočet nepatrně nižší (viz obr. 13 až 16 v katalogovém listu), můžete proto zkusit kalibrační konstantu nepatrně zvětšit.
Firmware pro mikrokontrolér byl nahrán programátorem PRESTO (program zde). Nezapomeňte si před naprogramováním nastavit dobu nabíjení a maximální oteplení na adresách 3F0h a 3F1h. V programu je přednastaveno 10 hodin a 45 °C. V archivu je celý projekt, který můžete otevřít v prostředí MPLAB IDE. Zkušenější programátoři tak mohou program dále upravovat podle vlastních potřeb. Program můžete libovolně upravovat a šířit.

Firmware lze stáhnout zde


Obr. 6. Deska s plošnými spoji modulu (61 x 23 mm). Použijete-li pravé tlačítko myši a zvolíte-li "Uložit obrázek jako", získáte předlohu spojů v rozlišení 600 dpi
Fig. 6. PCB layout (61 x 23 mm). Click right mouse button and choose "Save image as" to get 600 dpi resolution image

Motiv desky v souboru PDF / PCB layout in PDF file here


Obr. 7. Rozmístění součástek
Fig. 7. Locations of components on board
 

Konstrukce

Modul nabíječky je na jedné desce s plošnými spoji, osazené převážně součástkami SMD (obr. 6 a 7). Deska modulu se mi již do nabíječky nevešla, je proto umístěna pod krytem na horní straně krabičky. V původní nabíječce jsem vyměnil zelenou LED za typ s malým příkonem a odpor rezistoru v sérii s LED zvětšil na 10k. Celý nabíjecí modul spotřebuje přibližně tolik proudu, kolik jsem touto úpravou ušetřil. Nejste-li příznivci SMD, můžete nabíječku postavit z klasických součástek na univerzální desce nebo si můžete navrhnout desku vlastní.

Termistor jsem umístil přímo mezi články v akumulátoru a jeho vývody připojil na zásuvku jack 2,5 mm, kterou jsem vestavěl do pouzdra akumulátoru. Při nabíjení se s nabíječkou propojí kablíkem. Nabíjecí proud nesmí být příliš malý a akumulátory nemohou být příliš ochlazovány okolním prostředím, protože pak by se jejich teplota na konci nabíjení dostatečně nezvýšila.

Závěr

S popsaným modulem se nemusíme obávat zničení akumulátoru, pokud ho zapomenete v nabíječce. Nabíjení může být paradoxně šetrnější než při použití nabíječek s vyhodnocením DV ke konci nabíjení. Měření teploty umožňuje ukončit nabíjení dříve, než se projeví změna napětí ke konci nabíjení. Modul můžete použít do podobných primitivních nabíječek nebo jako řídicí část nabíječky vlastnoručně vyrobené. Popsaný modul se ukázal jako poměrně univerzální. K dispozici jsou 2 až 3 vstupy, 2 výstupy a displej. S jiným programem může posloužit jako termostat, regulátor ventilátorů nebo kuchyňská minutka.

Seznam součástek
Parts list

R1, R3, R4 3,9 kohm, SMD1206
R2 100 kohm, SMD1206
R5 470 ohm, SMD1206
P1 1 kohm, trimr PT6V
C1, C2 100 nF, SMD1206
LED1 LED 3 mm s malým
příkonem
T1 IRF7341, SO08
IC1 78L05 SMD, SO08
IC2 PIC12F675S, SO08
IC3 LM317L
IC4, IC5 4094D, SMD SO16
U1, U2 A55UBRD, 7seg. displej
NTC 10 kohm, NTC termistor
K164NK010
(B57164K0103)
J1 2 piny, lámací lišta
JP2 5 pinů, lámací lišta ICSP
TL1 propojka místo tlačítka P-B1720 (není použito)
wire (see Fig. 10) - switch not used
  deska s plošnými spoji bcs66

Tranzistor IRF7341 (2x N-MOSFET 55 V/4,7 A) lze zakoupit u firmy SEMIC Trade, displej A55UBRD u GM Electronic. Ostatní součástky jsou běžně dostupné.

Technické údaje/Specification

Doba nabíjení: Charging Time: 0,1 až 25,5 h, (set at 3F0h)
Teplota ukončení nabíjení: Overtemperature stop: 45 °C (set at 3F1h)
Indikace: Indication: stupeň nabití v % / progress in %
teplota článku / cell temperature
LED
Přesnost nastavení času: Time accuracy: 1 % (if OSCCAL at 3FFh is set properly)
Přesnost měření teploty: Temperature accuracy: ±2 °C
Napájecí napětí modulu: Module supply voltage: 7 - 24 V
Odběr proudu modulu: Module supply current: max. 20 mA


Fotografie / Photos


Obr. 8. Originální nabíječka
Fig. 8. Original charger


Obr. 9. Osazení spodní strany desky
Fig. 9. Bottom side PCB


Obr. 10. Horní strana desky
Fig. 10. Top side PCB


Obr. 11. Nabíječ v akci
Fig. 11. Charger in use

Vladimír Hejtmánek

Indikátor byl otištěn v časopise Praktická elektronika 5/2010 na str. 17

27. 7. 2010