Auteur Sujet: Barrière infra rouge et interruptions  (Lu 19855 fois)

Dominique

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 2870
  • 100% Arduino et N
    • Voir le profil
Re : Barrière infra rouge et interruptions
« Réponse #15 le: juin 19, 2016, 08:25:18 pm »
J'ai peut-être compris pourquoi les interruptions ne marchent pas : ce n'est pas un problème logiciel mais matériel !

Sur Arduino, les niveaux logiques sont particuliers (un peu différents de ceux de la TTL et du CMOS) :

Un niveau LOW correspond à une tension inférieure à 1,5V.
Un niveau HIGH correspond à une tension supérieure à 3V.

Dans votre test, int etat=analogRead(canton);
  if (etat>100)  {
    //un train est détecté la valeur lue est supérieure à 15
...
vous décrétez le niveau HIGH à 100 : en proportion sur 1024 pour 5V, 100 correspond à 0,5V. On est en plein dans la plage du niveau bas.

D'ailleurs je ne comprend pas bien à quoi correspond la valeur 15 dans le commentaire.

Ce que vous pouvez faire en analogique, en différenciant 2 tensions faibles, ne peut pas marcher en digital car il faut au moins 3V pour assurer le niveau haut.
Votre montage détecteur IR ne fournit peut-être jamais de niveau haut logique !!!

Cela peut provenir de plusieurs raisons :
- courant trop faible dans la diode émettrice
- distance trop grande entre la diode émettrice et le récepteur
- lumière parasite...

C'est pour cela que j'aime bien travailler en analogique avec ce type de détecteur, ce qui permet l'étalonnage comme je l'indique dans l'article.
Je pense aussi que les interruptions n'apportent pas grand chose dans ce type d'utilisation.

Qu'en pensez-vous ?
« Modifié: juin 19, 2016, 08:28:26 pm par Dominique »
Cordialement,
Dominique

Cevenol38

  • Newbie
  • *
  • Messages: 9
    • Voir le profil
Re : Barrière infra rouge et interruptions
« Réponse #16 le: juin 19, 2016, 09:33:28 pm »
Exactement, au début j'avais peur que rien ne soit détecté mais en fait la fréquence d'exécution de la boucle loop est telle qu'il n'y a aucun risque :).
Mon commentaire à 15 n'est plus à jour en effectuant de nombreuses mesures je l'ai augmenté à 100 qui semble vraiment une valeur seuil.
Tout fonctionne bien à présent :), reste à affiner le code mais je suis sur la bonne voie ;).
Merci à tous, le fait d'exposer mon problème m'a permis de le voir sous un autre angle.

Dominique

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 2870
  • 100% Arduino et N
    • Voir le profil
Re : Barrière infra rouge et interruptions
« Réponse #17 le: juin 19, 2016, 10:06:53 pm »
Merci pour votre contribution qui a eu le mérite d'enrichir plusieurs sujets utiles.

J'ajouterai que je penche en ce moment pour des détecteurs IR à réflexion à base de TCRT5000L, qui sont vendus sous forme de mini carte équipée d'un circuit intégré donnant un vrai signal logique D0 en plus du signal analogique A0.


On en trouve à environ 1,5€ là par exemple : http://www.ebay.fr/itm/Infrared-reflective-Photoelectric-Switch-IR-Barrier-Line-Track-sensor-TCRT5000L-/310536079942?hash=item484d648a46:g:eQsAAOxyhodRzUaD
« Modifié: juin 19, 2016, 10:11:17 pm par Dominique »
Cordialement,
Dominique