www.belza.cz - homepage

Dálkové ovládání k nf zesilovači (1)
Remote control for audio amplifier (1)

Související části / Related parts
Část 1 - Vysílač dálkového ovládání / Part 1 - Remote control sender
Část 2 - Přijímač DO pro zesilovač s motorovým potenciometrem / Part 2 - Remote control for amplifier with motorized potentiometer
Část 3 - Přijímač DO pro zesilovač s elektronickým potenciometrem / Part 3 - Remote control for amplifier with electronic potentiometer (PGA)

Původním cílem bylo postavit nf zesilovač s dálkovým ovládáním, jakýsi „remake“ mé konstrukce z roku 1991. Doba je však jiná – někdo preferuje zesilovače elektronkové, jiný zesilovače s extrémně malým zkreslením, někomu stačí zesilovač 2x 5 W s IO. Rozhodl jsem se proto pouze popsat dvě varianty DO použitelné s prakticky libovolným zesilovačem. Obě zapojení přijímačů DO zajišťují všechny běžné funkce ovládání: zapnutí a vypnutí, regulaci hlasitosti, přepínání vstupů a zpožděné připojení reproduktorů. Dále poskytují logický signál (signály) pro zapnutí či vypnutí nějaké funkce a umožňují hlídat napájecí napětí. První z přijímačů je určen pro regulaci hlasitosti „motorovým“ potenciometrem, druhý špičkovým elektronickým potenciometrem PGA2311. Programy pro mikrokontroléry PIC jsou volně ke stažení a mírně pokročilí programátoři mohou funkce povelů upravit podle vlastních potřeb.
Remote controls for audio amplifiers - sender (part 1), receiver for amplifier with motor-driven potentiometer (part 2), receiver with electronic pot (3) and other.

Vysílač DO

Pro ovládání jsem původně chtěl použít hotový vysílač DO. Posbíral jsem všechny ovladače v domácnosti, přidal ty od dosloužilých přístrojů a získané ve výprodeji. Jaké bylo mé překvapení, když jsem zjistil, že každý ovladač vysílá jiným kódem, jen dva ze zhruba 10 ks měly kód stejný (Sanyo a noname set top box). Aby bylo zapojení reprodukovatelné, bylo třeba vyrobit i vhodný vysílač.


Obr. 1. Zapojení vysílače DO s maximálním počtem tlačítek
Fig. 1. Remote control sender with maximum number of buttons

Zapojení vysílače DO se všemi tlačítky je na obr. 1. O jejich obsluhu a vysílání kódu se stará mikrokontrolér PIC16F630. K mikrokontroléru může být připojeno až 30 tlačítek. Zapojení dále obsahuje už jen budič LED, baterii, blokovací kondenzátory, diodu a konektor, přes který lze mikrokontrolér naprogramovat.


Obr. 2. Vysílaný IR signál: a) vysílaný impuls je modulován kmitočtem přibližně 36 kHz (burst), b) data jsou kódována zdáleností mezi impulsy, c) signál na výstupu IR přijímače
Fig. 2. Output signal have frequency approx. 36 kHz a), the data is encoded by the distance between the pulses b), the signal at the output of the IR receiver c)

Ve vysílačích DO jsou data přenášena různě vzdálenými, příp. různě dlouhými impulsy modulovanými nosným kmitočtem. Z jednoduchého impulsu se tak stane skupina krátkých impulsů, tzv. burst, viz obr. 2. V první fázi vývoje programu bylo třeba zjistit, jaký IR signál vyhovuje běžně prodávaným IR přijímačům pro DO. Vysílal jsem bursty s různým počtem impulsů a různou periodou opakování a na osciloskopu sledoval reakci přijímače. Všem testovaným přijímačům stačil pro příjem burst s 5 až 6 impulsy, s rezervou jsem pro DO použil burst s 10 impulsy.


Obr. 3. Vysílaná data
Fig. 3. Sending data

V klidu je mikrokontrolér v režimu SLEEP, ve kterém má zanedbatelnou spotřebu. Všechny vývody portu C jsou nastaveny jako výstupy a je na nich log. 0. Po stisku kteréhokoli tlačítka se log. 0 objeví i na některém ze vstupů portu A, RA0 až RA4, mikrokontrolér probudí a pokračuje následující instrukcí programu. Počká 1 ms a nastaví časovač T1 tak, aby přetekl za 62,5 ms. Dále podprogram zjistí, které tlačítko bylo stisknuto, a přiřadí mu kód 1 až 30. Pokud je stisknuto více než jedno tlačítko, vyhodnotí to podprogram jako chybu a je přiřazen kód 0. Struktura vysílaných dat je na obr. 3. Vysílají se dva bajty – jeden bajt obsahuje vysílaná data, druhý je kontrolní. Kód tlačítka je uložen na spodních pěti bitech. Následují dva bity adresy a na nejvyšším bitu je příznak prvního vysílání povelu. Stiskneme-li tlačítko a kód se vysílá poprvé, je zde logická 1.

I v domácím prostředí může být přenos dat IR světlem rušen osvětlovacími tělesy, obrazovkami, jinými IR ovladači a v neposlední řadě i IR přijímačem, který bez signálu na vstupu zvětší svoji citlivost na maximum a může pak na výstupu produkovat chaotické impulsy. Spolehlivost přenosu vysílaných dat lze zajistit různými způsoby. Poměrně častý je ten, kdy je třeba v přijímači přijmout povel několikrát za sebou, obvykle 2x. Pokud se data shodují, je povel uznán jako správný. Na vysílací straně musí být zajištěno, aby se i při krátkém stisku tlačítka povel odeslal vícekrát. Jiným způsobem zabezpečení je přidat k povelu redundantní data, např. kontrolní součet (CRC). Tuto metodu jsem zvolil i já. Umožňuje zkontrolovat každý povel, a ten může být vykonán, i když je vyslán jen jednou. To zjednoduší program na vysílací i přijímací straně. Kontrolní data jsou v tomto vysílači získána tak, že ke kódu povelu je přičteno číslo 0 až 255 (ofset). Pokud výsledek přeteče, je bit CARRY ignorován a použije se pouze 8 bitů výsledku. Ten po negaci tvoří kontrolní bajt. Na přijímací straně je pak kontrola dat velmi jednoduchá - sečte se bajt dat, kontrolní bajt a ofset a součet se zvětší o jedna. Pokud je výsledek nula (bit CARRY je opět ignorován), jsou data vyhodnocena jako správná. Na nižší úrovni je v programu přijímače přenos zabezpečen ještě tak, že musí být přijat správný počet impulsů (9).

Data jsou pro přenos kódovaná vzdáleností timp mezi vysílanými impulsy – bursty. U většiny DO je pro log. 0 další impuls vysílán za 1 až 1,1 ms, pro log. 1 za 2 až 2,2 ms. Původně to tak dělal i tento vysílač – pro přenos dvou bajtů, tj. 16 bitů, bylo třeba vyslat 17 impulsů (burstů). Pak mi to nedalo a inspirován kódováním dat na CD a MLC buňkami v pamětech flash jsem vyzkoušel jiný způsob, kdy se přenášejí najednou 2 bity. Vzdálenosti mezi bursty jsou pak v násobcích přibližně 1,26: 1052 µs pro "00", 1325 µs pro "01", 1670 µs pro "10" a 2104 µs pro "11". Pro přenos 2 bajtů pak stačí jen 9 impulsů. Tím se také výrazně zmenší spotřeba vysílače, protože vysílací LED je největším žroutem energie. Data se tedy vysílají po dvojicích bitů od nejvyšších bitů povelu po nejnižší bity kontrolního bajtu. Přesnost vnitřního RC oscilátoru mikrokontroléru je i při takto kódovaném přenosu více než vyhovující. Taktovací kmitočet by se musel změnit o více než 12 %, aby se přenos nezdařil.

dvojice bitů
Duobit
vzdálenost impulsů
Pulse Distance
00 1052 µs
01 1325 µs
10 1670 µs
11 2104 µs

Pro správný přenos musí být samozřejmě adresa (2 bity) a ofset (1 bajt) stejné ve vysílači i v přijímači. Dohromady vytvářejí 1024 kombinací – lze tedy vyrobit až 1024 souprav vysílač-přijímač, které budou ignorovat povely s jinou adresou a ofsetem. Adresa a ofset jsou uloženy na adresách 3f0h a 3f1h programové paměti a lze je při vypalování programu upravit podle potřeby.

Po odvysílání povelu program čeká na přetečení časovače. Pokud je tlačítko stále stisknuto, vysílá se povel znovu, tentokrát už bez příznaku prvního vysílání a znovu se čeká 62,5 ms. To se opakuje tak dlouho, dokud není tlačítko uvolněno. Pak mikrokontrolér přejde opět do stavu SLEEP. Aby se zmenšila spotřeba mikrokontroléru, není použit ani Watchdog (spotřeba 17 µA), ani Brown-Out-Detect (130 µA). Trvalý odběr asi 150 µA by napájecí článek CR2032 vybil za necelé 2 měsíce, i kdybychom vysílač nepoužívali. Vypnutí těchto ochran však způsobí, že se mikrokontrolér správně nezresetuje při pomalém náběhu napájecího napětí, případně pokud se před startem napájecí napětí nezmenší k nule. Program pak při výměně baterie „zabloudí“, mikrokontrolér trvale odebírá proud 0,5 až 1 mA a vysílač nefunguje. Před vložením baterie je třeba vybít kondenzátory v napájení vysílače, nebo po vložení baterie mžikově zkratovat napájení, např. na programovacích pinech konektoru ICSP. Při správné funkci má mikrokontrolér v režimu SLEEP prakticky neměřitelnou spotřebu.

Program vysílače je stejný pro všechny varianty bez ohledu na to, který z dále popsaných přijímačů použijete. Vysílač DO můžete postavit na desce podle obr. 4 a 5. Zapojení odpovídá obr. 1, použito je však pouze 12 tlačítek. Naopak lze osadit až 10 kondenzátorů C1 a zlepšit tak funkci při téměř vybité baterii. Většina součástek je SMD a všechny jsou připájeny ze strany spojů, včetně dvou drátových propojek. Po obvodu desky lze nalepit rámeček a přes něj desku s děrami pro hmatníky tlačítek, vyrobenou např. z tenkého duralového plechu. Získá se tak plochá krabička, jejíž spodní stranu tvoří deska s plošnými spoji. Na nepoužité straně desky ponechte měď, bude sloužit jako stínění. Všechny součástky by na výšku neměly přesahovat tlačítka bez hmatníku. Držák baterie doporučuji raději přinýtovat, nýty zároveň propojí stínicí vrstvu na kladný pól baterie. Keramické kondenzátory s velkou kapacitou mění kapacitu podle přiloženého stejnosměrného napětí, často až na 20 % hodnoty naměřené při 0 V při maximálním napětí. Použijte raději kondenzátory na větší napětí, u nichž bude ztráta kapacity s napětím menší. Dioda může být jakákoli Schottkyho dioda. Při programování odděluje větší napětí programátoru od baterie, při provozu zlepšuje funkci při slabé baterii. Naprogramujete-li mikrokontrolér mimo desku nebo během programování odpojíte baterii, lze ji nahradit zkratem. Diodu volte raději na větší proud (1 A, viz restart zkratem), postačí však i např. BAT43, kterou jsem použil já. Střední odběr z baterie je při stisknutém tlačítku okolo 2 mA a dosah v běžné místnosti odkudkoli. Zvětšit výkon LED můžete zmenšením odporu rezistoru R2 až na 1 Ohm, zvětší se však zároveň i spotřeba.

Important. If the transmitter does not work and will draw current from 0.5 to 1 mA, was not properly reset the microcontroller. Just a moment short circuit C2 for PIC reset.

Program pro všechny verze dálkového ovládání (vysílač, přijímač DO1 a DO2)
zdrojový kód v asembleru a přeložený hex soubor pro programátor je zde.
Firmware for sender and receiver is here

Obr. 4 a 5. Deska s plošnými spoji vysílače DO (46 x 102 mm). Použijete-li pravé tlačítko myši a zvolíte-li "Uložit obrázek jako", získáte předlohu spojů v rozlišení 600 dpi
Fig. 4 and 5. PCB layout (46 x 102 mm). Click right mouse button and choose "Save image as" to get 600 dpi resolution image.
Only 12 switches used.
(
Click here for PDF file)

Seznam součástek
Parts list

R0 0 ohm, SMD1206 jumper
R1 47 kohm, SMD 1206
R2 6,8 ohm, SMD 1206
R3 2,2 kohm, SMD 1206
C1 10 µF/6,3 V, SMD 1206
C2 4,7 µF/6,3 V, SMD 1206
D1 Schottky 1 A, SMD
LED1 IR LED, 940nm
T1 BC817-40
T2 BC848B
IC1 PIC16F630-I/SL
12x SMD switch  
battery holder BC2001
  deska s plošnými spoji bcs73

Jaroslav Belza

Článek byl otištěn v časopise "Praktická elektronika" 2/2015 na s. 28
This article was printes in magazine "Praktická elektronika" 2/2015, page 28

7. 2. 2016