Att "dekoda" IR-signaler på en PIC

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
bos
Inlägg: 2314
Blev medlem: 24 februari 2007, 23:29:15
Kontakt:

Att "dekoda" IR-signaler på en PIC

Inlägg av bos »

Jag fick en skrotad video kastad på mig och jag lödde loss alla komponenter som kan vara bra att ha. Då jag inte provat leka med IR tidigare beslöt jag att ta loss IR-dioden i fjärrkontrollen och mottagaren i videon.

Ingen av dioderna har någon som helst märkning på sig, men efter lite googling hamnade jag här:

http://brtleds.manufacturer.globalsourc ... Module.htm

Av utseendet att döma gissar jag att det är den fotodioden jag har.

Ytterligare googling gav http://jap.hu/electronic/infrared.html och där fann jag lite mer information om hur man går till väga för att skicka data. Utdata ska man modulera, medan indatat demoduleras automatiskt. Jag provade hans 555-koppling på labbplattan och det fungerar utmärkt.

Nu till det aktuella problemet:

Tanken med mitt labbande är att jag ska bygga en fjärrkontroll till en permobil på jobbet. Fjärrkontrollen och ett mycket enkelt protokoll är färdigt (på papper), men mottagardelen är den som ställer till lite bekymmer då jag inte riktigt kommit på hur jag ska dekoda datat.

Eller ja, själva dekodningen är inga problem, men där jag för stunden går bet är timingen på signalerna. Enligt databladet för den mottagare jag har (finns på den första länken i detta inlägg) står det att periodtiderna Th (hög signal) och Tl (låg signal) för modulen är som minst 400µs och som mest 800µs.

Om jag antar att tiden är exakt 400µs så kan jag göra en avläsning var 401:e µs, eller så, men det framgår ingenstans om periodtiden är fast eller om den kan variera mellan varje puls. Om den är fast så skulle jag kunna skicka in typ 20st ettor för att på så sätt ta reda på periodtiden, men om den är variabel vet jag inte riktigt hur jag ska greppa det och det är det jag behöver lite tips på.

Min fjärrkontroll har sex knappar, en skjutpotentiometer och en PIC16F677 som styrenhet. Knappstatus och potentiometerns värde (efter avläsning med ADC) är det som ska skickas över. PIC:en körs i 8MHz.

Mottagaren har jag designat runt en PIC12F510, som är en 8 pinnar stor kapsel. Samtliga pinnar används: +V, GND, MCLR (används för MCU:ns egen del), samt CLK, DAT, CS1, CS2, IR_IN som är till kringutrustningen - två DAC:ar som pratar SPI samt den inkommande IR-signalen.

Kanske måste jag designa om mottagardelen lite, en PIC12 är kanske för klen (eller åtminstone för feature-fattig). Igår låg jag nämligen och funderade på om jag istället skulle använda två likadana PIC-kretsar som har en USART-modul, och på så sätt skicka seriedata rakt över IR. Är det en möjlighet?

Att använda PIC:ens CCP-modulen (saknas dock i min PIC12, så jag måste isåfall byta) var en annan idé som ploppade upp. Exakt hur det skulle gå till har jag inte exploaterat ännu.

Vilka andra möjligheter finns det?
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Att "dekoda" IR-signaler på en PIC

Inlägg av sodjan »

> Om jag antar att tiden är exakt 400µs så kan jag göra en avläsning var 401:e µs, eller så, men det
> framgår ingenstans om periodtiden är fast eller om den kan variera mellan varje puls.

Det framgår att den kan variera mellan 400 och 800 us. Så håll dig inom dessa
gränser så är det OK.

> en PIC12 är kanske för klen...

Nej, men jag skulle inte välja en "base line" modell. Ta något modern t.ex 12F683.

> Om jag antar att tiden är exakt 400µs

Du behöver inte anta något, det är ju du själv som genererar signalen (från sändaren).

> och på så sätt skicka seriedata rakt över IR. Är det en möjlighet?

Generellt sätt, nej. Det är fel timing.
Sätt upp PWM modulen för att generera bärvågen. Sätt den sedan av/på
för att generera pulserna. Moderna PIC (16F1xxx) har en ny modul som eventuellt
underlättar "Data Signal Modulator" (DSM).

> Vilka andra möjligheter finns det?

Interrupt.
Eller (kanske bättre) ett timer avbrott där signalen läses av.
blueint
Inlägg: 23238
Blev medlem: 4 juli 2006, 19:26:11
Kontakt:

Re: Att "dekoda" IR-signaler på en PIC

Inlägg av blueint »

LIRC projektet har fjärrkontrollskoder för många apparater.
Om Sony fjärrkoder
remotecentral.com har forum om saken.
Användarvisningsbild
electronix
Inlägg: 353
Blev medlem: 29 mars 2009, 10:48:08
Ort: Norrköping

Re: Att "dekoda" IR-signaler på en PIC

Inlägg av electronix »

Håller med Sodjan, använd PWM modulen för att generera en kontinuerlig bärvåg och anslut katoden till TX pinnen på PICen, då kan du skicka t ex rs232 via IR på just TX, sen använder du RX på mottagar PICen.
Skriv svar