Академический Документы
Профессиональный Документы
Культура Документы
ARDUINO
Aprendizaje basado en proyectos
En este tutorial, el motor paso a paso (en adelante, MPP) se moverá de acuerdo a cómo se rota
el encoder. Además, el encoder posee un botón central, el cual se utiliza para devolver el MPP
hacia su posición inicial. En este proyecto, se utiliza, un MPP NEMA 17 (ver Figura 1) con un
encoder rotatorio con botón (o pulsador) incluido (ver Figura 2), como controlador para el motor
se utiliza la tarjeta Easy Driver (ver Figura 3), la tarjeta de programación electrónica utilizada es
un Arduino UNO (ver Figura 4).
www.biwy-mecatronica.com 1
Motor Paso a Paso y Encoder en Arduino. Aprendizaje basado en proyectos
Los 4 cables del MPP NEMA (2 por bobina), son conectados directamente a las salidas A y B del
Easy Driver. Los pines 2, 3 y 4 del Arduino están conectados a los pines CLK, DT y SW,
respectivamente, del encoder rotatorio. El pin voltaje y GND Easy Driver son conectados a una
fuente de alimentación de 12V 1A. El motor NEMA 17 que se utiliza tiene un amperaje máximo
de alrededor de 0.45A. Se conecta el GND del Arduino UNO al Easy Driver para servir como una
referencia.
Para la programación del Arduino, se utiliza como apoyo explicativo el diagrama de flujo
mostrado en la Figura 6. En primera instancia, se definen los pines que se conectan a la tarjeta
Easy Driver, se declaran las variables para las interrupciones para detectar el movimiento del
Encoder Rotatorio, se declaran las constantes para las conexiones del Encoder, se declaran las
variables para almacenar la posición del MPP, para el control de la velocidad y para setear la
dirección de la rotación del MPP, ya sea derecha o izquierda. La variable para guardar la
posición actual, se utiliza para poder mover de regreso a la posición inicial, cuando el botón es
presionado. A continuación, se muestra el código correspondiente.
www.biwy-mecatronica.com 2
Motor Paso a Paso y Encoder en Arduino. Aprendizaje basado en proyectos
ARDUINO
MOTOR PASO A PASO
ENCODER CLK 2
DT 3 8 DIR EASY DRIVER 1A 1A
SW 4 9 STEP 1B 1B
10 MS1 2A 2A
5V-Encoder 11 MS2 2B 2B
12 SLEEP GND
12V
FUENTE DE ALIMENTACIÓN
5V-Encoder
5V-Arduino 5V-Arduino
12V-Easy Driver
(*) Se recomienda generalmente conectar los dispositivos directamente a la fuente de alimentación y evitar utilizar la alimentación proveída del Arduino. En otras palabras, si por ejemplo, el encoder se alimenta con 5V (como
en este caso), se puede conectar a la alimentación que entrega el Arduino (Pin 5V), aunque por recomendación se debería conectar directamente a la fuente de alimentación.
(**) Si se utiliza más de una fuente de alimentación que entregan diferentes voltajes, se deben unir la todas las tierras de las diferentes fuentes de alimentación.
www.biwy-mecatronica.com 3
Motor Paso a Paso y Encoder en Arduino. Aprendizaje basado en proyectos
Iniciar
Conexiones,
Variables y
Parámetros
Función:
DeteccionRotacion()
Función:
setup()
Función Ciclo:
loop()
¿PinSW es
presionado?
Sí
¿MPP hacia la
derecha?
No Sí
Regresar a la Regresar a la
Posición Inicial Posición Inicial
(Mover hacia la (Mover hacia la
derecha) izquierda)
¿Se ha
No detectado una
vuelta?
Sí
¿Dirección
Izquierda?
No Sí
www.biwy-mecatronica.com 4
Motor Paso a Paso y Encoder en Arduino. Aprendizaje basado en proyectos
Luego, se desarrolla una función para una rutina de interrupción que se ejecuta si la señal
CLK va desde HIGH a LOW. Si la señal en el PinCLK es HIGH, entonces la señal en el PinDT
también es HIGH. Lo mismo ocurre con LOW. Esto permite determinar el sentido de la variable
DeteccionRotacion de acuerdo a cómo se mueva el encoder rotatorio. Debido a que es una
función, se ejecutarán las instrucciones cuando sea llamada o invocada.
En la función setup() se inicializan los pines de entrada y salida, y aquellas instrucciones que
se ejecutan una vez al iniciar la ejecución del programa.
www.biwy-mecatronica.com 5
Motor Paso a Paso y Encoder en Arduino. Aprendizaje basado en proyectos
www.biwy-mecatronica.com 6
Motor Paso a Paso y Encoder en Arduino. Aprendizaje basado en proyectos
decisión de cuándo es rotado el encoder para mover el motor hacia una determinada posición y
dirección, de acuerdo al movimiento de rotación del encoder. Para lograr esta decisión principal,
en primera instancia se consulta si hay una vuelta detectada en el encoder rotatorio, es decir, si la
variable VueltaDetectada es igual a true. Luego, la misma variable se iguala a false, para evitar
que el encoder rotatorio genere pasos adicionales, lo que podría provocar una posición incorrecta
del motor. A continuación, se consulta la dirección de la rotación del encoder, por medio de la
variable DireccionRotacion. Si DireccionRotacion es igual a true, significa que el encoder se ha
movido en sentido anti-horario, por lo que el motor se moverá en la misma dirección. Las
instrucciones para mover el motor son similares a las utilizadas anteriormente, para cuando se
mueve el motor en el momento en que el botón es presionado.
En el caso de que la rotación del encoder sea a la derecha (sentido horario), DireccionRotacion
= false, entonces se moverá el motor en la misma dirección.
www.biwy-mecatronica.com 7
Motor Paso a Paso y Encoder en Arduino. Aprendizaje basado en proyectos
Redes Sociales
https://www.youtube.com/c/biWy-mecatronica
https://www.facebook.com/biwy.mecatronica
https://twitter.com/biWy_MCT
www.biwy-mecatronica.com 8