Catégories: Circuits microcontrôleurs
Nombre de fois vus: 16,299
Commentaires sur l'article: 0

Comment connecter un encodeur incrémental à Arduino

 

Souvent, dans les appareils sur microcontrôleurs, vous devez organiser la gestion des éléments de menu ou effectuer certains ajustements. Il existe de nombreuses façons: utilisez des boutons, des résistances variables ou des encodeurs. L'encodeur incrémental vous permet de contrôler quelque chose au moyen de la rotation sans fin de la poignée. Dans cet article, nous verrons comment faire fonctionner l'encodeur incrémental et Arduino.

Comment connecter un encodeur incrémental à Arduino

Fonctions d'encodeur incrémental

L'encodeur incrémental, comme tout autre type d'encodeur, est un appareil à poignée rotative. De loin, il ressemble à un potentiomètre. La principale différence avec le potentiomètre est que la poignée de l'encodeur tourne à 360 degrés. Il n'a pas de dispositions extrêmes.

Les encodeurs sont de plusieurs types. Incrémental diffère en ce que, avec son aide, il est impossible de connaître la position de la poignée, mais uniquement le fait de la rotation dans une certaine direction - à gauche ou à droite. Par le nombre d'impulsions de signal, vous pouvez déjà calculer sous quel angle il a tourné.

Encodeur et Arduino

De cette façon, vous pouvez passer microcontrôleur commande, gérer le menu, le volume, par exemple, etc. Dans la vie de tous les jours, vous pouvez les voir dans les autoradios et autres équipements. Il est utilisé comme organe de réglage de niveau multifonctionnel, égaliseur et navigation dans les menus.

Bouton de niveau sonore

Principe de fonctionnement

À l'intérieur de l'encodeur incrémental, il y a un disque avec des étiquettes et des curseurs qui entrent en contact avec eux. Sa structure est similaire à un potentiomètre.

Encodeur démonté

Dans la figure ci-dessus, vous voyez un disque avec des marques, elles sont nécessaires pour interrompre la connexion électrique avec le contact mobile, ce qui vous permet d'obtenir des données sur le sens de rotation. La conception du produit n'est pas si importante, comprenons le principe de fonctionnement.

Conception de l'encodeur

L'encodeur a trois sorties d'information, une commune, les deux autres sont généralement appelées «A» et «B», dans la figure ci-dessus, vous voyez la broche de l'encodeur avec un bouton - vous pouvez recevoir un signal lorsque vous cliquez sur son axe.

Quel signal allons-nous recevoir? Selon le sens de rotation, l'unité logique apparaîtra d'abord sur la broche A ou B, nous obtenons donc un signal déphasé, et ce décalage nous permet de déterminer dans quelle direction. Le signal est obtenu sous la forme d'une forme rectangulaire, et le microcontrôleur est commandé après traitement des données du sens de rotation et du nombre d'impulsions.

Principe de fonctionnement

La figure montre le symbole du disque avec les contacts, au milieu se trouve le graphique des signaux de sortie et à droite le tableau des états. Cet appareil est souvent dessiné comme deux touches, ce qui est logique, car en fait on obtient un signal "avant" ou "arrière", "haut" ou "bas", et le nombre d'actions.

Circuit codeur

Voici un exemple de véritable brochage d'encodeur:

Exemple de véritable brochage d'encodeur

Intéressant:

Un encodeur défectueux peut être remplacé par deux boutons sans verrouillage, et vice versa: contrôle maison dans lequel deux de ces boutons peuvent être finalisés en réglant l'encodeur.

Dans la vidéo ci-dessous, vous voyez l'alternance du signal aux bornes - pendant une rotation en douceur, les LED s'allument dans la séquence reflétée dans le graphique précédent.

Pas moins clairement illustré dans l'animation suivante (cliquez sur l'image):

Le dispositif et le principe de fonctionnement de l'encodeur

L'encodeur peut être à la fois optique (le signal est généré par des émetteurs par des photodétecteurs, voir la figure ci-dessous), et magnétique (il fonctionne sur l'effet Hall). Dans ce cas, il n'a aucun contact et une durée de vie plus longue.

Capteur d'angle

Comme déjà mentionné, le sens de rotation peut être déterminé par lequel des signaux de sortie a changé auparavant, mais c'est à quoi il ressemble dans la pratique!

Points de fixation mécaniques

La précision du contrôle dépend de la résolution du codeur - le nombre d'impulsions par tour. Le nombre d'impulsions peut être compris entre des unités et des milliers de pièces. Étant donné que le codeur peut agir comme un capteur de position, plus il y a d'impulsions, plus la détermination sera précise.Ce paramètre est appelé PPR - impulsion par tour.

Mais il y a une petite nuance, à savoir, une désignation similaire LPR est le nombre d'étiquettes sur le disque.

Et le nombre d'impulsions traitées. Chaque étiquette sur le disque donne 1 impulsion rectangulaire sur chacune des deux sorties. L'impulsion a deux fronts - l'arrière et l'avant. Puisqu'il y a deux sorties, nous obtenons 4 impulsions au total pour chacune d'elles, dont vous pouvez traiter les valeurs.

PPR = LPRx4


Connectez-vous à Arduino

Nous avons compris ce que vous devez savoir sur l'encodeur incrémental, voyons maintenant comment le connecter à l'Arduino. Considérez le schéma de connexion:

Le schéma de connexion du capteur de position à Arduino

Un module codeur est la carte sur laquelle se trouvent le codeur incrémental et les résistances de rappel. Vous pouvez utiliser toutes les broches.

Schéma de câblage du codeur

Si vous n'avez pas de module, mais un encodeur séparé, il vous suffit d'ajouter ces résistances, le circuit ne différera pas en principe. Pour vérifier le sens de rotation et son opérabilité en collaboration avec Arduino nous pouvons lire les informations du port série.

Exemple de programme

Analysons le code plus en détail, dans l'ordre. Dans la configuration void (), nous avons annoncé que nous utiliserions la communication via le port série, puis définirions les broches 2 et 8 en mode d'entrée. Sélectionnez vous-même les numéros de broches en fonction de votre schéma de connexion. La constante INPUT_PULLUP définit le mode d'entrée, l'arduino a deux options:

  • INPUT - entrée sans résistance de rappel;

  • INPUT_PULLUP - connexion à l'entrée des résistances de pull-up. Il y a déjà des résistances à l'intérieur du microcontrôleur à travers lesquelles l'entrée est connectée à l'alimentation plus (pullup).

Si vous utilisez des résistances pour serrer à la puissance plus comme indiqué dans les schémas ci-dessus ou utilisez le module encodeur - utilisez la commande INPUT, et si pour une raison quelconque vous ne pouvez pas ou ne voulez pas utiliser de résistances externes - INPUT_PULLUP.

La logique du programme principal est la suivante: si nous en avons un à l'entrée «2», il envoie le port H au moniteur, sinon, L. Ainsi, lorsque vous tournez dans le même sens sur le moniteur du port série, vous obtiendrez quelque chose comme ceci: LL HL HH LH LL. Et vice versa: LL LH HH HL LL.

Si vous lisez attentivement les lignes, vous avez probablement remarqué que dans un cas, le premier caractère a acquis une valeur, et dans l'autre cas, le deuxième caractère a d'abord changé.


Conclusion

Les encodeurs incrémentaux ont trouvé une large application pratique dans les amplificateurs pour systèmes acoustiques - ils étaient utilisés comme contrôle de volume, dans les autoradios - pour régler les paramètres sonores et la navigation dans les menus, chez les souris d'ordinateur avec lesquelles vous faites défiler les pages quotidiennement (une roue est installée sur son arbre) . Et aussi dans les outils de mesure, les machines CNC, les robots, les selsyn non seulement en tant que commandes, mais aussi la mesure des valeurs et la détermination de la position.

Voir aussi sur e.imadeself.com:

  • Méthodes de lecture et de gestion des ports d'E / S Arduino
  • Contrôle moteur et servo avec Arduino
  • Comprend la connexion d'appareils à Arduino
  • Connecter et programmer Arduino pour les débutants
  • Capteurs les plus populaires pour Arduino

  •