IR ovládací obvod. IR dálkové ovládání. Teorie řízení. Infračervené bezdrátové dálkové ovládání: princip fungování

Několik podrobností o BEAM (nafukovací komora Mezinárodní vesmírné stanice).

Modul BEAM (Bigelow Expandable Activity Module) byl dodán na oběžnou dráhu 8. dubna 2016 v beztlakovém prostoru Dragonu. Pokud vše půjde podle plánu, tak ve dnech 15. – 16. dubna 2016 bude BEAM pomocí manipulátoru ukotven k ISS a 25. – 26. května bude nafouknut.

Objem BEAMu při zhroucení je 3,6 metrů krychlových, při roztažení - 16,0 metrů krychlových.

Plášť se skládá z několika vrstev, které obsahují materiál Vectran. Vectran je silnější než Kevlar a je navržen tak, aby odolal mikrometeoritům a vesmírnému odpadu. Tento materiál již ve vesmíru fungoval – konkrétně byl použit ve válcích tlumících nárazy při přistávání roverů Spirit a Opportunity.

BEAM navíc není první nafukovací kosmická loď. Vývojářská společnost Bigelow Aerospace již technologii testovala na bezpilotních vozidlech Genesis I a Genesis II (2006-2007).

Oba Genesis měly 15centimetrový „kůže“ a zůstaly zapečetěny alespoň několik let po startu. Zařízení jsou stále na oběžné dráze, ale jejich vnitřní parametry nejsou monitorovány.

BEAM je na rozdíl od Genesis umístěn jako obyvatelný modul, ale po připojení k ISS v něm lidé nebudou žít, pracovat ani skladovat materiály Naměřené hodnoty ze senzorů záření budou porovnány s daty ze stejných senzorů uvnitř ISS.
Animace:

Pokud budou dvouleté testy úspěšné, pak bude v budoucnu možné z podobných modulů stavět vesmírné stanice a kolonie na Měsíci a Marsu.

Kromě úspory místa při uvedení na trh patří mezi výhody tohoto designu lepší vlastnosti pohlcování zvuku textilií ve srovnání s tradičním hliníkovým opláštěním. A problém hluku na ISS je velmi akutní: kvůli němu


byl vytvořen řídicí modul robota přes IR kanál. Právě o tom bych chtěl psát podrobněji. Protože na to najdete spoustu aplikací.

Vlastně si nemyslím, že je potřeba vysvětlovat, co je IR ovládání. Nyní je běžnější ovládání přes Wi-Fi, Bluetooth, ZigBee. Pokud ale potřebujete jednoduché zařízení, které lze sestavit „na koleně“. minimální náklady, pak je tento článek právě pro vás. =)


Tento článek nebudu vázat na konkrétní mikrokontrolér, ale popíšu obecné principy činnosti IR předvysílače s AVR MK.

1. Co potřebujete
Při vytváření jednoduchého IR ovládání je nevysloveným standardem použití přijímače Vishay TSOPxxxx a diody TSALxxxx jako vysílače.

V označení přijímačů TSOP označují poslední dvě číslice frekvenci (v kHz), na které je vnímán přenášený signál. Při práci s těmito součástmi nejsou žádné zvláštní potíže. Můžete si napsat svůj vlastní přenosový protokol, který již můžete používat hotová řešení. V mém případě jsem se rozhodl propojit dva mikrokontroléry s IR kanálem pomocí USART. Princip je stejný, jako kdybychom spojili dva MK obyčejnými dráty. Jediná nuance je v modulaci nosné frekvence a nastavení časovače.

2. Schémata
Abychom nedělali povyk, použijeme schéma přepínání TSOP z jeho datového listu:

Výstup TSOP musí být připojen přímo ke vstupu USART (RX) MK.

Při připojení vysílače je situace trochu jiná. Vzhledem k tomu, že přijímač pracuje pouze na určité frekvenci, musíte stejnou frekvenci nastavit na vysílači. To není obtížné provést naprogramováním časovače. Pro ATmega16 to bude vypadat takto:
TCCR1A=0x40;
TCCR1B=0x09;
OCR1AH=0x00;
OCR1AL=0x84;

Požadovanou frekvenci lze vyjádřit vzorcem:

OCRn - zde bude požadovaná hodnota, kterou je nutné převést do hexadecimálního formátu a zapsat do registru OCR1A (pro případ ATmega16 MK).

Nyní TSOP přijme náš signál. Abychom ale mohli používat USART, musíme náš signál modulovat. Abychom to mohli udělat, připojíme IR diodu podle schématu:

3. Malý kód
Firmware jsem napsal v CodeVision AVR.

Takto bude vypadat kód vysílače:
#zahrnout
#zahrnout

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

DDRC=0x00;
PORTC=0xFF;

TCCR1A=0x40;
TCCR1B=0x09;
OCR1AH=0x00;
OCR1AL=0x84; // Zde zadejte hodnotu pro vaši frekvenci

// Parametry komunikace: 8 Data, 1 Stop, Bez parity
// Režim USART: Asynchronní
// Přenosová rychlost USART: 2400
UCSRA=0x00;
UCSRB=0x08;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0xCF;

Zatímco (1)
{

If (PINC.4 == 0x00) ( putchar("S"));)/* In v tomto případě Když stisknete tlačítko, které visí na PINC.4, MK vyšle symbol „S“. Který je přenášen do jiného ovladače přes IR.*/
};
}

Neposkytuji kód přijímače, protože... zabírá hodně místa a pro vnímání obecné zásady Myslím, že kód vysílače bude stačit.

Kromě dálkového ovládání (i když to je již široká škála aplikací) můžete tuto metodu použít pro senzory průchodu překážkou/objektem, a pokud takových senzorů máte hodně a fungují na stejné frekvenci, tak tak, vzájemně se neosvětlují, můžete přenášet různé pakety.

Přeji hodně štěstí! Budu rád za jakékoli dotazy/kritiku/návrhy ;)

UPD. Rozhodl jsem se zveřejnit fotku samotného dálkového ovladače, aby bylo vidět, že zařízení funguje nejen jako čínské přijímače, které se připojují k PC. Možnosti jsou mnohem širší a všestrannější.

Čip ovladače komutátorový motor, IR dálkové ovládání, Rádiový modul NRF24L01, OKI 120A2, Modul SD karty, Čip ovladače motoru, M590E GSM GPRS modem, Hodiny reálného času DS 3231/DS 1307, Mini 360 na okruhu LM2596, L293D, Infračervené senzory vzdálenosti, Hodiny reálného času, HC-SR501, Napájení Mini 360 na obvodu LM2596, ovladač L298N, HC-SR501, GSM GPRS, M590E GSM GPRS modem, hodiny reálného času DS 3231/DS 1307, Wi-Fi modul ESP8266-12E, Modul karty, Napájení, Mini 360, L293D, Napájení Mini 360 na obvodu LM2596, Rádiový modul, IR dálkové ovládání, Ethernetový štít, Čip ovladače motoru kartáče, Čip ovladače motoru kartáče, IR dálkové ovládání, Modul karty SD , Rádiový modul NRF24L01, motor OKI, L293D, Krokový motor, Zdroj, L293D, Napájení Mini 360 na obvodu LM2596, Paměťová karta SD, Ethernet shield, pohybový senzor HC-SR501, Wi-Fi modul ESP8266-12E, krokový motor OKI 120A2, krokový motor,

Výměna dat v infračerveném rozsahu

Pro zajištění spolehlivého příjmu a garantovaná ochrana proti rušení se používá modulace signálu a kódování. Přenos dat se provádí v blízkosti viditelné infračervené spektrum. Vlnová délka ve většině implementovaných systémů se pohybuje mezi 800–950 nm. Nejjednodušší způsob, jak se zbavit hluk na pozadí- modulovat (vyplňovat) signál při vysílání jedné ze standardních frekvencí: 30, 33, 36, 37, 38, 40, 56 kHz. Na tyto frekvence jsou naladěny všechny moderní integrované přijímače.

Pro zajištění dostatečného dosahu při vysílání kódové sekvence je nutné tvořit silný signál. Proud přes IR LED může dosáhnout 1 A - takové proudy jsou v pulzním režimu zcela přijatelné, zatímco průměrný ztrátový výkon by neměl překročit maximální přípustnou hodnotu uvedenou v dokumentaci.

Rozvinutý velký počet specializované čipy(SAA3010, GS8489, KS51840 atd.), generuje připravenou kódovou sekvenci a spotřebovává minimální proud v pohotovostním režimu, což je důležité při napájení z baterií. Tyto mikroobvody výrazně zjednodušují konstrukci dálkových ovladačů (RC). Když stiskneme tlačítko dálkového ovládání, aktivuje se čip vysílače a vygeneruje kódovou sekvenci s určenou náplní. LED převádí tyto signály na infračervené záření. Vyzařovaný signál je přijímán fotodiodou, která opět převádí IR záření na elektrické impulsy. Tyto impulsy jsou zesíleny a demodulovány čipem přijímače. Poté jsou vedeny do dekodéru. Dekódování se obvykle provádí softwarově pomocí mikrokontroléru.

Přijímač IR dálkového ovládání musí obnovit data s dvoufázovým kódováním a reagovat na velké rychlé změnyúroveň signálu bez ohledu na rušení. Šířka impulsu na výstupu přijímače by se neměla lišit od jmenovité o více než 10 %. Přijímač musí být také necitlivý na stálé vnější světlo. Splnit všechny tyto požadavky je poměrně obtížné. Starší implementace IR přijímače dálkového ovládání, dokonce i ty používající specializované čipy, obsahovaly desítky komponent. Takové přijímače často používaly rezonanční obvody naladěné na plnicí frekvenci. To vše ztěžovalo konstrukci a konfiguraci a vyžadovalo použití dobrého stínění.

V v poslední době Rozšířily se tříkolíkové integrované IR přijímače dálkového ovládání (SFH5110-xx, TSOP17xx, TFMS5хх0 atd.). V jednom balení kombinují fotodiodu, předzesilovač a tvarovač. Výstup generuje běžný TTL signál bez výplně, vhodný pro další zpracování mikrokontrolérem. Většina důležitý parametr při výběru přijímače - frekvence plnění.

Vnitřní zesilovač integrovaného přijímače má vysoké zesílení, proto pro eliminaci samobuzení a eliminaci vlivu šumu v napájecích obvodech je nutné použít elektrolytický kondenzátor o kapacitě minimálně 4,7 μF, zapojený jako co nejblíže pinu VCC.

Připojení IR přijímače

Jako IR přijímač dálkového ovládání používáme čip TSOP31236. V jednom balení kombinuje fotodiodu, předzesilovač a tvarovač. Výstup generuje běžný TTL signál bez výplně, vhodný pro další zpracování mikrokontrolérem. Nosná frekvence je 36 kHz, výstup je inverzní, to znamená, že pokud není signál, přijde na pin logická „1“ a když se objeví signál, pošle logickou „0“.

Knihovna IRvzdálený

Můžete zjistit protokol vašeho dálkového ovládání a napsat náčrt pro příjem kódů odeslaných z dálkového ovládání. Naštěstí již byla napsána univerzální knihovna pro příjem a zpracování kódů z libovolného dálkového ovladače – IRremote.

Soubory knihovny najdete ve složce libraries/IrRemote doprovázející knihu. elektronický archiv. Chcete-li knihovnu použít ve svých projektech, umístěte je do složky libraries v adresáři Instalace Arduina. Náčrt pro příjem kódu a jeho odeslání na sériový port uvedené v příkladu.

#zahrnout

int RECV_PIN = 11;

IRrecv irecv(RECV_PIN); výsledky decode_results;

void setup()

Serial.begin(9600);

irecv.enableIRIn(); // povolení přijímače

void loop()

if (irrecv.decode(&results))

Serial.println(vysledky.hodnota, HEX); irecv.resume(); // získat další hodnotu

Můžete také vysílat IR příkazy. Podporované protokoly: NEC, Sony SIRC, Philips RC5, Philips RC6. Vysílací IR LED musí být připojena na pin 3. Náčrt pro odeslání IR kódu je uveden v příkladu.

#zahrnout IRsend irsend;

void setup()

Serial.begin(9600);

void loop()

if (Serial.read() != -1)

for (int i = 0; i< 3; i++)

irsend.sendSony(0xa90, 12); // zpoždění kódu napájení televizoru Sony(100);

Náčrt pro příjem kódů IR dálkového ovládání

Prvním úkolem je získat seznam klíčových kódů pro náš dálkový ovladač.

Pojďme definovat seznam tlačítek dálkového ovládání pro ovládání:

<>- pohyb vpřed;

<↓>- pohyb vzad;

<←>- odbočit doleva;

<→>- odbočit vpravo;

<–CH>- zvýšení rychlosti při pohybu vpřed/vzad;

- snížení rychlosti při pohybu vpřed/vzad;

<–VOL>- kruhový pohyb na místě doleva;

- kruhový pohyb na místě doprava;

<0>- zastavení robota.

Spusťte náčrt z příkladu a získejte kódy potřebné klíče pro váš dálkový ovladač. Hodnoty kódu jsou odesílány na sériový port.

#zahrnout

void setup()

// přerušení pro IR

void loop()

// zpracování kódu kliknutí if(ir_kod>0)

ir_go(ir_kod); Serial.println(ir_kod); ir_kod=0;

// získání kódu odeslaného z IR dálkového ovládání void get_ir_kod()

odpojitInterrupt(0); // deaktivace přerušení 0 if (irrecv.decode(&results))

if (results.value > 0 && results.value< 0xFFFFFFFF)

// Uplynula 1 sekunda?

if (ir_time2-ir_time1>1000)

(ir_kod = ir_dt;ir_time1=ir_time2;)

jiný

ir_kod = 0;

irecv.resume();

Zapišme je jako konstanty

#define VPŘED 1936 //

#define ZPĚT 3984 // ↓

#define SPEED_UP 144 //ch+

#define VLEVO 3472 // ←

#define RIGHT 1424 // →

#define STOP 2320 // 0 - stop

Příjem příkazu z dálkového ovládání určíme přerušením 0 (na digitálním pin2). Po přerušení se spustí procedura get_ir_kod(), která určí kód přicházející z dálkového ovladače a zapíše jej do proměnné ir_kod. Procedura loop() kontroluje proměnnou ir_kod, a pokud je proměnná nenulová (přijímá kód z dálkového ovládání), zavolá výstupní proceduru akce ir_go(). Na v této fázi- toto je výstup na sériový port akce očekávané stisknutím klávesy.

Tento náčrt je uveden v příkladu.

Výsledek příkazu z dálkového ovládání se zobrazí na monitoru sériového portu.

#zahrnout

// vstup IR přijímače int RECV_PIN = 2;

IRrecv irecv(RECV_PIN); výsledky decode_results; unsigned long ir_dt, old_ir; dlouhý ir_kod;

unsigned long ir_time1, ir_time2;

// Kódy IR dálkového ovladače (marmitek)

#define FORWARD 1936

#define ZPĚT 3984

#define SPEED_UP 144 //ch+

#define SPEED_DOWN 2192 //ch-

#define LEFT 3472

#define RIGHT 1424

#define CIRCLE_LEFT 3216 //vol+

#define CIRCLE_RIGHT 1168 //vol-

#define STOP 2320 //0

void setup()

// sériový port Serial.begin(9600);

// povolení přijímače irecv.enableIRIn(); ir_time1=0;ir_time2=0;

// přerušení pro IR

// FALLING – vyvolání přerušení při změně úrovně napětí

// z vysoké (HIGH) do nízké (LOW) attachmentInterrupt(0, get_ir_kod, FALLING);

void loop()

// zpracování kódu kliknutí if(ir_kod>0)

ir_go(ir_kod); ir_kod=0;

// získání kódu odeslaného z IR dálkového ovládání void get_ir_kod()

odpojitInterrupt(0); // zakázat přerušení 0

if (irrecv.decode(&results))

if (results.value > 0 && results.value< 0xFFFFFFFF)

ir_dt = výsledky.hodnota; ir_time2=millis();

// Uplynula 1 sekunda?

if (ir_time2-ir_time1>1000)

(ir_kod = ir_dt;ir_time1=ir_time2;) jinak

ir_kod = 0;

irecv.resume();

// aktivace procedury přerušení 0 attachmentInterrupt(0, get_ir_kod, FALLING);

// akce na základě přijatého kódu void ir_go(kod)

přepínač (kód)

case FORWARD: // směr vpřed Serial.print("forward\n");

přerušení;

case BACK: // zpětný směr Serial.print("zpět\n");

přerušení;

case SPEED_UP: // speed++ Serial.print("speed++\n"); přerušení;

case SPEED_DOWN: // rychlost-- Serial.print("speed--\n"); přerušení;

case LEFT: // doleva Serial.print("left\n"); přerušení;

case RIGHT: // doprava Serial.print("right\n"); přerušení;

case CIRCLE_RIGHT: // kruh doprava Serial.print("kruh_vpravo\n"); přerušení;

case CIRCLE_LEFT: // kruh vlevo Serial.print("circle_left\n"); přerušení;

case STOP: // stop Serial.print("stop\n"); přerušení;




Nahoru