Go Down

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

ecolomatique

Bonjour à tous,

Je débute sur arduino (c'est seulement la seconde fois que je l'utilise) et j'aimerais faire un détecteur de passage :

le problème est que je compte utiliser uniquement une carte arduino uno, une led pour emmètre et une photorésistance pour recevoir. Je voudrais donc savoir s'il est possible de "crypter" la lumière (haute fréquence) puis de la "décrypter" ensuite afin de ne pas être gêné par la lumière ambiante (ampoule, soleil, ...). Autrement dit, est-il possible de générer une haute fréquence avec l'arduino puis de filtrer pour ne garder que le signal HF, toujours avec l'arduino.

Merci d'avance !

zoroastre

#1
Jan 25, 2012, 05:47 pm Last Edit: Jan 25, 2012, 06:02 pm by zoroastre Reason: 1
Yep!

Je suppose que tu comptes utiliser une photodiode et non pas une photoresistance.
Par contre, je ne vois pas comment tu comptes détecter un passage avec une simple diode.

Il est possible de décoder les télecommandes avec un arduino et un récepteur infrarouge (différent types de cryptage dans une télecommande).
Regardes donc plutôt du côté des diodes infrarouges ou "barrière infrarouge",

http://www.pobot.org/Barriere-infra-rouge.html

Il faut bien entendu adapter les composants en fonction de la longueur de ta barrière.

;)

@+

Zoroastre.
Gné! ;)

68tjs

Premier conseil travaille dans l'infra rouge tu éliminera une bonne partie des perturbations extérieures et tu seras plus discret.
Deuxième conseil utilises si possible des rayons "dirigés". En gros évites les diodes infrarouge qui émettent à 250 °, choisi des rayons "fins" tu aura plus de puissance sur ton détecteur et moins de réflexions parasites.

Ensuite comment conçoit tu ton projet ?
L'émetteur et le récepteur sont-ils indépendant et en vue directe ou sont-il accolés le renvoi des rayons se faisant par une surface réfléchissante ? A te lire il semble que ce soit cette seconde solution que tu as choisi. Cela mérite une expérimentation pour vérifier que le niveau du signal reçu est compatible avec ce que tu veut faire ou s'il faudra prévoir de l'amplification analogique, si les niveaux ne sont pas trop faible un trigger de Schmitt devra suffire..

Tu parles de cryptage haute fréquence pour l'émission, avec un AtMega328p on ne peut pas aller bien haut quelques dizaines de kHz au maximum, un peu plus en court-circuitant les bibliothèques arduino et en écrivant directement sur les registres du micro processeur.
Pour le filtrage te sens tu plus à l'aise avec un filtrage classique : condensateurs, inductances, résistances, ampli opérationnel ou plutôt filtrage numérique par logiciel ?



skywodd

Bonjour,

Le mieux c'est d'utiliser des émetteurs/récepteur infrarouge pour télécommande, il comporte un filtre spécial qui évite les parasites liée à la lumière ambiante (excepté pour certaine lampe néon). Pour la détection d'un passage il ya deux variantes, soit utiliser un filtre passe bande calibré sur une certaine fréquence (ce qui implique d'avoir au moins un ampli OP, des résistances et des condensateurs), soit faire un traitement numérique par exemple via FFT (Fast Fourier Transform).
La méthode par FFT a l'avantage de ne nécéssiter aucun composants externe, mais il faudra gérer un bon pavé de code (et savoir utiliser une librairie FFT écrite en assembleur) pour pouvoir faire la génération de la fréquence via une 1er interruption tout en gérant la prise de mesure périodiquement + FFT avec un second timer.

Personnellement je conseillerai la méthode du filtre analogique (passe bande), certes il faut des composants en plus, et faire quelques calculs mais ce serait au final le plus simple à mettre en place.
Des news, des tutos et plein de bonnes choses sur http://skyduino.wordpress.com !

zoroastre

Gné! ;)

68tjs

Mais qu'est ce qui va nous rester à faire si on trouve tout fait dans un même boîtier le récepteur, le transimpédance la cag et l'interface de sortie !!!

Ca à l'air vachement bien comme kit

bbs

#6
Jan 26, 2012, 12:30 pm Last Edit: Jan 26, 2012, 12:45 pm by bbs Reason: 1
Pour une barrière de déclenchement, j'ai personnellement utilisé un laser http://www.sparkfun.com/products/594 sur un phototransistor IR (L-53p3c) (avec un peu de gaine thermo/paille de fastfood pour limiter les parasites).

Le laser n'est pas dans la fréquence optimale mais pas trop loin et à 0.8mW c'est pas trop grave, il écrase quand même largement les parasites des lumières artificielles.
Faudra que je teste laser vs télécommande (entre puissance de l'un et fréquence de l'autre)

L'inconvénient c'est que c'est visible, l'avantage c'est la portée !

D.

Edit: J'ai oublié de rappeler les précautions d'usage. Il ne faut pas jouer avec un laser. C'est globalement dangereux et peut provoquer des lésions irréversibles.
I've lost my mind, but I've a backup tape ... somewhere

ecolomatique

En fait, ce n'est pas photodiode que je voulais dire mais bien photorésistance. Ce n'est pas possible avec une photorésistance ?

Pour la programmation (la FFT) : je n'y connais absolument rien, donc la solution électronique est mieux, je vais essayer de me procurer les composants nécessaires.

@bbs : j'ai déjà essayé avec un laser mais c'est la partie mécanique qui ne marchait pas (le laser doit être parfaitement aligné avec le récepteur, or, avec le temps, mon laser bouge très légèrement et ça ne marche plus).

@zoroastre : le kit de communication IR suffit pour filtrer ? Et si je met deux récepteurs l'un à côté de l'autre, est ce que le système sera assez sensible pour détecter devant lequel je suis passé en premier ?

skywodd


En fait, ce n'est pas photodiode que je voulais dire mais bien photorésistance. Ce n'est pas possible avec une photorésistance ?

Arf... une photorésistance, c'est pas le genre de truc à être "précis".
Une photorésistance ça réagit à tout, tu auras toute les difficultés possible en voulant éviter les parasites, un phototransistor c'est le minimum (et encore ...).


Pour la programmation (la FFT) : je n'y connais absolument rien, donc la solution électronique est mieux, je vais essayer de me procurer les composants nécessaires.

C'est vrai que la FFT c'est comment dire ... spécial ... mais ça se fait.
Des news, des tutos et plein de bonnes choses sur http://skyduino.wordpress.com !

zoroastre

Yep!

Une photoresistance est classiquement utilisée pour détecter une intensité de lumière.

Quote
le kit de communication IR suffit pour filtrer ? Et si je met deux récepteurs l'un à côté de l'autre, est ce que le système sera assez sensible pour détecter devant lequel je suis passé en premier ?


Si tu veux dire 2 emetteurs/2 recepteurs, pas de souci particulier. chaque emetteur envoie un code particulier qui sera traité uniquement par l'emetteur correspondant. Le recepteur X2 branché sur la broche 1 traitera un seul code provenant de l'emetteur X1, le recepteur Y2 branché sur la broche 2 traitera le code de l'emetteur Y1.
Les boucles conditionnelles accepteront sur les broches 1 ou 2, soit un code soit l'autre.

Du point de vue materiel, les emetteurs et recepteurs infrarouges peuvent se distinguer par leur angle de diffusion/reception de la lumière. Il faudra peut être regarder cet aspect selon ta configuration.

Du point de vue programmation, il faudra synchroniser les emetteurs/recepteurs si tu veux pouvoir detecter une rupture de boucle. La librairie arduino permet d'envoyer le signal à une certaine fréquence avec :

Code: [Select]
irsend.enableIROut(38);
38 Khz dans ce cas.

Cette librairie a d'ailleurs la possibilité de décoder les télécommandes de tv, dvd, etc. Ces appareils utilisent un codage de type RC4 ou RC5.
Je pense qu'en combinant l'ensemble des élements, tu devrais pouvoir t'en sortir aisement.

@+

Zoroatre.
Gné! ;)

zoroastre

Yep!

Bon j'ai retrouvé mon matos et j'ai vite fait un essai. Comme c'est du mad in china, j'ai claqué ma diode dans un tube en papier pour pouvoir couper le signal plus facilement. ;)

Le code :
Code: [Select]
#include <IRremote.h>

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

IRsend irsend;
void setup()
{
 Serial.begin(9600);
 pinMode(PIN_DETECT, INPUT);
 pinMode(PIN_STATUS, OUTPUT);
 irsend.enableIROut(38);
 irsend.mark(0);
}

void loop() {
 //digitalWrite(PIN_STATUS, !digitalRead(PIN_DETECT));
 //Serial.println(!digitalRead(PIN_DETECT));
 
 if (digitalRead(PIN_DETECT) == 1) { digitalWrite(PIN_STATUS, 0); }
 else { digitalWrite(PIN_STATUS, 1); }
}


Je bloque sur la manière de detecter une coupure du signal (frequence 38 Khz).
Le FFT est peut être la solution.

@+

Zoroastre.
Gné! ;)

ecolomatique

Ouille, je suis mal alors ^^

Quelqu'un d'autres aurait une solution... plus simple que le FFT ?

chabot380

salut
Il faut demander à un dépanneur télé à la retraite !  ;)
Tiens ça tombe bien j'en suis un !  :D
Le TSOP 32138 n'est pas une simple diode de réception IR mais un recepteur complet.
On l'alimente pas la broche VS ( 5 volts de l'arduino), la broche de masse à la masse de de l'arduino.
La sortie OUT une resistance de 10k vers le 5 volts et mettre la sortie OUT vers une entrée de l'arduino.
Si, il n'y a pas de passage OUT = 5V, si passage OUT 0V c'est tout !
Pour le programme je vous laisse faire.

@micalement
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

Oui mais ça ne règle pas le problème de la lumière ambiante ça, si ?

Mitchbzh

Si tu souhaite déclencher une action à la coupure d'un faisceau lumineux, une barrière infra-rouge remplira ce rôle en générant un signal - à une fréquence donnée pour s'affranchir du bruit lié à l'environnement - sur un émetteur infra rouge. Tant que tu reçois cette même fréquence sur le récepteur infra-rouge: y'a personne. Si le signal disparait: quelqu'un vient de passer.
Pour la mise en œuvre: tout dépend de la distance que tu as à couvrir et de ton environnement

Par contre si tu souhaites faire de la détection de mouvement, seul un détecteur pyroélectrique avec une lentille de Fresnel pourra remplir cette fonction (on trouve des kits tous fait sur le web)

Dans les deux cas: oubli la photorésistance, elle n'est pas faite pour cette usage  :P

Go Up