Bouton-poussoir - Filtrage des rebonds avec PULL-UP et un condensateur

Bonjour,

Suite à cette remarque de @jef59, j’ai fait une fiche de synthèse :

Fiche de synthèse : anti-rebonds – montage pull-up (tension oscillant entre 0 et 5 V) :

1/ Principe de Fonctionnement :

Lorsqu’on réalise un montage électronique, le signal peut être perturbé par l’environnement (CEM : champs électromagnétiques, électricité statique, proximité d’appareils, etc.). Ces perturbations peuvent fausser l’état logique lu sur une entrée (par exemple un 0 interprété comme 1).

Pour garantir un signal stable, on utilise une résistance de pull-up : elle maintient l’entrée à un niveau haut (ex. 5 V) tant que le bouton n’est pas pressé. Lorsque l’utilisateur appuie, le bouton relie l’entrée à la masse, ce qui donne 0 V.
Cette résistance évite donc les valeurs flottantes et empêche un court-circuit direct entre +5 V et GND.

Cependant, un bouton mécanique provoque des rebonds : lors de l’appui et du relâchement, le contact oscille très rapidement entre fermé et ouvert, générant plusieurs transitions parasites.

Pour filtrer les rebonds, on place un condensateur en parallèle avec le bouton.

Ce condensateur ne peut pas se charger ou se décharger instantanément : il ralentit les variations de tension lors de l’appui, et il empêche toute montée de tension tant que les rebonds de relâchement persistent. Ainsi la lecture du µC en S1 est filtrée des rebonds mécaniques du bouton poussoir.

2/ Fonctionnement détaillé :

Appui sur le BP (passage de 5 V à 0 V - tensions approximatives) :
Le condensateur était chargé à 5 V.
Lors de l’appui, il se décharge progressivement vers la masse (quelques millisecondes).
Même si le bouton rebondit et s’ouvre et se referme brièvement, la tension n’a pas le temps de remonter, car le condensateur continue de se décharger.
Le signal descend en une seule fois et de façon lissée.

Relâchement du BP (passage de 0 V à 5 V - tensions approximatives)
Le condensateur est alors déchargé.
Pendant les rebonds du relâchement, chaque micro-recontact à la masse décharge à nouveau le condensateur : la tension reste donc basse, et la broche du micro-contrôleur lit toujours “0”.

- En détail : Le contact se referme brièvement plusieurs fois sur GND. Chaque fois que cela arrive, le condensateur, qui commençait à se charger, est instantanément déchargé (car la résistance du bouton fermé est de quelques ohms c’est à dire très faible).

Le nœud en S1 retourne aussitôt à 0 V.

Tant que les rebonds continuent, la tension du nœud reste basse et le Le µC lit 0 logique en continu sur S1. Ce n’est qu’après la fin des rebonds que le condensateur se recharge réellement via la résistance de pull-up, provoquant une montée unique et progressive de la tension jusqu’à 5 V.
Le signal remonte en une seule fois, sans oscillations, à la fin des rebonds.


Pour un montage en pull-down, c’est l’inverse pour les niveaux logiques mais le filtrage RC anti-rebond fonctionne de la même façon (à l’appui les rebonds sont filtrés par le chargement de C et au relâchement chaque micro-fermeture empêche C de se décharger le temps des rebonds, le µC lit « 1 » jusqu’à la fin des rebonds)


3/ Constante de temps :

La charge ou la décharge d’un condensateur est exponentielle et non linéaire.
On caractérise cette évolution avec la constante de temps tau :

tau = R×C et dans notre cas :

tau = 10 kΩ x 100 nF = 1 ms (environ)

Les pourcentages caractéristiques sont :

  • 1 tau→ 63 % du changement effectué

  • 2 tau → 86 %. //

  • 3 tau → 95 %. //

  • 5 tau → 99 % (variation considérée comme stabilisée)

On considère donc qu’en théorie la transition (charge ou décharge) est pratiquement terminée entre 3 et 5 tau, soit ici environ 3 à 5 ms. Mais en pratique c’est le franchissement réel du seuil logique par C qui compte.

Cette constante de temps (tau = RC) permet de calculer R ou C en fonction des besoins.

5 τ c'est la théorie, mais en fait lorsqu'on connecte la sortie du RC à un composant ce n'est pas 5 τ qui est intéressant. C'est le franchissement du seuil de basculement de ladite entrée. Et ce franchissement se produit bien plus tôt puisque le seuil ce n'est pas la tension d'alimentation mais une fraction de celle-ci.

Bonjour @fdufnews

Oui en fait ça dépend du micro-contrôleur et du franchissement du seuil logique qui compte :wink:

J’ai fait la correction

Merci

Bonjour,

Une remarque constructive sur le schéma
Afin de ne pas réduire la durée de vie d'un condensateur, on ne court-circuite jamais un condensateur qu'il soit polarisé ou non polarisé :wink:

A suivre...

Dans ce montage, le condensateur n’est jamais court-circuité directement : il est derrière la résistance de pull-up de 10 kΩ.

Le courant de décharge reste donc inférieur au milliampère (0,3 à 0,5 mA selon Vcc), et l’énergie stockée dans 100 nF est très faible.

C’est pourquoi ce schéma est le montage anti-rebond RC classique recommandé dans de nombreux tutoriels.

Enfin c’est mon impression :wink:

pourquoi mettre en gras une assertion fausse ? dans ton schéma du #1 le BP décharge instantanément (ou presque : la résistance des fils, etc...) C à l'appui, d'où les montages avec une (faible) R entre C et BP

Oui à l’appui C est court-circuité à GND. Donc voici la correction :

Le condensateur n’est pas court-circuité vers Vcc car la résistance de pull-up de 10 kΩ limite toujours le courant dans ce sens.

En revanche, à l’appui, il est effectivement relié directement à la masse via le bouton, ce qui provoque une décharge très rapide (quelques ohms seulement).

Mais ce qu’écrit @claudius01 est peut-être valable pour les gros condensateurs de filtrage alimentés à des tensions élevées :wink:

Au final c’est peut-être à ce genre de montage qu’il fait référence :wink:

Bonjour Philippe,

Tu peux considérer que le schéma réel est ainsi


Avec Rs la résistance de contact du Switch et éventuellement celle que tu rajoute en série au switch pour faire une éventuelle limitation de courant de DECHARGE.

Le condensateur se charge par R1, la constante de temps de charge est R1.C.

Je pense que l'on peut considérer que Rs du contact seul est largement inférieur à 1 Ohms.
Et en s'autorisant les simplifications d'usages dues au fait que R1 est trés supérieure à Rs,
-c'est R1 qui limite le courant et temps de CHARGE.
-C'est Rs qui limite le courant et temps de DECHARGE.

Si on veut limiter le courant de DECHARGE avec Rs rajoutée de l'ordre de 1k (10x plus petite que R1) on obtient un courant de décharge de l'ordre de 5mA max, ce qui protége C et K.

Dans ce cas la, constante de temps de DECHARGE Rs.C = R1.C/10 est 10 fois plus rapide que celle de CHARGE.

Donc tant qu'il y a des rebonds, C ne se charge pas.

Oups oui j’ai compris :wink:

PS:

Je pense que dans le cas que @philippe86220 décrit, il n'est de toutes façons pas souhaitable de mettre des "gros" condensateurs car ils mettent beaucoup plus de temps à se charger donc ralentissent le changement d'état, ce qui peut être embêtant dans certains cas.

Non c’est ce que moi je pensais mais en fait je pense maintenant que @claudius01 a raison sur ce qu’il a voulu exprimer : le fait que l’on ne court-circuite jamais un C :wink: (après dans ce cas précis je ne pense pas que le court-circuitage soit très pénalisant pour C)

Ceci étant, je prends en compte ton montage qui ne court-circuite pas C et je comprends toutes tes explications qui sont justifiées.

Ainsi @claudius01 @5_cylindres et toi vous avez entièrement raison et je suis d’accord avec vos remarques pertinentes.

En quoi le fait de court-circuiter un condensateur peut-il diminuer la durée de vie?
L'énergie stockée dans un 100nF chargé sous 5V est de l'ordre du micro joule et ne peut pas provoquer un échauffement que quoi que ce soit. Avec une énergie importante, on pourrait penser que les contacts du poussoir du bouton pourraient s'oxyder. Mais pas avec 1µJ.

Je suis d'accord avec toi.

Il faudrait peut-être garder à l'esprit que nous les humains, nous sommes chargés à plusieurs milliers de volts.

On ne s'en aperçoit jamais sauf quand on se serre la main par temps très sec en hiver.
Aïe, ça fait des étincelles !

Les composants électroniques comme les tout petits transistors eux s'en rendent compte et c'est pour cela que vous avez des diodes de protections sur les entrées.

Mais un condensateur !

Vous rendez vous compte de l'agression que vous faites subir aux condensateurs électrolytiques qui entourent le régulateur de vos cartes micro quand vous branchez le 5 V direct dessus, sans résistances de protection !
Avec des condensateurs 50 µF ou 100 µF, l'appel de courant dure largement plus longtemps qu'avec un 0,1 µF.

Un condensateur électrolytique est bien plus fragile qu'un condensateur céramique.
Question fiabilité, quand je travaillais dans un domaine hautement fiabilisé, nous n'avions droit qu'aux condensateurs mica (pour les faibles valeurs) ou aux condensateurs céramiques.

Merci pour les différentes remarques.

Effectivement, comme le fait remarquer @vileroi, dans un montage RC anti-rebond classique avec un condensateur de 100 nF sous 5 V, l’énergie stockée est extrêmement faible (de l’ordre du microjoule).

La décharge rapide via le bouton ne provoque ni échauffement significatif, ni stress notable sur le condensateur, ni dégradation des contacts.

L’ajout d’une résistance série (Rs) est donc possible, mais pas nécessaire dans ce contexte précis :

– le courant maximal reste très faible,

– la tension très basse,

– les composants largement dimensionnés pour ces conditions.

Dans le cadre d’un simple montage Arduino avec microcontrôleur 5 V et avec C de 100 nF, l’ajout de Rs est facultatif et n’apporte pas d’amélioration pratique.

Merci encore pour les échanges. c’est exactement ce genre de discussions qui permettent de clarifier ce qui est nécessaire, optionnel ou purement “bonne pratique” selon les contextes.

Ceci étant, je conclus de cette façon, mais si certains ne le voient pas ainsi, ils peuvent toujours argumenter dans un autre sens que le mien.

PS : l’explication de @jef59 me convient parfaitement.

Pas d'accord, le courant peut très bien dépasser l'ampère mais sur un temps de l'ordre de la microseconde. Ce n'est pas le courant qui pose problème, c'est l'énergie.

Intuitivement, si vous chargez un gros condensateur, et libèrez toute son energie chargée à travers un court circuit (un fil), vous risquez de souder le fil sur le condo, de le décharger instantanément et voir de l'abîmer.

Si vous faite la même chose avec une R de qq k Ohms, pas d'arc, pas de dégat, la décharge est plus longue, et pourtant vous avez déchargé la même energie.

Le probléme, ce n'est donc pas l'énergie à décharger il me semble.

Dans le montage avec un interrupteur, le condensateur est déjà en contact avec les fils, voir déjà soudé. Et si on mettait un 1000µF en parallèle sur le bouton et si il y avait une étincelle, ce serait sur les contacts du bouton et pas dans le condensateur. Je veux bien entendre que la résistance protège le bouton, mais j'ai de gros doute sur l'utilité pour le condensateur.

Je reste persuadé que les condensateurs chimiques ont des résistances série plus importantes que les condensateurs plastiques. En conséquence le courant de pointe pour un 100nF sera supérieur au courant de pointe d'un 1000µF.

Et quand on a une étincelle entre la peau et autre chose, c'est que l'énergie est libérée sur un arc avec une surface suffisamment faible pour créer une élévation de température notable qui est ressentie.

Ce qui compte ce sont les coulombs stocqués.
Q = CU
Ou
Q=It
C’est d’ailleurs en écrivant :
du = (1/C).i.dt
Que l’on peut calculer la charge et la décharge d’un condensateur.

Je répète que connecter brutalement un condensateur électrolytique ou même tantale directement sur le Vcc, sans résistance série de limitation est bien plus agressif que décharger avec un court circuit un céramique de 100 nF.

Note :
Un coulomb c’est 1 A par seconde.
Les mA.h sont presque la même chose : la différence étant que l’unité de temps officielle est la seconde.
Il n’y a que les unités d’un système cohérent qui peuvent être utilisées dans une formule physique ou mathématique.

Oui effectivement le courant de pointe peut être en théorie de :

U = R*I donc I = U/R

  • I courant de pointe
  • U tension
  • R résistance du bouton poussoir

I = U/R = 5V/ 0,1Ω = 50A c'est en théorie (5V) en réalité quelques ampères (également il faut pour R prendre en compte la résistance des pistes, fils ...) et on peut effectivement en conclure que le courant peut dépasser l'ampère mais effectivement il ne dure que quelques microsecondes.

Donc oui je me suis trompé dans mes explications.

Donc ce n'est pas ce courant qui peut dégrader un composant car il ne dure pas longtemps.
Ce qui compte vraiment c'est l'énergie stockée dans le condensateur :

Le courant de pointe peut être très élevé lorsque le condensateur se décharge à travers la résistance très faible du contact du bouton.
Mais ce courant de pointe ne dure que quelques nanosecondes à microsecondes, car le condensateur ne contient qu’une énergie extrêmement faible :

E = 1/2(C*U2) = 1,25 μJ

  • E énergie
  • C condensateur = 100 nF = 100×10⁻⁹ F = 0,0000001 F
  • U tension = 5 V

E = 1/2 * (C*V^2) = 0,5 * 0,0000001 * 25 = 0.00000125 joules = 0.00000125 * 1000 000 = 1,25 μJ
Ou plus simplement :
E = 1/2 * 100×10⁻⁹ * 25 Joules = 1,25 * 10⁻⁶ = 1,25 μJ

Conclusion : Le courant de pointe peut être très élevé en théorie lors de la décharge du condensateur,
mais comme l’énergie stockée dans 100 nF sous 5 V est extrêmement faible (1,25 µJ),
cette impulsion est trop courte pour avoir la moindre conséquence physique sur le bouton ou sur le condensateur.

PS : ce ne sont bien sûr que des valeurs théoriques comme par exemple la valeur de 5V mais sur le principe il me semble que le raisonnement est correct.

EDIT oups, Je n'avais pas vu toutes les autres réponses. Je reviens plus tard.

Bonjour,

Si je ne suis pas trop obsoléte, l'énergie c'est Puissance x temps.

L'énergie de décharge d'un condo ne peut pas dépasser l'énergie qu'il a accumulé pendant la charge.

S'il décharge toute son energie en un temps très bref, le pic de puissance serra, selon mon obsoléssance, beaucoup plus élevé que s'il la décharge pendant un temps plus long.
Pourtant il décharge la même energie dans les 2 cas.

Rapport entre Puissance et Courant, P=R.I²

Donc

Plus le temps de décharge totale est bref, plus P est grande.

Et à R constante
Plus P est grande
Plus I est grand

Qui fait fusible?

Là est ma question, mais c'est selon moi le temps de décharge + que l'énergie qui "blesse".