Jste zde

Watchdog pro osobní počítač

Úkolem watchdogu je nepřetržité hlídání nadřazeného počítače a v případě jeho vytuhnutí tento

počítač resetovat. Článek popisuje jednoduchý, ale účinný WatchDog s ATtiny12.

Uvedený watchdog hlídá počítač tím, že monitoruje jeho asynchronní port, na který posíláme v pravidelných intervalech jednoduché řetězce. Pokud watchdog do nastaveného timeoutu nepřijme další řetězec, vyresetuje počítač. Protože je velké množství kvalitních a spolehlivých základních desek bez resetovacích konektorů, bylo nutné nějak vyřešit spolehlivé resetování všech typů desek univerzálním zařízením. Nakonec se podařilo vyvinout resetátor, který umožňuje resetovat ATX desky vypínáním a zapínáním napájecího zdroje a současně jej lze bez dalších úprav použít na deskách s vyvedeným resetovacím konektorem. Zařízení tedy připojíme k základní desce paralelně k power nebo resetovacímu tlačítku. Na datové straně do volné asynchronní zásuvky.

Konstrukce elektroniky

Na obr.1 je schema resetátoru. Napájení je zajištěno z asynchronního konektoru na špičkách 4 a 7 (pro Cannon DB9) vůči zemi (pinu 5). Jelikož při zapnutém počítači může být na těchto výstupech obojí polarita napětí, tedy +10 až +12V nebo -10 až -12V (podle nastavení I/O registru modemu), jsou napřed tato napětí usměrněna třívstupým můstkem, složeného z diod D1 až D6. Kolísání proměnlivého proudového odběru je zmírněno vyhlazovacím elektrolytem C3 (maximální napětí na C3 může dosahovat až k cca 22V, 2*12V-2*0.65V, pokud jsou vstupy x_4 a x_7 v opačných polaritách, minimální napětí při x_4 a x_7 v jedné polaritě při maximálním proudovém odběru asi 8.7V - změřeno). Stabilizátorem IO1 je zajištěno korektní napájení jednočipu IO2 a dobíjení akumulátorů BT1 a BT2. Podle typu akumulátorů volíme i IO1. Zapojíme-li 79L05, pak také osadíme diodu D10 (například 1N4148) a na výstupu 3 IO1 budeme mít přibližně -5.7V, v případě 79L06 diodu D10 neosadíme a místo ní zapojíme propojku, pak bude na výstupu 3 IO1 napětí -6V. Napájení IO2 bude dále sníženo o úbytek na diodě D11 (na Schottkyho BAT48 přibližně 0.22V, na křemíkové 1N4148 cca 0.65V a pod.) Podle potřeby volíme typ diody D11, kterou je však nutné osadit, neboť nám zabraňuje vybíjení akumulátorů do výstupu 3 IO1 při vypnutém počítači (vybíjecí proud je přibližně roven Iq, tedy klidový proud stabilizátoru, u 79L05 asi 3mA).
 

Obr .1 Schéma zapojení Watchdogu
 
 

Elektronika má jednoduché hlídací zařízení akumulátorů, které je chrání před úplným vybitím.Tento blok pracuje následovně: v klidu je T3 uzavřen a na IO2, D8, R2 až R10, T2 je potenciál VCC. Stiskneme-li Tl1, bázovým proudem přes R8 sepneme T2, který nabije C6 a sepne T3, tím uzavřeme obvod a IO2 bude mít napájení. Programově je nutné zajistit pravidelné spínání T2 i po uvolnění Tl1 a tím přidržování T3 v sepnutém stavu. Trvale nelze výstup GP1 (IO2) držet v logické nule, neboť je nutné dále snímat tlačítko Tl1. Jednočip takto udržuje T3 v sepnutém stavu i po vypnutí počítače.Aby se však baterie nevybily, je po vypnutí počítače watchdog v aktivním stavu maximálně 8 hodin (nastavení v programu MCU) a poté procesor již nespíná T2 ( frekvence je cca 100Hz a je daná rychlostí snímání tlačítka procesorem, k rozpojení T3 dojde cca do 5 sekund po ukončení osvěžování ). Volbou diody D12, pracovního rezistoru R8 (nastavení saturačního napětí T2) a výběrem typu T3 lze také nastavit přibližně komparační úroveň rozepnutí -optimální rozepnutí při daném poklesu napětí akumulátorů (MOSFET tranzistory mají ve svých parametrech Rds = f (Ugate) velkou toleranci, doporučuji změřit a nastavit ). R4 je omezovací rezistor dobíjecího proudu a vzhledem k měkkému napájecímu zdroji (asynchronní port) postačí hodnota 10 až 15R (nejvyšší proudový odběr zařízení při sepnutém jazýčkovém relé Re1 je asi 14mA, pro relé s menší rezistivitou cívky je nutné R4 snížit, tak aby úbytek na R4 nezpůsobil přílišný pokles napájení IO2 a tím nedošlo k resetu jednočipu ještě při plně nabitých akumulátorech).

Srdcem resetátoru je jednočip ATtiny12 (IO2) časovaný krystalem X1, C1 a C2 zlepšují stabilitu oscilací. C4 a C5 jsou blokovací keramické kondenzátory pro vf produkované jednočipem do napájení. Data z asynchronního rozhraní (pin 3 na DB9) jsou z důvodu rozdílných zemí galvanicky oddělena optočlenem D8 tak, že na RXD je logická 0, pokud je na vysílací lince TxD UARTu (špička 3 na Cannon DB9) napětí v rozmezí -2V až -12V (klidový stav TxD). Tímto způsobem je možné hlídat, zda je počítač v provozu. Přenosové parametry: 4800 baudů, 8bitů bez parity, 2stop bity.

Resetování počítače probíhá takto: výstup GP2 IO1 je na max. 5 sekund přepnut do logické 0 a tím je T1 otevřený a relé Re1 sepnuto. Jakmile je na vstupu RXD po dobu minimálně 1 sekundy logická 1 ( linka TxD nemá napětí ), je po další sekundě výstup GP2 přepnut do logické 1 a tím je resetování ukončeno. Jednočip vyčká přibližně 5 sekund a pokud je stále na RXD log. 1 (vypnutý počítač), je resetovací cyklus zopakován a tím je spuštěn ATX zdroj (opět max. 5 sekund - delší čas způsobí opětovné vypnutí počítače). Je-li před druhým cyklem na RXD log. 0, předpokládá se, že je watchdog zapojen do resetovacího konektoru a druhý resetovací cyklus nenastane. D13 chrání T1 před zápornými napěťovými špičkami vznikajícími na cívce Re1 při jejím rozpínání.

Mechanické uspořádání

Deska plošných spojů je jednostranná, rozměrově navržena pro umístění do krabičky KPDO1. Na obr.2 je osazovací plánek ze strany spojů (většina součástek jsou smd).
 

Obr.2 - Osazení plošného spoje

Doporučený seznam součástek

R1 ...................................... 1k8 (SMD0805)
R2, R10 ............................. 10k (SMD1206)
R3 ...................................... 1k2 (SMD0805)
R4*..................................... 10R (SMD1206)
R5, R8, R9 ......................... M15 (SMD1206)
R6 ...................................... 10M (SMD1206)
R7 ...................................... 33k (SMD1206)
C1, C2 ............................... 27pF (SMD0805)
C3 ...................................... G1/25V
C4, C5 ............................... M1 až M22 (SMD1206)
C6 ...................................... 2 x M47 (SMD0805)
C7 ...................................... 10M až 47M/6V
D1 až.D7, D12, D13 .......... 1N4148 (SMD)
D8 ...................................... 4N35
D9 ...................................... L-HLMP4740 (5mm zelená led, 2mA)
D10* ...................... viz text (doporučuji propojku)
D11* ...................... viz text (dop. BAT48-SMD)
T1, T2 ............................... BC557B (optimální pro uvedené pracovní rezistory)
T3 ..................................... VHD90
IO1 ................................... 79L06 (TO92)
IO2 ................................... ATtiny12 - I/SO
Re1 ................................... RR1A05-500 (1xspínací, 5V, Rcivky=500R)
BT1,BT2 ........................... B-Z2A65 (NiCd, 65mAh)
Tl1 .................................... P-DT6RT (spínací tlačítko - červené)
JP1 ................................... CAN9Z (zásuvka s pájecím žlábkem) , KRYT CANN9 , 4licnový kulatý kabel, 0.2mm, délka 1m
JP2 ................................... KONPC-SPK-2 (konektor napájený na cca 1m dvojžilovém plochém kabílku)
krabička KPDO1
gumová průchodka pro kabel
plastová průchodka pro 5mm led

*POZN: označení konstrukčních prvků vycházení z katalogu GMe


Obr. 3 - Obrazec plošných spojů. Motiv je zrcadlově, aby byl po vytisknutí na fólii toner v kontaktu s mědí.

Možnosti zařízení

Uvedený jednočip nemá hardwarrovou podporu UART, je tedy čtení asynchronních dat výlučně programovou záležitostí. Jelikož je přesnost časové základny rozhodující pro spolehlivost příjmu dat, je MCU časován krystalem. Správně přijatý řetězec je potvrzen krátkým bliknutím led D9. Nepřijme-li MCU do nastaveného času další řetězec, provede reset nadřazeného počítače. Tyto řetězce mají obecný formát wdtXXXXs, kde XXXX určuje po kolika sekundách po obdržení má watchdog vyresetovat počítač. Hodnota X může být maximálně 9999 sekund. Je zřejmé, že další řetězec musí být přijat a vyhodnocen ještě dříve, než uplyne nastavený interval X. Zpravidla odesíláme stále stejný řetězec, jehož hodnotu X si podle vlastní potřeby zvolíme (nejčastěji wdt120s). Vzhledem k nepřesnému časování v PC doporučuji zvolit odesílací čas minimálně 5x kratší, než je čas X uvedený v řetězci wdt. Další z řetězců je wdtporYYYYs, který nemá vliv na nastavení probíhajícího timeoutu, ale slouží jako prvotní interval po zapnutí počítače. Po přijetí jednočip uloží hodnotu Y do své vnitřní datové EEPROM a použije ji po každém vyresetování nebo zapnutí počítače. Po naprogramování jednočipu je datová EEPROM nezinicializovaná a programem je nastavena default hodnota na 15 minut (wdtpor900s). Správné přijetí wdtporYYYYs řetězce je potvrzeno dvojitým bliknutím led.

Nezávisle na nastaveném timeoutu z povelů wdtXXXXs nám resetátor umožňuje práci ve dvou režimech. Oba režimy si pro názornost označíme, například serverový a běžný režim. To, je-li watchdog nastaven do serverového režimu, indikuje led krátkými záblesky v intervalu 1 sec, pokud je počítač v chodu. Do 5 sekund po vypnutí počítače wdt přejde do nízkopříkonového stavu, při kterém je interval blikání přibližně 4 sekundy. Časování blikání je v tomto případě odvozeno od vnitřního watchdogu v jednočipu, t.j. z vnitřního oscilátoru, jehož frekvence se mírně mění s teplotou i napájením jednočipu. S klesajícím napájecím napětím se tedy interval blikání prodlužuje a tím dostáváme možnost orientačně odhadnout stav akumulátorů (často až k 10 sec). Po náhlém vypnutí počítače (výpadek sítě, vypnutí ATX zdroje) se watchdog po cca 12 až 15 sec pokusí počítač znovu zapnout, další pokus následuje po dalších 15 sec, dále po 30 sec, 1 min, 2 min a 4 minutách, nejpozději každé 4 minuty se wdt pokusí počítač zapnout. Tímto způsobem jsou maximálně šetřeny vnitřní akumulátory i jazýčkové relé. Výpadek může trvat maximálně 8 hodin, po této době je se wdt vypne.

V běžném režimu se po náhlém vypnutí počítače watchdog ihned vypne, aniž by se jednočip přepnul do nízkopříkonového stavu. Přepínání mezi režimy provádíme krátkým stiskem tlačítka Tl1 (do 0.5sec) a to jenom při zapnutém počítači (v běžném režimu led nebliká v sekundovém intervalu, led pouze indikuje přijetí řetězců z asynchronní linky). Každá změna režimu je okamžitě uložena do datové EEPROM v jednočipu. Dlouhým stiskem Tl1 (přibližně 2 sec) provádíme ruční zapnutí/vypnutí počítače. Pět sekund po každém ručním vypnutí je vždy počítač zapnut bez ohledu na nastavený režim. Po každém zapnutí je hodnotou timeoutu wdtpor, přečtená z vnitřní EEPROM, kam byla uložena po obdržení řetězce wdtporYYYYs.

Programové vybavení

Úkolem programového vybavení je pravidelné odesílání řetězců, které watchdog informují o správné činnosti počítače.V prostředí Linuxu spustíme (celý skript je v příloze):

nohup bash -c "while true ; do echo wdt240s > dev/ttyS0; sleep 60s; done " &

Vysvětlivky:

  • nohup - způsobí, že program zůstane běžet i po uzavření konzole
  • bash - interpret skriptu
  • wdt240s - řetězec, který je je každých 60 sekund odesílán do watchdogu
  • /dev/ttyS0 - port, na který je řetězec vyslán

Závěrem

Popsané zařízení je cenově nenáročné a použitím levného jednočipu elegantnější a flexibilnější než podobné konstrukce sestavené z diskrétních a klasických součástek. Několik kusů spolehlivě hlídá servery několika firem zajišťující internetové služby u nás i na Slovensku. Zájemcům nabízím jednak kompletní watchdogy, tak i jednotlivé komponenty na adrese Ing. Antonín Dlabola, Na Vápence 764, Železný Brod 468 22. Další informace na www.selfcontrol.cz
 
Antonín Dlabola
antonindlabola@ quick.cz

DOWNLOAD & Odkazy

     
Hodnocení článku: