Go Down

Topic: sensore IR (Read 738 times) previous topic - next topic

Lucailvec

ciao a tutti è da un po' che sto cercando di fare una fotocellula, il fotodiodo l ho provato e riprovato ma non mi soddisfa purtroppo(è veramente molto disturbato dalla luce esterna) quindi ho optato per utilizzare un TK 1838 o TSOP 1838 come lo volete chiamare (datasheet : http://www.adrirobot.it/datasheet/optoelettronica/pdf/tsop_18xx.pdf) quindi usando un led infrarosso e quell oggettino li volevo creare appunto questo sensore.....ma come al solito non funziona !

sarò io stupido ma non riesco a trovare una soluzione, mi spiego meglio.
Il problema è che senza interruzione mi restituisce 1 e quando blocco il fascio rimane invariato lo stato d' uscita poi togliendo l' oggetto in mezzo mi restituisce 0 per circa mezzo secondo e poi di nuovo 1  :smiley-eek-blue: son disperato non so più che cosa inventarmi .... questa è la sezione hardwere ma posto anche le due righe di codice sperando che il problema sia li ...
grazie in anticipo !!!

//prova mano due
int led=5;
int ledsens=6;
int tsop=7;

void setup(){
  pinMode(led,OUTPUT);
  pinMode(ledsens,OUTPUT);
  pinMode(tsop,INPUT);

  Serial.begin(9600);
}

void loop(){
  tone(ledsens,38000); 
    Serial.println(digitalRead(tsop));


Michele Menniti

semplicemente hai un sensore ad impulsi. Ecco qualcosa che ho scritto tempo fa:
- 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, i più usati sono quelli a 38KHz, ma ce ne stanno di specifici per 32KHz e le altre gamme del range citato. Queste tipologie digitali, hanno due tipi di risposta:
a - ad impulso: normalmente sull'uscita, in presenza di un segnale ricevuto alla corretta frequenza, c'è un livello LOW costante, nel momento in cui il fascio si interrompe danno un solo impulso HIGH di durata fissa, che prescinde dal fatto che il fascio sia ancora interrotto o meno;
b - a tempo: anche in questo caso l'uscita è normalmente LOW, ma quando si interrompe il fascio si attiva un livello HIGH che dura per l'intera durata dell'interruzione.

poi gli stati H e L possono anche risultare invertiti, ma nel tuo caso comunque il comportamento è quello ad impulsi, un sensore "a tempo" è certamente il TSOP34838 della Vishay, l'ho usato diverse volte e lo trovi su RS
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

Lucailvec

grazie mille della risposta allora aggiungerò anche questi particolari alla tesina meglio andarci con i piedi di piombo sulla scelta del componente , ho capito ....ecco perchè è largamente utilizzato come rx , perchè è fatto per fare quello  :smiley-roll-blue:
scusa l ultima domanda ma quindi è proprio una famiglia diversa di componenti ?

Michele Menniti

Sì, sono due diverse tipologie di comportamento, ed ogni sensore ha l'una o l'altra. Se lo immagini come rilevatore per antifurto, quando si interrompe la barriera deve mandare un impulso, il fatto che poi termini non ha importanza; se invece serve per gestire qualcosa per tutto il tempo dell'interruzione allora serve l'altro tipo. Io per esempio ho usato quello a tempo per il mio progetto della barriera per ferromodellisti: il micro rileva l'inizio dell'interruzione (passaggio del treno) e chiude il passaggio a livello, quando l'interruzione termina significa che il treno è passato e da quel momento inizia un conteggio di sicurezza a tempo dopo il quale si riapre la barriera, naturalmente il progetto è più sofisticato ma è giusto per farti comprendere le diverse utilità. nelle prove dei vari sensori mi è capitato un IR38DM che mi ha fatto uscire pazzo e siccome ne avevo 4 non potevano essere tutti guasti, ecco perché ho approfondito e scoperto questa importante differenza tra le due tipologie. ;)
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

Lucailvec

a grazie mille per la chiarezza  :) pensa che a scuola ce l' hanno insegnato così tanto per raccontarci una favola visto che poi ho portato questo problema ai prof e ho scoperto mio malgrado che ne sapevano meno di me...in ogni caso però avendo in mando il TSOP1838 potrei fare una fotocellula che invece di leggermi un valore mi compara la stringa di impulsi inviata con quella ricevuta... se si può sarebbe una cosa interessante  :D

Michele Menniti

Credo di non aver capito cosa vuoi fare; il TSOP resta fisso ad un livello finché riceve il segnale a 38KHz, quando tale segnale si interrompe esso cambia di livello (nel tuo caso solo per un istante), per avere unh nuovo cambio di livello devi ricominciare ad inviare i 388KHz e poi interromperli nuovamente.
Forse intendi dire che la variazione potresti farla direttamente in trasmissione, cioè invece di avere una trasmissione fissa a 38KHz costruisci dei "treni": 38KHz - OFF - 38KHz - OFF e quindi dal lato TSOP sai che ogni tot tempo hai un impulso, penso sia fattibile, sempre se ho capito, magari spiega la tua idea...
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

Go Up