Codeurs rotatifs et comment les utiliser avec des cartes Arduino

Publié par

Vous pouvez contrôler de nombreux projets à l'aide de composants utilisant des entrées par bouton ou curseur. Que faire si votre conception nécessite une molette ? Si votre projet nécessite une entrée rotative, deux choix s'offrent à vous : un potentiomètre ou un codeur rotatif.

 Les potentiomètres, dont la résistance varie selon la position de la molette, sont plus simples et représentent souvent un excellent choix. Cependant, ils peuvent uniquement être tournés dans le sens horaire ou antihoraire (pour le moment). Si vous avez besoin d'un appareil tournant constamment dans n'importe quelle direction, il vaut mieux privilégier un codeur rotatif. Si vous avez besoin d'aide pour faire votre choix, notre comparaison des codeurs et des potentiomètres peut vous apporter une réponse.

Les codeurs existent en deux styles de base :

1. Les codeurs incrémentaux utilisent une série de pulsations disposées en quadrature afin d'indiquer la distance parcourue par l'arbre et sa direction.

2. Les codeurs absolus connaissent par essence leur position angulaire.

Cet article se concentrera principalement sur les codeurs incrémentaux, ceux que vous rencontrerez le plus souvent. Les codeurs à sortie unique (ou tachymètres) sont également disponibles. Ils sont cependant bien moins utiles, car ils indiquent uniquement la distance parcourue par un arbre, pas sa direction. Vous pouvez consulter notre article relatif aux différents types de codeurs pour obtenir de plus amples informations. Aujourd'hui, nous aborderons les bases du fonctionnement d'un codeur incrémental et la manière dont le connecter à une carte Arduino.

Explication des codeurs en quadrature

Légende : diagramme en quadrature des signaux codeurs A et B. La pente ascendante de B et le faible signal de A indiquent un déplacement vers la droite selon ce modèle, tandis qu'une pente ascendante de A et un signal élevé de B indiquent un déplacement vers la gauche.

Au cœur de la plupart des codeurs se trouvent des sorties « A » et « B », pulsant de manière régulière et graduelle. Ces sorties se connectent à l'alimentation et à la terre, au besoin. Les sorties A et B sont codées en quadrature, c'est-à-dire que chaque signal possède un rapport cyclique de 50 % (état haut la moitié du temps, état bas l'autre moitié du temps). Voici comment cela fonctionne :

- Chaque rapport cyclique est déphasé de 90° par rapport à l'autre : une sortie change lorsque l'autre est à mi-chemin du temps nécessaire pour changer d'état.

- Un microcontrôleur ou une carte dédiée connectés traduisent ces pulsations en incrément de rotation, et la séquence de pulsations représentera la direction prise par l'arbre.

Comme présenté dans le diagramme ci-dessous, si le signal B monte pendant que A est bas, la position de ce modèle a avancé vers la droite. Au contraire, si le signal B monte alors que A est déjà élevé, cela indique un mouvement vers la gauche. Combiné aux ascensions et descentes du signal A, nous obtenons quatre états distincts pour chaque ligne :

Le même modèle de signaux est disponible pour le signal A, offrant huit transitions distinctes possibles et quatre dans chaque direction. Lorsque ce modèle est englobé et répété en boucle, vous obtenez la base d'un codeur rotatif en quadrature.

1. B monte, A est bas

2. B descend, A est élevé

3. B monte, A est élevé

4. B descend, A est bas

Utilisation d'un codeur avec Arduino

 Nous couplerons deux types de codeurs avec l'Arduino :

- Codeur de contact : plus petit, généralement utilisé en tant que dispositif d'interface.

- Codeur optique (LPD3806-600BM-G5-24C) : plus grand, avec un support de roulement, généralement utilisé pour la mesure de vitesse des moteurs.

Si vous utilisez le plus petit codeur, effectuez les étapes suivantes :

1. Connectez le câble central à la terre.

2. Reliez une connexion externe à D2 et l'autre à D3. Aucune tension positive n'est nécessaire.

Pour le plus grand codeur, effectuez les étapes suivantes :

1.  Connectez le câble rouge à +5 V et le noir à la terre.

2. Reliez les câbles A et B (vert et blanc) à D2 et D3 sur Arduino.

3. Notez que les connexions, les exigences de tension et les modèles de couleurs peuvent varier en fonction de votre installation.

Code du codeur Arduino

Image : Jeremy S. Cook

Lorsque vous comprenez comment les lignes A et B d'un codeur pulsent par rotation, obtenir une sortie utile est une question de traduction de cette entrée en code. Cette étape est en théorie simple, mais peut s'avérer délicate en pratique. Vous pouvez trouver l'exemple de code ici (ainsi qu'une version imprimable en 3D utile lors de la phase de test). Bien que cette version ne soit pas parfaite, sa direction est précise et elle illustre le fonctionnement d'un codeur. Lorsque le microcontrôleur de l'Arduino détecte une transition entre haut et bas sur l'une des lignes, il compare les états des deux lignes et ajoute ou soustrait un incrément, selon ce qui est approprié.

Veillez à bien sélectionner D2 et D3, car il s'agit des seules entrées pour l'ATmega328 de nombreuses cartes Arduino capables de générer une interruption. Cela signifie que lorsqu'une transition est observée ici, cela devient immédiatement une routine de relevé, pas besoin d'attendre que la logique du programme l'annonce.

Gardez également le code anti-rebond millis() à l'esprit, qui s'adapte lorsqu'une entrée change rapidement d'état au cours d'une transition et peut rapidement se connecter et se déconnecter durant une courte période. Même si ce code fonctionne convenablement dans certaines applications et peut vous permettre de comprendre le fonctionnement des codeurs, il n'est pas simple d'obtenir des relevés parfaitement précis.

La manière simple : bibliothèque de codeurs

Le code du codeur Arduino vous aidera à comprendre comment fonctionnent les codeurs. Toutefois, si vous souhaitez en utiliser un dans votre projet, profitez de la bibliothèque préparée par Paul Stoffregen. Voici comment débuter :

1. Téléchargez la bibliothèque de codeurs via GitHub.

2. Sur l'IDE Arduino, rendez-vous sur Sketch ==> Inclure une bibliothèque ==> Ajouter une bibliothèque .ZIP, et ajoutez-la dans « Encoder-master.zip ».

3. Une fois installée, vous verrez quatre programmes listés sous Fichier ==> Exemples ==> Codeur. Chargez les exemples « basiques » et transférez-les sur votre carte Arduino.

4. Reliez votre codeur en connectant les câbles positif et négatif comme précédemment, mais connectez cette fois les câbles de signaux A et B sur D5 et D6.

5. Ouvrez le moniteur série à une vitesse de transmission de 9 600 bauds, vous verrez ainsi la position incrémenter et décrémenter de manière précise.

Tout comme avec un codeur optique, la position devrait changer sans nécessiter de bricolage. Pour encore plus d'amusement, ouvrez le traceur série de l'IDE d'Arduino à la même vitesse de transmission en bauds. Au lieu de simplement vous indiquer les numéros des positions, cela créera automatiquement un graphique des valeurs.

Que vous les utilisiez en tant qu'interface personnalisée ou pour mesurer la vitesse et la distance, les codeurs représentent une excellente méthode d'entrée rotative pour votre projet Arduino. Ils nécessitent un peu plus de temps de configuration que de nombreux autres types d'appareils, mais les résultats en valent vraiment la peine.

Actualité

Sorry, your filter selection returned no results.

Nous avons mis à jour notre politique de confidentialité. Prenez un moment pour lire les changements. En cliquant sur "J'accepte", vous acceptez la clause de confidentialité d'Arrow Electronics ainsi que les conditions d'utilisation.

Notre site Internet place des cookies sur votre appareil pour améliorer votre expérience et pour améliorer notre site. Pour en savoir plus sur les cookies que nous utilisons et la façon de les désactiver, cliquez ici. Des cookies et des technologies de suivi peuvent être utilisés à des fins de marketing. En cliquant sur « Accepter », vous consentez au placement de cookies sur votre appareil et à notre utilisation de technologies de suivi. Cliquez sur « En savoir plus » pour de plus amples informations et instructions sur la façon de désactiver les cookies et les technologies de suivi. Même si l'acceptation des cookies et technologies de suivi est volontaire, leur désactivation peut entraîner un mauvais fonctionnement du site Internet et certaines publicités peuvent être moins pertinentes pour vous. Nous respectons votre confidentialité. Lisez notre politique de confidentialité ici.