Fototransistor IR e libreria di Ken Shirriff

Ciao a tutti,

ho un fototransistor qse122 (datasheet Intelligent Power and Sensing Technologies | onsemi ) è possibile utilizzarlo per ricevere comandi da un telecomando?
se si può come lo devo collegare? :smiley:

Magari utilizzando la libreria di Ken Shirriff ( http://www.arcfn.com/2009/08/multi-protocol-infrared-remote-library.htm )

Grazie!

bella libreria quella di ken shirriff.... l'ho usata più volte.

googla googla!

ho usato questo schema per collegarlo all'arduino

l'ho collegato e ho visto il valore utilizzando la porta analogica. Fin qui tutto bene, funziona.. i problemi iniziano quando cerco di utilizzare la libreria, l'arduino non mi risponde.. in uscita sulla seriale non ho niente. Dove sbaglio?

Ciao,

i problemi iniziano quando cerco di utilizzare la libreria, l'arduino non mi risponde.. in uscita sulla seriale non ho niente.

che codice stai utilizzando?
Cosa significa che non risponde?

non mi esce niente, è come se la libreria non riconosce niente.

Il codice che ho utilizzato è praticamente quello che si trova negli esempi della libreria.

/*
 * IRremote: IRrecvDump - dump details of IR codes with IRrecv
 * An IR detector/demodulator must be connected to the input RECV_PIN.
 * Version 0.1 July, 2009
 * Copyright 2009 Ken Shirriff
 * http://arcfn.com
 */

#include <IRremote.h>

int RECV_PIN = 11;

IRrecv irrecv(RECV_PIN);

decode_results results;

void setup()
{
  Serial.begin(9600);
  irrecv.enableIRIn(); // Start the receiver
}

// Dumps out the decode_results structure.
// Call this after IRrecv::decode()
// void * to work around compiler issue
//void dump(void *v) {
//  decode_results *results = (decode_results *)v
void dump(decode_results *results) {
  int count = results->rawlen;
  if (results->decode_type == UNKNOWN) {
    Serial.println("Could not decode message");
  } 
  else {
    if (results->decode_type == NEC) {
      Serial.print("Decoded NEC: ");
    } 
    else if (results->decode_type == SONY) {
      Serial.print("Decoded SONY: ");
    } 
    else if (results->decode_type == RC5) {
      Serial.print("Decoded RC5: ");
    } 
    else if (results->decode_type == RC6) {
      Serial.print("Decoded RC6: ");
    }
    Serial.print(results->value, HEX);
    Serial.print(" (");
    Serial.print(results->bits, DEC);
    Serial.println(" bits)");
  }
  Serial.print("Raw (");
  Serial.print(count, DEC);
  Serial.print("): ");

  for (int i = 0; i < count; i++) {
    if ((i % 2) == 1) {
      Serial.print(results->rawbuf[i]*USECPERTICK, DEC);
    } 
    else {
      Serial.print(-(int)results->rawbuf[i]*USECPERTICK, DEC);
    }
    Serial.print(" ");
  }
  Serial.println("");
}


void loop() {
  if (irrecv.decode(&results)) {
    Serial.println(results.value, HEX);
    dump(&results);
    irrecv.resume(); // Receive the next value
  }
}

Ciao,
tu hai utilizzato il codice della libreria as-is, ma se lo leggi vedrai che si aspetta di ricevere i segnali dal ricevitore sul pin digitale 11...

Scusami, mi sono dimenticato di specificarlo, il pin l'uscita l ho collegato al pin digitale richiesto dal programma.. Non é quello l'errore :frowning:

Ciao,
mi è tornato in mente che avevo un ricevitore a 2 piedini, oggetto che arrivava da un televisore.
Non andava collegato direttamente ad Arduino, ricordo che c'erano da utilizzare una serie di transistor (i voltaggi erano alti).
Penso sia la stessa cosa con il tuo, se dai un'occhiata al datasheet.
Se ritrovo lo schema di collegamento, te lo posto.

pitusso:
Ciao,
mi è tornato in mente che avevo un ricevitore a 2 piedini, oggetto che arrivava da un televisore.
Non andava collegato direttamente ad Arduino, ricordo che c'erano da utilizzare una serie di transistor (i voltaggi erano alti).
Penso sia la stessa cosa con il tuo, se dai un'occhiata al datasheet.
Se ritrovo lo schema di collegamento, te lo posto.

Ciao, ho provato a mettere un transistor per aumentare la tensione quando il fototransistor conduce, ma ho risultati identici ai precedenti. probabilmente non è la configurazione adatta.

potrei provare a diminuire la resistenza dell'emettitore, adesso è 10Kohm

grazie

I telecomandi a infrarosso modulano il comando in un codice (protocollo) e poi su una frequenza da 30 a 40 kHZ (38 kHz é la frequenza piú comune). Un ricevitore deve demodulare e portare il segnale originale al Arduino che lo decodificherá.
Questi ricevitori sono della serie TSOPyyyxx (dove yyy é il modello e xx la frequenza) amplificano, filtrano e decodificano il segnale.
Non so dirti le diffeenze dei vari tipi, oltre l'involucro e percui l'angolo di visuale. Un esempio é la serie TSOP41xx : http://docs-europe.electrocomponents.com/webdocs/0e30/0900766b80e30b9c.pdf
costano sotto l'euro.
In poche parole con un fototransistore non Ti funziona.
Ciao Uwe

[EDIT]
descrizione dei vari protocolli usati:
esempio del RC5: RC-5 - Wikipedia
e di altri in inglese:
http://www.sbprojects.com/knowledge/ir/index.php
[/EDIT]

Uwe ciao.

Usando la libreria IR indicata ed un TSOP + trasmettitore, hai un'idea della distanza alla quale si può arrivare per creare una barriera?

Grazie.

@uwe

In poche parole con un fototransistore non Ti funziona

anche io ora sto usando i classici TSOP*, ma come ho detto i primi esperimenti li avevo fatti con un fototransistore, in specifico (mi son recuperato la sigla), si trattava di un BPW41N.
Datasheet:
http://www.hobbytronics.co.uk/datasheets/bpw41n.pdf
http://www.tradeflair.co.uk/Images/bpw41n.pdf

Ricordo di aver tribolato con la componentistica di contorno, e se il ricordo non mi inganna, funzionava (perlomento, nel leggere il segnale di un telecomando).