Dans ce tutoriel, nous allons interfacer un encodeur rotatif avec le microcontrôleur ATmega8. ATmega8 est la série de microcontrôleurs d'atmel conçue pour les applications embarquées. Le codeur rotatif est utilisé pour connaître la position du mouvement et le mouvement angulaire d'un moteur ou d'un axe. Il s'agit généralement d'un appareil à trois bornes, avec des broches d'alimentation et de terre jusqu'à cinq. Un module d'encodeur rotatif est illustré ci-dessous.
Les broches d'un encodeur rotatif sont:
- Sol.
- Positif connecté à + 5V
- Signal de sortie A pin
- Signal de sortie broche B
- Broche d'horloge ou broche commune.
L'ENCODEUR fournit des impulsions représentant le changement de position de l'arbre pour que les systèmes les comprennent. Considérez qu'un ENCODEUR ROTATOIRE est sous tension et que l'arbre est déplacé.
Comme indiqué dans le tableau ci-dessus, considérez que l'arbre est déplacé dans le sens des aiguilles d'une montre. Avec cela, il y aura Falling Edge au terminal A puis au terminal B.
Considérez que l'arbre est déplacé dans le sens anti-horaire. Avec cela, il y aura Falling Edge au terminal B puis au terminal A.
Ce bord se produira une fois pour 360/20 = 18 degrés (Ceci est pour un encodeur avec 20 positions, cela change d'un type à l'autre, plus le comptage est élevé, plus la précision est élevée).
Avec les deux conditions ci-dessus, nous pouvons obtenir la direction et le degré de rotation. Ainsi, nous obtenons les paramètres nécessaires pour obtenir la position d'un arbre.
Composants
Matériel: ATMEGA8, broches de connexion, AVR-ISP PROGRAMMER, résistance 220Ω, LED (huit pièces), résistance 1KΩ, résistance 220Ω (2 pièces), condensateur 100nF (2 pièces), carte à pain.
Logiciel: Atmel studio 6.1, progisp ou flash magic.
Schéma de circuit et explication de fonctionnement
Les condensateurs sont ici pour neutraliser l'effet de rebond de contact dans ENCODER. Sans ces condensateurs, il y aura de sérieux problèmes de lecture de position.
Lorsque l'arbre est déplacé, il y aura une différence de temps entre la sortie de deux broches de sortie. L'ATMEGA8 reconnaîtra cette différence de temps pour le sens horaire de rotation anti-horaire.
Si la rotation est dans le sens des aiguilles d'une montre, le compte binaire est incrémenté de un, et ce compte est affiché dans le port LED comme indiqué sur la figure.
Si la rotation est dans le sens anti-horaire, le compte binaire est décrémenté de un et le compte binaire est affiché à l'octet LED.
Rappelez-vous ici que nous ne définissons pas de bits de fusible d'atmega8, donc le contrôleur fonctionnera sur le cristal interne par défaut de 1Mhz.
Le fonctionnement de l'interfaçage du codeur rotatif avec le microcontrôleur ATmega8 est expliqué dans le code ci-dessous.