logonanoSoft2.gif, 1 kB

Zenit v elektrotechnike krajské kolo 2002

Popis zariadenia:

Kedže je vianočné obdobie zvolil som pre tento ročník veľa krát použitý námet svetelných efektov. Aby zariadenie bolo čo najviac univerzálne je použitý riadiaci mikropočítač firmy ATMEL AT89C51. Výhodou tohto typu je 40 pinové púzdro, ktoré dovoľuje aby radič disponoval štyrmi osem bitovými bránami. To dovoľuje pripojenie pomerne veľkého počtu nezávisle ovládaných zdrojov svetla. Teoreticky je možné použiť všetkých 32 portov na riadenie svetiel. Rozhodol som sa však že použijem iba 3 brány čo je teda 24 nezavisle spínaných zdrojov svetla. Ďalšie dva vývody sa použili ako vstupy na pripojenie ovládacích tlačítok. Jedným tlačítkom sa ovláda typ svetelného efektu. druhým je možné ovládať rýchlosť zmien. Ostatných šesť liniek je zatiaľ volných a je ich možné ľubovolne využiť. Napríklad sa sem môže pripojiť obvod MAX232 a riadiť si tak efekty z osobného počítača. Inou možnosťou je zapojiť na volný prerušovací vstup prímač infračervehého diaľkového ovládania SFH5110 a s príslušným programom si riadiť zariadenie diaľkovým ovladaním televízora. Samozrejme že sa možu tieto linky využiť aj ako ďalšie spínacie výstupy.

Ako zdroje svetla sú v zapojení použité LEDky. Ich výhodou je ľahká dostupnosť v rozmanitých farebných i tvarových vyhotoveniach. Zaujímavé sú i nízkou cenou a špecialne pre ozdobovanie vianočných stromčekov je vynikajúca ich nerozbitnosť. I keď prúd moderných LED s nízkym príkonom môže byť iba 2mA pre dostatočne vysoký jas je potrebné u mnohých použiť prúd až 20 mA. Mikroradič nie je schopný dodať takto veľký prúd priamo a je preto nutné použiť spínací stupeň. Najjednoduchší je samozrejme spínací stupen s tranzistorom.. Ale je možné pozmeniť spínacie stupne v zapojení a dosiahnuť tak spínanie napríklad žiaroviek či už na malé napätie alebo prípadne aj sieťové.

Použitý spínací stupeň je klasické zapojenie PNP tranzistora ako spínacieho stupňa. PNP tranzistor je vhodnejší pretože mikroradič dokáže v logickej nule vybudiť až 2mA, pokiaľ v log jednotke iba 0,25mA. Takto je možné jedným PNP tranzistorom spínať prúd aj 300mA pri napätí 5V. Takže je možné pripojiť ako záťaž na každý spínací stupeň niekoľko paralelných vetiev, alebo aj nízko príkonové žiarovky. Použité zapojenie spínacieho stupňa umožňuje tiež aby namiesto jednej LED boli zapojené až dve do série, dokonca rôznych farieb. Samorejme že je ale potrebné príslušne upraviť hodnoty kolektorových odporov. "Zložitými" výpočtami kolega dospel k nasledujúcim hodnotám

LED Úbytok [V] R [Ohm] pre Ic=15mA R [Ohm] pre Ic=20mA
červená 1,9 220 160
zelená 2,3 180 130
zelená + zelená 4,6 30 20
červená +červená 3,8 90 30
červená + zelená 4,2 60 40

Iné farebné kombinácie sme v zapojení neskúšali, ale sú samozrejme možné. Znalci PNP tranzistorov určite poznajú aj možnosť ako spínať vyžšie napätie ako je 5V. Emitory tranzistorov sa pripoja priamo napr. na 12V Do báze je potrebné do série s bázovým odporom vložiť zenerovu diodu so zenerovým napätím hodnoty 6,8V. Nemám to odskúšané v tomto zapojení ale bežne sa to používa napr. v programátoroch takže verím že to bude fungovať.

Poslednou časťou zapojenia je obvod oscilátora a resetovací obvod, ktoré sú zapojené klasickým doporučovaným spôsobom.

Schéma zapojenia:

Ukázalo sa že zapojenie s troma bránami by bola asi príliš komplikované a preto som vypustil aj bránu P1. Program pre riadenie je však napísaný tak že tak kde to je možné riadi aj port P1 takže je možné si dorobiť spínače aj na tento port. Program bude zverejnený aj v zdrojovom aj v hexadecimálnom tvare pre obe verzie, jednoduchú aj plnú.

Postup oživovania:

  1. Po osadení súčiatok skontroľujeme napájanie pre mikroradič na vývodoch 20 (GND) 40 (+5V), 31 (+5V) a signál RESET na vývode č. 9 (0V)
  2. Ďalej sa je možné presvedčiť o funkčnosti jednotlivých spínacích stupňou uzemnením príslušného pinu na pätici. Zodpovedajúca dioda sa musí rozsvietiť.
  3. Po vložení mikroradiča musia začať blikať všetky diody. Tlačitkami by malo byť možné prepínať rýchlosť blikania a voliť rôzne svetelné efekty. V zapojení sa nič nenastavuje pri správnom obvodovom návrhu a bezchybnom vyhotovení funguje všetko na prvé zapojenie.

Programové vybavenie:

Program pre tieto svetelné efekty som písal v jazyku assembler. V podstate ide o pomerne jednoduchý program, ktorý som písal asi 3 hodiny. Pretože ma to príliš nezaťažilo udeľujem na tento software GNU/GPL licenciu, takže zverejňujem aj zdrojový kód programu. Ktokoľvek si ho môže ľubovolne upraviť a používať (samozrejme pri zachovaní podmienok GNU licencie)

Možno začiatočníkom program nebude pripadať zas až tak jednoduchý, ako nám pravým programátorom. Takže stručne popíšem aspoň hlavné časti.

Na úvod konštanta SIMPLE definuje jednoduchú verziu pre riadenie dvoch brán. Pokiaľ bude mať hodnotu 0 program sa prekladá pre riadenie plnej verzie s troma bránami.

Nasledujú deklarácie názvov TLAC0, TLAC1 a MODE, SETS, ktoré pomenúvajú bitové premenné pre ich pohodlnejšie označovanie.

Potom sú deklarované štyri jednobytové premenné SPEED, TICKCOUNTER, FLASHTYPE, STATE ktoré úplne postačujú pre činnosť celého programu.

Samotný program začína návestím RESET kde je však iba skok na návestie START, aby sa preskočili adresy ktoré 8051 používa pevne pre obsluhy prerušení. Program využíva na meranie času interný časovač 1, ktorý v pravidelných intervaloch prerušuje beh hlavného programu. Takže tu nájdete skok na obsluhu prerušenia od TIMER1.

Hlavný program začína na návestí START a ako prvé vynuluje vnútornú pamäť dát. V tomto programe to síce nie je potrebné ale je to sila zvyku. Nasleduje nastavenie módu časovačov a spustenie časovača č. 1. Premenná SPEED sa nastaví na hodnotu 7 čo pri použitom 12MHz kryštaly zodpovedá približne perióde blikania jednej sekundy.

Potom nasleduje hlavná programová slučka na návestí MAINLOOP. Tá obsahuje volanie podprogramu INKEY, ktorý zistí či nebolo stlačené nejaké tlačítko a ak áno nastaví príslušný bit akumulátora.Ak je to tlačítko SETS ide o nastavenie rýchlosti a preto sa zníži obsah premennéh SPEED o jedna. To sa deje až pokiaľ tam nie je hodnota 2 v takom prípade spomalíme zase na rýchlosť reprezentovanú hodnotou 20.

Ak ide o tlačítko pre nastavenie typu efektu tak sa vynuluje premenná STATE aby efekt začal od začiatku a ďalej sa posunie obsah premennej FLASHTYPE, ktorá symbolizuje nastavený typ efektu. Po dosiahnutí hodnoty 6 sa začne zase od 0. Celkovo je teda 7 rôznych efektov.

To je všetko čo vykonáva hlavný program. Samotné meranie času a riadenie spínačov sa odohráva v obsluhe prerušenia časovača jedna, ktorá začína na návestí _TIMER1.

Táto ako prvé odloží do zásobníka používané registre aby sa nepoškodili a aby po návrate z prerušenia bolo všetko na svojom mieste. Ďalej sa využije premená TICKCOUNTER až k hodnote 0. Po celú túto dobu sa nič nedeje. Až keď sa dostane v tejto premennej hodnota nula. Potom sa obnoví premenná TICKCOUNTER podľa premennej SPEED. Podľa premennej FLASHTYPE sa vyberie časť ktorá je zodpovedná za spínanie diod. Nebudem detailne popisovať ako sa ktorý efekt robí. Podstatnú úlohu tam hrá premenná STATE, ktorá postupne prechádza jednotlivými stavmi efektu..

Zdrojový text programu

Preložený program vo formáte INTEL HEX - jednoduchšia verzia s dvoma bránami

Hlavná stránka