Ignorer la navigation

Le capteur de contact

C'est une sorte de bouton poussoir qui s'actionne grâce à la force exercée sur un petit levier. Il en existe de plusieurs formes. En voici quelques uns :

Les différents types de microrupteurs (robotastuces.free.fr)
Les différents types de microrupteurs (robotastuces.free.fr)

Ils font partie de la famille des capteurs tout-ou-rien. On les appelle aussi capteurs de collision, ou microrupteurs (car ils sont petits et permettent de laisser passer ou non le courant). Ils sont assez faciles à fixer mais il faut prévoir une soudure pour relier les pattes au montage.

Ce capteur peut avoir 2 ou 3 pattes :

  • S'il a 2 pattes, c'est un interrupteur simple : soit il est ouvert et il se ferme au contact (type "NO" pour Normally Open, c'est-à-dire normalement ouvert) ; soit il est fermé et il s'ouvre au contact (type "NC" pour Normally Closed, c'est-à-dire normalement fermé)

  • S'il a 3 pattes, c'est un inverseur : il laisse passer le courant vers l'une ou l'autre des pattes. Il peut bien sûr être utilisé comme un 2 pattes.

Voici les principes des trois types de microrupteurs :

Les capteurs de contacts
Les capteurs de contacts

Pour les connecter à l'Arduino, ce n'est pas compliqué.

  • Pour le microrupteur à 2 pattes, vous faites comme pour un bouton poussoir avec une résistance en mode pull-up ou pull-down ou en utilisant le mode INPUT_PULLUP du pin concerné  (voir chapitre sur le bouton poussoir).

  • Pour le microrupteur à 3 pattes (c'est-à-dire l'inverseur), c'est presque plus simple : la patte COM sur le pin de lecture, la patte NC sur le ground et la patte NO sur le +5V :

    Connexion d'un microrupteur inverseur
    Connexion d'un microrupteur inverseur à l'Arduino

    Pour le reste, il se programme comme un bouton poussoir. On récupère sur le pin une valeur haute (HIGH ou 1) ou basse (LOW ou 0) en fonction d'un contact ou non.

Voici un petit programme simple qui affiche si le contact est réalisé ou non :

int pinContact=7; // pin de lecture du contact
void setup() {
Serial.begin(9600); // initialisation de la connexion série
pinMode(pinContact,INPUT_PULLUP); //active la résistance pull-up interne
}
void loop() {
boolean etatContact=digitalRead(pinContact);
if (!etatContact) //test inverse car mode INPUT_PULLUP
Serial.println("Contact");
else
Serial.println("Pas de contact");
}

Quand utiliser un microrupteur ?

Vous pouvez l'utiliser pour vérifier si un robot touche un obstacle, si un portail est en fin de course, si un contact est réalisé entre deux objets mobiles...