Go Down

Topic: fotocellule e arduino (Read 847 times) previous topic - next topic

pippopippoli

o provato a costruire delle fotocellule tipo cancello utilizzando un emettitore e ricevitore ad infrarossi 950nm il problema e che il sensore risente dellla luce ambientale del sole creando interferenze come fanno i cancelli elettrici ad non avere questi problemi?

pablos

#1
Apr 25, 2012, 01:05 pm Last Edit: Apr 25, 2012, 01:29 pm by pablos Reason: 1
Ciao, innanzi tutto il vetrino rossoscuro che tutti i sensori possiedono sono dei filtri i quali tagliano una buona parte della luce infrarossa di disturbo, poi l'elettronica preleva un campo di frequenze da X a Y

ciao
no comment

uwefed

#2
Apr 25, 2012, 01:30 pm Last Edit: May 01, 2012, 01:00 pm by uwefed Reason: 1
Usa un TSOPxx38 (ricevitore telecomando a infrarossi) e un emettitore IR a 38Khz.
Circuito: come http://www.arcfn.com/2009/08/multi-protocol-infrared-remote-library.html
Il pin di uscita segnale 38kHz é il pin 11 e non puó essere modificato a causa uso del rispettivo timer.

Code: [Select]
#define RXB 14
#define TX 11
boolean transmitting_IR; //transmission flag

void turn_off_IR () //spegne segnale 38kHz su pin 11.
{
 TCCR2A = 0; // Disconnect PWM
 TCCR2B = 0; // Stops the timer
 OCR2A = 0;  // No timer top
 digitalWrite(11, LOW);                // Ensure output is off  
 transmitting_IR = false;
}

void turn_on_IR ()  // accende segnale 38kHz su pin 11.
{
 //   Set up Timer2 (which can be connected to pins 3 and 11)
 //   For full details, see:
 //   arduino.cc/en/Tutorial/SecretsOfArduinoPWM
 //   The syntax here has me baffled, but the patterns of usage
 //   are clear if you look at the ATMega328 diagrams.
 //   _BV appears to stand for 'bit value'
 //   Different bits need to be set to control each timer
 //   Refer to diagrams for clarity

 TCCR2A = _BV(WGM21) | _BV(COM2A0); // This mode toggles output once per timer cycle
 TCCR2B = _BV(CS20);  // Do not scale the clock down - use 16 MHz timer rate.
 OCR2A = 210; // Divide sys. clock by 210, 1/2 cycle = 76 khz, 1 cycle = 38 khz
 transmitting_IR = true;
}


void detectIR()
{
   digitalwrite(13, digitalRead(RXB));  
// il LED su Pin 13 si accende quando il fascio luminoso della fotocellula non é interotta
}


void setup(){  
 pinMode(TX, OUTPUT);
 pinMode(RXB, INPUT);
 pinMode(13,OUTPUT);
 turn_on_IR();
 delay(100);
}

void loop(){
 detectIR(); // search for IR
 delay(50);  
}


Ciao Uwe

pippopippoli

molte grazie, il tsop2238 non sapevo neanche d'averlo, sarà la fortuna.

Go Up