IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

Les Cahiers Pratiques Arduino : Comment effectuer le branchement d'un interrupteur
Un tutoriel de f-leb

Le , par f-leb

129PARTAGES

11  0 


Un nouvel article proposé par votre serviteur, et intitulé Comment effectuer le branchement d'un interrupteur ?

Boutons-poussoirs, interrupteurs à bascule, à glissière, à levier, microswitch, etc. Ces composants semblent faciles à appréhender, ils ne servent qu’à fermer ou ouvrir un circuit électrique pour allumer ou éteindre une lampe, démarrer ou freiner un moteur, déclencher une action dans un jeu vidéo, sélectionner une option dans un menu et bien d’autres applications encore. Pour autant, quand il faut relier ces interrupteurs aux entrées d’un microcontrôleur, vous verrez des montages avec des résistances électriques dites pull-up ou pull-down, et il n’est pas toujours facile de comprendre leur utilité. Ce tutoriel vous décrit le pourquoi de ces résistances dans vos montages avec une carte Arduino.
Les Cahiers Pratiques Arduino
Forum Arduino
Les meilleurs cours et tutoriels pour apprendre à utiliser la carte Arduino
Quiz Arduino

Une erreur dans cette actualité ? Signalez-nous-la !

Avatar de Vincent PETIT
Modérateur https://www.developpez.com
Le 05/11/2022 à 17:28
Bonjour,
Citation Envoyé par f-leb Voir le message
Je n'ai pas répété le raisonnement et les calculs qui sont très similaires dans le cas des pull-down, mais je précise en fin d'article
[...] Peut-être faut-il que j'apporte plus de précision ?
Je ne sais pas s'il faut faire cette précision dans cet article.

Il y a au moins trois cas de figure pour les résistances de rappel ; celles en entrée qu'on relie par exemple aux interrupteurs pour pas qu'il ne soit en l'air et effectivement on a le choix entre pull-up et pull-down mais il y a aussi celles en sortie des composants à collecteur ouvert ou drain ouvert comme c'est le cas sur le bus I2C. Souvent les sorties sont des collecteurs ouverts de type NPN ou drain ouvert de type canal N et là vous n'avez pas le choix, dans le cas que je décris ce sera forcément des pull-up. Et il y a aussi les pull-down qu'on va mettre sur la gate d'un JFET pour le polariser ou encore sur la gate d'un MOSFET pour fixer un état (et aider à évacuer les charges accumulées), voir R1 dans le schéma ci dessous, surtout lors du démarrage sinon le MOSFET peut conduire pendant un court instant le temps d'être commandé.



Si on commence à mélanger tout ça, ça va se compliquer sévère car ce ne sont pas les mêmes calculs : Pour les pull-up de l'I2C la résistance max dépend aussi de la vitesse du bus pour ne pas arrondir les signaux logiques, pour la pull-down des MOSFET la valeur n'est pas critique car ce qu'il faut c'est fixer un état au démarrage et sur des entrées avec des interrupteurs les valeurs min-max dépendent des VIH, VIL etc...

Citation Envoyé par nadjim Voir le message
La solution la plus simple est d'utiliser ce genre de schéma [...] Ainsi la solution logicielle proposée par f-leb n'a plus lieu d'être
Ca dépend de la finalité. Dans mes design hard, si il n'y a pas de spécificité soft, je me contente juste du condensateur, on peut se passer du trigger de Schmit derrière en s'arrangeant pour que la constante de temps RC ne dépasse pas VIL max une fois les rebonds terminés (~5ms) par contre s'il y a un besoin spécial ; par exemple incrémenter une valeur sur un afficheur de plus en plus vite quand l'opérateur reste le doigt sur le bouton alors autant tout gérer en soft.
3  0 
Avatar de f-leb
Responsable Arduino et Systèmes Embarqués https://www.developpez.com
Le 05/11/2022 à 21:06
Citation Envoyé par Auteur Voir le message
Mais comme le fait remarquer Vincent, parler des pull-down peut mener très loin si on cherche à faire tous les cas de figure.
D'où les précautions de l'auteur qui choisit bien ses titres :
- Branchement d’un interrupteur, quelle valeur pour la résistance pull-up/pull-down ?

Le rédacteur de cet article est un pleutre

Citation Envoyé par nadjim Voir le message
La solution la plus simple est d'utiliser ce genre de schéma



Le 74HC14 mentionné par Artemus24 fera très bien l'affaire. Mais l'ajout du condensateur améliore grandement l'efficacité du circuit. Ainsi la solution logicielle proposée par f-leb n'a plus lieu d'être. Bien sûr l'inconvénient est qu'il faut ajouter quelques composants électroniques, mais ce n'est pas non plus très coûteux.
Une vidéo sympa sur cette solution chez TI : Debounce a Switch
3  0 
Avatar de f-leb
Responsable Arduino et Systèmes Embarqués https://www.developpez.com
Le 05/11/2022 à 21:22
Citation Envoyé par f-leb Voir le message

Je n'ai pas répété le raisonnement et les calculs qui sont très similaires dans le cas des pull-down, mais je précise en fin d'article :
Citation Envoyé par f-leb
La conclusion pour une résistance de rappel (pull-down) est identique.
à une petite nuance près toutefois...
La résistance pull-up doit théoriquement rester inférieure à 2MOhms.

La résistance pull-down doit théoriquement rester inférieure à 1,5MOhms. VIL = 0,3xVcc =0,3 x 5 =1,5V (input low voltage)
Et donc RxIL = Rx1.10-6 doit rester inférieur à 1,5V pour que le micro détecte un état bas lorsque le bouton est relâché.
3  0 
Avatar de Artemus24
Expert éminent sénior https://www.developpez.com
Le 04/11/2022 à 6:22
Salut F-leb et bravo pour ton nouvel article

En ce qui me concerne, j'ai préféré une solution mixte (matériel et logiciel) pour gérer l'anti-rebond de mes BP.
Pour la solution électronique, j'utilise le composant SN74HC14N pour lisser le rebond, en plus des résistances, diodes et condensateurs.
Pour la solution informatique, j'utilise une tâche en parallèle géré par un timer.

Cordialement.
Artemus24.
@+
2  0 
Avatar de f-leb
Responsable Arduino et Systèmes Embarqués https://www.developpez.com
Le 04/11/2022 à 11:01
Merci Artemus

Citation Envoyé par Artemus24 Voir le message
[...] j'ai préféré une solution mixte (matériel et logiciel) pour gérer l'anti-rebond de mes BP.
Tu utilises les deux solutions (matériel & logiciel) en même temps ? La solution matérielle seule ne suffisait pas ? Ou alors, j'ai mal compris
2  0 
Avatar de f-leb
Responsable Arduino et Systèmes Embarqués https://www.developpez.com
Le 05/11/2022 à 9:58
Salut

Je n'ai pas répété le raisonnement et les calculs qui sont très similaires dans le cas des pull-down, mais je précise en fin d'article :
La conclusion pour une résistance de rappel (pull-down) est identique.
Peut-être faut-il que j'apporte plus de précision ?

Citation Envoyé par Auteur Voir le message
Hello
L'article, qui explique bien la problématique, ne fait référence qu'aux résistances en pull-up.

2  0 
Avatar de Auteur
Expert éminent sénior https://www.developpez.com
Le 04/11/2022 à 22:18
Hello
L'article, qui explique bien la problématique, ne fait référence qu'aux résistances en pull-up.
1  0 
Avatar de nadjim
Membre habitué https://www.developpez.com
Le 05/11/2022 à 11:29
La solution la plus simple est d'utiliser ce genre de schéma



Le 74HC14 mentionné par Artemus24 fera très bien l'affaire. Mais l'ajout du condensateur améliore grandement l'efficacité du circuit. Ainsi la solution logicielle proposée par f-leb n'a plus lieu d'être. Bien sûr l'inconvénient est qu'il faut ajouter quelques composants électroniques, mais ce n'est pas non plus très coûteux.
1  0 
Avatar de Auteur
Expert éminent sénior https://www.developpez.com
Le 05/11/2022 à 20:35
Citation Envoyé par f-leb Voir le message
Je n'ai pas répété le raisonnement et les calculs qui sont très similaires dans le cas des pull-down, mais je précise en fin d'article :
Peut-être faut-il que j'apporte plus de précision ?
Je ne l'avais pas vu ta remarque , je suis désolé (lecture un peu rapide sans doute de l'article).
Mais comme le fait remarquer Vincent, parler des pull-down peut mener très loin si on cherche à faire tous les cas de figure. Je ne sais pas quoi vous suggérer.
1  0 
Avatar de Artemus24
Expert éminent sénior https://www.developpez.com
Le 04/11/2022 à 12:51
Salut F-leb.

Tu as bien compris.

J'ai d'abord developpé la solution informatique car je n'avais pas la possibilité électronique de gérer les anti-rebonds.
Je ne fais qu'une ou deux fois par an des commandes chez Kubii et Gotronic.
Quand j'ai pu appliquer la solution électronique, je n'ai pas défait ce que j'avais fait dans mes programmes.

J'ai imaginé une gestion d'un automate à deux état de mes BP : libre et occupé.
Cela se fait dans une tâche qui est appelé par un timer. A chaque appel, je vérifie :
--> si l'état est libre, je gère la demande. Si c'est le cas, je bascule à On/Off le BP, j'initialise un compteur et je mets l'état à occupé.
--> si l'état est occupé, je décrémente mon compteur. Quand il arrive à zéro, je bascule à libre.
Tout ce qui se passe durant l'état occupé est ignoré.

Cordialement.
Artemus24.
@+
0  0