Midrange PIC a dálkové ovládání

Jindrich Fucik fulda na seznam.cz
Pátek Duben 26 09:43:58 CEST 2019


Ahoj vespolek,

Řeším takový logický problém. Potřebuji z Midrange PICu (16F153xx) udělat IR dálkový ovladač. To není nic neobvyklého. Já se trochu bavím tím, jak to udělat co nejjednodušší. Chtěl bych použít co nejmenší kmitočet, abych měl co nejmenší spotřebu. Proto se mi moc nechce generovat signál pomocí odpočítávání instrukcí a tak přemýšlím, jakou periferii by bylo vhodné na danou akci "znásilnit".

Začnu popisem signálu, jedná se o běžný 38kHz IR vysílač, takže "mark" je definovaný jako 6 pulzů na kmitočtu 38kHz (26,3 μs) a pak následuje mezera podle toho, jestli posílám 0 nebo 1. Pro 0 je mezera 10 pulzů (263 μs) pro 1 je mezera 21 pulzů (552 μs) (viz obrázková příloha dole).

Teď je otázka, jakou periferii na to znásilnit. Zatím jsem uvažoval o sériovém portu. Pokud bude start bit první pulz, pak následuje 0 jako mezera a pak skupiny 10 jako další pulzy, tak při použití 9 bitového slova mi to vychází S01010101tS00000000t ("S" je start bit, který je 1 a "t" je stop bit, který je 0). Tím bych dostal 6 pulzů (mark) a první 4 pulzy mezery. Dále už sériovku nemohu použít, protože potřebuji odstavit další start bit. To zní moc hezky, až na to, že budu muset ručně sledovat obsazení vysílacího bufferu a po jeho uvolnění spustit časovač pro mezeru. Takže to asi není dobrý nápad.
Další možnost je použití kombinací časovačů, nebo CLC, to budu muset prozkoumat.

Nedělal jste někdo nějaké podobné pokusy?

Obrázková příloha:
┌┐┌┐┌┐┌┐┌┐┌┐
┘└┘└┘└┘└┘└┘└ IR Mark (6x pulse, 38kHz)

█_█_█_█_█_█_ IR Mark (6x pulse, 38kHz)

█_█_█_█_█_█_▄_▄_▄_▄_▄_▄_▄_▄_▄_▄_ Logical 0 (6x pulse + 10x pause)

█_█_█_█_█_█_▄_▄_▄_▄_▄_▄_▄_▄_▄_▄_▄_▄_▄_▄_▄_▄_▄_▄_▄_▄_▄_ Logical 1 (6x pulse + 21x pause)

Díky


Další informace o konferenci Hw-list