Trubbel med IR mottagare - ELFA: 75-303-89

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Användarvisningsbild
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

Inlägg av Jine »

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
rehnmaak
Inlägg: 2204
Blev medlem: 13 december 2005, 01:43:41

Inlägg av rehnmaak »

Hur genererar du pulserna till IR-dioden? Har du provat att köra som i databladet 38kHz och 600us långa pulser? (fig1)
Användarvisningsbild
Jine
Inlägg: 1795
Blev medlem: 21 juli 2004, 20:25:56
Skype: Jim.Nelin
Ort: Trångsund, Stockholm
Kontakt:

Inlägg av Jine »

En ir diod på 38khz.. puls? Näe.. ? :S
rehnmaak
Inlägg: 2204
Blev medlem: 13 december 2005, 01:43:41

Inlägg av rehnmaak »

Jag antar att du vet det uppenbara att kretsen endast detekterar IR-ljus modulerat med 38kHz? Det är det som gör att kretsen fungerar i dagsljus...
Användarvisningsbild
Jine
Inlägg: 1795
Blev medlem: 21 juli 2004, 20:25:56
Skype: Jim.Nelin
Ort: Trångsund, Stockholm
Kontakt:

Inlägg av Jine »

Jo givetvis!! Använder HPWM för att generera 38khz..
rehnmaak
Inlägg: 2204
Blev medlem: 13 december 2005, 01:43:41

Inlägg av rehnmaak »

Och om du slår av och på dessa 38kHz med 1666Hz får du något resultat då?

EDIT: Det kan inte vara så att porten på PIC:en konfigurerad som utgång?
Användarvisningsbild
Jine
Inlägg: 1795
Blev medlem: 21 juli 2004, 20:25:56
Skype: Jim.Nelin
Ort: Trångsund, Stockholm
Kontakt:

Inlägg av Jine »

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?

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 
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

> "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.
Användarvisningsbild
$tiff
Inlägg: 4941
Blev medlem: 31 maj 2003, 19:47:52
Ort: Göteborg
Kontakt:

Inlägg av $tiff »

Just precis. Läs databladet. Mottagare är alltså byggd för att ta emot 400-800 µs pulser modulerade i 38 kHz av 940 nm elektromagnetisk strålning och inget annat.
Användarvisningsbild
Jine
Inlägg: 1795
Blev medlem: 21 juli 2004, 20:25:56
Skype: Jim.Nelin
Ort: Trångsund, Stockholm
Kontakt:

Inlägg av Jine »

Okej.. tittade på databladet nu... Såg det ni sa.. Men alltså.. Hur gör man det då? hur ska jag få den att pulsa den där koden ? :S
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

Du styr sändaren på lämpligt sätt...
Användarvisningsbild
Jine
Inlägg: 1795
Blev medlem: 21 juli 2004, 20:25:56
Skype: Jim.Nelin
Ort: Trångsund, Stockholm
Kontakt:

Inlägg av Jine »

Sändaren är HPWM pinnen på en PIC16f877A..

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, utan att störa resten av programmet? :S
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

> 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"...
Användarvisningsbild
Icecap
Inlägg: 26647
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Inlägg av Icecap »

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...
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

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.
Skriv svar