Plusieurs déclencheurs de Schmitt en série peuvent-ils rebondir complètement un interrupteur?

8

Après avoir traité le logiciel anti-rebond pendant un certain temps, je trouve que cela prend un énorme tribut sur le système, j'ai donc pensé à créer initialement un anti-rebond matériel avec un déclencheur Schmitt (74HC14), un condensateur, un bouton et une résistance comme indiqué ci-dessous de talkelectronics.com :

circuit électronique

Mais j'ai lu que le déclencheur de Schmitt est à moitié aussi méchant qu'un onduleur ordinaire lors de la détermination du moment où sortir un niveau haut ou bas, car il change d'état à la marque 33% et 66% alors qu'un onduleur normal se rapprocherait de la marque 50% (mais avec la version HC c'est probablement plus à 55%).

Je me demandais, parce que le déclencheur Schmitt est six onduleurs dans un seul boîtier, le rebouncing s'améliorerait considérablement avec n'importe quel bouton de mon choix appliqué à la première entrée si je faisais six du circuit sur le côté droit avec les mêmes valeurs de composant et connecté tous d'entre eux en série? (Exemple: sortie du premier circuit à l'entrée du deuxième circuit où le condensateur et la résistance se rencontrent.)

Mike
la source
3
"parce qu'il change d'état aux 33% et 66%" , n'est-ce pas tout l'intérêt d'utiliser un déclencheur schmitt? ... Alors qu'il y a une fenêtre au milieu où il ne change pas, donc rebondissant?
Bort
5
Comment le rebouncing a-t-il un impact énorme sur le système ?? Le déliantage logiciel peut être aussi simple que de conserver un intervalle de 50 ms entre la lecture des boutons.
Wouter van Ooijen
2
@Mike Vous avez peut-être un malentendu au sujet des déclencheurs Schmitt? Savez-vous qu'ils ont une hystérésis et que les points de commutation asymétriques se "chevauchent": il n'y a pas de bande médiane où le signal n'est pas défini.
pipe
4
Votre problème n'a rien à voir avec cela - votre problème est que vous ne savez pas comment écrire un logiciel anti-rebond d'une manière qui n'est pas extrêmement inefficace. Je suggère fortement de poster une autre question sur le forum de révision de code pour demander ce que vous avez fait de mal dans votre logiciel, car même le processeur 8 bits le moins cher peut faire rebondir un tas d'entrées sans transpirer.
Graham
2
@Mike À moins que vous ayez des milliers d'événements par seconde à rebondir, je ne vois pas comment cela pourrait consommer un impact mesurable sur le temps d'exécution.
Dmitry Grigoryev le

Réponses:

12

L'utilisation de déclencheurs Schmitt en série ne réduirait pas davantage le rebond.

Considérez le filtre:

Comparaison de la forme d'onde de déclenchement de Schmitt

L'entrée est (U). La ligne rouge est un seuil de 50%, dont la sortie est considérée comme un signal (A). Il rebondit à chaque fois que l'entrée passe.

Les lignes vertes représentent environ 33% et 66%, comme vous l'avez dit. Mais la sortie (B) ne commute que lorsque l'entrée (U) passe d'un seuil vert à l'autre.

Plus important encore, la sortie est soit entièrement ÉLEVÉE, soit FAIBLE (numérique). Donc, si la sortie d'un déclencheur Schmitt était introduite dans l'entrée d'un autre, il n'y aurait essentiellement aucune différence.

Prenez la sortie filtrée d'en haut (B) et réfléchissez à la façon dont elle serait vue par un autre déclencheur Schmitt:

Déclencheur Schmitt en série avec un autre

Encore une fois, la sortie du premier serait soit HAUTE soit BASSE. Ainsi, il franchirait les seuils en même temps, ce qui donnerait la même sortie que l'entrée. Il n'y a rien à rebondir! Si quoi que ce soit, je m'attendrais à ce qu'il crée plus de bruit, car vous introduisez plus de composants et donc plus de marge d'erreur.

Cela ressemble à ce que vous cherchez peut-être un déclencheur Schmitt avec des seuils réglables. Certains sont symétriques (par exemple: 33% et 66%, ou 10% et 90%). D'autres sont non symétriques (par exemple: 33% et 80%). Vous pouvez créer le vôtre à l'aide d'un ampli opérationnel.

Essayez de jouer avec cette simulation que j'ai mise en place il y a quelque temps: Simulation de déclenchement de Schmitt - non inverseur non symétrique

Schmitt Trigger Simulation - non inverseur non symétrique

Bort
la source
Étant donné que je ferai un PCB, le fait de lier parfois deux onduleurs en série rendra le PCB beaucoup plus facile à créer. À combien plus de bruit vais-je m'attendre si j'attache deux de ces onduleurs en série?
Mike
Pour cette configuration, le «bruit» serait probablement négligeable. Il peut y avoir une microseconde de propagation temporelle. Le "bruit" de tension ne serait pas un problème trop important, car chaque déclencheur est un filtre après tout. Je ne m'inquiéterais pas à ce sujet à moins que l'application ne dépende fortement du timing, mais je suppose que ce n'est pas parce que ce n'est qu'un bouton.
Bort
15
Plusieurs déclencheurs de Schmitt en série peuvent-ils rebondir complètement un interrupteur?

Un seul déclencheur Schmitt avec un filtre analogique en face peut être utilisé pour le rebond. Cependant, après ce déclenchement de Schmitt, le signal est entièrement numérique. Tout déclencheur Schmitt supplémentaire ne changera rien à cela. Idéalement, ils conserveront le signal.

Sur un sujet distinct, le rebouncing dans le firmware ne devrait pas représenter une grande charge. La manière habituelle est d'échantillonner l'état du commutateur dans une interruption périodique que vous avez déjà de toute façon. Vous déclarez l'état anti-rebond la valeur actuelle du commutateur lorsque vous avez vu le commutateur dans cet état pour N échantillons consécutifs. J'ai généralement besoin que le commutateur soit dans le même état pendant 50 interruptions consécutives de 1 ms pour que le nouvel état soit considéré comme valide. Cela prend généralement une très petite fraction des cycles globaux du processeur.

Olin Lathrop
la source