Gestion des retards dans un circuits logiques (cmos)
Répondre à la discussion
Affichage des résultats 1 à 13 sur 13

Gestion des retards dans un circuits logiques (cmos)



  1. #1
    Teknic

    Gestion des retards dans un circuits logiques (cmos)


    ------

    Bonjour à tous,



    je reviens aujourd'hui avec le schéma d'encodage d'un clavier composé de 16 switchs tactiles.

    Nom : Keyboard-encoding.jpg
Affichages : 476
Taille : 88,8 Ko


    Nous voyons ici que le clavier est encodé à l'aide de deux CD4532 et d'un CD4071. Le schéma est tiré du datasheet du CD4532.


    Le CD4532 est un "8 x 3 line priority encoder":
    http://www.mouser.com/ds/2/405/cd4532b-439725.pdf

    Le CD4071 est un classique "4 x OR gates"
    http://www.mouser.com/ds/2/405/cd4071b-441609.pdf


    En sortie j'ai rajouté un verrou 4 bits , un CD4042, qui permet de "garder en mémoire" le dernier switch actionné.
    http://www.mouser.com/ds/2/405/cd4042b-406629.pdf


    En théorie ça marche bien sauf qu'en pratique le circuit ne fonctionne pas pour cause de retard des signaux.
    En effet la sortie "Key-D" est légèrement en avance par rapport aux autres signaux (Key-A, Key-B, Key-C et Key-On) ce qui fait que cette valeur n'est pas prise en compte quand le verrou se referme.

    Cela est dut au fait que le signal Key-D n'est pas retardé par le CD4071 comme les autres signaux. Si je comprends bien le datasheet, ce retard va de 100 à 200 ns pour une alimentation 5V.


    1-Ma première question est la suivante: Puisque qu'il faut retarder le signal Key-D (Retard A) quelle est la méthode la plus élégante pour le faire ?

    - Pour le moment j'utilise une paire d'inverseur logique (CD4069)en série, ça fonctionne correctement.
    http://www.mouser.com/ds/2/405/cd4069ub-452619.pdf

    - J'imagine qu'un simple circuit condensateur/résistance (par exemple 0,47uF et 10K) devrait aussi fonctionner.

    -Peut-être même qu'un simple "buffer" CD4050 pourrait faire l'affaire.
    http://www.mouser.com/ds/2/405/cd4050b-452617.pdf





    2-Même si ce circuit fonctionne mieux, cela n'est pas toujours suffisant et des erreurs apparaissent encore en sortie de verrou.
    Ces erreur concernent la synchronisation de Key-On et Key-A, Key-B, Key C. En effet il faut s'assurer que les autres signaux sont encore actifs quand Key-On passe au niveau bas.

    Ma deuxième question concerne donc le retard B.
    Là encore pour ralentir les signaux Key-A, Key -B et Key-C par rapport à Key On, quelle serait la méthode la plus élégante parmi celles précédemment citées?


    3-Enfin ma troisième question:
    Vous remarquerez que je n'ai pas placé de condensateurs anti-rebond parallèlement aux 16 switchs d'entrée.
    Cela parce que je considère que peu importe le rebond pourvu la valeur ai eu le temps d'être mise en mémoire dans le latch.
    Cela vous paraît-il juste où il s'agit-il d'une mauvaise interprétation?


    Merci par avance de vos réponses.

    -----
    Dernière modification par Teknic ; 21/10/2015 à 05h02.

  2. #2
    DAUDET78

    Re : Gestion des retards dans un circuits logiques (cmos)

    4 composants pour gérer un clavier de 16 touches ... tu es dans la technologie du XXéme siècle. Depuis, on a inventé le µC , faudrait jeter un coup d'oeil de ce coté là.


    Il faut mettre un anti rebond sur la sortie KeyOn afin :
    - D'éliminer les glitchs
    - De générer un pulse propre pour la mémorisation du numéro de touche

    PS : L'utilisation d'un latch "transparent" et non "edge-trigger", c'est pas futé
    J'aime pas le Grec

  3. #3
    jiherve

    Re : Gestion des retards dans un circuits logiques (cmos)

    Bonjour,
    sans trop de modif il faudrait différentier la sortie Key-On pour générer un pulse de largeur suffisante qui ferait fonctionner le verrou au bon moment.
    Donc en propre on rajoute un monostable déclenché sur le front montant de Key On qui génère un pulse de qqs µS
    L'anti rebond peut être obtenu par l'utilisation d'un mono retriggerable en amont de celui utilisé pour générer le pulse échantillonnage, cela tombe bien il existe le 14538 http://www.onsemi.com/pub_link/Colla...MC14538B-D.PDF.
    C'est en clair ce que propose DAUDET.
    JR
    l'électronique c'est pas du vaudou!

  4. #4
    DAUDET78

    Re : Gestion des retards dans un circuits logiques (cmos)

    Voilà le genre de timing que tu dois avoir (simulation avec un seul 4532)
    Nom : CD4532 et CD4042_simu.JPG
Affichages : 266
Taille : 52,4 Ko
    J'aime pas le Grec

  5. A voir en vidéo sur Futura
  6. #5
    Teknic

    Re : Gestion des retards dans un circuits logiques (cmos)

    Bonsoir JR et Daudet,

    Oui Daudet tu as bien sûr raison pour le uC.... je m'y mettrais un jour mais pour l'instant je n'ai pas du tout les connaissances, ça ne fait qu'un an que je pratique l'électronique.


    Bon alors, je viens de passer une bonne heure à détailler le datasheet du MC14538B et je dois dire que je suis bien perdu.

    Pour faire simple et si j'ai bien compris cet IC permet juste de fournir un pulse propre, c.a.d une commande "Key-On"pendant une certaine durée. Est-ce bien de ce type d'anti-rebond dont tu parlais Daudet?
    Si c'est bien le cas il me semble que cela entraîne un changement de comportement du clavier.


    Vous aurez peut-être remarqué, vu l'appellation des switchs, qu'il s'agit d'un clavier musical.
    A l'origine je l'ai pensé afin qu'on puisse glisser d'une note à l'autre sans que le signal Key-On passe à l'état bas.
    J'ai l'impression qu'avec la méthode que vous proposez un enchaînement de note (sans jamais relâcher complètement le clavier) n'apparaîtrait pas en sortie de verrou.

    ... ?
    Dernière modification par Teknic ; 21/10/2015 à 20h12.

  7. #6
    DAUDET78

    Re : Gestion des retards dans un circuits logiques (cmos)

    Citation Envoyé par Teknic Voir le message
    Pour faire simple et si j'ai bien compris cet IC permet juste de fournir un pulse propre, c.a.d une commande "Key-On"pendant une certaine durée. Est-ce bien de ce type d'anti-rebond dont tu parlais Daudet?
    En aucun cas !
    Le CD4532 est un circuit combinatoire, les merdes qui rentrent en ressortent (voir ma simulation). Il faut faire le débouncing en extérieur
    J'ai l'impression qu'avec la méthode que vous proposez un enchaînement de note (sans jamais relâcher complètement le clavier) n'apparaîtrait pas en sortie de verrou.
    C'est probable, mais je n'ai pas testé encore !

    Maintenant, pourquoi le verrou? est il utile ? Si tes touches fonctionnent avec un capteur opto, tu n'as pas de rebondissement ?

    Il faut voir (je ne suis pas musicien !) si tu veux :
    - une note à chaque appuie de touche (et qui cesse au relâchement)
    - une note à chaque appuie de touche (et qui change au prochain appuie)
    J'aime pas le Grec

  8. #7
    Teknic

    Re : Gestion des retards dans un circuits logiques (cmos)

    Citation Envoyé par DAUDET78 Voir le message
    En aucun cas !
    Le CD4532 est un circuit combinatoire, les merdes qui rentrent en ressortent (voir ma simulation). Il faut faire le débouncing en extérieur
    Non, non, je parlais du MC14538B.



    Citation Envoyé par DAUDET78 Voir le message
    Maintenant, pourquoi le verrou? est il utile ? Si tes touches fonctionnent avec un capteur opto, tu n'as pas de rebondissement ?
    Pas de capteurs opto, il s'agit juste d'un clavier composé de switchs tactiles comme sur ce genre de machine:
    http://medias.audiofanzine.com/image...303-390689.jpg


    Citation Envoyé par DAUDET78 Voir le message
    Il faut voir (je ne suis pas musicien !) si tu veux :
    - une note à chaque appuie de touche (et qui cesse au relâchement)
    - une note à chaque appuie de touche (et qui change au prochain appuie)

    Infini: Quand on actionne une touche alors la note correspondante est jouée indéfiniment.
    Prioritaire: Quand deux touches sont actionnées en même temps c'est la note la plus haute qui est jouée.

    Après relâchement d'une touche la note correspondante est tenue indéfiniment jusqu'à ce qu'on actionne un autre touche.

    Quand on reste appuyé sur une touche et qu'on en actionne une autre, la note d'origine change uniquement si cette nouvelle note est plus haute. On revient à la note d'origine quand la seconde touche est relâchée.

    Pour info il faut considérer l'ordre des switchs comme inversée sur le schéma: Plus le switch est placé bas, plus la note est haute.

    Sw1, Sw2, Sw3...Sw16 correspondent donc à une suite de notes ascendantes.

  9. #8
    DAUDET78

    Re : Gestion des retards dans un circuits logiques (cmos)

    Citation Envoyé par DAUDET78 Voir le message
    C'est probable, mais je n'ai pas testé encore !
    Je viens de tester, pas de strobe sur le verrou .
    PS : attention, même sans verrou, il y a priorité de la touche supérieure sur la inférieure

    Appuie D4 : D3 D2 D1 et D0 sont ignorés (on a toujours le code D4 en sortie)
    Appuie D4 : Un appuie sur D5 donne le code D5

    Il faudrait mettre une dérivation (au sens math du terme !) avec un circuit RC entre la touche et l'encodeur pour rendre les touches fugitives
    J'aime pas le Grec

  10. #9
    Teknic

    Re : Gestion des retards dans un circuits logiques (cmos)

    Citation Envoyé par DAUDET78 Voir le message
    Je viens de tester, pas de strobe sur le verrou .
    PS : attention, même sans verrou, il y a priorité de la touche supérieure sur la inférieure

    Appuie D4 : D3 D2 D1 et D0 sont ignorés (on a toujours le code D4 en sortie)
    Appuie D4 : Un appuie sur D5 donne le code D5

    Il faudrait mettre une dérivation (au sens math du terme !) avec un circuit RC entre la touche et l'encodeur pour rendre les touches fugitives
    Que veux tu dire par "pas de strobe"?? Strobe est un terme que j'ai du mal à comprendre. :/

    Pour ce que tu proposes avec un circuit RC ça paraît être une bonne solution mais il me semble qu'on obtient:

    Appuie D4: on a le code D4 en sortie.
    Appuie D5 et maintient D4: on a le code D5 en sortie
    Relâchement D5 et maintient D4: on a toujours le code D5 en sortie


    Alors que je voudrais:

    Appuie D4: on a le code D4 en sortie.
    Appuie D5 et maintient D4: on a le code D5 en sortie
    Relâchement D5 et maitient D4: on repasse sur le code D4 en sortie.

  11. #10
    DAUDET78

    Re : Gestion des retards dans un circuits logiques (cmos)

    Citation Envoyé par Teknic Voir le message
    Que veux tu dire par "pas de strobe"?? Strobe est un terme que j'ai du mal à comprendre.
    Strobe =signal de synchro qui permet de mémoriser la touche actionnée dans le verrou
    Appuie D4: on a le code D4 en sortie.
    Appuie D5 et maintient D4: on a le code D5 en sortie
    Relâchement D5 et maitient D4: on repasse sur le code D4 en sortie.
    Alors, faut laisser tomber ta quincaillerie et passer au µC . Là, tu fais ce que tu veux !
    J'aime pas le Grec

  12. #11
    Teknic

    Re : Gestion des retards dans un circuits logiques (cmos)

    Bah tu sais le circuit tel que je l'ai décrit ne fonctionne pas si mal...Hormis les quelsques glitchs, le clavier se comporte bien par rapport à ce que je veux faire... alors je ne peux me résoudre à renoncer si prés du but.

    Comme je l'ai écris plus haut j'utilise une série de deux portes inverseuses pour réaliser le retard A.
    J'ai ajouté 3 gros condensateurs à l'arraché pour réaliser le retard B.


    Si je voulais passer sur micro-controlleur il me faudrait me payer une formation, je mettrai un temps infini rien qu'à la mise en route sinon.
    Dernière modification par Teknic ; 21/10/2015 à 21h51.

  13. #12
    DAUDET78

    Re : Gestion des retards dans un circuits logiques (cmos)

    Fait au moins un schéma propre !
    Nom : CD4532 et CD4042_shema.JPG
Affichages : 342
Taille : 23,6 Ko
    J'aime pas le Grec

  14. #13
    Teknic

    Re : Gestion des retards dans un circuits logiques (cmos)

    Bon je vais réfléchir la dessus.

    Merci encore et bonne nuit.

Discussions similaires

  1. électronique interne des circuits logiques
    Par fouga dans le forum Électronique
    Réponses: 4
    Dernier message: 01/10/2010, 21h13
  2. Jeu de circuits logiques
    Par invite3699f600 dans le forum Électronique
    Réponses: 15
    Dernier message: 23/09/2007, 15h05
  3. Circuits logiques CMOS
    Par invite6de5f0ac dans le forum Électronique
    Réponses: 15
    Dernier message: 09/05/2007, 16h21
  4. svp circuits logiques(courant de sortie)??
    Par invite4ce7f495 dans le forum Électronique
    Réponses: 4
    Dernier message: 11/04/2006, 16h18
  5. Tension dans les circuits logiques
    Par freesbeep dans le forum Électronique
    Réponses: 21
    Dernier message: 17/06/2005, 22h48
Découvrez nos comparatifs produits sur l'informatique et les technologies.