Kontroléry s jednočipovými mikropočítači u amatérské stanice
Úvod
Poměrně dlouho jsem se vyhýbal tématu
mikropočítače v amatérské praxi. A měl jsem mnoho důvodů.
1. Téma mikropočítačů je tak široké, jako
nabídka jejich mnoha různých typů.
2. Představa průměrných hamů je rovněž velice různorodá. Proto se v tématu
velice vymezuji jen na některé aplikace programovatelných mikropočítačů.
Proto zde velice přísně vymezuji zařazení svých námětů. V žádném případě
zde nebudu popisovat práci mikropočítačů, které
realizují např. příjem a dekódování digitálních druhů provozu nebo pracují
v roli signálových procesorů apod. Tématu, kterému se naopak
budu věnovat, jsou různé vychytávky týkající se volby, zapojení a
použitých rozhraní mikropočítačů ve funkci různých kontrolérů amatérských
stanic, resp. jejich příslušenství.
Volba mikropočítače - moje historie
Tady napíšu několik kritérií, za která mě
možná nebudete mít rádi nebo budete vidět celou řadu věcí jinak. A také
svou mikropočítačovou historii i aspekty kolem svého rozhodování. Vše v
bodech.
1. Přestože jsem kdysi absolvoval postgraduální studium zaměřené na
mikropočítače, necítím se být profesionálním odborníkem v oboru, protože
se činností návrhu a vývoje mikropočítačů neživím.
2. S mikropočítači jsem kdysi začínal u oblíbeného typu 8051. Skutečnost
uvádím proto, že ovlivnila další moje rozhodování a celou řadu amatérských
kontrolérů jsem stavěl na čipech Atmel ATmega 8, Atmega 88 i ATTiny.
3. V současnosti pracuji s typy Microchip (PIC).
4. A začal jsem prosazovat kritérium snadného a rychlého vývoje
aplikace a jejího snadného naprogramování. A uvědomoval jsem
si, že někdy není jednoduché pochopit, jak to ten druhý myslel :-)
Jistě jste si všimli, že tématem se staly:
a) 8-bitové mikropočítače, a to v době, kdy jsou k dispozici Arduina,
procesory ARM či jiná programovatelná zařízení.
b) Kontroléry, které zpravidla u stanice něco nastavují, spínají apod.,
nikoliv kontroléry, které složitě či matematicky ledacos řeší. Jako
příklad aplikací uvedu práci anténního tuneru, anténní přepínač, sekvencer
postupného spouštění různých zařízení nebo procesů, řadič zdroje frekvencí
apod.
Volba s ohledem na HW možnosti
Zatímco u řadiče oscilátoru s PLL smyčkou, který pracuje na 2.4 GHz
potřebuji pro řízení syntezátoru 3 výstupní signály pro sériovou
komunikaci (LE, data, clock), u sekvenceru jsem jich nepotřeboval o mnoho
více. U anténního přepínače jsem jich potřeboval 8, protože jsem
potřeboval switch s 8 relátky. U anténního tuneru jsem jich potřeboval
dokonce 18, tedy konkrétně 2x8 na spínání 16 relé (indukčnosti a kapacity
LC článku), jedno relé na přepínání kapacity před/za indukčnost a jedno
relé na bypass (vyřazení) tuneru.
Ve všech případech bylo velice milé, že jsem byl schopen program napsat na
stejné architektuře, se stejnými vývojovými a programovacími prostředky.
Také bylo milé, že byly dostupné procesory s dostatečným počtem tzv.
logických výstupů. A v případě anténního tuneru bylo milé, že jsem mohl
nastavit a adresovat celý port a posílat na něj jednu hodnotu, která
odpovídala potřebné bitové kombinaci výstupů.
Co nebylo milé, byla skutečnost, že procesory jsou docela komplikované
součástky, které nejsou schopné jednoduše spínat elektromagnetická relé
přímo. Ale to předbíhám, ale vrátím se k tomu na konci článku.
Volba s ohledem na programování součástky
1. Procesor 8051 jsem programoval zasunutím velké součástky do patice
programátoru s páčkou. Bylo to velké a nepraktické.
2. Procesory ATmega jsem programoval více způsoby. Velice jsem si oblíbil
použití tzv. bootloaderu. Umožňoval mi komunikaci s PC po stejném sériovém
rozhraní, jako jsem zaváděl program. Nemusel jsem přepínat kabely. Také
jsem používal tzv. sériového programování (ISP) a to až do doby, než jsem
si v obchodě koupil procesory s "geniálně" nastavenými fuse bity
(pojistkami), které sériové programování neumožňovaly. Musel jsem
otravovat kamaráda, který měl programátor s paticí, který toto umožňoval.
3. Pro celou řadu věcí bych vystačil s čipy ATtiny. Opět do doby, než jsem
si přinesl z obchodu čipy, které vyžadovaly tzv. HV programování (HV ve
smyslu High Voltage, se speciálním programátorem, který při programování
využíval napětí 12V, které pouštěl do součástky napájené jen 5V. A to byl
důvod, kdy jsem se s čipy od Atmel definitivně rozloučil.
Jednoduché programování součástky považuji za zásadní výhodu.
Jednoduché zavedení programu umožňují např. čipy PICAXE. Není třeba žádný
hardwarový programátor. Součástku lze programovat pomocí 3 vodičů (GND,
RxD, TxD) z rozhraní sériové linky RS-232 (nebo USB to RS 232 konvertoru).
Zapojení programovacího obvodu vyžaduje jen dva rezistory o
hodnotách 10 k a 22 k. PICAXE jsou označovány součástky založené na
procesorech PIC. Výrobce je nechává ve výrobě vybavit speciálním zavaděčem
programu a dodává bezplatně některé vývojové prostředky pro vývoj
aplikací. Jeden z prostředků využívá syntaxe jazyka Basic. Proto bývají
často tyto mikrokontroléry označované jako obvody pro začátečníky. Jde o
označení částečně pejorativní, v každém případě zavádějící a spíše
nepřesné. Já bych raději označil obvody PICAXE jako součástky pro
neprogramátory a použitý jazyk Basic jako jazyk určený pro techniky, či
pracovníky v robotice. To jim vůbec neubírá na kráse a vyrobil jsem s nimi
všechny dále uvedené přístroje, jako byl dálkově řízený tuner, anténní
přepínač a řízený oscilátor pracující na 2.4 GHz. Obvody PIC (na rozdíl od
PICAXE) vyžadují použití programátorů. Používám programátor a vývojové
prostředky od firmy Mikroelektronika (mikroe.com) z Bělehradu, Srbsko.
Firma je partnerem společnosti Microchip. Vyrábí různé vývojové
prostředky, mimo jiné také kompilátory MicroBasic, MicroPascal a MicroC,
takže si každý snadno vybere jazyk, který mu pro práci vyhovuje. Čipy PIC
jsou snadno programovatelné součástky, přesto vás začátek s
profesionálními nástroji může něco stát. Programátor asi USD 60 a např.
MikroC nebo MikroBasic asi USD 250. Za tyto peníze obdržíte výkonné
nástroje, se kterými se snadno naučíte dělat. A zpravidla ušetříte čas o
přemýšlení, jak to ten druhý myslel.
Programování a práce s mikropočítačem obecně
nepatří mezi přírodní vědy. Její hlavní nevýhodou bývá obtížné pochopení,
tak to jiný člověk myslel :-) To fakt někdy sežere dost času.
Volba součástky s ohledem na provedení zařízení
Mnoho vývojářů začíná s deskou, které se
říká vývojový kit, development board, bastl karta. Samozřejmě, že
kontroléry PICAXE lze napíchat do nepájivého pole, vyzkoušet si zavedení
jednoduchého programu a jeho spuštění. To je asi tak všechno. V případě
konkrétního zařízení se nám víc hodí deska, která má mimo procesoru
alespoň několik tlačítek, signalizačních relé s rezistory, vstup sériové
linky s konektorem, případně jednoduchý displej, potenciometry pro
analogové vstupy apod. Finální zařízení však bude často jenom řídící
obvod, který bude komunikovat po sériové lince s PC a někde cvakat s
relátky nebo programovat obvody s DDS syntézou nebo PLL syntézou.
Už jsem psal - mám rád součástky, které patří do
jedné rodiny a obsahují pouzdra s různým počtem pinů (např. vstupů a
výstupů). Např. součástky s 8, 18, 28 nebo 40 vývody. Je dobré, když jsou
součástky pouzdřeny nejen do velkých DIL pouzder, ale také do SMD pouzder,
např. SOIC. Potom se nám často podaří vyrobit kontrolér, který
je součástí desky plošného spoje navrhovaného zařízení.
Je hloupé, pokud chceme vyrobit například anténní tuner a použít obvod
ATmega 8, který nemá:
a) Dost pinů na ovládání všech relé. Nutí vás to k použití dalších obvodů,
třeba multiplexorů.
b) Dost celistvých portů, které můžete nastavit jediným bajtem na
požadované logické úrovně.
Samozřejmě, že vše vyřešíte SW, jako "programátoři" povyrostete a věřte, že
to byla těžce neproduktivní, snad i zbytečná práce. Dělali jste ji možná
jenom proto, že jste v minulosti s tím procesorem dělali, dlouho a možná
pracně jste se ho učili programovat, máte nyní znalosti a nástroje pro vývoj. Je dobré
si uvědomit, že
to lze někdy dělat také jinak, zejména, když to jde rychleji a méně pracně.
Volba součástky s ohledem na její
architekturu
Pro tento článek jsem si vybral příklad
dálkově ovládaného tuneru, kde potřebuji dálkově nastavovat 2 x 8 relé pro
nastavování LC a další 2 relé (typ LC, CL a bypass, kdy není tuner
zapojen). Tedy 18 kontaktů pro spínání cíveček relé. V případě anténního
přepínače jsem potřeboval ovládat jen 8 cívek relé. V případě řízení PLL
oscilátoru a v případě sekvenceru jsem potřeboval jen 3 cívky relé. Ve
všech případech jsem potřeboval posílat data do kontroléru po jedné
sériové lince. V některých případech jsem potřeboval signalizovat stav
kontroléru pomocí signalizační LED. A to bylo všechno. Nepotřeboval jsem
např. žádný AD nebo DA převodník, nepotřeboval jsem ukládat data do
paměti, nepotřeboval jsem řídit např. I2C sběrnici nebo CAN sběrnici.
Samozřejmě, vybral jsem si jednoduché aplikace mikrokontroléru, potřeboval
jsem nastavovat úrovně pinů, potřeboval jsem řešit časové záležitosti,
např. intervaly, během kterých mají být sepnutá relé.
Je milé, když pomocí
stejného vývojového prostředí a pomocí stejného zařízení pro programování
dokážeme naprogramovat všechny úlohy, o kterých v naší praxi uvažujeme. A
to na mnoha typech programovatelných součástek.
Výstup z mikropočítače - spínání
elektromagnetických relé
1. Ke spínání cívek malých relé
používám tranzistory HEXFET. Součástka se vyznačuje tím, že nezatěžuje
výstup procesoru proudem, ale pouze kapacitou C gate/source.
Spínač je
jednoduchý, např. viz obrázek vpravo. Gate tranzistoru HEXFET s
tzv. N kanálem je připojen přímo na port procesoru napájeného 5V. Relé
může být na napětí Urele = 13.5 V. Při napětí portu úrovně Low do 2V
bude tranzistor zavřený. Při napětí portu High = 4 V bude tranzistor
otevřený a jeho odpor bude RDS = 60 miliOhmů (i méně) a
cívkou relé bude protékat proud.
K omezení napěťové špičky při rozpojení relé
používám křemíkovou diodu, pokud spínám relé s podstatně vyšším
napětím, než je napětí procesoru. |

|
2. Pokud je napětí pro napájení relé
malé a jde o malá provedení relé, která nenahromadí v magnetickém poli
příliš energie, používám zapojení bez křemíkové diody.
V každém případě se vyplatí spolehlivost takového
zapojení vyzkoušet. |
 |
3. Pokud použijeme relé pro stejné
napětí, jako je napájení procesoru, můžeme použít zapojení tranzistoru
HEXFET s P kanálem. Zapojení funguje odlišně. Pokud je pin na úrovni
Low, je tranzistor otevřen a relé má cívku pod napětím. Pokud je pin
na úrovni High, je hexfet zavřený. Aby to fungovalo, je podmínkou, aby
napětí procesoru Ucc bylo stejné jako napětí Urele.
Výhodou zapojení je, že jeden konec vinutí relé je
uzemněný.
Toto zapojení používám často a rovněž jsem ho použil např. v dálkově řízeném
anténním tuneru a v anténním přepínači. |
 |
|
|
Řízení mikropočítače z
PC
Propojení PC a jednočipového mikropočítače lze realizovat různými
způsoby. Jednoduché a spolehlivé řešení jsem před léty převzal z
geniálně vyřešené zkušební
desky ZD60 pro čipy AVR. Schéma je
zde:

Převodník je napájený stejným napětím,
jako procesor. Využívá dvou tranzistorů (NPN a PNP) a čtyř pasivních
součástí (rezistorů).
Závěr
Užitečná programovatelná zařízení a
různá příslušenství stanice snadno zhotovíte s minimem technických
znalostí. V uvedených případech řešení tuneru, anténního switche a
kontroleru VCO bylo třeba umět pouze:
- vybrat vhodnou programovatelnou součástku; jde o to nestrávit
programováním mládí a neřešit např. malý počet výstupních pinů
složitým programem, který vás na dlouhou dobu zcela pohltí nebo i
zavede na křižovatku, ze které cesta nevede :-)
- napsat extrémně jednoduchý program, kterým se ovládají
programovatelné výstupy kontroléru, to vyžaduje mít vývojový
prostředek (např. kompilátor s editorem) a umět s ním dělat; většinou
se jedná o specifický souhrn dovedností, někdy jednoduchých, ale někdy
také zbytečně složitých
- umět připojit na výstupy kontroléru výkonové prvky, v našem případě
relé
- umět do kontroléru zapsat program, to někdy vyžaduje mít
programátor, ale existují i součástky, které takovou věc nevyžadují a
někdy to také znamená pochopit různé zlomyslnosti, které na vás
designéři programovatelných součástek upekli :-)
- umět napsat jednoduchou aplikaci do PC, pokud kontrolér z PC řídíme,
toto opět vyžaduje minimálně několik specifických dovedností, např.
umět vytvořit uživatelské rozhraní aplikace, umět naprogramovat pár
jednoduchých povelů a umět je odeslat jako data (posloupnost bajtů) na
sériový port PC (nebo do USB převodníku); zpravidla to nejde bez
dalšího vývojového prostředku určeného pro PC aplikace; i tyhle věci
dělají lidé mnoha způsoby, složitě i jednoduše, levně i draze,
geniálně i stupidně.
Jednu ze svých cest jsem popsal tady.
V čem jsou tyto činnosti odlišné od
jiných technických činností? Především v tom, že nerostly v lese, ale
vytvářel je člověk. Tedy mnoho lidí. Jak už to bývá, něco dělali lidé
stejně, něco úplně jinak. Někdy se lidé "drbali za uchem" přes dvě
sousední ulice a jindy je políbila můza geniality a jednoduchosti.
Všechno vás nakonec asi stejně potká, stejně tak, jako obrovské
množství názorů, jak jednoduchou věc řešit složitě a mít pro to
své důvody. Tak hlavně, aby se vám dařilo a aby vás to nepohltilo :-) |
|