Sida 1 av 1

Bygga IR sändare, 38kHz modulerad

Postat: 13 januari 2007, 19:34:04
av tops
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!!

Re: Bygga IR sändare, 38kHz modulerad

Postat: 13 januari 2007, 19:42:48
av Jine
tops 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?
Japp det går, $tiff hjälpte mig med det förut.. Googla lite och du skall finna det du söker :)

(Eller sök på forumet, för tråden finns nånstans här)

Postat: 13 januari 2007, 21:32:42
av sodjan
> 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.

Postat: 13 januari 2007, 23:17:44
av $tiff
>> 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.

Postat: 13 januari 2007, 23:48:17
av sodjan
> 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... :-)

Postat: 14 januari 2007, 00:32:16
av dreadful
Kanske kan få några tips här:
http://iguanaworks.net/ir/serial/

Postat: 14 januari 2007, 00:44:21
av bengt-re
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.....

Postat: 14 januari 2007, 14:05:46
av Earendil
Jag har byggt en sådan där enkel fjärrkontroll som du talar om, med en PIC 12F675 (intern 4 MHz oscillator). Den både skapar bärvågen och modulerar den, så du behöver absolut ingen extern 555:a eller nåt sånt. Jag har för mig att jag kom ganska nära 38 kHz, men exakt hur nära minns jag inte.

Postat: 14 januari 2007, 16:49:39
av tgr
earendil: tror du att du skulle kunna dela med dig av koden?

Postat: 14 januari 2007, 16:52:07
av bengt-re
koden beror ju på vad du skall imitera för fjärrkontroll. Du måste nästan ha oscilloscop och dokumentera hur din befintliga sändare ser ut. och sedan skriva kod som imiterar den så nära som möjligt.

Postat: 14 januari 2007, 16:57:28
av tgr
eftersom jag är välidt nybörjare på programmering är jag nyfiken på hur man designar kod som både skapar bärvåg och modulerar den.
Om jag kan förstå hur det funkar så tänkte jag bygga hinderdetekterering till min legorobot.

Postat: 14 januari 2007, 17:06:11
av bengt-re
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)

Postat: 15 januari 2007, 08:59:04
av Schnegelwerfer
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.

Postat: 15 januari 2007, 12:21:38
av Earendil
tgr skrev:earendil: tror du att du skulle kunna dela med dig av koden?
Jepp, definitivt. Jag PM:ar dig den.