Standby pájecí stanice

Do programu pájecí stanice z minulého článku jsem chtěl zakomponovat funkci standby – teplota pájecího pera klesne na nějakou nízkou teplotu, např. 100°C. První úvaha byla, přejít do tohoto režimu při stisku tlačítka rotačního kodéru. Ale taková funkce mě neuspokojila. Nechce se mi uvažovat o tom, jak dlouho nebudu pájet a jestli má smysl pájku přepnout do standby režimu. Chtělo by to vymyslet program, který sám pozná, že se nepájí a po nějakém čase ztlumí teplotu pájky.

S pájecí stanicí jsem pracoval několik večerů a všiml si, že když odložím pájku do stojánku, tak se regulátor za chvíli ustálí na výkonu 7%. A kmitá jenom několik desetin procenta, aby vyrovnal výkyvy teploměru. Zatímco při pájení výkon vzroste vždy alespoň na 8%, aby regulátor vyrovnal ztrátu. Nedalo by se tohoto jevu využít? Sledovat změny ve výkonu a pokud bude hodnota PWM regulátoru několik minut stejná, přepnout pájecí stanici do standby režimu? Psát nějakou analýzu nové části programu na papír se mi nechce, kreslit vývojový diagram už vůbec ne. Tak to zkusíme zpaměti. Napřed jsem deklaroval několik proměnných, které se budou hodit během psaní programu a do poznámek popsal jejich význam. Při tom jsem si uvědomil, co všechno od nové části programu očekávám a čemu se budu muset věnovat.

Program, který zkoumá změny výkonu PWM regulátoru v čase, je spouštěn periodicky v přerušení časovače. Přerušení je voláno 1000x za sekundu, proměnná StandbyTimer počítá do 1000, takže změna výkonu bude zkoumána jednou za sekundu:

Hlavní smyčka programu, která vypisuje aktuální teplotu pájecího pera, požadovanou teplotu pájecího pera a aktuální výkon PWM kanálu je doplněna o další smyčku. V té je výpis teploty při Standby režimu a sledování stisku tlačítka rotačního kodéru. Pro signalizaci standby jsem využil proměnnou RotStatus, jejíž hodnota jinak určuje proměnnou, která bude obsluhována rotačním kodérem. Když je RotStatus = 100, nebude rotační kodér měnit vůbec nic a to je v režimu standby docela užitečné.

Interval, ve kterém se může pohybovat změna výkonu tak, aby za stanovený čas došlo k přechodu do standby je určen proměnnou StandbyDifference. Čas v minutách, po který se čeká, jestli bude výraznější změna výkonu, je určen proměnnou StandbyTimerMax. Teplota, na které se regulátor ustálí, je zapsaná v proměnné StandbyTemp. Tyto hodnoty jsou uloženy do EEPROM procesoru a je možné je měnit v menu, které je dostupné po stisku rotačního kodéru. Část programu pro výpis menu na displej je zde:

 A na ni navazuje část v přerušení rotačního kodéru INT1. Proměnná RotStatus určuje, která hodnota z EEPROM bude změněna a zároveň, která část menu se bude zobrazovat na displeji. Přerušení je spouštěno jedním pinem rotačního kodéru vždy, když je kodérem pootočeno. Druhý pin kodéru je připojen na port D, pin PD4, jeho stav je detekován výrazem PIND&0x10. Stav určuje směr otáčení a proto rozhoduje o tom, jestli se proměnná bude přičítat, nebo odečítat. Zároveň je nutno vyhodnotit maximální a minimální mez proměnné, jejíž hodnotu v daném okamžiku měníme.

 Celý projekt pro AVR studio 6.2 je ke ztažení zde: Pajeci_stanice 01

Napsat komentář

Vaše emailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *