Composant · Capteur
Lever Microswitch
Micro-interrupteur à levier : le capteur de contact d'un pare-chocs. Câblage à sécurité intégrée, pourquoi un appui donne neuf fronts, et à quoi sert le levier.
Présentation
Un micro-interrupteur à levier — un interrupteur miniature à action brusque — est un contact mécanique dans un petit boîtier plastique avec un levier métallique qui en dépasse. Poussez le levier et un ressort interne fait basculer le contact ; relâchez et le ressort le ramène. C’est l’un des plus vieux composants de cette bibliothèque et, sur un robot, l’un des plus utiles.
Ce qui en fait une pièce de robotique est l’action brusque. Le contact ne se ferme pas progressivement quand on appuie ; il saute, à un point répétable, avec un clic audible. Cela donne une réponse nette par oui ou non depuis un mécanisme bousculé par un robot en mouvement, exactement la situation où un capteur progressif donne n’importe quoi.
Fonctionnement
Trois bornes : COM (commun), NO (normalement ouvert) et NF (normalement fermé). Non appuyé, COM est relié à NF. Appuyé, il bascule vers NO. On en utilise deux sur trois et on ignore l’autre.
Pour un pare-chocs de robot, câblez COM à la masse et NO vers la broche d’entrée, avec le rappel interne de la broche :
pinMode(BUMP_L, INPUT_PULLUP); // idle HIGH
bool pressed = digitalRead(BUMP_L) == LOW; // LOW means the bumper moved
Ce montage est à sécurité intégrée : un fil de pare-chocs coupé se lit au HAUT, soit non appuyé. Câblé dans l’autre sens, un fil arraché convainc le robot qu’il est en collision permanente. Pour un arrêt d’urgence, utilisez NF à la place — là, un fil coupé doit arrêter la machine.
Le levier échange force contre course. Le poussoir nu veut environ 1 N sur à peu près 1 mm ; un bras de levier multiplie le mouvement pour qu’une coque pare-chocs parcoure 3–5 mm et déclenche avec un appui bien plus léger. Un galet en bout réduit la friction là où quelque chose glisse dessus plutôt que d’appuyer droit.
Quand l’utiliser
Utilisez-en partout où le robot doit savoir qu’il a déjà touché : pare-chocs, fins de course sur un bras ou un chariot, capteur de capot ou de tiroir, ou détecteur d’accueil. C’est la détection de dernier recours, et c’est un compliment — elle attrape le pied de chaise noir, la vitre, et l’obstacle à la mauvaise hauteur que chaque capteur optique et acoustique rate.
C’est aussi la seule détection dont a besoin un robot de couverture à rebond aléatoire. Deux de ceux-ci et un générateur aléatoire couvriront toute une pièce, ce qui est une quantité remarquable de comportement pour deux pièces mobiles.
Regardez ailleurs quand il faut éviter la collision plutôt que la détecter — c’est le travail d’un capteur ultrason ou temps de vol. Utilisez les deux : le télémètre évite la plupart des obstacles, l’interrupteur attrape ceux qu’il ne peut pas voir.
Pièges courants
- Un appui vaut neuf fronts. Filtrez-le, et ne branchez jamais une interruption qui compte — seulement une qui pose un drapeau ou capture une estampille temporelle.
- Le corps de l’interrupteur n’est pas une pièce de structure. Donnez à la coque pare-chocs une butée dure qui encaisse le choc. Les corps d’interrupteur se fissurent ; c’est ce qui les tue bien avant l’usure des contacts.
- Son propre ressort ne ramènera pas votre pare-chocs. Un micro-interrupteur repousse avec 50–100 g. Utilisez des élastiques ou de légers ressorts de compression pour le retour et laissez l’interrupteur seulement détecter.
- Un pare-chocs plat rate les touches en biais. Enveloppez la coque au moins à 45° de chaque côté, avec un interrupteur derrière chaque moitié pour que le code sache de quel côté tourner.
- Les longs fils captent le bruit moteur. Gardez le parcours court, torsadez la paire, et comptez sur le chemin basse impédance du rappel quand il est fermé.
- Les pouvoirs de coupure sont pour le secteur, pas la logique. Un interrupteur prévu 5 A sous 125 V AC passe ici des microampères ; la valeur ne dit rien d’utile sur sa vie dans ce rôle. Pré-course et force d’actionnement, si.
Câblage
Deux des trois bornes, et lesquelles décident comment le robot échoue.
| Usage | COM vers | Signal depuis | État au repos | Fil coupé lu comme |
|---|---|---|---|---|
| Pare-chocs | GND | NO, broche INPUT_PULLUP |
HAUT | Non appuyé — sûr |
| Arrêt d’urgence | GND | NF, broche INPUT_PULLUP |
BAS | Appuyé — sûr |
| L’un ou l’autre, rappel externe | GND | NO ou NF, 10 kΩ vers VCC | — | Comme ci-dessus |
La distinction compte. Un pare-chocs câblé en NO échoue en sécurité en lisant « pas de collision », ce qui est juste — un robot au fil de pare-chocs coupé doit continuer à rouler, pas se figer. Un arrêt d’urgence câblé en NF échoue en sécurité en lisant « arrêté », ce qui est aussi juste, pour la raison inverse.
Utilisez le rappel interne. Il ne coûte rien, n’exige aucun composant, et donne un état de repos défini.
Une broche laissée en simple INPUT avec un interrupteur flotte quand l’interrupteur est ouvert, et
les broches flottantes lisent le bruit électrique ambiant — qui sur un robot plein de moteurs est
abondant.
Anti-rebond, fait correctement
Un seul appui produit environ neuf transitions sur à peu près 4,7 ms quand les contacts claquent et rebondissent. Un logiciel qui lit la broche naïvement voit neuf appuis.
const int BUMP_L = 2, BUMP_R = 3;
const unsigned long DEBOUNCE_MS = 8; // longer than the ~5 ms bounce
struct Bumper {
uint8_t pin;
bool stable; // the debounced state
bool lastRead;
unsigned long changedAt;
};
Bumper left = {BUMP_L, true, true, 0};
Bumper right = {BUMP_R, true, true, 0};
// Returns true on the frame the bumper newly closes.
bool update(Bumper &b) {
bool now = digitalRead(b.pin); // HIGH = open, with INPUT_PULLUP
if (now != b.lastRead) {
b.lastRead = now;
b.changedAt = millis(); // restart the timer on any edge
return false;
}
if (millis() - b.changedAt >= DEBOUNCE_MS && b.stable != now) {
b.stable = now;
return (now == LOW); // newly pressed
}
return false;
}
void setup() {
pinMode(BUMP_L, INPUT_PULLUP);
pinMode(BUMP_R, INPUT_PULLUP);
}
void loop() {
if (update(left)) { backUp(); turnRight(); }
if (update(right)) { backUp(); turnLeft(); }
}
Le détail structurel important est que le temporisateur redémarre à chaque front, plutôt que d’échantillonner une fois et d’attendre. Un échantillonnage fixe peut tomber dans le rebond et verrouiller la mauvaise valeur ; redémarrer la fenêtre signifie que l’état n’est accepté qu’une fois la broche restée calme pendant toute la période.
Pourquoi pas une interruption
Les interruptions sur un contacteur de choc sont un piège, et précisément :
- Ne branchez jamais une interruption qui compte. Neuf fronts deviennent neuf comptages, et un anti-rebond
dans une ISR exige
millis(), qui n’avance pas dans une ISR sur AVR. - Une interruption posant un drapeau convient, si le filtrage se fait dans la boucle principale. Mais scruter un interrupteur à 100 Hz ne coûte rien, et la boucle d’un robot tourne déjà.
- Réservez D2 et D3 aux encodeurs sur un Uno. Ce sont les deux seules broches d’interruption externe, et les encodeurs en ont vraiment besoin. Un pare-chocs non.
Le seul cas justifiant une interruption est un arrêt d’urgence dur qui doit couper les moteurs même si la boucle principale est bloquée — et cela se résout mieux en câblant l’interrupteur dans la ligne de validation du pilote moteur, pour que cela marche sans aucun logiciel.
Montage : la partie qui décide vraiment si ça marche
Tout ce qui précède est un problème résolu. La conception mécanique est là où les pare-chocs réussissent ou échouent.
La coque encaisse le choc, pas l’interrupteur. Un corps de micro-interrupteur est un plastique fin qui se fissure sous un coup direct. Construisez une coque pare-chocs qui pivote ou coulisse, donnez-lui une butée dure qui encaisse l’effort, et laissez l’interrupteur détecter un petit mouvement près de la fin de cette course.
Enveloppez la coque. Un pare-chocs avant plat rate tout ce qui est touché en biais — et un robot naviguant aux télémètres touche surtout en biais, parce que les obstacles de face étaient déjà détectés. Enveloppez au moins à 45° de chaque côté.
Deux interrupteurs, pas un. Gauche et droite, derrière les deux moitiés de la coque. Un interrupteur dit que vous avez touché quelque chose ; deux disent de quel côté tourner. La différence de comportement est spectaculaire et le surcoût est d’environ vingt centimes.
| Interrupteurs | Ce que le robot apprend | Comportement possible |
|---|---|---|
| 1, centre | Quelque chose a été touché | Reculer, tourner dans une direction aléatoire |
| 2, gauche et droite | Quel côté a touché | Reculer, s’écarter du contact |
| 3, ajout arrière | Aussi qu’il a reculé dans quelque chose | Sortir d’un coincement |
Ramenez le pare-chocs avec son propre ressort. Le ressort interne d’un micro-interrupteur repousse avec seulement 50–100 g, insuffisant pour rappeler fiablement une coque avec du frottement dans son pivot. Utilisez des élastiques ou de légers ressorts de compression, et laissez l’interrupteur seulement détecter.
Réglez la pré-course pour que la coque bouge avant que l’interrupteur ne bute. L’interrupteur fonctionne après 1–3 mm et a un peu de sur-course au-delà ; la butée dure de la coque doit arriver dans la sur-course, sinon l’impact est encaissé par le mécanisme interne de l’interrupteur.
En choisir un
| Type de levier | Force d’actionnement | Idéal pour |
|---|---|---|
| Sans levier (poussoir nu) | ~1 N sur ~1 mm | Fins de course où le mécanisme est précis |
| Levier droit court | 0,5–0,8 N | Pare-chocs généraux |
| Levier droit long | 0,2–0,5 N | Coques légères, contact délicat |
| Levier à galet | 0,5–1 N | Tout ce qui glisse dessus plutôt qu’appuyer droit |
| Faux galet (plié) | 0,5–1 N | Alternative moins chère au galet |
Le pouvoir de coupure est sans objet ici. Un interrupteur prévu 5 A sous 125 V AC passe quelques microampères vers un rappel. Ce qui compte est la spécification mécanique : force d’actionnement, pré-course, et durée de vie mécanique nominale (10⁵–10⁷ manœuvres). Un robot cognant cent fois par parcours atteint 10⁵ manœuvres après mille parcours, donc la vie mécanique est effectivement illimitée — l’interrupteur mourra d’un corps fissuré bien avant.
Dépannage
| Symptôme | Cause probable | Solution |
|---|---|---|
| Un appui déclenche plusieurs fois | Pas d’anti-rebond | Utilisez le motif ci-dessus avec une fenêtre de 8 ms |
| Lit appuyé en permanence | Câblé en NF au lieu de NO | Passez à la borne NO |
| Lit aléatoirement sans toucher | Broche flottante | INPUT_PULLUP, ou 10 kΩ externe |
| Faux déclenchements quand les moteurs tournent | Longs fils non blindés captant du bruit | Raccourcissez et torsadez la paire ; ajoutez 100 nF sur la broche |
| Le pare-chocs ne revient pas | Retour confié au ressort propre | Ajoutez élastiques ou ressort de rappel |
| Interrupteur fissuré après quelques collisions | Impact passant par le corps | Ajoutez une butée dure que la coque heurte d’abord |
| Rate les collisions en biais | Pare-chocs plat | Enveloppez la coque à 45° de chaque côté |
| Le robot recule mais retouche la même chose | Un interrupteur, pas d’info de direction | Deux interrupteurs, et tournez à l’opposé de celui qui a déclenché |
| Marche sur table, pas sur le robot | Géométrie du pare-chocs, pas électronique | Poussez la coque à la main sous plusieurs angles et observez la broche |
Pourquoi cette pièce bon marché mérite sa place
Chaque autre capteur d’un robot a des surfaces qu’il ne peut pas voir. Un capteur ultrason est aveugle aux rideaux et aux murs abordés à angle fort. Un VL53L0X est aveugle aux surfaces noires mates, miroirs, et à tout en plein soleil. Une caméra a besoin de lumière.
Un micro-interrupteur n’a pas une telle liste. Si quelque chose touche le pare-chocs, l’interrupteur se ferme. Cela en fait la détection de dernier recours, et sur un robot qui doit survivre sans surveillance c’est la fiabilité la moins chère disponible — deux interrupteurs, deux broches, et environ quarante centimes.
C’est aussi, remarquablement, suffisant seul. Un robot à deux contacteurs de choc et un virage aléatoire au contact couvrira une pièce entière avec assez de temps — c’est exactement comment fonctionnait la première génération d’aspirateurs robots, et cela vaut d’être compris avant de chercher quoi que ce soit de plus sophistiqué.
Explorer le graphe
Utilisé dans ces réalisations
Projets, parcours d'apprentissage et simulateurs qui intègrent le composant Lever Microswitch.
- ProjetConstruire un robot de couverture qui balaie une pièce
- ProjetConstruire un robot de pick-and-place qui sait quand il rate
- ProjetConstruire un traceur à stylo : deux axes pas à pas qui arrivent
- Parcours d'apprentissageMouvement de précision avec pas à pas : un parcours
- Parcours d'apprentissageNavigation réactive : apprenez à un robot à éviter les obstacles
- Parcours d'apprentissagePréhenseurs et effecteurs : attrapez-le vraiment
Questions
FAQ : Lever Microswitch
À quoi sert un micro-interrupteur à levier sur un robot ?
C'est le capteur derrière un pare-chocs. Une coque à ressort sur l'avant du robot appuie sur l'interrupteur quand le robot touche, donnant au code un bit sans ambiguïté — j'ai touché quelque chose — qu'aucun capteur optique ou acoustique ne fournit aussi fiablement. C'est ce qui permet à un robot de détecter un pied de chaise noir, une vitre, ou un obstacle à la mauvaise hauteur pour son télémètre.
Faut-il câbler l'interrupteur normalement ouvert ou normalement fermé ?
Normalement ouvert vers la masse avec la broche rappelée au haut, pour un pare-chocs. Ainsi un fil coupé se lit comme non appuyé, donc un fil arraché ne peut pas convaincre le robot qu'il est en collision permanente. Utilisez le contact normalement fermé pour un arrêt d'urgence, où la défaillance sûre est inverse — un fil coupé doit arrêter la machine.
Pourquoi un appui s'enregistre-t-il plusieurs fois ?
Rebond de contact. Le contact métallique arrive, fléchit, se sépare et revient plusieurs fois pendant les premières millisecondes, et un microcontrôleur échantillonnant au mégahertz voit chacun comme un vrai front. Un interrupteur à levier modélisé produit neuf transitions sur environ 4,7 ms. Filtrez en logiciel avec une fenêtre d'ignorance après acceptation, et ne branchez jamais une interruption qui compte.
À quoi sert vraiment le levier ?
Il échange force contre course. Le poussoir nu exige 1 à 1,5 N sur environ 1 mm ; un levier multiplie le mouvement pour que la coque parcoure 3 à 5 mm et actionne avec un appui bien plus léger. Cela compte parce qu'une coque pare-chocs doit bouger assez pour être fiable et assez légèrement pour ne pas pousser les petits obstacles avant de déclencher.
Faut-il une résistance de rappel ?
Non — utilisez le rappel interne du microcontrôleur avec INPUT_PULLUP. Il est gratuit, n'exige aucune pièce supplémentaire sur le coin le plus malmené du robot, et le chemin basse impédance vers la masse quand l'interrupteur se ferme empêche un long fil de pare-chocs de capter le bruit du pilote moteur voisin.
Pour aller plus loin