Medir velocidad rpm de un motor usando encoder, arduino, interrupciones externas, interrupciones temporales.
Medir velocidad rpm de un motor usando encoder, arduino, interrupciones externas, interrupciones temporales.
Práctica: Medición de velocidad (RPM) de un motor usando encoder, Arduino, interrupciones externas y temporales
Objetivos:
- Medir la velocidad en revoluciones por minuto (RPM) de un motor usando un encoder.
- Utilizar las interrupciones externas del Arduino para detectar los pulsos generados por el encoder.
- Implementar interrupciones temporales utilizando la librería TimerOne para calcular la velocidad en intervalos regulares de tiempo.
Materiales:
- Arduino Uno.
- Encoder (con resolución conocida, en este caso 64 pulsos por revolución).
- Motor DC con eje acoplado al encoder.
- Pantalla LCD (16x2) para mostrar la velocidad en RPM.
- Cables y protoboard para las conexiones.
Diagrama de Conexión:
- Encoder:
- Conectar el pin de salida del encoder (generalmente marcado como "A" o "Signal") al pin digital 2 del Arduino, que corresponde a la interrupción externa 0.
- Conectar VCC y GND del encoder a los pines correspondientes del Arduino.
- LCD:
- Conectar el LCD a los pines 12, 11, 6, 5, 4, 3 del Arduino según lo especificado en el código.
- Motor DC:
- Asegúrate de que el encoder esté acoplado al eje del motor para generar pulsos mientras el motor gira.
Desarrollo del Código:
El código que has proporcionado es funcional y mide correctamente la velocidad del motor en RPM usando un encoder. A continuación, te guiaré en la implementación práctica.Explicación del Código:
- Interrupciones externas: Se utiliza la función
attachInterrupt()para detectar cuando el encoder genera un pulso cada vez que pasa una marca en el disco del encoder. - Interrupciones temporales: Usamos la librería TimerOne para generar una interrupción cada 1 segundo, momento en el cual se calcula la velocidad en RPM.
- Cálculo de RPM: El cálculo se realiza dividiendo el número de pulsos por la resolución del encoder y multiplicando por 60 para convertirlo en revoluciones por minuto.
Código Mejorado:
Explicación:
- Interrupción Externa: Cada vez que el pin 2 (donde está conectado el encoder) detecta un cambio de bajo a alto (RISING), se incrementa el valor de
pulsos. - Interrupción Temporal: La función
segundo()se ejecuta cada 1 segundo, calcula la velocidad en RPM basada en el número de pulsos acumulados durante ese tiempo y luego resetea la variablepulsospara el siguiente ciclo de medición. - Visualización: La velocidad en RPM se muestra en la pantalla LCD y también se envía al puerto serial para poder observarla desde el monitor serial.
