Robot, Servo o ir
Jag har pillat med en reflexdetektor dom senaste dagarna (fast mest grillat picar).
Den funkar riktigt bra faktiskt, verkar helt omöjlig att störa med ir-fjärrkontrollers.
Programmet är skrivet i assembler.
http://ake.myftp.org/forum/ReflexSensor_V1.asm.txt
Den funkar riktigt bra faktiskt, verkar helt omöjlig att störa med ir-fjärrkontrollers.
Programmet är skrivet i assembler.
http://ake.myftp.org/forum/ReflexSensor_V1.asm.txt
- Jine
- Inlägg: 1794
- Blev medlem: 21 juli 2004, 20:25:56
- Skype: Jim.Nelin
- Ort: Trångsund, Stockholm
- Kontakt:
Hmm ingen som har ett oscilloskop o kan va gullig och göra det till mig så slipper jag investera i en 555 (isf måste jag vänta tills nästa vecka) ?
Eller hur ser ekvationen för att räkna ut det? ingen som har en aning?
EDIT!!
Picbasic Pro manualen:
FREQOUT
FREQOUT Pin,Onms,Frequency1{,Frequency2}
Produce the Frequency(s) on Pin for Onms milliseconds. Pin is automatically made an output. Pin may be a constant, 0-15, or a variable that contains a number 0-15 (e.g. B0) or a pin name (e.g. PORTA.0).
One or two different frequencies from 0 to 32767 hertz may be produced at a time.
FREQOUT generates tones using a form of pulse width modulation. The raw data coming out of the pin looks pretty scary. Some kind of filter is usually necessary to smooth the signal to a sine wave get rid of some of the harmonics that are generated:
FREQOUT works best with a 20MHz oscillator. It can also work with a 10MHz oscillator and even at 4MHz, although it will start to get very hard to filter and be of fairly low amplitude. Any other frequency will cause FREQOUT to generate a frequency that is a ratio of the actual oscillator used and 20MHz.
FREQOUT is not supported on 12-bit core PICmicro MCUs due to RAM and stack constraints.
' Send 1KHz tone on Pin1 for 2 seconds
FREQOUT PORTB.1,2000,1000
' Send 350Hz / 440Hz (Dial Tone) for 2 seconds
FREQOUT PORTB.1,2000,350,440
Dvs FREQOUT PORTB.2,1,38000 bör skapa en 38khz puls lr hur?
Mvh Jim
Eller hur ser ekvationen för att räkna ut det? ingen som har en aning?
EDIT!!
Picbasic Pro manualen:
FREQOUT
FREQOUT Pin,Onms,Frequency1{,Frequency2}
Produce the Frequency(s) on Pin for Onms milliseconds. Pin is automatically made an output. Pin may be a constant, 0-15, or a variable that contains a number 0-15 (e.g. B0) or a pin name (e.g. PORTA.0).
One or two different frequencies from 0 to 32767 hertz may be produced at a time.
FREQOUT generates tones using a form of pulse width modulation. The raw data coming out of the pin looks pretty scary. Some kind of filter is usually necessary to smooth the signal to a sine wave get rid of some of the harmonics that are generated:
FREQOUT works best with a 20MHz oscillator. It can also work with a 10MHz oscillator and even at 4MHz, although it will start to get very hard to filter and be of fairly low amplitude. Any other frequency will cause FREQOUT to generate a frequency that is a ratio of the actual oscillator used and 20MHz.
FREQOUT is not supported on 12-bit core PICmicro MCUs due to RAM and stack constraints.
' Send 1KHz tone on Pin1 for 2 seconds
FREQOUT PORTB.1,2000,1000
' Send 350Hz / 440Hz (Dial Tone) for 2 seconds
FREQOUT PORTB.1,2000,350,440
Dvs FREQOUT PORTB.2,1,38000 bör skapa en 38khz puls lr hur?
Mvh Jim
- Jine
- Inlägg: 1794
- Blev medlem: 21 juli 2004, 20:25:56
- Skype: Jim.Nelin
- Ort: Trångsund, Stockholm
- Kontakt:
Tror det går genom ändra DEFINE OSC till 10.. Men vad hjälper det mig? jag behöver en HÖGRE frekvens inte en lägre lr hur?
Men jag som va så säker på att jag kunde stiffs porjket arbete utantill, hade missat en sak..
""För att klara av detta var vi tvungna att använda en
extra mikrokontroller med HPWM. Denna kan ge ut en
modulerad puls konstant, även om mikrokontrollerna är
upptagna med att utföra annat arbete. I detta fall IRljusets
modulering på 38khz eftersom det är denna
frekvens som IR-mottagaren reagerar på.""
Nu är bara frågan, vilka pic har HPWM?? O vad är HPWM? och hur kontrollerar man det?
Men jag som va så säker på att jag kunde stiffs porjket arbete utantill, hade missat en sak..
""För att klara av detta var vi tvungna att använda en
extra mikrokontroller med HPWM. Denna kan ge ut en
modulerad puls konstant, även om mikrokontrollerna är
upptagna med att utföra annat arbete. I detta fall IRljusets
modulering på 38khz eftersom det är denna
frekvens som IR-mottagaren reagerar på.""
Nu är bara frågan, vilka pic har HPWM?? O vad är HPWM? och hur kontrollerar man det?
-
- Inlägg: 2360
- Blev medlem: 16 september 2003, 17:18:13
- Ort: Dubai, United Arab Emirates
- Kontakt:
Ja, borde den inte blir högre då?
Om du verkligen stoppar i en 10 Mhz kristall och talar om för basicen att du gjort det och sedan ber att få en 19000 Hz ton. Då kommer du att få en ton på 19000 precis som du begärt. Right?
Om du nu helt plötsligt byter ut kristallen mot en som är dubbelt så snabb utan att tala om det för basicen, vad tror du händer då? Då jobbar plötsligt allt dubbelt så snabbt och även tonen ut kommer att bli dubbelt så hög. 38000 Hz.
Om du verkligen stoppar i en 10 Mhz kristall och talar om för basicen att du gjort det och sedan ber att få en 19000 Hz ton. Då kommer du att få en ton på 19000 precis som du begärt. Right?
Om du nu helt plötsligt byter ut kristallen mot en som är dubbelt så snabb utan att tala om det för basicen, vad tror du händer då? Då jobbar plötsligt allt dubbelt så snabbt och även tonen ut kommer att bli dubbelt så hög. 38000 Hz.
-
- Inlägg: 2360
- Blev medlem: 16 september 2003, 17:18:13
- Ort: Dubai, United Arab Emirates
- Kontakt:
Annars borde det faktiskt gå att trimma in 555'an manuellt utan oscilloskop.
Bygg 555'an med värden som borde ge kring 38 KHz och ha en trimpot och vrid tills du få signal ut ur mottagaren. Flytta sedan sändare och mottagare en bit från varandra så signalen försvinner, justera sedan trimpotten tills det blir signnal igen. Upprepa ett par gånger så har du hittat den optimala frekvensen för din mottagare.
Bygg 555'an med värden som borde ge kring 38 KHz och ha en trimpot och vrid tills du få signal ut ur mottagaren. Flytta sedan sändare och mottagare en bit från varandra så signalen försvinner, justera sedan trimpotten tills det blir signnal igen. Upprepa ett par gånger så har du hittat den optimala frekvensen för din mottagare.
Släng in följande kodsnutt i ditt program så har du kontinuerlig 38kHz fyrkantsvåg ut på PortC.2
Obs! Gjord för PIC16F877A och 20MHz kristall.
För att få dina IR-sensorer att reagera måste du skicka ut ca 1ms långa pulser som är modulerade i 38 kHz. Detta kan du göra genom att sätta PortC.2 som utgång i 1ms, sen som ingång, så slipper du pilla på inställningarna för PWM-modulen.
Känner mig snäll nu
Obs! Gjord för PIC16F877A och 20MHz kristall.
Kod: Markera allt
'Initiate PWM for IR-modulation (38kHz, 50%dc @ 20MHz OSC).
TRISC.2 = 0 'PortC.2 output
CCP1CON = %00001100 'Mode select = PWM
T2CON = %00000100 'Timer2 ON + 1:1 prescale
PR2 = 130 '38kHz PWM
CCPR1L = 65 '50% duty cycle
Kod: Markera allt
trisc.2 = 0 ' Set portc.2 to output
pause 1 ' Pause 1 ms
trisc.2 = 1 ' Set portc.2 to input
'Read inputs from IR-modules here