Stmívač pro akvárium
Popisované zařízení jsem sestavil a naprogramoval pro ovládání zářivkových trubic osvětlujících akvárium v předem nastavený čas. Před sepnutím trubic se pozvolna rozsvítí žárovky, které zhasínají po zapnutí trubic. Před jejich vypnutím se rozsvítí žárovky, aby potom mohly přibližně půl hodiny napodobit pozvolné stmívání. Další funkcí je měření teploty, její zobrazení na displeji, porovnání s nastavenou teplotou a ovládání topení.
Technické parametry:
– napájení přístroje ze sítě 220V
– hodiny zálohované akumulátorem
– počet zařízení spínaných triaky je šest, z toho výkon dvou zařízení lze řídit plynule prostřednictvím PWM kanálů procesoru
– maximální spínaný příkon každého zařízení je 200W bez použití chladičů
– teplota naměřená obvodem DS18B20 je zobrazována na displeji a zároveň použita pro funkci termostatu, pokud je na jeden z triaků připojeno topení
Schéma zapojení:
Popis zapojení:
1. Napájení
Síťový zdroj je tvořen transformátorem 230V / 6V, 4VA. Na konektoru SV2 je připojeno podsvícení displeje spínané tranzistorem T1. IC1 je stabilizátor 7805. Cívka L1 má indukčnost kolem 100uH, slouží k odrušení pulsů ze sítě, které by mohly resetovat procesor. Trimrem P1 lze nastavit kontrast displeje.
2. Procesor
Je použit obvod ATmega8, konektor Dragon slouží k připojení programátoru, který komunikuje po sběrnici ISP. Je tedy možné řídící program vyvíjet přímo v sestaveném obvodu bez nutnosti vyjímat procesor z patice. Pro takovou práci je nutné mít k dispozici oddělovací transformátor. Procesor pro svůj chod využívá interní RC oscilátor, nastavený na kmitočet 8MHz
3. Optočlen OK1
Synchronizuje chod programu stmívače s kmitočtem sítě. Sestupnou hranou signálu z optočlenu je spouštěno přerušení INT1.
4. Výkonové prvky MOC3020 + TIC216
Slouží ke spínání síťového napětí pro ovládané obvody: Osvětlení, topení… Triak TR4 a TR6 je připojen na PWM kanál procesoru, takže je možné využít jej k plynulé regulaci výkonu připojené zátěže.
5. Hodiny DS1302
Obvod komunikující s procesorem po sběrnici I2C ke své činnosti potřebuje krystal 32,768kHz. Pro zálohování chodu hodin při výpadku síťového napájení může být připojen akumulátor 3,6V. Obvod jej dokáže sám nabíjet.
6. Displej s řadičem HD44780
Program je napsán pro alfanumerický displej 2×16 znaků. Procesor s displejem komunikuje po čtyřbitové sběrnici.
7. Klávesnice
Na piny PD0, PD1 a PD2 jsou připojena tři tlačítka, která tyto piny uzemňují. Program využívá pullup rezistory integrované v procesoru.
Popis programu:
Program je napsán v jazyce C, vývojovým prostředím je AVR studio.
1. Hodiny
Program čte periodicky registry hodin, minut a sekund z obvodu DS1302. Údaje jsou zobrazovány na prvním řádku displeje. Dále je v intervalu 0,4s prohledávána část paměti EEPROM procesoru. Pokud je v paměti nalezena hodnota, která je rovna aktuálnímu času, provede se úkon (sepnutí, nebo vypnutí triaku), který je danému času v EEPROM přiřazen.
2. Teploměr
Obvod DS18B20 je připojen na pin PD4, s procesorem komunikuje po 1-wire sběrnici. Komunikace se skládá z pulsů vysílaných procesorem, na ně odpovídá obvod DS18B20 svými pulsy, jejichž délku měří program procesoru. Délka pulsů je řádově v desítkách mikrosekund, proto je potřeba, aby v překladači byla při tvorbě kódu nastavena nejlepší optimalizace a tím bylo zajištěno, že funkce Wait_us má správnou délku.
Naměřená teplota je zobrazena na prvním řádku displeje vedle hodin, zároveň je hodnota porovnávána s údajem, který je uložen na adrese 0x080 v EEPROM. Pokud je naměřená teplota nižší, zapíná se triak TR2, pokud je nižší, triak se vypíná. Takto lze udržovat teplotu např. v chovné nádrži v rozmezí 0,0625°C.
3. PWM regulace
Před sepnutím triaků na které jsou připojeny zářivky se plynule rozsvítí žárovky připojené na triaky TR4, nebo TR6. Žárovky po zapálení zářivkových trubic zhasnou. Při vypínání zářivek je děj opačný, PWM regulace zajistí, aby žárovky pozvolna zhasly. Pokud je požadavek na změnu stavu zářivek vyvolán ručně z klávesnice, bude děj trvat asi půl minuty. Když je požadavek na změnu vyvolán programem hodin, bude stmívání trvat půl hodiny.
Pro plynulou regulaci výkonu jsou využity PWM kanály procesoru, jejich nastavení je následující:
Registry TCCR1x aktivují inverzní, rychlý PWM režim. Hodinový kmitočet procesoru je dělen 8. Vrchol, ke kterému počítá registr TCNT1 je nastaven registrem ICR1 na hodnotu přibližně 10000. Takže perioda nulování čítače je 10ms, což odpovídá kmitočtu 100Hz. Pokud je nyní v registru OCR1x nastavena např. hodnota 5000, bude na výstupu OC1x signál o kmitočtu 100Hz se střídou 1:1. Pokud bude chod PWM kanálu synchronizován s kmitočtem sítě tak, aby hodnota čítače TCNT1 procházela nulou v okamžiku, kdy bude procházet nulou síťové napětí, bude triak spínán v polovině každé půl-periody signálu a výkon připojené zátěže bude 50%.
Synchronizaci čítače se sítí zajišťuje optočlen OK1 spolu s programem obsluhy přerušení INT1. Tento program vykonává spoustu činností, které mají být periodické: čte hodnoty z obvodů DS1302 a DS18B20, obsluhuje klávesnici… Ale hlavně nastavuje registr TCNT1. Pokud by se dioda optočlenu rozsvítila zároveň s průchodem signálu nulou, bylo by vhodné, registr vynulovat. Ale protože se dioda rozsvítí přibližně o 1,4ms později, je lepší do registru vložit nenulovou hodnotu, která odpovídá tomuto času. Příští přetečení registru TCNT1 přes hodnotu v ICR1 bude v dalším průchodu síťového napětí nulou. Tentokrát nebude vyvoláno přerušení od optočlenu, protože hrana na INT1 je vzestupná.
Ovládání kanálu A je spojeno se spínáním zářivek na triaku TR1, využívám jej pro malé akvárium. Velké akvárium má dvě dvojice zářivkových trubic, které jsou připojeny na TR3 a TR5 a programem spřažené s kanálem B. Na ten mohou být připojeny žárovky velkého akvária.
4. Klávesnice
Čtení klávesnice je prováděno v programu přerušení INT1. Klávesa „+“ zvyšuje hodnotu proměnné KEYcount, klávesa „-“ tuto hodnotu snižuje. U klávesy „Enter“ je rozlišován dlouhý a krátký stisk, ten je hlavnímu programu předáván v proměnné KEYenter.
Dlouhým stiskem klávesy „Enter“ program přestane na displej vypisovat údaje o aktuálním čase a teplotě, spustí se první „menu“. V něm je možné vybrat, jestli se mají nastavovat hodnoty:
REL – je možno ručně zapínat a vypínat jednotlivé triaky. Označení REL zůstalo z předchozí verze zapojení, kde byly zářivky a topení zapínány pomocí relé.
CAS – je možno nastavit 20 hodnot časů uložených v EEPROM, ve kterých se má zapnout, nebo vypnout některý triak. Časy nemusí být seřazeny vzestupně, program vždy najde čas, který je nejbližší větší než aktuální čas z obvodu DS1302. Tento je vypsán na druhý řádek displeje, aby bylo možné přečíst, která operace bude následovat a v kolik hodin. Až je čas operace shodný s časem z DS1302, triak se zapne nebo vypne a program najde další nejbližší čas. Nesmí existovat dvě operace se stejným časem, byla by provedena ta, která je v paměti uložena na vyšší adrese.
HOD – nastavuje se aktuální čas v DS1302
TEP – je možno nastavit teplotu pro program termostat.
5. Ostatní
Program po resetu aktivuje watchdog a hodnoty do registrů obvodu DS1302 zapíše tak, aby baterie byla nabíjena největším možným proudem.
Upozornění:
Část přístroje je galvanicky spojena se sítí, při práci je nutno dodržovat všechny zásady spojené s konstrukcí tohoto typu.
Nedílnou součástí obvodu je síťová pojistka a odrušovací filtr zabraňující pronikání rušení spínajících triaků do sítě. Tyto součástky nejsou na plošném spoji a proto jsem je nekreslil do schématu. Jsou přišroubovány na zadní stěnu přístroje.
Autor nenese zodpovědnost za případné škody nebo zranění způsobená popisovaným zařízením.
Schéma a deska: Akva_sch
Projekt do AVR studia: Akva
Odkazy:
Dálkově ovládaný systém stmívače: http://www.dhservis.cz/dalsi_1/stmivac_do.htm
Univerzální stmívač: http://www.dhservis.cz/dalsi/stmivac.htm