OK1UFC, České Budějovice, JN78fx, dne 19.08.2017:

 
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 :-)

 

TU 73, Mira, ok1ufc