IR-mottagare
IR-mottagare
Försöker att använda en IR-mottagare för hinderdetektering men det vill sig inte alls.
Detta är kanske något jag drömt ihop men ska man inte kunna få ut ett tal seriellt ifrån mottagaren om man skickar ir ljus som är modulerat med 38KHz mot den?
Detta är kanske något jag drömt ihop men ska man inte kunna få ut ett tal seriellt ifrån mottagaren om man skickar ir ljus som är modulerat med 38KHz mot den?
IR-mottagaren har ett filter i sig som gör att den bara reagerar på pulståg på omkring 400 µs. Läs databladet för att dubbelkolla detta. Det innebär att om du skickar ett väsentligt kortare pulståg så hinner den inte reagera. Om du däremot skickar ett mycket längre pulståg, kanske över 1000 µs (1 ms), så kommer den att slå av utsignalen igen.
Lösningen i ditt fall är att pulsa det modulerade ljuset, dvs skicka 38 kHz i 400 µs, vänta 400 µs, skicka 38 kHz i 400 µs och så vidare. Då kommer du att få varannan hög och låg utsignal från detektorn.
Lösningen i ditt fall är att pulsa det modulerade ljuset, dvs skicka 38 kHz i 400 µs, vänta 400 µs, skicka 38 kHz i 400 µs och så vidare. Då kommer du att få varannan hög och låg utsignal från detektorn.
- Schnegelwerfer
- Inlägg: 1863
- Blev medlem: 8 november 2004, 13:46:56
- Schnegelwerfer
- Inlägg: 1863
- Blev medlem: 8 november 2004, 13:46:56
Hmm... eftersom USARTen förväntar sig asynkron data i en viss definerad hastighet kan det nog uppstå konstiga fenomen...
Hursomhelst kan du inte läsa av avståndet på detta sätt, utan bara få en indikation om mottagaren tar emot signal eller inte.
Det normala förfarandet är väl att koppla mottagaren till en vanlig ingång på uC:n (ev. in på någon interrupt.ingång), och på så sätt larma när en (reflekterad) signal tas emot.
Hursomhelst kan du inte läsa av avståndet på detta sätt, utan bara få en indikation om mottagaren tar emot signal eller inte.
Det normala förfarandet är väl att koppla mottagaren till en vanlig ingång på uC:n (ev. in på någon interrupt.ingång), och på så sätt larma när en (reflekterad) signal tas emot.
Enligt databladet skall det vara 600us pulser med 50% duty cycle.
600 us är ca 23 perioder vid 38kHz, sedan skall det vara "tyst" i lika lång tid.
Många IR mottagare accepeterar inte ett kontinuerligt pulståg (d.v.s 600us pulserna, inte 38kHz bärvågen), utan kräver en längre paus regelbundet. Jag kunde dock inte hitta något om det i databladet för just *denna* modell...
600 us är ca 23 perioder vid 38kHz, sedan skall det vara "tyst" i lika lång tid.
Många IR mottagare accepeterar inte ett kontinuerligt pulståg (d.v.s 600us pulserna, inte 38kHz bärvågen), utan kräver en längre paus regelbundet. Jag kunde dock inte hitta något om det i databladet för just *denna* modell...
- 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:
instämmer med föregående talare. Alla enkla ir-detektorer mättas om man man ger kontirnuerlig signal. skall du skicka data så använd pulslängd/pulsluckekodning så att en lång puls är etta och sen ipausen är den lång så är nästa bit en etta och så vidare så får du dubbla överföringshastiheten om du även låter mellanrummet bära information. 400us är nedre gränsen för tillförlitlig funktion i praktiken iaf och de funkar bra för det mesta med iaf upp till 2,5ms pulser även om jag nog inte skulle rekomendera längre än 1ms för dataöverföringsändamål. Fjärrisar använder ofta en lång startpuls och sedan 400us och 800us pulser för de olika symbolerna.
Jag skrev en rutin för mottagning av en IR signal til en PIC förra året.
Både sändare och mottagare var programmerade av mig, så jag kunde
sätta pulstider lite som jag ville (innom spec för IR dekodern, så klart).
I mottagaren startade jag en timer när en puls startade (d.v.s när en bärvåg hade detekterats av IR dekodern). Timern stoppades och värdet analyserades
på den fallande flanken av pulsen (d.v.s när bärvågen försvann).
Nu valde jag pulslängder på ett sådant sätt så att tre olika bitar i timern direkt talade om ifall det var en "start", "etta" eller en "nolla". En enkel btfss/btfsc på olika bitar i TMR1 (eller vilken det nu var) gav vilken slags bit det var. Mycket smidigt.
Sedan behöver man bara en enkel "state machine" som håller reda på var i pulståget man är. Ett par flaggor...
Både sändare och mottagare var programmerade av mig, så jag kunde
sätta pulstider lite som jag ville (innom spec för IR dekodern, så klart).
I mottagaren startade jag en timer när en puls startade (d.v.s när en bärvåg hade detekterats av IR dekodern). Timern stoppades och värdet analyserades
på den fallande flanken av pulsen (d.v.s när bärvågen försvann).
Nu valde jag pulslängder på ett sådant sätt så att tre olika bitar i timern direkt talade om ifall det var en "start", "etta" eller en "nolla". En enkel btfss/btfsc på olika bitar i TMR1 (eller vilken det nu var) gav vilken slags bit det var. Mycket smidigt.
Sedan behöver man bara en enkel "state machine" som håller reda på var i pulståget man är. Ett par flaggor...
Har provat en del idag och jag kan vara med på att det här med seriell överföring inte var någon bra idé, fungerar inte alls som jag vill idag så det släpper jag nu.
Jag provade ta en fjärkontroll och rikta den mot irmottagaren och då får jag utgången att ändra läge så det verkar fungera det ni säger att olika pulser av 38kHz modulerat ljus ska fungera.
Tanken är att detta ska användas utomhus och jag funderade lite på om ir verkligen är det smartaste valet, det kanske finns några andra sensorer som lämpar sig bättre, förslag?
Jag kan tänka mig att ir missar ifall det står en smal pinne i vägen?
Jag provade ta en fjärkontroll och rikta den mot irmottagaren och då får jag utgången att ändra läge så det verkar fungera det ni säger att olika pulser av 38kHz modulerat ljus ska fungera.
Tanken är att detta ska användas utomhus och jag funderade lite på om ir verkligen är det smartaste valet, det kanske finns några andra sensorer som lämpar sig bättre, förslag?
Jag kan tänka mig att ir missar ifall det står en smal pinne i vägen?
- Schnegelwerfer
- Inlägg: 1863
- Blev medlem: 8 november 2004, 13:46:56