Club robotique de Sophia-Antipolis

Accueil > POBOTpedia > Electronique > Montages électroniques > Anti-rebond électronique

Anti-rebond électronique

dimanche 5 juillet 2009, par Julien H.

Une grande différence entre l’électronique d’un robot et la programmation d’un robot est que l’une est sensible aux phénomènes physiques tandis que l’autre est totalement binaire.

Dans votre code, vous avez l’habitude d’écrire ainsi (c’est du code Arduino mais vous pouvez imaginer la même chose en tout autre langage) :


void setup()

// patte 1 en entrée
pinMode(1,INPUT) ;

void loop()

// détection de l’entrée
if (digitalRead(1) == HIGH)

// en haut
else
// en bas


Dans la plupart des cas, cela fonctionne. Par exemple si vous mettez en route un moteur ou que vous allumez une lumière, vous ne remarquerez pas ce qu’on appelle "rebond" : il n’y a pas toujours qu’un seul passage de bas à haut ou de haut à bas, on peut avoir plusieurs fois des aller/retour. Cela pose problème quand on incrémente un compteur (plusieurs incréments) ou quand on déclenche un chronomètre (pour une course de robots par exemple).

Les causes peuvent être différentes selon le capteur :
 pour un interrupteur mécanique, la mécanique est parfois composée d’une lame qui vient faire contact lorsque vous la pressez. Pour qu’elle retrouve sa position initiale lorsque vous enlevez votre pression, elle fonctionne comme un ressort et de ce fait elle va vibrer.
 pour un capteur optique, la lumière peut être réfléchie par l’objet qui coupe les rayons lumineux et se réfléter sur le capteur.

Traitement logiciel

On peut facilement modifier le logiciel pour ajouter un second test après quelques millisecondes correspondant aux rebonds.


void loop()

// détection de l’entrée
if (digitalRead(1) == HIGH)

delay(20) ; // attente de 20 millisecondes
if (digitalRead(1) == HIGH)

// en haut

else
// en bas


Mais ce n’est pas ce qui nous intéresse ici. On préfèrerait plutôt laisser le code le plus simple et changer le montage pour qu’il modifie le signal d’entrée lors du premier changement et qu’il ne prenne pas en compte les rebonds.

Solutions électroniques

Une des solutions consiste à utiliser un circuit monostable comme le NE555. Nous l’avions déjà utilisé pour générer un signal pour servomoteur, dans un montage astable. Cette fois on va utiliser le principe "monostable".

Un message, un commentaire ?

modération a priori

Attention, votre message n’apparaîtra qu’après avoir été relu et approuvé.

Qui êtes-vous ?

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.