-12%
Le deal à ne pas rater :
Nintendo Manette Switch Pro
52.99 € 59.95 €
Voir le deal

Le debouncing pour les curieux

Aller en bas

Les sujets techniques, ça m'intéresse

Le debouncing pour les curieux Vote_lcap100%Le debouncing pour les curieux Vote_rcap 100% 
[ 5 ]
Le debouncing pour les curieux Vote_lcap0%Le debouncing pour les curieux Vote_rcap 0% 
[ 0 ]
Le debouncing pour les curieux Vote_lcap0%Le debouncing pour les curieux Vote_rcap 0% 
[ 0 ]
 
Total des votes : 5
 

Le debouncing pour les curieux Empty Le debouncing pour les curieux

Message par Bouz Dim 12 Sep 2021 - 22:12

Que ce soit en électronique ou dans le monde de l'arcade (ou des consoles, d'ailleurs) qui nous intéresse ici, on nous vend souvent du debouncing (matériel ou logiciel). Je vais vous présenter rapidement la problématique et une solution assez répandue pour y faire face.

Avant de parler de debouncing, commençons par évoquer le problème d'origine: le rebond (on parle français, ici)...
Imaginez un switch (de joystick, ou de bouton): il s'agit de 2 lamelles métalliques qui viennent se mettre en contact ou se séparer en fonction de l'action du joueur.
Le hic, c'est qu'à l'échelle atomique, ces lamettes ne rencontrent pas instantanément. Un courant s'établit, puis se coupe, puis se rétablit... Et tout ça en une fraction (toute petite) de seconde. Et c'est ça, le rebond.

Voilà en gros comment on lit l'état d'un bouton en général:

Le debouncing pour les curieux 01_bou10

La lecture se fait sur le point de sortie: c'est le point sur lequel la machine va contrôler l'état du bouton, en lisant un état logique.
L'état logique, vulgairement, c'est 0 si on lit 0V, et 1 si on lit 5V. Vous aurez probablement remarqué, en câblant vos panels, qu'on branche la daisy chain de masse d'un côté du bouton, et la ligne qui part au connecteur JAMMA de l'autre.
Considérez que le point rouge à droite, c'est le connecteur JAMMA.

Voilà, donc quand le bouton est soulevé, la sortie voit une tension de 5V parce qu'elle voit la tension VCC à travers la résistance (vu qu'il ne passe aucun courant, il n'y a pas de chute de tension dans la résistance).

Quand le bouton est enfoncé, la sortie voit une tension de 0V parce qu'elle voit directement la masse qui est tout à gauche. Le VCC et sa résistance ne font pas le poids devant la résistance très faible du fil (d'autant plus qu'il ne passe aucun courant dedans).

La résistance est appelée résistance de pullup, parce qu'elle tire l'état de la sortie vers le haut. Le bouton vient ramener la tension à la masse quand il est pressé. Simple et efficace.

On note du coup que les boutons sont à l'état 1 quand ils sont au repos, et à l'état 0 quand ils sont enfoncés. C'est très souvent dans ce sens que ça marche.

Voilà ce que ça peut donner dans la vraie vie non dessinée...

Le debouncing pour les curieux 02_bou10

La résistance est plus bas, on ne la voit pas. Ce qu'on voit, par contre, c'est la sonde d'oscillo branchée sur l'interrupteur.
Amusons-nous un moment à voir ce qui se passe aux bornes de ce bouton...

Quand j'appuie sur le bouton, je vais coller les lames du bouton, et établir un contact fluctuant, qui va tirer tant bien que mal le signal à 0V:

Le debouncing pour les curieux 03_bou10

L'échelle est à 5ms par division => ça oscille un sacré bout de temps! La marque en jaune, qui sert de seuil de déclenchement de l'oscilloscope, est réglée sur le seuil de déclenchement (la différence entre un état 0 et un état 1) d'un slot MVS.
Sans dispositif spécifique, on se retrouve donc à appuyer virtuellement 20 fois sur le bouton en une seule pression réelle.

Et quand on relâche, ce n'est pas beaucoup mieux...

Le debouncing pour les curieux 04_bou10

Idéal pour jouer à Track&Field (du coup, le PCB est blindé d'anti-rebonds!).

C'est donc ici que l'anti-rebond (ou debouncing) intervient. Le principe est d'ajouter un amortisseur dans la bataille. On va utiliser un condensateur, dans la configuration suivante (si on met 1k au lieu de 10k et 30nF au lieu de 0.1uf, on a précisément le système utilisé sur le MVS):

Le debouncing pour les curieux 05_deb10

Il faut voir le condensateur comme un accu méga rapide (et avec une capacité ridicule). Quand on applique une tension dessus (à travers une résistance), il se charge progressivement. Quand on rejoint ses deux pôles (à travers une résistance), il se décharge progressivement. Les temps de charge et de décharge dépendent de la valeur des résistances, et de la capacité du condensateur.

Voilà le circuit anti-rebond ci-dessus, mis en oeuvre sous forme de plaque de test:

Le debouncing pour les curieux 06_deb10

Au démarrage, et à chaque fois qu'on relâche le bouton, on a un courant qui arrive du VCC en haut, et qui vient charger le condensateur au travers des deux résistances:

Le debouncing pour les curieux 07_deb10

Le condensateur va ainsi amortir les variations de tension en se chargeant simplement plus ou moins vite en fonction des aléas... Voilà un lâcher de bouton:

Le debouncing pour les curieux 08_deb10

Quand on appuie sur le bouton, le condensateur va voir la masse tout à gauche, et se vider via la résistance de 220 ohms. Le VCC voudra toujours le charger, mais avec se résistance beaucoup plus grosse, il ne fait pas le poids et le condensateur se vide inexorablement:

Le debouncing pour les curieux 09_deb10

Et en vrai, voilà ce que ça donne à la sortie du circuit:

Le debouncing pour les curieux 10_deb10

Objectivement, c'est quand même bien plus propre! Ca croise bien moins souvent le seuil de détection (en vrai, ce n'est pas toujours aussi bon, mais pour compenser, j'utilise un bouton Amazon vraiment tout pourri).

Il est également possible de faire du debouncing logiciel, en prenant des mesures avec une période suffisamment longue pour ne pas tomber 2 fois de suite dans la zone de chaos.

J'ai eu l'occasion de travailler sur la réparation du réseau anti-rebond d'un slot MVS, je vous montrerai ça ultérieurement si ça vous intéresse Wink.
Bouz
Bouz
Mintissime !
Mintissime !

Messages : 1897
Date d'inscription : 11/06/2019
Age : 43
Localisation : Saint Bauzille de Putois

https://www.youtube.com/user/openio

Revenir en haut Aller en bas

Le debouncing pour les curieux Empty Re: Le debouncing pour les curieux

Message par Joker Mer 15 Sep 2021 - 13:27

Intéressant ça me remémore un peu mes cours de lycée .

_________________
"Il est indispensable d'avoir une euro dans un setup arcade" :Raditz 2/02/2018.


Le debouncing pour les curieux Sign_m10

John Caffe le 25/09/2018:"Je comprends mieux ta remarque. Toi, t'es au moins ingénieur, et probablement inscrit à Mensa "
Joker
Joker
Scellé
Scellé

Messages : 3866
Date d'inscription : 01/10/2016
Age : 44
Localisation : Bordeaux

https://youtu.be/6u-tp2f_Pt8

Revenir en haut Aller en bas

Le debouncing pour les curieux Empty Re: Le debouncing pour les curieux

Message par theWave Ven 17 Sep 2021 - 23:18

En fait le debouncing c'est de l'anti rebond ??

Du coups sur une console, ce debouncing s'effectue au niveau de la manette ? du jeu ? de la console ??

_________________
Sanjuro a écrit:en Special Guest Star, WRC dans le rôle de theWave
ancien directeur du service de renseignements NGS, il a le bras long comme un anaconda sous stéroïdes, si un gros bonnet doit se coucher, c'est qu'il en a donné l'ordre.
theWave
theWave
Pièce unique
Pièce unique

Messages : 8881
Date d'inscription : 25/10/2015

Revenir en haut Aller en bas

Le debouncing pour les curieux Empty Re: Le debouncing pour les curieux

Message par Bouz Sam 18 Sep 2021 - 0:29

Oui, c'est la traduction littérale Wink.
Sur les consoles à prise DB9, genre Master System, probablement Megadrive, Atari 2600, XL, ..... c'est comme l'arcade, les boutons arrivent direct sur le PCB.
Pour réduire les coûts, le debouncing est probablement logiciel.
Pour la NES et les modèles suivants, c'est une transmission série entre la manette et la console. Le debouncing est extrêmement probablement logiciel aussi, eu coup.
Pour la NES, c'est un simple registre à décalage de 8 bits qui remonte l'état des boutons en série dans le câble.
Pour les consoles modernes, c'est du deboucing logicuel géré par des puces spécialisées, qui prennent probablement aussi en charge la liaison USB esclave.
Mais ce n'est que mon avis Wink.
Le logiciel, c'est moins cher. L'arcade, c'est cher et efficace. On cherche moins les économies d'échelle.
Bouz
Bouz
Mintissime !
Mintissime !

Messages : 1897
Date d'inscription : 11/06/2019
Age : 43
Localisation : Saint Bauzille de Putois

https://www.youtube.com/user/openio

Revenir en haut Aller en bas

Le debouncing pour les curieux Empty Re: Le debouncing pour les curieux

Message par Contenu sponsorisé


Contenu sponsorisé


Revenir en haut Aller en bas

Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum