User Tools

Site Tools


avr:les_rebonds

Les rebonds

Quand un contact mécanique est actionné des rebonds sont créés. Le passage d’un niveau haut à un niveau bas n’est jamais direct :
rebonds.jpeg

FIXME : Il y a aussi des rebonds lors de l’ouverture du bouton poussoir, donc du front montant.

La durée des rébonds est d’environ 1ms.
Ils deviennent problématiques si le CI est déclenché sur front descendant.
Dans notre cas il sera déclenché 4 fois au lieu d’une seule comme on le souhaite

Solutions

Circuit RC

Un circuit RC dont la constante de temps est grande devant la période des rebonds.

Traitement logiciel

Si on a par exemple un bouton poussoir connecté à une entrée d’interruption d’un microcontroleur et que l’on souhaite comptabiliser le nombre d’action* sur le bouton poussoir. On peut :

  • Configurer une interruption pour qu’elle se déclanche sur un changement d’état (front montant et front descendant)
  • Lors de l’interruption :
    • Liste à puceDésactiver les interruptions, pour ne pas déclancher l’interruption sur des rebonds.
    • Faire une tempo de 20ms
    • Incrémenter une variable : i=i+1, Si i == 1 on a juste détecté la fermeture du BP, si i == 2 on a détecté la fermeture et l’ouverture du BP, soit une action.
    • Si i == 2 : compteur=compteur+1
    • Réactiver les interruptions
  • Action : Une pression + un relâchement

Discussion

Enter your comment. Wiki syntax is allowed:
RCIZX
 
avr/les_rebonds.txt · Last modified: 2011/12/26 19:51 (external edit)