Vous êtes sur la page 1sur 8

Interrupteur fin de course

Extrait du PoBot
http://www.pobot.org

Interrupteur fin de course


- Composants - Les entrées - Autres capteurs -

Date de mise en ligne : mardi 10 janvier 2006

Description :
un micro-rupteur type "microswitch" est un interrupteur miniature utilisé pour les capteurs de contact, pour les fins de courses et autres ouvertures de portes.

PoBot

Copyright © PoBot Page 1/8


Interrupteur fin de course

Sommaire
• Définition et principe
• Montage électronique simple
• Connexion à un micro-contrôleu
• Le mot de la fin
• Montage et exemple de Code

Un microrupteur type "microswitch" ou "fin de course" est un interrupteur miniature utilisé pour les capteurs de
contact, pour les fins de courses et autres ouvertures de portes.

D'un point de vue électronique, il est équivalent à un interrupteur à trois positions ou "toggle switch" dans les logiciels
d'électroniques en anglais.

Définition et principe
On trouve généralement 3 dimensions :
standard (30x20x10 mm)
miniatures (20x10x6 mm)
subminiature (13x6x6 mm)

Et de 3 sortes :
avec levier (languette)
sans levier (juste le poussoir)
avec levier et roulette

D'autres capteurs peuvent s'apparenter à des interrupteurs, comme les fourches optiques.

On trouve ces composants en vente pour quelques euros dans les magasins d'électroniques, ou en ligne chez
Gotronic par exemple [http://www.gotronic.fr/catalog/commut/microrupteurs.htm]

Conseils

Attention à ne pas confondre ces interrupteurs équipés d'une lamelle souple avec les ILS ou Interrupteurs à Lame

Copyright © PoBot Page 2/8


Interrupteur fin de course
Souple (ILS) qui fonctionnent grâce à un aimant (décrits ici).

La languette est une plaque de métal qui vient appuyer sur l'interrupteur proprement dit (petit bouton de quelques
mm d'épaisseur). Si la languette est très longue, c'est qu'elle est généralement destinée à être repliée (pour gagner
en ressort ou pour assurer le bon contact avec l'élément destiné à appuyer dessus.

L'absence de languette est utile pour une utilisation en fin de course où un élément (de taille imposante) va venir
effleurer le poussoir pour déclencher l'interrupteur. Il faut le fixer tangentiellement. Très utile également pour l'utiliser
dans les deux sens et éviter de tordre la languette.

La roulette est là... pour faire joli, je n'en ai jamais utilisé personnellement. En fait son intérêt doit être de permettre
un contact plus doux et éviter que la languette soit arrachée (si on peut confirmer ou me révéler le mystère de la
roulette du microswitch..)

Oui effectivement, la roulette est utile quand l'objet qui a fait contact dans un sens va devoir revenir dans
l'autre sens (comme une porte qui se ferme doit se réouvrir).

Pas de mystère mais un cas qu'on ne rencontre pas trop en robotique où les micro-rupteurs sont utilisés en fin de
course. Mais le principe de la roulette est largement utilisé dans les angles du chassis pour éviter toute prise au
contact d'un bord ou de tout objet résistant.

Astuce : protection de la lame

Il est conseillé de ne pas mettre la lame souple de l'interrupteur au contact direct de l'objet que le robot va toucher et
détecter mais d'utiliser un mécanisme peu couteux qu'on pourra remplacer en cas d'arrachage. Voici ce que cela
donne quand le microswitch est bien utilisé : idée d'Henri brillamment mise en pratique sur le robot de la Coupe
2008.

Exemple de montage

Principe

Comme on dit dans les rédactions de collège, entrons maintenant dans le vif du sujet : un microswitch est
généralement composé de 3 pattes (sauf quelques modèles économiques qui ne servent qu'à gâcher mon énoncé)
et cet article est là pour vous aider à comprendre comment ça marche et comment l'utiliser concrètement.

Copyright © PoBot Page 3/8


Interrupteur fin de course
Sur certains modèles, on peut lire le nom des pattes (pas forcément dans cet ordre, on y reviendra plus tard) :
Com (pour Common ou Commun)
NC ou NF (pour NClosed ou Normalement Fermé)
NO (pour NOpened ou Normalement Ouvert)

La patte commune est utilisée dans tous les cas. On doit ensuite choisir une seconde patte pour avoir un circuit
complet. En choisissant NO, vous aurez un circuit ouvert quand vous ne pressez pas sur le poussoir, et avec NC, le
contraire : le circuit est fermé quand il n'y a pas contact.

Astuce

Comment déterminer quelle patte correspond à quelle fonction ? Soit vous trouvez des inscriptions et vous savez
avec le principe ci-dessus à quoi vous en tenir, soit il va falloir tester notre interrupteur avec un ohmmètre ou un
montage élémentaire pour déterminer s'il y a contact.

Munissez-vous de votre multimètre, ou un montage utilisant une ampoule, une pile à lampe de poche et quelques
fils.

Première étape, test du microswitch sans appuyer dessus, vous devez trouver :
un couple qui fait contact : COM + NC (mais on ne sait pas qui est qui)
deux couples qui ne font pas contact : COM + NO et NO + NC

Seconde étape, test du microswitch en appuyant dessus (utilisez un bout de scotch). Vous devez trouver :
un couple qui fait contact : COM + NO
deux couples qui ne font pas contact : COM + NC et NO + NC

En croisant les résultats des deux expériences, vous pouvez déterminer les 3 pins, bravo !!

Montage électronique simple


Voici un schéma représentant l'interrupteur à trois états, deux leds et une pile permettant d'éclairer une led à la fois :

Copyright © PoBot Page 4/8


Interrupteur fin de course
Pour mieux visualiser le schéma, voici l'équivalent avec des composants placés sur une plaque d'essai Labdec :

Ces schémas sont faits avec Fritzing, un outil open source. Les schémas sont libres d'utilisation dans des
documents, mais pas sur un autre site web traitant spécifiquement des interrupteurs :)

La led blanche (Led 1) est connectée à la pile d'un côté, et à la sortie NC de l'interrupteur d'autre part. Comme c'est
la patte "normalement connectée", le circuit est fermé lorsque l'interrupteur est au repos (non appuyé) donc la led 1
est éclairée en permanence.

Lorsqu'on appuie sur l'interrupteur, la led rouge (Led 2) s'allume et la blanche est éteinte, puisque la rouge est
connectée à la patte NO ou "normalement ouvert", ce qui veut dire que le circuit se ferme quand on active / appuie /
enfonce le bouton de l'interrupteur.

Connexion à un micro-contrôleur
Comme on dit dans les rédactions de lycée, entrons maintenant dans le vif du sujet (oui la pédagogie, c'est
beaucoup de répétition). On va connecter notre micro-rupteur à un micro-contrôleur.

Comme vous l'avez vu précédemment, un microswitch a deux états (comme beaucoup d'interrupteurs) : ouvert ou
fermé. En électronique numérique, on préfère parler de signaux (bas et haut), ou de tensions (masse, GND, 0 et Vcc,
V+, 5V, 12V, ...).

Copyright © PoBot Page 5/8


Interrupteur fin de course
Notre travail consiste donc maintenant à associer un signal à chaque état de notre interrupteur. Et là il faut faire
attention, car il n'y a pas de correspondance entre un signal et un état, c'est un choix à faire : on peut dire que l'état
ouvert correspond à 0 volts (masse) ou 5 volts (ou toute autre tension nominale) et inversement.

Choisissons le signal bas (0V) pour l'état ouvert et le signal haut (5V puisqu'on utilise un microcontrôleur en 5V) pour
l'état fermé. Et pour rendre plus explicite cette notion d'état, on va choisir la patte NO pour que l'état ouvert
corresponde à l'état "au repos" quand on n'appuie pas sur le microswitch.

Résumé : avec nos choix, il faut appuyer sur l'interrupteur pour faire contact pour qu'il y ait un signal qui soit lu.

Comment transformer l'état de l'interrupteur en un signal ? Tout simplement en reliant les pattes à l'alimentation :
la patte Com à la masse (GND, 0V)
la patte NO à la tension nominale (Vcc, 5V) mais..

Attention, lorsque le circuit est fermé, la masse va être reliée directement à la tension, ce qu'il ne faut pas
faire. On va donc intercaler une résistance entre la tension de l'alimentation et la patte NO.

Voilà, on dispose d'un circuit complet et fonctionnel : le courant va passer dans l'interrupteur quand on va appuyer
dessus !

Dernière étape, connectons un composant sur ce microrupteur. On a choisi l'entrée numérique d'un microcontrôleur :
il suffit de connecter l'entrée à la patte Com de notre montage pour pouvoir "lire" la valeur de l'interrupteur : 0V quand
l'interrupteur est ouvert, et 5V quand l'interrupteur est fermé.

Le mot de la fin
Ce montage qui consiste à relier la masse à l'entrée du microcontrôleur quand le circuit (interrupteur) est ouvert
s'appelle un "pull-down" (pousser vers le bas). Le montage inverse est possible : en reliant le µC à la patte NO donc
à l'alimentation (en passant par une résistance) s'appelle un "pull-up".

Montage et exemple de Code

Copyright © PoBot Page 6/8


Interrupteur fin de course

Montage sur Atmega163 (Ici l'entrée du port D est liée à NC

On connecte un interrupteur sur l'entrée/sortie "PD2" d'un microcontrôleur ATmega163 (famille AVR du fabricant
Atmel), soit la 3ème patte du port 8 bits D (les ports sont nommés A, B, C, D, E, F dans cette famille selon leurs
fonctionnalités, certains microcontrôleurs n'ayant que le port B et D par exemple, d'autres un port A et C
supplémentaire, etc..).

Il faut faire attention au nommage : un port d'entrées/sorties à fonctionnalités générales (GPIO or general purpose
input ouput) de 8 bits a donc 8 entrées/sorties, numérotées de 0 à 7. Donc si on parle de la patte n°2, c'est la 3ème.
Il faut bien faire attention à ne pas se tromper. Sans la vigilance de nos lecteurs, je n'aurai pas rectifié ce code (merci
Simon) !

Comme on a relié une résistance à l'alimentation 5 volts, le port reçoit un niveau haut quand l'interrupteur est relâché
et un niveau bas quand l'interrupteur est enfoncé.

// code exemple pour un Atmel AVR programmé avec avr-gcc // include des définitions d'entrées/sorties (nom des
ports, nom des pattes, etc) #include "avr/io.h" int main(void) { // initialisation des entrées/sorties cbi(DDRD,2); //
"cbi" = "clear bit" = niveau bas sur le registre DDR du port D pour la patte 2 // DDR = direction data register, c'est un
registre 8 bits disponible pour chaque port (DDRA, DDRB, DDRC..) // qui permet d'assigner le sens : 1 pour sortie,
0 pour entrée // boucle de détection de l'interrupteur while () { // masque entre la lecture du port D (attention,
PIND et pas PORTD pour lire les valeurs en entrée) // et la 3ème patte : (binaire) 0000 0100 = (hexa) 04 if
(inb(PIND) & 0x04) { // interrupteur relâché, la pull-up fait son office } else { // interrupteur enfoncé } }
return 0; }

Sur ces µC, les ports sont en 8 bits donc on utilise des registres pour accéder aux entrées/sorties numériques :
DDRx pour positionner la direction de chacun des bits
PORTx pour sortir un niveau haut ou bas (en sortie) ou sélectionner les pull-up/pull-down (en entrée)
PINx pour lire les valeurs en entrée

Mais c'est parfois pénible d'avoir à gérer ce qui se passe sur les 8 pattes du port, car à chaque fois qu'on veut
changer la valeur d'un seul bit du registre il faut veiller à ne pas toucher aux autres (on utilise des masques avec des
"ou" | et des "et" &). Donc des fonctions existent avec la bibliothèque de fonctions "libc" pour avr fournie avec le

Copyright © PoBot Page 7/8


Interrupteur fin de course
compilateur avr-gcc. Ce sont "sbi" (pour set bit) et "cbi" (pour clear bit). Ainsi si je veux changer la valeur de la 3ème
patte du port D (ou PD2), je peux faire directement cbi(PORTD,2) pour mettre à 0 la patte 2, ou sbi(PORTD,2) pour
la mettre à 1.

De la même manière, la lecture du port se fait avec une fonction plutôt qu'avec le registre. C'est la fonction inb (pour
in byte). Il n'y a pas à ma connaissance de fonction directe pour avoir la valeur d'un bit du registre PIND.

Copyright © PoBot Page 8/8

Vous aimerez peut-être aussi