Go Down

Topic: détecteur de passage (Read 15096 times) previous topic - next topic

ecolomatique

Oui, je souhaite bien déclencher une action à la coupure d'un faisceau lumineux.
La distance émetteur/récepteur est de 80 cm et c'est un endroit pas lumineux (mais pas trop sombre non plus).

Je pense que je vais m'en sortir avec les conseils que vous m'avez donnés (mais je laisse le sujet ouvert pour d'autres propositions ou pour si je rencontre des problèmes lors de la réalisation).
En tout cas, merci !

chabot380

Si ça regle le problème de la lumière ambiante !
1) c'est de l' infrarouge.
2) la diode qui emet l'IR est modulée.
Pour le TSOP 32138 il faut la moduler à 38KHz.
Pour la porté c'est comme une télécommande de télé ! Donc en gros 7 à 8 mètres.

voili voilou !
A+
chabot380
ORDINAUSORE 2Ghz AMD64 QUI S'ALLUME EN 48 SECONDES AVEC UBUNTU 12.04
ARDUINO UNO / Shield Ethernet / RTC DS1307
Programmation Python et j'apprends le C
Technicien Télé Vidéo à la retraite.

ecolomatique

Bonjour,

je me pose une nouvelle question : si je met un seul émetteur (la DEL IR) et deux récepteurs (des tsop32138), est-ce qu'il risque d'y avoir un problème pour savoir devant lequel je passe en premier ?
Parce que les deux récepteurs seront à côté (à 2 cm pour être plus précis) et le but est de savoir de quel sens la personne vient donc il faut être précis !

ecolomatique

Et encore une autre question : je viens de trouver dans mes composants les capteurs de la tête du roborapteur : une LED IR et deux récepteurs IR (par contre je ne sais pas exactement comment ils fonctionnent, il y a trois pattes avec marqué dessus : IRO, GND et IRV, moi je ne connais que GND) et les récepteurs n'ont pas de référence. Savez-vous si ces capteurs pourraient remplacer le tsop 32138 ?

ecolomatique

Et encore une question (oui, je sais, je pose trop de question  XD) : comme personne me répondait, j'ai essayé de voir comment fonctionnent mes récepteurs IR et j'ai trouvé comment les brancher sur internet, mais j'ai maintenant plusieurs problèmes : comme je débute totalement, je ne sais pas du tout comment faire osciller la led à 38kHz (car j'ai cru comprendre que c'était la plus haute fréquence qu(on peut obtenir avec arduino)(je suppose que ce n'est pas avec un basique

   {
   digitalWrite(5, HIGH);
   delay(0.013);
   digitalWrite(5, LOW);
   delay(0.013);
   }

dans une boucle, je me trompe ? )

Ensuite, je ne sais pas comment brancher le condensateur (ni quel valeur prendre) pour ne garder que ce qui est à plus de 38kHz (au niveau du récepteur, donc).

Voilà, j'espère avoir était assez clair et je vous remercie par avance de vos futures réponses !

zoroastre

#20
Jan 29, 2012, 07:17 pm Last Edit: Jan 29, 2012, 08:11 pm by zoroastre Reason: 1
Yep!

Le mieux est d'utiliser la librairie adaptée comme je te l'avais proposé précedemment.

Code: [Select]

#include <IRremote.h>

#define PIN_IR 3
#define PIN_DETECT 2
#define PIN_STATUS 13

IRsend irsend;

volatile int count;

int lastState = 0;
int reading;

long lastDebounceTime = 0;
long debounceDelay = 500;

long previousMillis = 0;
long pulseIR = 50;

void setup()
{
 pinMode(PIN_DETECT, INPUT);
 pinMode(PIN_STATUS, OUTPUT);
 irsend.enableIROut(38);
 irsend.mark(0);
 
 count = 0;
 reading = 0;
 
 Serial.begin(9600);
 delay(1000);
}

void loop() {
 
 unsigned long currentMillis = millis();
 
 if ((digitalRead(PIN_DETECT)) && (currentMillis - previousMillis > pulseIR)) {
     digitalWrite(PIN_STATUS, LOW);
     previousMillis = currentMillis;
   }
   
 if ((!digitalRead(PIN_DETECT)) && (currentMillis - previousMillis > pulseIR)) {
     digitalWrite(PIN_STATUS, HIGH);
     previousMillis = currentMillis;
     reading = 1;
   }
   
 if (reading != lastState) {
   lastDebounceTime = millis();
   count++;
   Serial.println(count);
 }
 
 if ((millis() - lastDebounceTime) > debounceDelay) {
   reading = 0;
 }
   
 lastState = reading;
}



Avec un compteur de passage en plus ;)
Le code est perfectible, j'ai d'ailleurs un reset de la carte dès que je lance le moniteur série. Je suppose que la librairie doit utiliser des interruptions...
La variable pulseIR doit être adapté pour éviter des erreurs de lecture. Une valeur vers 150 est correcte.

Mon matos :

Recepteur :

ARDUINO    |     RECEPTEUR
5V-----------------------> Vin
GND----->R200-----> Gnd
D2-----------------------> Vout

Emetteur :

ARDUINO    |     RECEPTEUR
D3------------------------>DEL+
GND------>R220----->GND

Bon, j'ai pris les resistances que j'avais sous la main, je ne pense pas que la resistance du recepteur soit necessaire.(Recepteur à 3 pattes avec comme inscription sur la tête 'LFN' ???)

@+

Zoroastre.
Gné! ;)

ecolomatique

Quote

Mon matos :

Recepteur :

ARDUINO    |     RECEPTEUR
5V-----------------------> Vin
GND----->R200-----> Gnd
D2-----------------------> Vout

Emetteur :

ARDUINO    |     RECEPTEUR
D3------------------------>DEL+
GND------>R220----->GND


Je n'ai pas trop compris, est ce que tu pourrais me faire un schéma à la va-vite ?

zoroastre

Gné! ;)

ecolomatique

Ouaou, pas mal pour un schéma fait à la va-vite ! Merci !

ecolomatique

C'est bon, ça marche ! J'ai plus qu'à trouver une led ir assez puissante et c'est tout bon (parce que là, ça ne dépasse pas les 10 cm de portée).
Merci beaucoup !

chabot380

salut
Tu n'as pas une vieille télécommande de télé ou magnétoscope ?
Sinon tu vas voir à la decheterie !

A+
chabot380
ORDINAUSORE 2Ghz AMD64 QUI S'ALLUME EN 48 SECONDES AVEC UBUNTU 12.04
ARDUINO UNO / Shield Ethernet / RTC DS1307
Programmation Python et j'apprends le C
Technicien Télé Vidéo à la retraite.

ecolomatique

Bonjour !
Depuis la dernière fois, j'ai (enfin) trouvé une vieille télécommande, et donc une DEL IR assez puissante. Mais je me pose tout de même une question :

est-ce qu'on peut (avec le code donné un peu plus haut) rendre plus sensible le récepteur ? Pour augmenter encore plus la portée ?

zoroastre

Yep!

Sur mon shema précedent supprime la resistance de 220 ohms au niveau du récepteur, elle n'est pas necessaire. Cà devrait améliorer un peu la réception.
Par contre, du côté du software, il n'y a pas grand chose à faire. Si à 5 mètres le récepteur ne voit rien, c'est que l'emetteur est trop juste ou les piles sont usées.

@+

Zoroastre.
Gné! ;)

ecolomatique

J'avais déjà supprimé la résistance et la portée est d'environ 20 cm ... tant pis, ça devrait suffire, je me débrouillerai avec ça. Merci !

Go Up