Sända IR med hjälp av UART
Postat: 10 januari 2011, 13:31:40
Dom flesta IR-sändare (fjärrkontroll, inte IRDA) fungerar antingen med bitbang mot en portbit på serieport eller parallellport, eller med en hårdvarutimerutgång. Vanlig bärfrekvens är runt 38-40kHz.
Skulle man inte kunna fixa denna bärfrekvens genom att sända UART-data med lämplig baudrate, och sedan modulera det genom att ändra den data man sänder?
För 1-signal, aktiv bärvåg, så skulle man kunna använda 38400Hz, t.ex 76800 bit/s med varannan bit hög och varannan låg, i.e $55. För 0-signal, inaktiv bärvåg, så sänder man ingenting. Eller för att kunna hålla tecken som "timing", så sänder man $00. Visserligen så blir det en avvikande bit i form av stoppbiten som kommer att ge en kort puls var tionde bit, men det borde knappast vara ett problem. Frekvensen på den enstaka biten blir ju ca 1/5 av huvudfrekvensen, eller ca 8kHz. Detta avviker så mycket från 38-40kHz att det knappast kan detekteras som bärvåg efter passage av filterna i mottagaren.
Det enda man då skulle behöva göra är att modulera sändningarna med lämpliga "tecken" som motsvarar varannan "1" och "0" resp. bara "0". Detta borde bli rätt effektivt med processorkraft eftersom det enda som behöver göras är att stoppa ner byte i UART:en med ungeför 4000 tecken per sekund.
Den stora vinsten är då på t.ex PC-maskiner där man vill ha en IR-sändare. Antingen kör man "bitbang" via någon av portarna (parallell/serie) eller så kopplar man på en intelligent mikrokontrollerstyrd sändare. Båda varianterna finns givetvis både att bygga och att köpa. Det här är bara en tredje variant som borde vara lika enkel att bygga som bitbangvarianten, men ändå nästan lika oberoende av PC:ns timing som mikrokontrollervarianten.
Vad tror ni om dessa tankar?
Skulle man inte kunna fixa denna bärfrekvens genom att sända UART-data med lämplig baudrate, och sedan modulera det genom att ändra den data man sänder?
För 1-signal, aktiv bärvåg, så skulle man kunna använda 38400Hz, t.ex 76800 bit/s med varannan bit hög och varannan låg, i.e $55. För 0-signal, inaktiv bärvåg, så sänder man ingenting. Eller för att kunna hålla tecken som "timing", så sänder man $00. Visserligen så blir det en avvikande bit i form av stoppbiten som kommer att ge en kort puls var tionde bit, men det borde knappast vara ett problem. Frekvensen på den enstaka biten blir ju ca 1/5 av huvudfrekvensen, eller ca 8kHz. Detta avviker så mycket från 38-40kHz att det knappast kan detekteras som bärvåg efter passage av filterna i mottagaren.
Det enda man då skulle behöva göra är att modulera sändningarna med lämpliga "tecken" som motsvarar varannan "1" och "0" resp. bara "0". Detta borde bli rätt effektivt med processorkraft eftersom det enda som behöver göras är att stoppa ner byte i UART:en med ungeför 4000 tecken per sekund.
Den stora vinsten är då på t.ex PC-maskiner där man vill ha en IR-sändare. Antingen kör man "bitbang" via någon av portarna (parallell/serie) eller så kopplar man på en intelligent mikrokontrollerstyrd sändare. Båda varianterna finns givetvis både att bygga och att köpa. Det här är bara en tredje variant som borde vara lika enkel att bygga som bitbangvarianten, men ändå nästan lika oberoende av PC:ns timing som mikrokontrollervarianten.
Vad tror ni om dessa tankar?