Red de conocimiento informático - Computadora portátil - Cómo leer el valor del codificador rotatorio fotoeléctrico en arduino uno

Cómo leer el valor del codificador rotatorio fotoeléctrico en arduino uno

El codificador rotatorio fotoeléctrico es un sensor de posición de uso común que se puede utilizar para medir parámetros como el ángulo de rotación y la velocidad de rotación. En Arduino Uno, el valor del codificador rotatorio fotoeléctrico se puede leer a través del puerto de entrada digital.

Primero, debes conectar la señal de salida del codificador rotatorio fotoeléctrico al puerto de entrada digital del Arduino Uno. En términos generales, el codificador rotatorio fotoeléctrico tiene dos señales de salida, una es la señal de la fase A y la otra es la señal de la fase B. Estas dos señales están desfasadas 90 grados y pueden usarse para determinar la dirección de rotación. Además, se utiliza una señal de fase Z para determinar la posición del punto cero.

A continuación, debe escribir un programa para que Arduino Uno lea el valor del codificador rotatorio fotoeléctrico. Puede utilizar la función addInterrupt para configurar una interrupción. Cuando la señal de la fase A o la fase B cambia, se activa la función de interrupción y se actualiza el valor del contador. El código específico es el siguiente:

int encoderPinA = 2; //El puerto de entrada digital conectado a la señal de fase A

int encoderPinB = 3; conectado a la señal de fase B

p>

volatile int encoderPos = 0; // Valor inicial del contador

void setup() {

pinMode(encoderPinA , ENTRADA);

pinMode(encoderPinB, ENTRADA);

attachInterrupt(digitalPinToInterrupt(encoderPinA), updateEncoder, CHANGE);

attachInterrupt(digitalPinToInterrupt(encoderPinB) , updateEncoder, CHANGE);

Serial.begin(9600);

}

void loop() {

Serial.println (encoderPos);

demora(100);

}

void updateEncoder() {

if (digitalRead(encoderPinA) = = digitalRead(encoderPinB)) {

encoderPos++;

} else {

encoderPos--;

}

}

en el programa, la palabra clave volátil se usa para declarar la variable de contador, lo que indica que la variable puede ser modificada por la función de interrupción. La función addInterrupt se utiliza para configurar interrupciones. Cuando la señal de la fase A o la fase B cambia, se activa la función updateEncoder para actualizar el valor del contador. En la función de bucle, utilice la función Serial.println para enviar el valor del contador al monitor del puerto serie para su observación.

Cabe señalar que, dado que la señal de salida del codificador rotatorio fotoeléctrico es una señal de pulso, puede producirse fluctuación y es necesario filtrarla. Se puede utilizar filtrado de software o filtrado de hardware. Para conocer métodos de implementación específicos, consulte los materiales relevantes.