Trubbel med IR mottagare - ELFA: 75-303-89
- Jine
- Inlägg: 1795
- Blev medlem: 21 juli 2004, 20:25:56
- Skype: Jim.Nelin
- Ort: Trångsund, Stockholm
- Kontakt:
Trubbel med IR mottagare - ELFA: 75-303-89
Hej!
Jag sitter just nu och halvsover och sammtidigt grejjar med en IR mottagare..
Jag har ett problem.. jag trodde alltid att itmottagare fungerade så att när den fick in signal (38khz) så gav den en 0 ut på OUTput pinnen..
Nu har ajg upptäckt att så är inte fallet..
Den har nämligen en fast 0 utåt..!! (4.98V enligt min multimeter)
Riktar jag en IR diod mot den så sjunker bara spänningen till 4.40V!!
Vatusan föregårs här?
Hur ska jag läsa av den med min PIC?
Mvh Jim
Jag sitter just nu och halvsover och sammtidigt grejjar med en IR mottagare..
Jag har ett problem.. jag trodde alltid att itmottagare fungerade så att när den fick in signal (38khz) så gav den en 0 ut på OUTput pinnen..
Nu har ajg upptäckt att så är inte fallet..
Den har nämligen en fast 0 utåt..!! (4.98V enligt min multimeter)
Riktar jag en IR diod mot den så sjunker bara spänningen till 4.40V!!
Vatusan föregårs här?
Hur ska jag läsa av den med min PIC?
Mvh Jim
- Jine
- Inlägg: 1795
- Blev medlem: 21 juli 2004, 20:25:56
- Skype: Jim.Nelin
- Ort: Trångsund, Stockholm
- Kontakt:
Och hur tusan skulle man göra detta då?
Som utgång? Givetvis är den det? Den ska ju inte vara ingång? Då kan den ju inte PWMa ut signaler?
Som utgång? Givetvis är den det? Den ska ju inte vara ingång? Då kan den ju inte PWMa ut signaler?
Kod: Markera allt
DEFINE OSC 20 ' Define 20 MHz
'-----------------------------------------------------------------'
' Initiate PWM for IR-modulation (38kHz, 50% duty @ 20MHz OSC)
'-----------------------------------------------------------------'
'-----------------------------------------------------------------'
TRISC.2 = 0 'Set Portc.2 output
CCP1CON = %00001100 'Mode select = PWM
T2CON = %00000100 'Timer2 ON + 1:1 prescale
PR2 = 130 '38kHz PWM
CCPR1L = 65 '50% duty cycle
> "jag trodde alltid att itmottagare fungerade så att..."
Vadå "trodde" ????
Vad menar du med det ?
Vad är det som är oklart ?
Den självklara frågan, som du totalt har missat att tala om, är,
Kör du enligt databladet ??? Har du läst databladet alls ?
Speciellt där det står "High Level Pulse Width" och "Low Level Pulse Width"...
Om du försöker "lysa" på mottagaren med en fast 38Khz IR signal,
så fungerar det *inte*, vilket är fullständigt solklart beskrivet i databladet.
Vadå "trodde" ????
Vad menar du med det ?
Vad är det som är oklart ?
Den självklara frågan, som du totalt har missat att tala om, är,
Kör du enligt databladet ??? Har du läst databladet alls ?
Speciellt där det står "High Level Pulse Width" och "Low Level Pulse Width"...
Om du försöker "lysa" på mottagaren med en fast 38Khz IR signal,
så fungerar det *inte*, vilket är fullständigt solklart beskrivet i databladet.
- Jine
- Inlägg: 1795
- Blev medlem: 21 juli 2004, 20:25:56
- Skype: Jim.Nelin
- Ort: Trångsund, Stockholm
- Kontakt:
Sändaren är HPWM pinnen på en PIC16f877A..
Koden jag använder för 38khz är denna:
HUr ska jag se till att den koden pulsas, utan att störa resten av programmet? 
Koden jag använder för 38khz är denna:
Kod: Markera allt
DEFINE OSC 20 ' Define 20 MHz
'-----------------------------------------------------------------'
' Initiate PWM for IR-modulation (38kHz, 50% duty @ 20MHz OSC)
'-----------------------------------------------------------------'
'-----------------------------------------------------------------'
TRISC.2 = 0 'Set Portc.2 output
CCP1CON = %00001100 'Mode select = PWM
T2CON = %00000100 'Timer2 ON + 1:1 prescale
PR2 = 130 '38kHz PWM
CCPR1L = 65 '50% duty cycle

> Hur ska jag se till att den koden pulsas,...
Det finns flera olika sätt, gör som passar dig bäst.
Personligen tycker jag att det är enklast att helt enkelt stänga av/på hela PWM modulen.
Jag minns inte vilket bit det var (kan h avarit i CCPxxx eller TRISx), men med
en bit någonstans kan man enkelt pulsa pwm signalen.
Lämligen använder man en annan timer (än TMR2) för att "ta tid" på sina pulser.
> utan att störa resten av programmet?
Det är helt omöjligt att svara på.
För det första vet jag inte vad du menar med "störa", och sedan
så vet jag varken hur resten av programet ser ut eller vad den "gör"...
Det finns flera olika sätt, gör som passar dig bäst.
Personligen tycker jag att det är enklast att helt enkelt stänga av/på hela PWM modulen.
Jag minns inte vilket bit det var (kan h avarit i CCPxxx eller TRISx), men med
en bit någonstans kan man enkelt pulsa pwm signalen.
Lämligen använder man en annan timer (än TMR2) för att "ta tid" på sina pulser.
> utan att störa resten av programmet?
Det är helt omöjligt att svara på.
För det första vet jag inte vad du menar med "störa", och sedan
så vet jag varken hur resten av programet ser ut eller vad den "gör"...
Bara sån en lös idé: Ifall man ska skicka ett seriellt ord (typ 8,n,1) med IR och inte måste kräma på ordentligt med ström i IR-LEDn då kan man sätta PWM'en att göra sina 38KHz och sedan montera IR-LED + seriemotstånd mellan PWM-ut och UART-out (katod mot PWM-out). Då vill IR-LEDn blinka en modulerat 38KHz på ett enkelt sätt: Sätt up PWM'en och serieporten och sänd som vanligt på serieporten.
Ganska enkelt...
Ganska enkelt...
Enkelt i teorin, men en UART uppfyller inte kraven på pulståget som
mottagaren har. Kan fungera, det beror lite på vilka "bitar" man sänder.
Om man t.ex sänder h'FF' så blir det en för lång puls.
Om man först kodar om det man sänder på UART'en kan
man få det att fungera skapligt bra.
Bäst prestanda får man dock med ett mer IR-anpassat
protokoll, t.ex där man alltid har en puls, som varierar lite
i längd för att representera "start", "1", "0" och "stopp" bitar.
Alltså en pwm "ovanpå" 38 Khz bärvågen.
Man kan även titta på hur de standard IR-protokoll ser ut
som Sony, Philips m.f. använder, dock kan de vara lite
overkill för en helt egen lösning, om man inte har tänkt sig att
använda standard fjärrkontroller eller att styra en TV eller liknande.
mottagaren har. Kan fungera, det beror lite på vilka "bitar" man sänder.
Om man t.ex sänder h'FF' så blir det en för lång puls.
Om man först kodar om det man sänder på UART'en kan
man få det att fungera skapligt bra.
Bäst prestanda får man dock med ett mer IR-anpassat
protokoll, t.ex där man alltid har en puls, som varierar lite
i längd för att representera "start", "1", "0" och "stopp" bitar.
Alltså en pwm "ovanpå" 38 Khz bärvågen.
Man kan även titta på hur de standard IR-protokoll ser ut
som Sony, Philips m.f. använder, dock kan de vara lite
overkill för en helt egen lösning, om man inte har tänkt sig att
använda standard fjärrkontroller eller att styra en TV eller liknande.