J'ai récemment lu un article sur le rebond des boutons et je me demandais si je devais garder cela à l'esprit lorsque je travaillais, par exemple, avec un Arduino (ATMega mC)? Je suppose que c'est un problème, surtout lorsque vous travaillez avec des interruptions.
Alors, est-il préférable de détecter les rebonds dans le code, ou faut-il s'en occuper avec le matériel? S'il vous plaît élaborer.
Réponses:
Je recommanderais fortement de raccorder un oscilloscope (j'espère que vous en avez un ou que vous pouvez en avoir un à utiliser) jusqu'à votre commutateur. J'ai vu un projet d'étudiant qui a eu un rebond sur son commutateur qui est passé de 5v à -5v, de 4v à -3v, puis à 2v, puis de retour à 0v. Lorsque nous avons examiné le tirage au sort actuel, nous avons relevé une très très forte hausse.
Dans son cas particulier, il avait vraiment besoin de faire échec à son changement de matériel.
Cependant, par contre, j'ai constaté que les commutateurs ont un effet beaucoup plus petit et pourraient facilement être supprimés à l'aide d'un logiciel.
Vous devez cependant peser vos options. Si vous avez une quantité très complexe de microprogrammes, l'ajout de temps système à la fois en tant que programmeur et l'utilisation du processeur risquent de ne pas en valoir la peine et il serait préférable d'ajouter un peu de matériel. Maintenant, si vous essayez de réduire les coûts et la taille, vous voudrez supprimer autant de matériel que possible et tout faire dans le firmware si vous le pouvez.
la source
Si vous êtes un concepteur d'électronique professionnel, votre patron ne vous laissera même pas le faire en matériel. La raison est simple: si votre lot de production est suffisamment grand, le logiciel est pratiquement gratuit , tandis que le matériel doit être payé pour chaque unité produite. Et tandis que les résistances et les condensateurs sont très bon marché, leur montage sur une carte de circuit imprimé peut coûter jusqu'à 20 fois leur prix d'achat.
Que vous utilisiez des logiciels ou du matériel, vous devez toujours sélectionner des boutons de qualité. Le fameux bouton de 157ms de l'article n'est tout simplement pas digne d' une application.
Je teste habituellement le bouton à des intervalles de 32 ms , ce qui est suffisant pour combler le temps d'anti-rebond d'un bon bouton. Je suis assez fan des commutateurs SKQG TACT Alps .
Sur les quelques appareils que j'ai testés, le temps de rebond initial était inférieur à 10 ns. Alors qu'il a une durée de vie de 100 000 cycles, nous l'avons testé pendant 200 000 cycles et même dans ce cas, le rebond de 32 ms était suffisant. (J'imagine que j'aurais dû mesurer le niveau actuel du rebond, mais notre principal intérêt à l'époque était le comportement du produit final. Quoi qu'il en soit, nous l'utilisions hors spécifications.)
Si vous voulez vraiment une solution matérielle, j'appuie la solution SR à bascule mentionnée dans l'article comme étant la meilleure solution sur le plan technique:
La bascule peut être construite avec une double porte NAND , qui est disponible dans un petit paquet VSSOP8, par exemple. L'inconvénient majeur de cette solution est qu'il vous faut un bouton-poussoir SPDT, où SPST est beaucoup plus couramment disponible.
la source
Il y a beaucoup (et beaucoup) de différentes façons de supprimer les boutons. Que vous le fassiez en logiciel ou en matériel dépendra des exigences de votre projet et du type de commutateur.
Voici quelques liens vers différentes méthodes:
http://www.ganssle.com/debouncing.htm
http://hackaday.com/2010/11/09/debounce-code-one-post-to-rule-them-all/
la source
Cet article est la "bible" sur le rebond. Le rebond de contact peut être un problème avec n'importe quelle application.
Il est généralement préférable de supprimer les commutateurs dans le logiciel, car il est plus facile d’ajuster les retards de commutateurs particuliers, car ils diffèrent par la quantité de rebond de contact. Il est souvent également nécessaire de faire rebondir la libération de clé. Les fabricants de commutateurs spécifient souvent la quantité de rebond pour leurs produits, généralement entre 10 et 20 ms.
la source
Le rebond de commutateur peut durer des dizaines de millisecondes. Si vous interrogez un commutateur d'une routine d'interruption qui fonctionne sur une minuterie, le rebond ne sera pas un problème, car même si vous interrogez le commutateur au beau milieu d'une tempête de rebond, vous obtenez immédiatement le nouvel état. ou, dans le pire des cas, récupère l'ancien état et ne voit pas le nouvel état avant le prochain interrogation basée sur le minuteur. La scrutation à partir d’un ISR temporisé comme celui-ci constitue une forme d’anti-rebond logiciel.
Toutefois, si vous utilisez ce commutateur pour provoquer l'interruption et si vous vous attendez à ce que la routine de service d'interruption s'exécute rapidement, en moins de 10 millisecondes par exemple, vous aurez besoin d'un anti-rebond matériel, sans quoi un événement de commutateur risque de générer un nombre quelque peu aléatoire. interrompt, et certainement souvent plus que celui attendu. D'un autre côté, si la routine d'interruption est suffisamment longue, le rebond du commutateur sera réglé avant la fin des ISR, et tout ira bien pour vous, mais la plupart des ISR bien construits ne prennent pas très longtemps.
la source
La meilleure façon de faire est de choisir celle qui vous convient le mieux. Toutefois, lorsque vous avez déjà un microcontrôleur, vous pouvez utiliser un logiciel sans perdre le moindre effort de code.
La solution la plus simple consiste à vérifier les boutons à des moments plus éloignés que le temps de rebond le plus long. 50 ms semble être la limite supérieure du temps de rebond des commutateurs «normaux». Ainsi, lorsque vous pouvez organiser votre logiciel de cette manière, vous êtes en clair:
la source
Une approche de la suppression du rebond qui n’a pas encore été mentionnée consiste à utiliser un commutateur à double lancer avec un lancer lié à la DMV et l’autre au sol. Enfoncez-le dans une broche qui (via un logiciel ou du matériel) sera faiblement tirée vers son état actuel. Une telle approche offrira les avantages d'un commutateur à double course, mais ne nécessitera qu'une seule broche d'E / S au lieu de deux.
la source