Les boutons rotatifs avec encodeur en quadrature

Les boutons rotatifs avec encodeur en quadrature

Le Yocto-Knob et les variantes du Yocto-MaxiDisplay disposent d'entrées analogiques pour y connecter des boutons d'interface: bouton poussoir, boutons rotatifs. Il y avait néanmoins un type de bouton qui n'était pas supporté : les boutons rotatifs infinis avec encodeur en quadrature. Cette limitation est désormais levée.



Principe


Contrairement à un potentiomètre, un bouton rotatif avec un sortie encodée en quadrature ne transmet pas sa position absolue mais ses mouvements: en surveillant simultanément deux contacts qui se ferment et s'ouvrent en décalé, on peut déterminer précisément le sens de rotation et le nombre de pas effectués:

Bouton rotatif avec encodeur en quadrature
Bouton rotatif avec encodeur en quadrature


Ce genre de bouton rotatif est en général cranté. La rotation d'un cran fait habituellement avancer le signal de deux flans (une demi période) ou quatre flans (une période complète). Pour identifier correctement le sens de rotation, il est nécessaire de détecter avec précision la séquence des transistions sur les deux contacts. Il est donc particulièrement avantageux de le faire directement dans le module d'interface, plutôt que de devoir faire cette surveillance en temps réel dans le logiciel.

Nous offrons déjà depuis quelques temps un autre produit qui peut être configuré avec des interrupteurs DIP pour lire jusqu'à six boutons rotatifs encodés en quadrature: le Yocto-MaxiKnob. Mais comme l'utilisation de boutons rotatifs infinis est particulièrement pratique pour les interfaces utilisateurs et qu'on a trouvé une manière de l'intégrer aux modules plus anciens, on s'est dit que ce serait dommage de vous en priver...

Configuration


Si vous mettez à jour le firmware de votre module, des nouvelles fonctions quadratureDecoder1, quadratureDecoder2, etc. y apparaîtront. Elles seront inactives par défaut, mais vous pouvez les activer dans la configuration du module:

Configuration du décodeur de quadrature
Configuration du décodeur de quadrature


Le réglage Edges per cycle vous permet de configurer le nombre de flancs par cran de votre bouton rotatif, de sorte à ce que le module décompte correctement les mouvements du bouton.

Lorsqu'on active un décodeur en quadrature, les entrées correspondantes du module sont automatiquement basculées en mode DIGITAL_FAST, qui permet de surveiller les transitions de flancs à la fréquence nécessaire. Si vous modifiez le mode d'acquisition de l'une des entrées, le décodeur en quadrature sera automatiquement désactivé. Notez que les contacts d'entrée affectés aux décodeurs en quadratures vont en ordre inverse des entrées anButton: le premier décodeur en quadrature utilise les deux dernières entrées analogiques, et ainsi de suite.

Une fois le décodeur en quadrature activé, le module peut vous fournir à tout moment la somme des rotations du bouton depuis la dernière mise à zéro.

Affichage du décodeur de quadrature
Affichage du décodeur de quadrature


Le module vous fournit donc un compteur absolu comme s'il s'agissait d'un potentiomètre, mais basé sur un zéro relatif puisque le bouton est infini.

Un petit exemple


A titre d'exemple, voici une application sur bricolage réalisé il y a quelques temps à l'aide d'un Yocto-MaxiDisplay-G, un Yocto-PT100 et un YoctoHub-Wireless-n. Il s'agit d'un dispositif de surveillance pour la cuisson lente. Les mesures sont affichées sur l'écran par un petit programme en Python et envoyées simultanément à Yocto-Visualization (for Web) par le hub lui-même pour pouvoir être consultées à distance. L'ajout du bouton rotatif infini, branché directement au Yocto-MaxiDisplay-G nous a permis de rajouter un menu de configuration directement sur l'appareil:

Interface réalisée à l'aide d'un bouton rotatif
Interface réalisée à l'aide d'un bouton rotatif


Le code source en Python de cet exemple est disponible sur GitHub.

Conclusion


Tous les détenteurs de Yocto-Knob, Yocto-MaxiDisplay, Yocto-MaxiDisplay-G et Yocto-Display peuvent désormais profiter de cette fonction avec une simple mise à jour du firmware de leur module.

Notez toutefois que cette fonctionnalité est limitée aux boutons d'interface qui travaillent sur des contacts secs et avec des fréquences limitées. Pour lire un signal encodé en quadrature à haute fréquence ou modulé en tension, le module approprié reste le Yocto-PWM-Rx, comme décrit dans cet autre article.

Commenter aucun commentaire Retour au blog












Yoctopuce, get your stuff connected.