Étape 10 : Hey, qu’en est-il des encodeurs rotatifs ?
Sur les encodeurs rotatifs
Potentiomètres et faders sont parfaits pour le contrôle des volumes et des fréquences, mais parfois vous vous trouvez dans le besoin de quelque chose qui peut se transformer pour toujours, donc vous pouvez faire défiler vos playlists, ou peut-être vous êtes un DJ et vous souhaitez ajouter des jog-wheels à la manette pour gratter. C’est alors encodeurs rotatifs viennent dans.
Ils peuvent ressembler à un potentiomètre, mais il y a 3 grandes différences :
- Un encodeur rotatif peut se transformer pour toujours, alors qu’un potentiomètre a une plage fixe (généralement autour de 270°).
- Un encodeur rotatif envoie des signaux numériques, tandis qu’un potentiomètre « sorties » de tensions analogiques.
- Un encodeur rotatif envoie des messages relatifs, alors qu’un potentiomètre rapporte son angle absolu.
Décodage d’un encodeur rotatif
Avant on peut les utiliser, nous devons d’abord comprendre comment ils fonctionnent. Il y a un long document dans l' Arduino Playground, mais je vais essayer de donner une explication rapide.
Un encodeur rotatif se compose essentiellement de deux interrupteurs. Lorsqu’elle est activée, les deux broches de ces interrupteurs (A & B) seront connectés et déconnectés de l’axe commun (C). (Voir image 1, crédit : RobotRoom)
Il en résulte deux ondes carrées. Ces ondes carrées sont identiques, mais le timing est différent. Nous disons qu’ils sont 90° hors phase : la deuxième vague commence son cycle lorsque la première vague est à 1/4 de son cycle. (90° est 1/4 d’un 360° complet, d'où le « 90° hors de phase ». A et B sont aussi appelés "quadrature sorties", parce qu’ils sont un « quartier » hors phase.)
Jetez un oeil à la seconde image (source : Arduino Playground). Supposons que nous passons l’encodeur dans le sens horaire (CW sur l’image). Chaque fois que le signal A Monte, (ligne verticale rouge) le signal B est élevé, et chaque fois que le signal A tombe (ligne verte), le signal B est faible. Imaginez maintenant le tournant vers la gauche (CCW). Maintenant, chaque fois que le signal A Monte (ligne verte), le signal B est faible, et chaque fois que le signal A tombe (ligne rouge), le signal B est élevé. Donc, en vérifiant la valeur de B lorsque la valeur A change, nous savons quelle direction l’arbre va. Cela vaut également pour les modifications du canal B. En comptant les impulsions, nous savons combien nous tourner.
Parce que vérifier pin A et B dans la boucle de notre croquis serait trop lent s’il y a d’autres choses en cours d’exécution aussi bien, et nous ne voulons pas manquer n’importe quel changement d’eux, nous utilisons des interruptions. Voici quelques grandes pages sur les interruptions : la Arduino référence, site de Nick Gammonet du chapitre 11 dans le Atmel Datasheet (Uno ou Leonardo).
Interruptions sont, autrement dit, les parties de votre code qui exécutera seulement quand quelque chose se déclenche, comme un changement de NIP. La boucle principale est interrompue, et le rapport de recherche internationale ou Interrupt Service Routine est appelée. C’est beaucoup plus complexe que cela, mais il est impossible d’expliquer dans un Instructable. De toute façon, si nous accordons une interruption aux broches de la molette, nous pouvons nous assurer que nous ne manquez aucun changement de NIP, peu importe ce qui se passe dans les autres parties de notre code. Vous pouvez en savoir plus à ce sujet dans les liens précédents, mais nous ne serons pas inquiétantes pour beaucoup sur les interruptions, étant donné que nous allons utiliser la bibliothèque de codeurs d’achetantqui gère pour nous.
Il existe deux types de codeurs rotatifs : mécaniques et optiques. La première image est une mécanique : il est de type statique et une pièce mobile de métal, et ils font ou raccords de freins. Le deuxième type est un encodeur optique : il y a deux faisceaux de lumière (surtout infrarouge), et un disque rotatif avec dents interrompt le disque. Si la distance entre les poutres est le bon ratio par rapport à la largeur des dents, leurs ondes carrées seront 90° hors de phase. Il y a un exemple en image 3 (source : Kawasaki Heavy Industries). Il est également possible d’avoir deux anneaux des fentes, qui sont déjà en cours de droit sur le disque.
Il y a un problème avec les codeurs mécaniques, et c’est dû au fait que la connexion n’est jamais parfaite. Vous pouvez avoir des petits épis lors de connexion / déconnexion, et l’Arduino également détecter ceux et nous donnent de mauvaises lectures. Une solution simple consiste à ajouter deux condensateurs de 100nF entre nos sorties A et B et le sol.