Motore e pir

Ciao a tutti,
sono alle prime armi con Arduino, e sono decisamente poco capace. Per adesso sto facendo alcuni semplici progetti, ed ho riscontrato un problema che non riesco a risolvere. Sto cercando di controllare un motorino tramite telecomando, utilizzando un sensore pir. Il codice che utilizzo è il seguente

#include <IRremote.h> 
int receiver = 11;
IRrecv irrecv(receiver); 
decode_results results;

void setup()
{
  Serial.begin(9600); 
  irrecv.enableIRIn(); 
  pinMode(9, OUTPUT); 
}
void loop()
{
  if (irrecv.decode(&results)) 
  {
    Serial.println(results.value, HEX); 
    irrecv.resume();
  }


  if ( results.value == 0xE13DDA28 ){ //quando premo il tasto 1 sul telecomando
    digitalWrite(9, HIGH);   
  }
 if ( results.value == 0xAD586662  ){ //quando premo il tasto 2 sul telecomando
    digitalWrite(9, LOW);  
  
}
}

Una volta attaccata la scheda al pc inizio a premere il tasto 1 del telecomando (samsung) facendo partire il motore. E qui si presenta il problema, infatti sul monitor seriale iniziano a comparire valori diversi da quello predefinito, e risulta difficile spegnere il motore con il tasto 2 avvicinandosi al sensore con il telecomando, e praticamente impossibile se si è lontani. Io non capisco, non mi dava questo problema quando comandavo dei led :~
Il motorino è collegato ad arduino tramite la breadboard e ho utilizzato un transistor per controllarlo (http://www.fairchildsemi.com/ds/BS/BS170.pdf questo modello per essere precisi). Essendo alle prime armi non so come gestire la cosa, e dato che sono intenzionato a costruire una macchinina comandata a distanza tramite il sensore pir vorrei sapere come risolvere questo problema. Potrebbe essere il transistor la causa? Grazie anticipatamente :slight_smile:

Potrebbe essere un problema di disturbi, o di assorbimenti, ma non possiamo dirtelo con precisione se non sappiamo ccome esattamente il tutto e' connesso ... allega uno schema, cosi ci si puo fare un'idea piu precisa :wink:

Ma nel tuo programma usi l'IR sul pin 11.
La IRreceive usa il timer2. Il timer2 ti permette di usare il pin 11 oppure il 3.
http://playground.arduino.cc/Code/FrequencyTimer2

Piloti il motore (attraverso il transistor) con il pin 9, ma perchè nella setup() rendi il pin 3 in OUTPUT? Non dovevi farlo per il pin 9?

Cosa stai usando come ricevitore? Il PIR non é adatto per ricevere i segnali dei telecomandi. Ti serve un ricevitore tipo TSOPxx38.

Ciao Uwe

Ho corretto, il codice (9,OUTPUT), è stata una distrazione mia.
Come ricevitore sto usando un TSOP, questo http://it.farnell.com/vishay/tsop4838/ir-receiver-38khz/dp/4913190, ma non penso sia questo il problema, infatti riesco a comandare i led senza problemi, solo con il motorino riscontro questa difficoltà.
Ho allegato lo schema dei collegamenti, effettivamente il problema potrebbe essere lì (scusate, sono ancora un po' inetto :sweat_smile:)

Se scrivi PIR non posso immaginare che usi un TSOP. :wink: :wink:
Il motorino non gira perché stai usando sbaglaiato il transistor.
Il transistore NPN devi collegarlo col emettitore a massa e il collettore al motorino. il secondo filo del motorino a +5V; niente resistenza. Sulla base metti una resistenza da 1kOhm.
Metti anche un diodo in antiparalello al motore.

Ciao Uwe

Scusa, dovevo specificare meglio, starò più attento :slight_smile:
Comunque ho modificato lo schema, in teoria così dovrebbe andare, giusto?