Schéma diaľkového ovládania zariadení. Jednoduchý infračervený ovládací obvod

  • 07.08.2019

Infračervené diaľkové ovládanie je jedným z najjednoduchších spôsobov interakcie s elektronickými zariadeniami. Takže takmer v každom dome je niekoľko takýchto zariadení: TV, hudobné centrum, video prehrávač, klimatizácia. Ale najzaujímavejšou aplikáciou infračerveného diaľkového ovládača je diaľkové ovládanie robota. V skutočnosti sa v tejto lekcii pokúsime implementovať takúto metódu ovládania pomocou obľúbeného ovládača Arduino Uno.

1. IR diaľkové ovládanie

Čo je potrebné na to, aby ste naučili robota poslúchať infračervené (IR) diaľkové ovládanie? Najprv potrebujeme samotné diaľkové ovládanie. Môžete použiť bežné diaľkové ovládanie televízora, alebo si môžete zakúpiť miniatúrne diaľkové ovládanie autorádia. Práve tieto diaľkové ovládače sa často používajú na ovládanie robotov.

Toto diaľkové ovládanie má 10 digitálnych tlačidiel a 11 tlačidiel na ovládanie hudby: hlasitosť, pretáčanie dozadu, prehrávanie, zastavenie atď. Na naše účely viac než dosť.

2. IR senzor

Po druhé, na príjem signálu z diaľkového ovládača potrebujeme špeciálny IR senzor. Vo všeobecnosti môžeme infračervené žiarenie detegovať bežnou fotodiódou/fototranzistorom, ale na rozdiel od neho náš IR senzor detekuje iba infračervený signál s frekvenciou 38 kHz (niekedy 40 kHz). Práve táto vlastnosť umožňuje senzoru ignorovať veľa vonkajšieho svetelného hluku z lámp a slnka.

Pre tento tutoriál použijeme populárny IR senzor. VS1838B, ktorý má nasledujúce vlastnosti:

  • nosná frekvencia: 38 kHz;
  • napájacie napätie: 2,7 - 5,5 V;
  • prúdová spotreba: 50 uA.

Je možné použiť aj iné snímače, napr.: TSOP4838, TSOP1736, SFH506.

3. Pripojenie

Senzor má tri výstupy (tri nohy). Ak sa pozriete na snímač zo strany prijímača IR signálu, ako je znázornené na obrázku,

  • potom vľavo bude - výstup do ovládača,
  • v strede - záporný napájací kontakt (zem),
  • a vpravo - kladný napájací kontakt (2,7 - 5,5 V).

Schéma hlavného zapojenia

Vzhľad rozloženia

4. Program

Pripojením IR senzora napíšeme program pre Arduino Uno. Na tento účel používame štandardnú knižnicu IRvzdialene, ktorý je určený práve na zjednodušenie práce s príjmom a prenosom IR signálov. Pomocou tejto knižnice budeme akceptovať príkazy z diaľkového ovládača a pre začiatok ich len vypíšeme do okna monitora sériového portu. Tento program je pre nás užitočný, aby sme pochopili, aký kód poskytuje každé tlačidlo.

#include "IRremote.h" IRrecv irecv(2); // špecifikujte výstup, ku ktorému je pripojený prijímač decode_results results; void setup() ( Serial.begin(9600); // nastavenie rýchlosti portu COM irecv.enableIRIn(); // spustenie príjmu ) void loop() ( if (irrecv.decode(&results)) ( // ak údaje pochádzajú z Serial .println(results.value, HEX); // tlač údajov irecv.resume(); // prijatie ďalšieho príkazu ) )

Načítavanie programu na Arduino. Potom sa pokúsime prijímať príkazy z konzoly. Otvorte monitor sériového portu (Ctrl+Shift+M), zoberte diaľkový ovládač a nasmerujte ho na senzor. Stlačením rôznych tlačidiel pozorujeme v okne monitora kódy zodpovedajúce týmto tlačidlám.

Problém so sťahovaním programu

V niektorých prípadoch sa pri pokuse o stiahnutie programu do ovládača môže objaviť chyba:

TDK2 nebol vyhlásený v jeho pôsobnosti

Ak to chcete opraviť, stačí odstrániť dva súbory z priečinka knižnice. Ideme k dirigentovi. Prejdite do priečinka, kde je nainštalovaná aplikácia Arduino IDE (s najväčšou pravdepodobnosťou je to "C:\Program Files (x86)\Arduino"). Potom do priečinka knižnice:

…\Arduino\libraries\RobotIRremote

A vymažte súbory: IRremoteTools.cpp a IRremoteTools.h. Potom reštartujeme Arduino IDE a znova sa pokúsime nahrať program do ovládača.

5. Ovládajte LED pomocou IR diaľkového ovládača

Teraz, keď vieme, ktoré kódy zodpovedajú tlačidlám na diaľkovom ovládači, snažíme sa naprogramovať ovládač tak, aby zapínal a vypínal LED pri stlačení tlačidiel hlasitosti. Na to potrebujeme kódy (môžu sa líšiť v závislosti od diaľkového ovládača):

  • FFA857 - zvýšte hlasitosť;
  • FFE01F - zníženie hlasitosti.

Ako LED používame vstavanú LED na kolíku #13, takže schéma zapojenia zostane rovnaká. Takže program:

#include "IRremote.h" IRrecv irecv(2); // špecifikujte výstup, ku ktorému je pripojený prijímač decode_results results; void setup() ( irecv.enableIRIn(); // začatie prijímania ) void loop() ( if (irrecv. decode(&results)) ( // ak údaje prišli do prepínača (hodnota výsledkov) (case 0xFFA857: digitalWrite (13, HIGH); break; case 0xFFE01F: digitalWrite(13, LOW); break; ) irecv.resume(); // prijmite nasledujúci príkaz ) )

Nahrajte do Arduina a otestujte. Kliknite vol+- LED sa rozsvieti. Kliknite vol-- ide von. Teraz, keď viete, ako to všetko funguje, môžete namiesto LED ovládať motory robota alebo iné podomácky vyrobené mikroelektronické zariadenia!

(preklad z angličtiny)

Infračervené lúče sú najlacnejším spôsobom diaľkového ovládania zariadenia v rozsahu neviditeľného svetla. Takmer všetky audio a video zariadenia sú ovládané infračervenými lúčmi. Vďaka rozšírenému používaniu potrebných komponentov sa IR ovládanie stalo veľmi lacným, vďaka čomu je ideálne pre kutilov na použitie pre ich vlastné projekty.
Vysvetlím teóriu fungovania IR diaľkového ovládača a niektoré protokoly, ktoré sa používajú v spotrebnej elektronike.

Infračervené je vlastne normálne svetlo so špecifickou farbou. My ľudia túto farbu nevidíme, pretože jej vlnová dĺžka je 950 nm, čo je pod viditeľným spektrom. To je jeden z dôvodov, prečo sa pre účely diaľkového ovládania volí IR svetlo, chceme ho použiť, ale nemáme záujem toto svetlo vidieť. Ďalším dôvodom je, že IR ovládače sa dajú pomerne ľahko vyrobiť, a preto je ich výroba lacná. Hoci my ľudia nevidíme infračervené svetlo, vyžarované z diaľkového ovládača neznamená, že ho nedokážeme zviditeľniť.

Videokamera alebo digitálny fotoaparát môže „vidieť“ infračervené svetlo, ako môžete vidieť na tomto obrázku. Ak máte webovú kameru, máte šťastie, namierte diaľkový ovládač, stlačte ľubovoľné tlačidlo a uvidíte blikajúce svetlo. Žiaľ, stále je okolo nás veľa zdrojov infračerveného svetla. Slnko je najjasnejším zdrojom všetkých z nich, ale existujú aj také: lampy, sviečky, ústredné kúrenie a dokonca aj naše telo vyžaruje infračervené svetlo. V skutočnosti všetko, čo vyžaruje teplo, vyžaruje aj infračervené svetlo. Preto musíme prijať určité opatrenia, aby sme zabezpečili, že naše IR správy sa dostanú k príjemcovi bez chýb.

modulácia

Modulácia je potrebná na to, aby náš signál vyčnieval zo šumu. Pri modulácii bliká IR signál s určitou frekvenciou. IR prijímač bude naladený na túto frekvenciu, takže môže ignorovať všetko ostatné.

Na obrázku je vľavo vidieť modulačný signál vysielača s IR LED. Signál je zaregistrovaný v prijímači na druhej strane. V sériovej komunikácii väčšinou hovoríme o „markeroch“ a „medzere“. "Priestor" - obdobie v neprítomnosti signálov z vysielača. V tomto čase nevyžaruje žiadne svetlo. Po nečinnosti "markery" IR impulzov idú v určitom frekvenčnom rozsahu. V spotrebnej elektronike sa bežne používajú frekvencie medzi 30 kHz a 60 kHz. Na výstupe prijímača je „priestor“ reprezentovaný vysokou logickou úrovňou. "Marker" predstavuje nízku úroveň. Upozorňujeme, že „značky“ a „medzera“ nie sú čísla 1 a 0, ktoré je potrebné prejsť. Skutočný vzťah medzi „značkami“ a „medzerami“ a jednotkami a nulami závisí od použitého protokolu. Viac informácií o tomto možno nájsť na stránkach, ktoré popisujú protokoly.

Vysielač

Vysielače sú zvyčajne diaľkové ovládače s batériami. Mal by spotrebovať čo najmenej energie a IR signál by mal byť čo najspoľahlivejší na dosiahnutie prijateľného diaľkového ovládania. Prednostne by mala byť odolná voči nárazom.
Mnoho čipov je navrhnutých na použitie ako IR vysielače. Staré čipy boli navrhnuté len pre jeden z niekoľkých protokolov, ktoré sa dnes používajú. V súčasnej dobe majú mikrokontroléry veľmi nízku spotrebu, čo umožňuje ich použitie v IR vysielačoch a sú aj flexibilnejšie v použití. Ak tlačidlo nie je stlačené, sú v režime spánku, v ktorom je spotreba prúdu nízka. Procesor sa „zobudí“ a odošle príslušný IR príkaz až po stlačení klávesu.
Kremenné kryštály sa v takýchto konzolách používajú len zriedka. Sú veľmi krehké a majú tendenciu sa ľahko zlomiť, keď ovládač spadne. Keramické rezonátory sú oveľa vhodnejšie, pretože znesú vysoké fyzické zaťaženie. To, že sú menej presné, nie je vôbec dôležité.
Prúd cez LED (alebo LED) sa môže meniť od 100 mA do viac ako 1A! Aby sa dosiahla prijateľná ovládacia vzdialenosť, prúd LED by mal byť čo najvyšší. Tu sa robí kompromis medzi parametrom LED, výdržou batérie a maximálnou vzdialenosťou. Prúdy LED môžu byť vysoké, pretože riadiace impulzy LED sú veľmi krátke. Priemerný výstupný výkon LED by nemal prekročiť maximálnu hodnotu. Musíte tiež zabezpečiť, aby nebol prekročený najrýchlejší aktuálny vzhľad LED. Všetky tieto parametre nájdete v špecifikácii LED.

Jednoduchý tranzistorový obvod, ktorý možno použiť pre LED diódy. Pre tento obvod je potrebné zvoliť tranzistor s vhodnou hFE a rýchlosťou spínania.
Hodnota odporu sa dá vypočítať pomocou Ohmovho zákona. Pamätajte, že nominálny pokles napätia na IR LED je približne 1,1 V.
Vyššie popísaný štandardný ovládač má jednu nevýhodu. Únik napätia batérie, pri ktorom sa zníži prúd cez LED, čo povedie k zníženiu ovládacej vzdialenosti.

Aby sa tomu zabránilo, 2 diódy sú umiestnené v sérii v obvode emitora. Pri sérii impulzov založených na tranzistore bude napätie obmedzené na 1,2 V. Emitorová báza tranzistora odpočítava 0,6 V, čo vedie k amplitúde 0,6 V na emitore. Výpočet prúdu cez LED je jednoduchý - opäť sa použije Ohmov zákon.

Prijímač

Dnes je na trhu veľa rôznych prijímačov. Najdôležitejším výberovým kritériom pre modulačnú frekvenciu je použitie a komerčná dostupnosť.

Na obrázku vyššie môžete vidieť typickú blokovú schému takéhoto IR prijímača. Nerobte si starosti, ak nerozumiete častiam, všetko je zabudované v jednej elektronickej súčiastke. Prijatý IR signál z detekčnej fotodiódy (na ľavej strane schémy). Tento signál je zosilnený a obmedzený v prvých 2 stupňoch. Obmedzovač je AGC na získanie konštantnej úrovne pulzu bez ohľadu na vzdialenosť od konzoly. Ďalej, z AGC sa signál privádza do pásmového filtra (BPF). Pásmový filter je naladený na modulačnú frekvenciu konzoly. Všeobecný frekvenčný rozsah od 30 kHz do 60 kHz pre spotrebnú elektroniku. Ďalší krok: detektor, integrátor a komparátor. Účelom týchto troch blokov je zistiť prítomnosť modulačnej frekvencie. Táto modulačná frekvencia prezentuje výstup komparátora ako nízky signál.
Ako som už povedal, všetky tieto bloky sú integrované do jedného elektronického komponentu. Na trhu je množstvo rôznych výrobcov týchto komponentov. Zariadenia sú dostupné v niekoľkých verziách, pričom každé je naladené na špecifickú modulačnú frekvenciu.
Všimnite si, že zosilňovač je nastavený na veľmi vysoký zisk. Preto sa systém číta veľmi ľahko. Pripojenie veľkého kondenzátora, aspoň 22 mF, k napájaciemu zdroju prijímača je nutnosťou. Niektoré technické listy odporúčajú zaradiť 330 ohmový odpor do série s napájacím zdrojom, aby sa napájací zdroj ďalej oddelil od zvyšku obvodu.

Na trhu je viacero výrobcov IR prijímačov. Siemens, Vishay Telefunken a sú hlavnými dodávateľmi v Európe. Siemens má svoju sériu SFH506-xx, kde xx označuje modulačnú frekvenciu 30, 33, 36, 38, 40 alebo 56 kHz. Telefunken vyrábal svoje série TFMS5xx0 a TK18xx, kde xx opäť označuje modulačnú frekvenciu zariadenia. Zdá sa, že tieto komponenty sú už zastarané. Nahrádzajú ich Vishay TSOP12xx, TSOP48xx a TSOP62xx.
Sharp, Xiamen Hualian a Japanese Electric sú 3 popredné IR spoločnosti v Ázii. Sharp vyrába zariadenia s veľmi tajomnými názvami ako: GP1UD26xK, GP1UD27xK a GP1UD28xK, kde x súvisí s frekvenčnou moduláciou. Hualian má svoju sériu HRMxx00, ako aj HRM3700 HRM3800. Japanese Electric má množstvo zariadení, ktoré v názve dielu nezahŕňajú modulačnú frekvenciu. PIC12043LM je nastavený na 36,7 kHz a PIC12043LM je nastavený na 37,9 kHz.

Koniec?

Týmto sa uzatvára teória fungovania systému IR diaľkového ovládania určeného na použitie v spotrebnej elektronike. Chápem, že existujú aj iné spôsoby implementácie IR ovládania, ale obmedzím sa na popis vyššie. Jednou z otázok, ktoré tu nie sú zahrnuté, je bezpečnosť. Bezpečnosť nezáleží na tom, či potrebujem ovládať iba svoj videorekordér alebo televízor. Ale keď príde na otvorenie dverí alebo auta, kľúčový signál musí byť jedinečný! Možno sa tomuto problému budem venovať neskôr, ale nie teraz.
Tiež si uvedomujem, že môj malý zoznam výrobcov nie je ani zďaleka úplný. Sotva je tu možné vymenovať všetkých výrobcov. Môžete mi poslať e-mail, ak máte informácie o iných protokoloch, ktoré by podľa vás mali byť pridané na stránku.
Táto stránka je len popisom základnej pracovnej teórie IR diaľkových ovládačov. Nepopisuje protokoly, ktoré sa podieľajú na komunikácii medzi vysielačom a prijímačom. Existujú rôzne protokoly vyvinuté rôznymi výrobcami.

Dej alebo „Ako začalo zariadenie“

…Keď som prišiel, Victoria sedela na gauči a pozerala na televízor. Deň bol ťažký, tak sa jej nechcelo nič robiť. Niekoľko minút sme sledovali nejaký popový seriál, potom sa to skončilo a Vika vypla televízor. V miestnosti sa stala tma. Vonku pršalo, takže aj doma sa zdalo chladno.
Vika vstala z pohovky a začala hmatom hľadať vypínač od lampy. Nástenná lampa z nejakého dôvodu nevisela pri pohovke, ale na inej stene a ja som musel prešľapovať cez izbu, aby som rozsvietil svetlo. Keď ju konečne zapla, miestnosť bola naplnená teplým svetlom žiarovky.
Vedľa mňa na pokrčenej plachte položte ovládač od televízora. Spodné tlačidlá sú neoznačené a s najväčšou pravdepodobnosťou sa nepoužívajú. A potom ma napadla zaujímavá myšlienka...
- Vic, chceš, aby som ti rozsvietil lampu diaľkovým ovládačom z krabice? K dispozícii sú aj ďalšie tlačidlá...

koncepcia
Naše zariadenie musí byť schopné prijímať signál z IR diaľkového ovládača, rozlíšiť „svoje“ tlačidlo od ostatných a ovládať záťaž. Prvý a posledný bod sú jednoduché ako sekera. Ale tá druhá je o niečo zaujímavejšia. Rozhodol som sa neobmedzovať sa na žiadne konkrétne diaľkové ovládanie (Prečo? - „Nie je zaujímavé!“), ale vytvoriť systém, ktorý dokáže pracovať s rôznymi modelmi diaľkových ovládačov z rôznych zariadení. Len keby sa IR prijímač nevzdal a s istotou zachytil signál.

Signál zachytíme pomocou fotodetektora. A nie každý prijímač je vhodný – nosná frekvencia sa musí zhodovať s frekvenciou diaľkového ovládača. Nosná frekvencia prijímača je uvedená v jeho označení: TSOP17xx - 17 je model prijímača a xx je frekvencia v kilohertzoch. Nosnú frekvenciu diaľkového ovládača nájdete v dokumentácii alebo na internete. V princípe bude signál prijatý, aj keď sa frekvencie nezhodujú, ale citlivosť bude na hovno - musíte diaľkové ovládanie strčiť priamo do prijímača.

Každá spoločnosť, ktorá vyrába domáce spotrebiče, je nútená dodržiavať normy pri výrobe "železa". A štandardné sú aj modulačné frekvencie konzol. Vývojári sa však potýkajú so softvérom – rozmanitosť protokolov výmeny medzi diaľkovým ovládačom a zariadením je jednoducho úžasná. Preto som musel vymyslieť univerzálny algoritmus, ktorý sa nestará o protokol výmeny. Funguje to takto:

Kontrolné body sú uložené v pamäti zariadenia. Pre každý takýto bod je potrebné zaznamenať čas a stav výstupu z IR prijímača - 0 alebo 1.
Pri príjme signálu z diaľkového ovládača MK skontroluje každý bod postupne. Ak sa všetky body zhodovali, potom to bolo rovnaké tlačidlo, na ktoré bolo zariadenie naprogramované. A ak sa výstup z prijímača aspoň v jednom bode nezhoduje so šablónou, tak zariadenie nebude nijako reagovať.

Bugy však nikto nezrušil! Je možné, že signál sa bude líšiť od šablóny, ale
v kontrolných bodoch budú hodnoty rovnaké. Dostanete falošne pozitívny výsledok. Zdalo by sa - vzácne zapadlo a je ťažké s ním bojovať! Ale v skutočnosti nie je všetko také zlé (a miestami ani dobré).

Po prvé, máme digitálny signál, čo znamená, že impulzy prichádzajú s konštantným oneskorením (časovaním) a jednoducho nevznikajú. Preto, ak sú body dostatočne husté, nemôžete sa obávať, že nejaký impulz bude chýbať.

Po druhé, malý hluk (zvyčajne vyzerá ako zriedkavé krátke impulzy) vo väčšine prípadov ide ako les - pretože ak nespadne priamo na kontrolný bod, nič neovplyvní systém. Máme teda prirodzenú ochranu proti hluku.

Druhý typ chyby (známy aj ako „Chýbajúci príkaz“) je spôsobený tým, že bod sa nachádza príliš blízko okraja impulzu (k miestu, kde signál na výstupe prijímača mení svoju úroveň).
Predstavte si, že niekoľko mikrosekúnd po bode zlomu by sa mal signál zmeniť z HIGH na LOW. Teraz si predstavte, že konzola vydala príkaz o niečo rýchlejšie ako zvyčajne (stáva sa to pomerne často). Čelo impulzu sa posunulo v čase a teraz sa vyskytuje PRED kontrolným bodom! Výstup z prijímača nezodpovedá vzoru a systém sa resetuje.
Aby ste tomu zabránili, musíte umiestniť kontrolné body ďalej od frontov.

"Všetko je v pohode," poviete, "Ale kde získam kontrolné body?". Tak na tomto som sa zasekol už dlho. V dôsledku toho som sa rozhodol zveriť umiestňovanie bodov vám.
Zariadenie má prepojku J1. Ak je pri zapnutí zatvorený, zariadenie bude hlúpo vysielať všetko, čo IR prijímač vydáva cez UART. Na druhej strane drôtu sú tieto údaje prijímané mojím programom, ktorý zobrazuje impulzy z TSOP na obrazovke počítača. Stačí myšou rozhádzať kontrolné body na tomto grafe a uložiť ich do EEPROM. Ak nie je možné použiť UART, na záchranu príde jumper J2. Keď je zatvorený, zariadenie nevysiela dáta cez UART, ale pridáva ich do EEPROM.


Schéma
Jednoduché až škaredé. Ako ovládač som bral ATTiny2313. Frekvencia 4 megahertz, z kremeňa, alebo interný RC reťazec.
Linky RX a TX pre komunikáciu a napájanie sú privedené do samostatného konektora. Tam sa zobrazuje aj RESET, aby bolo možné preflashovať MK bez odstránenia zo zariadenia.
Výstup fotodetektora je pripojený na INT0, napájaný je cez 33k rezistor. Ak je silné rušenie, môžete tam dať menší odpor, napríklad 10k.
Na kolíkoch D4 a D5 sú prepojky. Jumper1 až D5 a Jumper2 až D4.

Na kolík D6 je pripojený napájací modul. Navyše som si vzal najmenší z tých, čo som mal - BT131. Jeho prúd je 1A - nie je v pohode, ale puzdro nie je príliš veľké - TO92. Pre malú záťaž to stačí. Optočlen som vyrobil na MOC3023 - nemá snímač prechodu nulou, čiže je vhodný na plynulé riadenie záťaže (tu som nerealizoval).

Port B je takmer celý vyvedený na konektor - môžete tam pripojiť indikátor alebo niečo iné. Pri flashovaní zariadenia používam rovnaký konektor. Pin B0 je obsadený LED.

Celé je to napájané cez LM70L05 a diódový mostík. To znamená, že na vstup môže byť privedené striedavé napätie, napríklad z transformátora. Hlavná vec je, že nepresiahne 25 voltov, inak zomrie stabilizátor alebo konder.

Platba je takáto:


Áno, je mierne odlišná od dosky, ktorá je v archíve. To však neznamená, že som zo seba urobil pokročilú dosku a dal som vám demo verziu :). Naopak, moja doska má niekoľko nedostatkov, ktoré nie sú vo finálnej verzii: nemám pin RESET na kolíku a LED visí na PB7. A to nie je príliš priaznivé pre programovanie v obvode.

Firmvér
Zariadenie môže pracovať v dvoch režimoch. V prvom - keď je J2 zatvorený - jednoducho vysiela impulzy z fotodetektora do UART. Začnime s tým:

UART pracuje rýchlosťou 9600, t.j. pri frekvencii 4 MHz zapíšeme do registra UBRR 25.

... počkáme, kým sa noha fotodetektora trhne. Hneď ako spadne (na začiatku visí na pull-up rezistore), spustíme časovač (TIMER / COUNTER1, ten so 16 bitmi) a zapneme prerušenie INT0 pre akúkoľvek zmenu na vstupe - akákoľvek logická zmena (ICS00 = 1). Časovač tiká... čakáme.

Impulz z diaľkového ovládača skončil - výstup z fotodetektora vystrelil, prerušenie fungovalo. Teraz zapíšeme hodnotu časovača do pamäte a resetujeme časovač. Musíte tiež zvýšiť ukazovateľ zápisu, aby ste mohli zapisovať na iné miesto v pamäti v nasledujúcom prerušení.

Ďalší impulz...trhnutie výstupu...prerušenie...zápis hodnoty časovača do pamäte...resetovanie časovača...ukazovateľ + 2 (zapisujeme dva bajty naraz)...

A tak to bude pokračovať, kým nebude jasné, že koniec (RAM) sa blíži. Alebo kým neskončí signál. V každom prípade zastavíme časovač a zakážeme prerušenia. Potom pomaly vyhodíme všetko, čo sme nazbierali, do UARTu. Alebo, ak je J2 zatvorený - v EEPROM.

Na konci sa môžete otupiť do nekonečnej slučky a počkať na reset – misia je splnená.
A výstupom bude postupnosť čísel. Každý z nich predstavuje čas medzi zmenami stavu výstupu TSOP. Keď vieme, ako táto sekvencia začala (A my vieme! Toto je prechod z VYSOKÉHO na NÍZKE), môžeme obnoviť celý obraz:

Po inicializácii sedíme a čakáme, kým TSOP škubne. Hneď ako sa tak stalo, prečítame prvý bod z EEPROM a v jednoduchom cykle otupíme toľko, koľko je tam napísané. V tomto prípade uvažujeme čas v baleniach po 32us. Vychádzajúc zo strnulosti skontrolujeme - na výstupe prijímača je niečo.

Ak výstup nezodpovedal tomu, čo sme očakávali, toto nie je náš tím. Pokojne môžete počkať na koniec signálu a začať odznova.

Ak výstup zodpovedá našim očakávaniam, načítame ďalší bod a skontrolujeme ho. Takže kým nenarazíme na bod, ktorého čas = 0. To znamená, že už nie sú žiadne body. Takže celý tím sa zhodoval a vy môžete ťahať náklad.

Ukazuje sa teda, že ide o jednoduchý algoritmus. Ale čím jednoduchšie, tým spoľahlivejšie!

Softina
Najprv som si myslel, že sa šablóna uloží automaticky. To znamená, že zatvoríte prepojku, strčíte diaľkové ovládanie do TSOP a MK sám nastaví riadiace body a pridá ich do EEPROM. Potom sa ukázalo, že nápad bol šialený: viac-menej adekvátny algoritmus by sa ukázal byť príliš komplikovaný. Alebo to nebude univerzálne.

Druhým nápadom bol program pre počítač, v ktorom si môžete sami nastaviť kontrolné body. Nie príliš technologicky vyspelé, ale čokoľvek je lepšie, ako zveriť tento biznis MK.


Naučíme zariadenie reagovať na požadované tlačidlo na diaľkovom ovládači:

1) Zatvoríme prepojku J1.

2) Pripojte UART. Ak nie je možné ho pripojiť, zatvoríme prepojku J2. Potom zariadenie vyhodí údaje v EEPROM.

3) Zapnite napájanie.

4) Ak sa rozhodneme použiť UART, tak spustíme softvér a pozrieme sa na stavový riadok (v spodnej časti okna). Malo by to byť „otvorený port COM“. Ak to nie je napísané, potom hľadáme zárubňu v spojení a stlačíme tlačidlo "Pripojiť".

5) Vezmeme diaľkový ovládač a stlačíme požadované tlačidlo v TSOP. Hneď ako zariadenie zistí, že signál odišiel, rozsvieti sa LED dióda. Ihneď potom začne zariadenie prenášať dáta cez UART (alebo zapisovať do EEPROM). Keď sa prenos skončí, LED zhasne.

6.1) Ak pracujeme cez UART, tak stlačte tlačidlo „Stiahnuť cez UART“. A my sa radujeme z nápisu „Nahraný graf ...“ v stavovom riadku.

6.2) Ak pracujeme cez EEPROM, tak programátorom načítame pamäť EEPROM a uložíme do súboru * .bin. (Presne bin!). Potom v programe stlačíme tlačidlo “Load.bin” a vyberieme súbor z EEPROM.

7) Pozeráme sa na načítaný graf - toto je signál z TSOP. Na bočnom paneli je posuvník - môžete ním meniť mierku. Teraz strčíme myš do grafu - nastavíme kontrolné body. Body sa vymazávajú pravým tlačidlom. Len ich nedávajte príliš blízko k predným častiam. Ukazuje sa niečo takéto:


8) Kliknite na "Save.bin" a uložte body. Potom tento súbor flashujeme do EEPROM. Keďže čas medzi dvoma bodmi vtesnáme do 7 bitov, je obmedzený na 4 ms. Ak čas medzi dvoma bodmi prekročí túto hodnotu, program odmietne vložiť body do súboru.

9) Odstráňte prepojky. Reštartujeme zariadenie. Pripravený!

Testovacie video

Viackanálový stroj na riadenie záťaže je namontovaný na ATtiny2313 a umožňuje vám automaticky ovládať stavy 8 kanálov (Out_0 - Out_7). Na každom z kanálov sa vytvára signál PWM, ktorého pracovný cyklus je možné meniť podľa vami predpísaného algoritmu (programu). V zariadení je možné použiť až 8 kanálových programov. Program je možné prehrávať v slučke (nekonečné prehrávanie) alebo ho možno prehrať iba raz. Program dokáže…

Sekcia: Tagy:

Keďže som postupne začal vytvárať zariadenia s IR riadiacim protokolom, je čas vytvoriť IR žiarič, cez ktorý je možné tieto zariadenia ovládať. A tiež, vysielač bude potrebný na ďalšiu aktualizáciu firmvéru super girlandy na jej pripojenie k počítaču. Firmvér pre emitor som už v skutočnosti vyrobil skôr, ako jeden z modulov Effector pre smart ...

Sekcia: Značky: ,

Zariadenie v tomto článku je zostavené na ATtiny13 a je určené na ovládanie troch 220 V záťaží pomocou domáceho IR diaľkového ovládača. Zariadenie je vyrobené na základe už známej univerzálnej dosky IR ovládača. Zariadenie je revíziou predtým vyrobeného zariadenia na kontrolu zaťaženia. Na prvý pohľad funkčnosť zariadenia zostala rovnaká, ale existujú zmeny - o nich napíšem nižšie. História stvorenia...

Sekcia: Značky: ,

Obsah: Úvod | Keypad_IR_to_UART | UART_to_Pin | SDC_Talking Zariadenie Keypad_IR_to_UART je navrhnuté tak, aby generovalo správy UART (latinské veľké písmená a čísla) po stlačení klávesov na klávesnici a/alebo akomkoľvek IR diaľkovom ovládači v domácnosti (napríklad z TV). V prvom rade je zariadenie navrhnuté tak, aby spolupracovalo so zariadeniami ovládanými pomocou UART (predovšetkým bolo vyvinuté pre interaktívny stojan), ale môže byť použité…

Sekcia: Tagy:

Zariadenie tohto článku v skutočnosti nie je úplne nové. Bol vyrobený a odladený už veľmi dávno, ale stále som sa nemohol dostať von a napísať článok. A teraz, keď sa vyvíjajú nové zariadenia využívajúce ZiChip, ktoré v budúcnosti umožnia flexibilnejšiu prácu s logikou práce, som mal vo všeobecnosti pochybnosti o ...

Sekcia: Tagy:

Dnešným zariadením bude infračervený senzor priblíženia. Snímač je namontovaný na lacnom mikrokontroléri Attiny13, ľahko sa vyrába a nevyžaduje žiadne nastavovanie. Video z činnosti senzora: Ako sa takýto senzor líši od povedzme továrenských pohybových senzorov (ktoré sa mimochodom stali veľmi cenovo dostupné a lacné)? Hlavným rozdielom je rozsah. Koniec koncov, hotové senzory ...

Sekcia: Tagy:

Už dávno som chcel mať malé diaľkové ovládanie na ovládanie rôznych domácich spotrebičov. A teraz sa nám to konečne dostalo do rúk a bolo dosť voľného času na vytvorenie vlastného univerzálneho diaľkového ovládača! Snažil som sa to urobiť menšie, pohodlnejšie, krajšie ... vo všeobecnosti, pozrite sa, čo sa stalo!

Sekcia: Tagy:

1 Pochybnosti. Dlho som pochyboval o potrebe napísať program na ovládanie počítača z IR diaľkového ovládača. Na jednej strane existuje veľa podobných zariadení / programov (platených aj bezplatných) s dobrou funkčnosťou a do tejto oblasti nemôžem pridať nič nové. Na druhej strane, keďže máme zostavený hardvér (prevodník IR-na-UART), prečo ho nepoužiť ...

kapitola:
bol vyrobený riadiaci modul robota cez IR kanál. Práve o tom by som chcel písať podrobnejšie. Pretože je na to veľa využití.

Vlastne, čo je IR ovládanie - myslím, že nie je potrebné vysvetľovať. Teraz je ovládanie cez Wi-Fi, Bluetooth, ZigBee bežnejšie. Ak však potrebujete jednoduché zariadenie, ktoré sa dá zložiť „na kolene“ s minimálnymi nákladmi, potom je tento článok určený práve vám. =)


Tento článok nebudem viazať na konkrétny mikrokontrolér, ale popíšem všeobecné princípy fungovania IR premo vysielača s AVR MK.

1. Čo sa bude vyžadovať
Pri vytváraní jednoduchého IR ovládania je nevysloveným štandardom použitie prijímača Vishay TSOPxxxx a diódy TSALxxxx ako vysielača.

V označení prijímačov TSOP posledné dve číslice označujú frekvenciu (v kHz), na ktorej je vysielaný signál vnímaný. Pri práci s týmito komponentmi nie sú žiadne zvláštne ťažkosti. Môžete si napísať vlastný prenosový protokol, môžete použiť hotové riešenia. V mojom prípade som sa rozhodol prepojiť dva mikrokontroléry s IR kanálom pomocou USART. Princíp je rovnaký, ako keby sme dva MK spojili obyčajnými vodičmi. Nuansa je len v modulácii nosnej frekvencie a v nastavení časovača.

2. Schémy
Aby sme neoplotili záhrady, použijeme schému začlenenia TSOP z jej údajového listu:

Výstup TSOP musí byť pripojený priamo k vstupu (RX) USART MK.

S pripojením vysielača je situácia mierne odlišná. Keďže prijímač pracuje len na určitej frekvencii, musíte rovnakú frekvenciu nastaviť aj na vysielači. Naprogramovaním časovača to nie je ťažké. Pre ATmega16 to bude vyzerať takto:
TCCR1A=0x40;
TCCR1B=0x09;
OCR1AH=0x00;
OCR1AL=0x84;

Požadovanú frekvenciu možno vyjadriť pomocou vzorca:

OCRn - bude požadovaná hodnota, ktorú je potrebné previesť do hexadecimálneho formátu a zapísať do registra OCR1A (pre prípad ATmega16 MK).

Teraz TSOP prijme náš signál. Aby sme ale mohli použiť USART, musíme náš signál modulovať. Aby to bolo možné, pripojíme IR diódu podľa schémy:

3. Nejaký kód
Firmvér som napísal v CodeVision AVR.

Takto bude vyzerať kód vysielača:
#include
#include

Void main(void)
{
PORTB=0x00;
DDRB=0x02;

DDRC=0x00;
PORTC=0xFF;

TCCR1A=0x40;
TCCR1B=0x09;
OCR1AH=0x00;
OCR1AL=0x84; // Tu zadáme hodnotu pre vašu frekvenciu

// Parametre komunikácie: 8 Dáta, 1 Stop, Bez parity
// Režim USART: Asynchrónny
// Prenosová rýchlosť USART: 2400
UCSRA=0x00;
UCSRB=0x08;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0xCF;

Kým (1)
{

If (PINC.4 == 0x00) ( putchar("S");)/* V tomto prípade, keď stlačíte tlačidlo, ktoré visí na PINC.4, MK odošle znak "S". Ktorý sa prenáša do iného ovládača cez IR. */
};
}

Kód prijímača neuvádzam, pretože zaberá veľa miesta, ale pre vnímanie všeobecných princípov kódu vysielača si myslím, že to bude stačiť.

Okrem diaľkového ovládania (hoci už ide o rozsiahlu oblasť použitia) môžete túto metódu použiť aj pre senzory prechádzajúce prekážkami / objektmi, a ak máte veľa takýchto senzorov a pracujú na rovnakej frekvencii, potom aby sa navzájom neosvetľovali, môžete prenášať rôzne pakety.

Veľa štastia! Budem rád za každú otázku/kritiku/návrh ;)

UPD. Rozhodol som sa zverejniť fotografiu samotného diaľkového ovládača, aby bolo vidieť, že zariadenie funguje nielen ako čínske prijímače, ktoré sa pripájajú k PC. Možnosti sú oveľa širšie a všestrannejšie.