anti-rebond

amatpicax59

New Member
Le problème du rebond se rencontre sur les boutons poussoirs ou les contacts mécaniques

Avez vous un avis avisé sur l'une des solutions suivantes ?

1- utiliser l'instruction " pause " . quelles sont vos expériences sur la valeur à donner en millisecondes

2- mettre un condensateur en parallèle sur le bouton poussoir ( Piem l'a énoncé dans une discussion )
mais quelle valeur utiliser quand on a une résistance de tirage de 10KOhm à la masse

3- utiliser l'instruction " button " mais ça ne semble pas très simple, avez vous des exemples de ligne de programme

La solution du condensateur me plaît bien mais j'attends vos avis

Merci à tous
 

dje8269

Senior Member
Bonsoir,

La solution "button" est fastidieuse , je suis d'accord .

Un petit condo de 100nF faist parfaitement l'affaire ou 220nF , ou même 1 µF . ça n'as pas grande importance , le tout est de ne pas avoir de pic lors de l'appui . suivant la valeur du condo la courbe sera plus ou moins raide .

Concernant l'utilisation de la pause dans un programme c'est tout as fait possible . Un appui de bouton extrêmement bref, dur environ 50ms . Avec une pause de 10 ms tu est sur de ne pas avoir de rebond, mais la fonction est bloquante .
Sur une BP , je préfère la fonction " do loop while" pour exécuter seulement quand le BP est relâché , comme ça pas de souci .

mais je suis pas un expert , attend une réponse avec plus de certitude , car il m'arrive (souvent) de dire des bêtises
 

alainav1

Senior Member
Bonjour,
j'utilise la procedure suivante
si le bouton voit un niveau haut et 10ms apres il est encore haut alors je declenche l'action

principe
if bouton=1 then
pause 10ms
if bouton =1 then
gosub sous programme
endif
endif
 

PieM

Senior Member
La détection de relâchement avec do loop n'évite pas les rebonds.
Si on appui sur un BP avec rebond, et bien le rebond vaut un relâchement et sort de la boucle.

Le principe du condensateur en // est à mon avis primordial. On ne peut toutefois pas dire que n'importe quelle valeur fait l'affaire.
Si on parle de contact mécanique, il faut différencier le BP action manuelle (et sa qualité!) du codeur rotatif mécanique par exemple, qui lui s'accommode mal d'une forte constante de temps, au risque de sauter des infos.
L'idéal serait d'estimer à l'oscillo la valeur de l'info parasite pour en déduire la constante de temps RC nécessaire. Avec un BP, a priori sur 10k, je mettrais 220 nF , mais reste à expérimenter.

Autre considération, parfois, il vaut mieux utiliser la détection sur un contact à ouverture .
Enfin, l'utilisation d'une entrée Trigger (voir inputtype) permet de filtrer de nombreux rebonds par ses entrées logiques de niveau 1V et 4V, au lieu 0.8V et 2V en TTL.
 
Top