Go Down

Topic: TL1838, rilevare emissioni IR (Read 709 times) previous topic - next topic

Goretto

Mar 12, 2014, 04:57 pm Last Edit: Mar 12, 2014, 08:05 pm by Goretto Reason: 1
Ciao a tutti, sono ancora vivo anche se sto latitando un pochetto, a breve cercherò di riprendere le mie discussioni indietro, purtroppo sto lavorando alla costruzione di un mio laboratorio (la mia stanza ha raggiunto il limite di rischi tra cui incendio e rischio chimico di vario tipo) e tutto all'aria!


Dunque ho dei fototransistor IR, dei TL1838. Come si connette il fototransistor in modo da far rilevare un raggio infrarosso prodotto da un diodo led IR? Premetto che ho cercato eccome ma quello che ho trovato non l'ho capito...  :(
Contattatemi su Skype per qualsiasi cavolata, sono sempre connesso o al PC o sullo Smartphone: BLUEFIRE87HN è il Nik Name.

Michele Menniti

Il TL1838 NON è un fototransistor ma un modulo ricevitore, cioè un integrato che fornisce una risposta digitale e non analogica (come la darebbe il fototransistor). Data-sheet alla mano (pag. 4) fai i collegamenti usando un pin digitale e rilevando il cambio di stato.
Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

Goretto

Perbacco pensavo fossero la medesima cosa. Grazie mille della lezione! ora sto provando... purtroppo però mi restituisce sempre 1 in Out lo 0 (zero) me lo da solo ogni tanto se lo "illumino" con un telecomando da TV... è normale? con un led IR se lo illumino non cambia stato manco a morire...
Contattatemi su Skype per qualsiasi cavolata, sono sempre connesso o al PC o sullo Smartphone: BLUEFIRE87HN è il Nik Name.

uwefed

Non hai guardato il datasheet, vero?
Se guardi lo schema a blocchi a pagina 2 sapresti che c'é un detettore, un amplificatore autoregolato un filtoro passabanda e uno stadio di uscita.
Il Tl1838 reagische solo a un segnale IR con una frequenza di 38kHz. È immune a luce continua.
Usa il codice sottostante per produrre un segnale a 38kHz sul pin11. Si illumina il LED 13 quando viene interotto il fascia di luce.

Code: [Select]
#define RXTSOP 2               //Pin output TSOP
#define TXIR 11                      //or pin 3 LED IR
#define LED13 13                  //LED on pin 13


//flag
boolean transmitting_IR; //transmission flag

// turn_off , turn_on, detect functions come as is from
// http://www.eng.utah.edu/~cs1410/Labs/lab09.html
void turn_off_IR ()
{
  // Instead of just adjusting the output on pin 11, this code also
  // turns off the timer controlling the PWM output on pin 11
 
  TCCR2A = 0; // Disconnect PWM
  TCCR2B = 0; // Stops the timer
  OCR2A = 0;  // No timer top
  digitalWrite(TXIR, LOW);  // Ensure output is off
 
  transmitting_IR = false;
}

void turn_on_IR ()
{
  //   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
 
  // Output pin 11 should now be emitting a 38 khz signal.
 
  transmitting_IR = true;
}


void detectIR()
{
    if(digitalRead(RXTSOP)){
    digitalWrite(LED13 ,LOW);
    }else{
    digitalWrite(LED13 ,HIGH);
    }
}


void setup(){ 
  pinMode(TXIR, OUTPUT);
  pinMode(RXTSOP, INPUT);
  turn_on_IR();
  delay(100);
}

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

Goretto

Uwe intanto ti ringrazio, poi ti dico che il datasheet come sempre l'ho aperto e ho letto solo le cose che so leggere, lo schema a blocchi l'ho ignorato perchè non lo so leggere, i termini che hai usato sono sconosciuti per me fino ad ora. Non pensate sempre male, a tante cose non ci arrivo e non ci arriverò forse mai senza una scuola di base.

Però se cambia stato con una luce ir a 38 Khz, come mai puntandogli il telecomando che produce fasci di luce appunto a 38 Khz mi da uno stato 0 solo a tratti quasi a casaccio?

Mi sa che faccio prima a comperare qualche fototransistor almeno lavora in analogico e non necessita di una frequenza per funzionare... peccato...
Contattatemi su Skype per qualsiasi cavolata, sono sempre connesso o al PC o sullo Smartphone: BLUEFIRE87HN è il Nik Name.

Michele Menniti

Goretto, un telecomando non manda un fascio costante a 38kHz ma lo usa come portante per inviare una codifica. Se ricordo bene questo tuo integrato (hai messo all'esterno la resistenza e il condensatore sull'alimentazione o non hai letto nemmeno quello ]:D ?) fornisce un solo impulso negativo appena interrompi il fascio costante, ce ne sono altri che invece cambiano di stato per tutto il tempo che il fascio è interrotto.
Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

Goretto



Michele!
Ho visto che a pagina 4 indicano il C la R e il PullUP purtroppo ho messo solo il pullUP perchè non avevo condensatori con quella capacità e l'ho dovuto omettere.

In effetti è scritto bene che ci vuole una frequenza così: HIGH per 600 microsecondi e LOW altrettanti per innescare l'uscita di segnale. Ma come hai fatto a capire che dà solo un impulso in uscita e poi basta?

In effetti altra cosa che non ho considerato è che il telecomando manda un segnale base a 38KHz ma che in ogni semionda c'è un'altra modulazione che corrisponde a un codice inviato, corretto? o magari mi sbaglio...

-----

Fatto stà che non posso utilizzarlo come banale fotocellula.... beh almeno per l'avvenire saprò distinguere le due cose e perchè. Grazie come al solito!

Contattatemi su Skype per qualsiasi cavolata, sono sempre connesso o al PC o sullo Smartphone: BLUEFIRE87HN è il Nik Name.

Michele Menniti

E' proprio il modello che funziona in questo modo, infatti ho scritto "mia memoria"; quel modulo va benissimo per pilotare un allarme, ma per controllare lo stato di una barriera devi usare il TSOP34838.
Ti allego un mio intervento sul Forum, non l'ho mai riverificato, forse c'è qualche inesattezza ma almeno ti fai un'idea più pratica della situazione.
Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

Goretto

PDF molto interessante! quindi erravo in pieno a chiamare fotodiodo il diodo IR... ottimo a sapersi!
Il TSOP però necessita di una frequenza per lavorare, cosa che vorrei evitare per semplicità dell'automatismo che andrò a realizzare. L'interruzione del fascio farà eccitare una bobina di un relè mentre la continuità del fascio la disecciterà dopo un delay di qualche secondo. Quindi escluderei in toto i ricevitori IR e opterei per i fototransistor che a differenza dei fotodiodi non necessitano di preamplificazione del segnale se ho capito giusto...
Contattatemi su Skype per qualsiasi cavolata, sono sempre connesso o al PC o sullo Smartphone: BLUEFIRE87HN è il Nik Name.

Michele Menniti

Se avessi letto quel pdf con la giusta attenzione avresti capito che invece il TSOP è proprio quello che ti serve; se hai modo di recuperare la rivista n. 161 di Elettronica IN troverai il mio progetto sulla barriera ad infrarossi, basato su un tyny45/85 e su un NE555, oppure puoi replicare tutto con un unico ATmegaxx8P.
Il fototransistor è sensibile alla luce solare o delle lampade, quindi un casino da gestire, un TSOP invece lo piloti con un normale diodo IR, pilotato dallo sketch di Uwe, è praticamente insensibile alle altre fonti luminose e la risposta è quella che ti serve per pilotare  un relé (al limite aggiungendo un transistor). Se non vuoi usare un micro allora ti basta un normalissimo NE555 per generale la frequenza di 38kHz, il delay poi te lo crei con un condensatore correttamente dimensionato e così niente micro.
Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

Goretto

Uffa possibile che tutti mi dite che non leggo.... ho letto son 4 righe...

Quote
- tipologie analogiche (FOTODIODI o FOTOTRANSITOR) che in genere sono
maggiormente sensibili alla luce visibile e danno in risposta una tensione variabile sul
catodo, rispetto a quella applicata sull'anodo (FOTODIODI) o sull'emettitore, rispetto a
quella applicata sul collettore (FOTOTRANSISTOR)



Quindi ho reputato adatto il fototransistor, ma dici di no, mi fido ovviamente, ma non mi sembra scritto che non lo sia.

Quote
- tipologie digitali (MODULI RICEVITORI IR, tipo IR38DM o TSOP348xx) che sono
sensibili alla luce infrarossa ed insensibili alla luce visibile, nel campo di frequenza che
vanno da 30KHz a 56KHZ


Questi li volevo evitare appunto per evitare di dover generare una frequenza. Ho visto che il buon Uwefed ha postato un esempio validissimo solo che non comprendendolo in toto l'ho volevo schivare per poter usare un metodo che potevo comprendere... uffa... tristezza...

Vedrò di fare come dici tu e uwe, non riesco a fare un tubo con un po' di indipendenza a quanto pare manco una cosa così banale.... rabbia rabbia e ancora rabbia! sia chiaro che me la sto prendendo con me stesso non con voi buon'anime!  :0
Contattatemi su Skype per qualsiasi cavolata, sono sempre connesso o al PC o sullo Smartphone: BLUEFIRE87HN è il Nik Name.

uwefed

Quel codice meorizza dei valori in dei registri di uno dei Timer del ATmega in modo che automaticamente genera un segnale rettangolare con frequenza 38kHz. Se guardi il Sketch c'é una funzione per accendere la frequenza e un altra per spegnerla. Basta che la copi nel Tuo sketch e chiami una delle due funzioni.

Il vantaggio dei TSOP é che non leggono luce continua (sole o lampadine a incandescenza)  o luce a 50 o 100HZ (prodotta dalle lampadine a flurescenza). Lo puoi usare in piena luce del sole e riceve ancora il segnale.
Rispiegola costruzione interna dei TSOP: il TSOP ha vari amplificatori e un amplificatore regolabile per amplificare il segnale che riceve sul fotodiodo. Questo per aver sempre la stessa tensione per l' elaborazione succesiva. Poi viene un filtro . Quello fa passare solo la frequenza di riferimento. Un 38Khz e tutto sotto viene bloccato e tutto sopra quella frequenza viene bloccato. Poi c'é ancora un stadio di uscita (comparatore e transistor).

Spero che ho potuto spiegalo meglio.
Ciao Uwe

Go Up