Taula de continguts:

Tutorial del codificador rotatiu amb Arduino: 6 passos
Tutorial del codificador rotatiu amb Arduino: 6 passos

Vídeo: Tutorial del codificador rotatiu amb Arduino: 6 passos

Vídeo: Tutorial del codificador rotatiu amb Arduino: 6 passos
Vídeo: Control Position and Speed of Stepper motor with L298N module using Arduino 2024, Desembre
Anonim
Tutorial del codificador rotatiu amb Arduino
Tutorial del codificador rotatiu amb Arduino

El codificador rotatiu és un component electrònic capaç de controlar el moviment i la posició quan gira. El codificador rotatiu utilitza sensors òptics que poden generar impulsos quan el codificador rotatori gira. L'aplicació del codificador rotatiu normalment com a monitor de moviment mecànic o robotitzat també es pot utilitzar per a la selecció de menú a la pantalla. El codificador rotatiu té dues sortides perquè pugui distingir entre rotació negativa (CW) i positiva (CCW) i també té un sol botó.

Pas 1: flux de pols del codificador rotatiu

Flux de pols del codificador rotatiu
Flux de pols del codificador rotatiu

El flux d’impulsos generat pel següent codificador rotatiu és com la imatge anterior.

Pas 2: fixació del codificador rotatiu

Pinout del codificador rotatiu
Pinout del codificador rotatiu

Explicació:

  • GND GND
  • + + 5V
  • Botó SW del codificador rotatiu quan es prem
  • Dades DT
  • Dades CLK 2

Un dels pins DT o CLK ha d’estar connectat al peu d’interrupció d’Arduino Uno o bé tots dos DT i CLK estan connectats al pin d’interrupció.

Pas 3: Esquema

Esquema
Esquema
  • GND à GND Arduino Uno
  • + à + 5V Arduino Uno
  • SW à PIN 4 Arduino Uno
  • DT à PIN 3 Arduino Uno
  • CLK à PIN2 Arduino Uno

Pas 4: Codi

Codi
Codi

Al següent tutorial, que s'utilitzarà com a interrupció, hi ha el PIN 2 d'Arduino Uno, mentre que el PIN 3 només s'utilitza com a entrada normal.

#define encoder0PinA 2 # define encoder0PinB 3 #define encoder0Btn 4 int encoder0Pos = 0; configuració nul·la () {Serial.begin (9600); pinMode (codificador0PinA, INPUT_PULLUP); pinMode (codificador0PinB, INPUT_PULLUP); pinMode (codificador0Btn, INPUT_PULLUP); attachInterrupt (0, doEncoder, CHANGE); } int valRotary, lastValRotary; bucle buit () {int btn = DigitalRead (codificador0Btn); Serial.print (btn); Serial.print (""); Serial.print (valRotary); if (valRotary> lastValRotary) {Serial.print ("CW"); } if (valRotary {

Serial.print ("CCW");

} lastValRotary = valRotary; Serial.println (""); retard (250); } void doEncoder () {if (digitalRead (codificador0PinA) == digitalRead (codificador0PinB)) {codificador0Pos ++; } else {encoder0Pos--; } valRotary = codificador0Pos / 2.5; }

A la línia 10 de l'esbós anterior s'utilitza per habilitar la interrupció del pin 2 Arduino Uno. A la funció "doEncoder" es calcula a partir del codificador rotatiu. Si el valor de DT i CLK (interrupció de pin d'Arduino Uno) és el mateix, la variable "encoder0Pos" s'incrementarà / s'afegirà, a més d'aquesta condició, la variable "encoder0Pos" es decrementa.

Pas 5: explicació

El valor ValRotary és el valor del nombre de passos que s’han executat. El valor ValRotary s’obté a partir del valor de lectura del codificador de sensor rotatiu dividit per 2,5. A partir de la prova s’obté un valor de 2,5, ja que un pas del codificador rotatiu pot superar 1, de manera que dividiu per 2,5 pel seu valor d’acord amb el pas i també l’addició del retard de lectura.

Mentre que a la línia 19-25 hi ha un programa per determinar si el codificador rotatiu rotatiu CW o CCW. L'explicació de les línies 19-25 és quan la lectura del codificador rotatiu actual és superior a les dades rotatives anteriors expressades llavors com CW. Mentre que si la lectura actual és menor que la lectura anterior, s'indica com a CCW.

Pas 6: sortida

Sortida
Sortida

1 = el valor del botó d'inici del rotatiu quan no s'ha premut

Recomanat: