inka
02.01.2015, 15:08
hallo allerseits,
ich habe eine andere, microprozessor unterstützte bake angefangen, verwendet wird der arduino mega 2560, das ganze sieht so aus:
29576
als software wird dieser code verwendet:
/* Code to pulse pin 3 with a modulated signal
* Can be used to drive an IR LED to keep a TSOP IR reciever happy
* This allows you to use a modulated reciever and a continious beam detector
* By Mike Cook Nov 2011 - Released under the Open Source licence
*/
volatile byte pulse = 0;
int i, j, x, y;
ISR(TIMER2_COMPB_vect)
{ // Interrupt service routine to pulse the modulated pin 3
pulse++;
if(pulse >= 8)
{ // change number for number of modulation cycles in a pulse
pulse =0;
TCCR2A ^= _BV(COM2B1); // toggle pin 3 enable, turning the pin on and off
}
}
void setIrModOutput()
{ // sets pin 3 going at the IR modulation rate
pinMode(3, OUTPUT);
TCCR2A = _BV(COM2B1) | _BV(WGM21) | _BV(WGM20); // Just enable output on Pin 3 and disable it on Pin 11
TCCR2B = _BV(WGM22) | _BV(CS22);
OCR2A = 54; // defines the frequency 51 = 38.4 KHz, 54 = 36.2 KHz, 58 = 34 KHz, 62 = 32 KHz
OCR2B = 27; // deines the duty cycle - Half the OCR2A value for 50%
TCCR2B = TCCR2B & 0b00111000 | 0x2; // select a prescale value of 8:1 of the system clock
}
void setup()
{
setIrModOutput();
TIMSK2 = _BV(OCIE2B); // Output Compare Match B Interrupt Enable
pinMode(13, OUTPUT);
pinMode(12, OUTPUT);
//pinMode(4, OUTPUT);
//pinMode(5, OUTPUT);
Serial.begin(9600);
}
void loop()
{
digitalWrite(13, HIGH); // Port 13 wird high geschaltet
digitalWrite(12, HIGH);
delay(165);//165-165=2hz, 215/165=3hz
digitalWrite(13, LOW); // Port 13 wird low geschaltet
digitalWrite(12, LOW);
delay(165);
/*
analogWrite(4, HIGH); // Port 13 wird high geschaltet
analogWrite(5, HIGH);
delay(165);
analogWrite(4, LOW); // Port 13 wird low geschaltet
analogWrite(5, LOW);
delay(165);
*/
}
im ersten teil wird das signal auf 36kHz moduliert, im zweiten kann die blinkfrequenz eingestellt werden, momentan sind es ca. 3Hz...
der stromlaufplan sieht so aus:
29577
die IR-diode ist jetzt (nach mehreren versuchen) ohne vorwiderstand aufgebaut, weil sie durch den blinkbetrieb nicht zu hoch belastet wird
der aufbau mit fritzing sieht so aus:
29578
als spannungsquelle dienen 4 AA /2500mAh accus, angeschlossen an Vin und GND
nun wird das signal zwar verstärkt (und auch der empfang am RP6 klappt tadellos), allerdings ist die verstärkung nicht groß genug, die reichweite beträgt knapp 40cm. Ich möchte jetzt nicht unbedingt der arduino schrotten, deshalb die frage - wie kann ich das ändern? Eine reichweite von 4-5 metern wäre wünschenswert...
wäre für jeden tipp dankbar...
ich habe eine andere, microprozessor unterstützte bake angefangen, verwendet wird der arduino mega 2560, das ganze sieht so aus:
29576
als software wird dieser code verwendet:
/* Code to pulse pin 3 with a modulated signal
* Can be used to drive an IR LED to keep a TSOP IR reciever happy
* This allows you to use a modulated reciever and a continious beam detector
* By Mike Cook Nov 2011 - Released under the Open Source licence
*/
volatile byte pulse = 0;
int i, j, x, y;
ISR(TIMER2_COMPB_vect)
{ // Interrupt service routine to pulse the modulated pin 3
pulse++;
if(pulse >= 8)
{ // change number for number of modulation cycles in a pulse
pulse =0;
TCCR2A ^= _BV(COM2B1); // toggle pin 3 enable, turning the pin on and off
}
}
void setIrModOutput()
{ // sets pin 3 going at the IR modulation rate
pinMode(3, OUTPUT);
TCCR2A = _BV(COM2B1) | _BV(WGM21) | _BV(WGM20); // Just enable output on Pin 3 and disable it on Pin 11
TCCR2B = _BV(WGM22) | _BV(CS22);
OCR2A = 54; // defines the frequency 51 = 38.4 KHz, 54 = 36.2 KHz, 58 = 34 KHz, 62 = 32 KHz
OCR2B = 27; // deines the duty cycle - Half the OCR2A value for 50%
TCCR2B = TCCR2B & 0b00111000 | 0x2; // select a prescale value of 8:1 of the system clock
}
void setup()
{
setIrModOutput();
TIMSK2 = _BV(OCIE2B); // Output Compare Match B Interrupt Enable
pinMode(13, OUTPUT);
pinMode(12, OUTPUT);
//pinMode(4, OUTPUT);
//pinMode(5, OUTPUT);
Serial.begin(9600);
}
void loop()
{
digitalWrite(13, HIGH); // Port 13 wird high geschaltet
digitalWrite(12, HIGH);
delay(165);//165-165=2hz, 215/165=3hz
digitalWrite(13, LOW); // Port 13 wird low geschaltet
digitalWrite(12, LOW);
delay(165);
/*
analogWrite(4, HIGH); // Port 13 wird high geschaltet
analogWrite(5, HIGH);
delay(165);
analogWrite(4, LOW); // Port 13 wird low geschaltet
analogWrite(5, LOW);
delay(165);
*/
}
im ersten teil wird das signal auf 36kHz moduliert, im zweiten kann die blinkfrequenz eingestellt werden, momentan sind es ca. 3Hz...
der stromlaufplan sieht so aus:
29577
die IR-diode ist jetzt (nach mehreren versuchen) ohne vorwiderstand aufgebaut, weil sie durch den blinkbetrieb nicht zu hoch belastet wird
der aufbau mit fritzing sieht so aus:
29578
als spannungsquelle dienen 4 AA /2500mAh accus, angeschlossen an Vin und GND
nun wird das signal zwar verstärkt (und auch der empfang am RP6 klappt tadellos), allerdings ist die verstärkung nicht groß genug, die reichweite beträgt knapp 40cm. Ich möchte jetzt nicht unbedingt der arduino schrotten, deshalb die frage - wie kann ich das ändern? Eine reichweite von 4-5 metern wäre wünschenswert...
wäre für jeden tipp dankbar...