veiner.eu
ÚVOD
ZAPOJENÍ
PROGRAM

Náhradní dálkový TV ovladač - zapojení

10.8.2019

remote

remote remote

Po stisknutí některého ze 6ti tlačítek se prostřednictvím IR diody odešle přednastavený kód.

Detekce stisku tlačítek

Všech šest pinů portu A má funkci "Interrupt On Change" neboli vyvolání přerušení při změně napěťové úrovně na některém z pinů. Pro využití této funkce je třeba nastavit piny jako vstupní (registr TRISA) a povolit funkci pro každý pin (registr IOCA). Taktéž využiju interní pull-up funkci (registr WPUA a bit RABPU v registru INTCON2) - piny budou registrovat úroveň 1 bez nutnosti použít externí rezistory.

TRISA=0x37;
WPUA=0x3F;
INTCON2bits.RABPU=0;
IOCA=0x3F;

Odeslání kódu

Kódy jsou v programu uloženy ve formě čtveřice bytů. Odesílání kódu spočívá v prostém "blikání" IR diodou, přičemž nejdříve jsou odesílány nejnižší bity. Je třeba blikat s frekvencí 38 kHz neboli jeden cyklus trvá 1/38000 s = 26.316 us. Doporučená délka pulsu je 1/4 nebo 1/3 této doby, což dělá 6.579 us nebo 8.772 us (zvolil jsem první možnost).

Proces vysílání kódu se skládá ze sledů těchto pulsů přerušovaných mezerami, kdy dioda nesvítí. Pulsy realizuju pomocí PWM (doba po kterou mají být pulsy vysílány řídí časovač Timer0) a pauzy prostým pozdržením programu potřebnou dobu. Nastavení časovače Timer0, Timer2 a PWM:

T0CON=0b01001000;
INTCONbits.TMR0IE=1;
INTCONbits.TMR0IF=0;

T2CON=0b0000000;
PR2=12;

CCP1CON=0b00010000;
CCPR1L=0b00000011;
PSTRCON=1;

Více o způsobu odesílání jedniček a nul v textu o Dálkovém ovládání PC (popis je tam proveden z pohledu IR přijímače, kdy je signál na jeho výstupu invertovaný).