Bygga IR sändare, 38kHz modulerad
Bygga IR sändare, 38kHz modulerad
Tänkte bygga en liten mini fjärrkontorll för att kuna styra de vanligaste komandona på min TV, Box och stereo. Tänkte programera en PIC för ändamålet, har inte bestämt vilken ännu, men en enklare blir det. Koderna för enheterna hittas lätt på nätet för multifjärrar. Har nu lite funderingar på IR delen. Jag vet i stora drag hur fjärrkontrollena är uppbyggda, en modulering på 38kHz och pulståg med 600uS. Men hur fixar jag till moduleringen?
Det går kanske att fixa lätt med en 555? Nån annan krets som är bättre för ändamålet?
Hur känsligt är det med 38kHz? är det 38.0000 eller kan det svänga några %?
Går det att skriva koden så moduleringen sköts av PIC en utan externa komponenter? Är det en bra lösning i så fall? Finns det nån exempelkod?
Så har ni synunker kom fram med dem bara!!
Det går kanske att fixa lätt med en 555? Nån annan krets som är bättre för ändamålet?
Hur känsligt är det med 38kHz? är det 38.0000 eller kan det svänga några %?
Går det att skriva koden så moduleringen sköts av PIC en utan externa komponenter? Är det en bra lösning i så fall? Finns det nån exempelkod?
Så har ni synunker kom fram med dem bara!!
- Jine
- Inlägg: 1795
- Blev medlem: 21 juli 2004, 20:25:56
- Skype: Jim.Nelin
- Ort: Trångsund, Stockholm
- Kontakt:
Re: Bygga IR sändare, 38kHz modulerad
Japp det går, $tiff hjälpte mig med det förut.. Googla lite och du skall finna det du sökertops skrev: Går det att skriva koden så moduleringen sköts av PIC en utan externa komponenter? Är det en bra lösning i så fall? Finns det nån exempelkod?

(Eller sök på forumet, för tråden finns nånstans här)
> Det går kanske att fixa lätt med en 555?
*Bärvågen* är nog inga problem problem med en 555'a. Det är ju bara
en 38 Khz signal. *Moduleringen* behövs det något annat till.
> Hur känsligt är det med 38kHz?
Inte speciellt känsligt. +/- ett par % är helt OK.
Vilket betyder att du mycket väl kan köra med INTOSC på de lite
nyare PICs.
> Går det att skriva koden så moduleringen sköts av PIC en utan externa komponenter?
Absolut !
Enklast är att ta en med PWM modul som programmeras till 38 Khz.
Då går bärvägen ut automatiskt, kan man säga.
Sedan har man kod som (t.ex via en timer) sätter PWM modulen av/på
med lämliga intervall (d.v.s själva "moduleringen" av IR-koderna).
Lägg upp tabeller som beskriver de olika "kommandona" och skriv en
"motor" som läser tabellen och kör PWM modulen av/på.
Tillkommer lite "user-interface", vad du nu har tänkt dig...
Ta gärna en hyggligt modern PIC (t.ex 12F683 eller 16F88 eller nästan
vilken PIC18 som helst) med PWM modul, så är det inga problem.
*Bärvågen* är nog inga problem problem med en 555'a. Det är ju bara
en 38 Khz signal. *Moduleringen* behövs det något annat till.
> Hur känsligt är det med 38kHz?
Inte speciellt känsligt. +/- ett par % är helt OK.
Vilket betyder att du mycket väl kan köra med INTOSC på de lite
nyare PICs.
> Går det att skriva koden så moduleringen sköts av PIC en utan externa komponenter?
Absolut !
Enklast är att ta en med PWM modul som programmeras till 38 Khz.
Då går bärvägen ut automatiskt, kan man säga.
Sedan har man kod som (t.ex via en timer) sätter PWM modulen av/på
med lämliga intervall (d.v.s själva "moduleringen" av IR-koderna).
Lägg upp tabeller som beskriver de olika "kommandona" och skriv en
"motor" som läser tabellen och kör PWM modulen av/på.
Tillkommer lite "user-interface", vad du nu har tänkt dig...
Ta gärna en hyggligt modern PIC (t.ex 12F683 eller 16F88 eller nästan
vilken PIC18 som helst) med PWM modul, så är det inga problem.
>> sodjan
ist jag provade gick det bra med ±2 kHz på bärvågen, inte alls noga med alltså.
>> Jine
Det jag hjälpt dig med, vad jag kan minnas, är bara att skapa bärvågen utan att ha tillgång till PWM-modulen, alltså en form av bit-banging med 38 kHz bärvåg.
>> tops
Lyssna på sodjan, skaffa en PIC med PWM-modul, och lär dig konfigurera den, så slipper du bry dig om bärvågen på 38 kHz. Då kan du istället koncentrera dig på själva protokollet.
Färdig kod för IR-sändare borde finnas på nätet, har du tur så hittar du någon med samma protokoll som just din fjärr, det finns nämligen en handfull av standarder på detta området.
Det går bra att köra med endast en PIC, förutom om du vill köra en IR-diod på full styrka, eller driva flera parallellt, då behöver du en transistor för att driva dem.
ist jag provade gick det bra med ±2 kHz på bärvågen, inte alls noga med alltså.
>> Jine
Det jag hjälpt dig med, vad jag kan minnas, är bara att skapa bärvågen utan att ha tillgång till PWM-modulen, alltså en form av bit-banging med 38 kHz bärvåg.
>> tops
Lyssna på sodjan, skaffa en PIC med PWM-modul, och lär dig konfigurera den, så slipper du bry dig om bärvågen på 38 kHz. Då kan du istället koncentrera dig på själva protokollet.
Färdig kod för IR-sändare borde finnas på nätet, har du tur så hittar du någon med samma protokoll som just din fjärr, det finns nämligen en handfull av standarder på detta området.
Det går bra att köra med endast en PIC, förutom om du vill köra en IR-diod på full styrka, eller driva flera parallellt, då behöver du en transistor för att driva dem.
> ist jag provade gick det bra med ±2 kHz på bärvågen, inte alls noga med alltså.
Jag har för mig att det finns diagram i databladet som visar hur känsligheten
hos en IR-mottagare avtar när man hamnar "snett" med bärvågen.
Min *gissning* utan att ha letat allt för mycket (d.v.s inget alls) är att
eventuell kod på nätet bit-bangar även bärvågen (d.v.s utan att ta
hjälp av hårdvara som t.ex en PWM modul). Det finns allt för mycket kod
på nätet med passerat bäst-före datum...
Jag har för mig att det finns diagram i databladet som visar hur känsligheten
hos en IR-mottagare avtar när man hamnar "snett" med bärvågen.
Min *gissning* utan att ha letat allt för mycket (d.v.s inget alls) är att
eventuell kod på nätet bit-bangar även bärvågen (d.v.s utan att ta
hjälp av hårdvara som t.ex en PWM modul). Det finns allt för mycket kod
på nätet med passerat bäst-före datum...

- bengt-re
- EF Sponsor
- Inlägg: 4829
- Blev medlem: 4 april 2005, 16:18:59
- Skype: bengt-re
- Ort: Söder om söder
- Kontakt:
Har kört med både bitbang och CCP och båda fungerar bra. Sist jag körde lät jag CCP´n lägga ut bärvågen hela tiden och sänkte bara med en annan I/O-pinne. Lite överkurs att offra två pinnar, men enkelt att programmera iaf...
Hårdkodade komandon går bra att köra ut ifrån en 10F204 - den är för slö, saknar EEPROM, har för lite minne för att göra en självlälrande frjärr av, men hårdkoda för volym upp/ner eller något så enkelt är smidigt. Kul också att kunna göra en fjärr som med batteri och två knappar är 12x6x10mm.....
Hårdkodade komandon går bra att köra ut ifrån en 10F204 - den är för slö, saknar EEPROM, har för lite minne för att göra en självlälrande frjärr av, men hårdkoda för volym upp/ner eller något så enkelt är smidigt. Kul också att kunna göra en fjärr som med batteri och två knappar är 12x6x10mm.....
- bengt-re
- EF Sponsor
- Inlägg: 4829
- Blev medlem: 4 april 2005, 16:18:59
- Skype: bengt-re
- Ort: Söder om söder
- Kontakt:
Hinderdetektering kräver ingen avancerad sändare... det är bara on bärvåg i 600us off bärvåg i 1ms och detektera om du får signal eller inte på din IR-mottagare modul.
Vill du "mäta" avstånd så kan du snedställa bärvågsfrekvensen lite för att minska räckvidden när du fått hinderdetektion. Jag gjorde till en robot 38kHz generator med 12f629 som gick styra från "huvudprocessorn" med två inputpinnar vilka gav mig 38, 39, 40 och 42 kHz har jag för mig. Då kunde man få robboten att hålla ett "konstant" avstånd. Logiken - kontakt 42 eller 40kHz backa, 38KHz kör framåt 39 kHz stå kvar... Det blir lite ryckigt, men fungerar.
EDIT:
Ja, om man kör 16F876A eller likande som har CCP så kan man skapa bärvågen där, MEN mitt problem var störningar - IR-mottagarmodulerna är duktiga på att plocka upp elektriska störningar och därför placerade jag sändaren med en egen liten PIC precis vid sändarleden (satt lödda på samma kort)
Vill du "mäta" avstånd så kan du snedställa bärvågsfrekvensen lite för att minska räckvidden när du fått hinderdetektion. Jag gjorde till en robot 38kHz generator med 12f629 som gick styra från "huvudprocessorn" med två inputpinnar vilka gav mig 38, 39, 40 och 42 kHz har jag för mig. Då kunde man få robboten att hålla ett "konstant" avstånd. Logiken - kontakt 42 eller 40kHz backa, 38KHz kör framåt 39 kHz stå kvar... Det blir lite ryckigt, men fungerar.
EDIT:
Ja, om man kör 16F876A eller likande som har CCP så kan man skapa bärvågen där, MEN mitt problem var störningar - IR-mottagarmodulerna är duktiga på att plocka upp elektriska störningar och därför placerade jag sändaren med en egen liten PIC precis vid sändarleden (satt lödda på samma kort)
- Schnegelwerfer
- Inlägg: 1863
- Blev medlem: 8 november 2004, 13:46:56
Jag har också gjort en miniatyrfjärrkontroll, baserad på en PIC16F628A.
Jag hittade koderna till min TV på http://lirc.sourceforge.net/remotes/
Oscilloskop underlättar vid debuggning, men men min fjärrkontroll fungerade direkt med koderna tagna från ovanstående länk.
Jag hittade koderna till min TV på http://lirc.sourceforge.net/remotes/
Oscilloskop underlättar vid debuggning, men men min fjärrkontroll fungerade direkt med koderna tagna från ovanstående länk.