- Modos de funcionamiento en motor paso a paso
- Creación de la interfaz gráfica de usuario de MATLAB para controlar el motor paso a paso
- Código MATLAB para controlar el motor paso a paso con Arduino
- Material requerido
- Diagrama de circuito
- Control del motor paso a paso con MATLAB
Los motores paso a paso son un motor de CC sin escobillas que gira en pasos discretos y son la mejor opción para muchas aplicaciones de control de movimiento de precisión. Además, los motores paso a paso son buenos para posicionamiento, control de velocidad y aplicaciones que requieren un par elevado a baja velocidad.
En tutoriales anteriores de MATLAB, hemos explicado cómo utilizar MATLAB para controlar motores de CC, servomotores y electrodomésticos. Hoy aprenderemos a controlar el motor paso a paso usando MATALB y Arduino. Si es nuevo en MATLAB, se recomienda comenzar con un programa simple de parpadeo de LED con MATLAB.
Modos de funcionamiento en motor paso a paso
Antes de comenzar a codificar un motor paso a paso, debe comprender el concepto de funcionamiento o rotación de un motor paso a paso. Dado que el estator del modo paso a paso está construido con diferentes pares de bobinas, cada par de bobinas se puede excitar en muchos métodos diferentes, lo que permite que los modos se controlen en muchos modos diferentes. Las siguientes son las clasificaciones generales
Modo de paso completo
En el modo de excitación de paso completo podemos lograr una rotación completa de 360 ° con un número mínimo de vueltas (pasos). Pero esto conduce a una menor inercia y además la rotación no será suave. Hay otras dos clasificaciones en la excitación de paso completo, son una fase de paso de onda y dos modos de fase activa.
1. Paso de una fase o paso de onda: En este modo, solo se energizará una terminal (fase) del motor en un momento dado. Esto tiene menos número de pasos y, por lo tanto, puede lograr una rotación completa de 360 °. Dado que el número de pasos es menor, la corriente consumida por este método también es muy baja. La siguiente tabla muestra la secuencia de paso de onda para un motor paso a paso de 4 fases
Paso | Fase 1 (azul) | Fase 2 (rosa) | Fase 3 (amarillo) | Fase 4 (naranja) |
1 | 1 | 0 | 0 | 0 |
2 | 0 | 1 | 0 | 0 |
3 | 0 | 0 | 1 | 0 |
4 | 0 | 0 | 0 | 1 |
2. Pasos en dos fases: como el nombre indica en este método, dos fases serán una. Tiene el mismo número de pasos que el paso de onda, pero dado que dos bobinas se energizan a la vez, puede proporcionar un mejor par y velocidad en comparación con el método anterior. Aunque una desventaja es que este método también consume más energía.
Paso |
Fase 1 (azul) |
Fase 2 (rosa) |
Fase 3 (amarillo) |
Fase 4 (naranja) |
1 |
1 |
1 |
0 |
0 |
2 |
0 |
1 |
1 |
0 |
3 |
0 |
0 |
1 |
1 |
4 |
1 |
0 |
0 |
1 |
Modo de medio paso
El modo de medio paso es la combinación de los modos de activación de una fase y de activación de dos fases. Esta combinación nos ayudará a superar la desventaja mencionada anteriormente de ambos modos.
Como habrás adivinado, ya que estamos combinando ambos métodos, tendremos que realizar 8 pasos en este método para obtener una rotación completa. La secuencia de conmutación para un motor paso a paso de 4 fases se muestra a continuación
Paso |
Fase 1 (azul) |
Fase 2 (rosa) |
Fase 3 (amarillo) |
Fase 4 (naranja) |
1 |
1 |
0 |
0 |
0 |
2 |
1 |
1 |
0 |
0 |
3 |
0 |
1 |
0 |
0 |
4 |
0 |
1 |
1 |
0 |
5 |
0 |
0 |
1 |
1 |
6 |
0 |
0 |
0 |
1 |
7 |
1 |
0 |
0 |
1 |
8 |
1 |
0 |
0 |
0 |
Por lo tanto, es su elección programar su motor paso a paso en cualquier modo, pero yo prefiero el modo de paso completo paso a paso de dos fases. Debido a que este método ofrece una velocidad más rápida que el método de una fase y en comparación con el modo medio, la parte de codificación es menor debido a la menor cantidad de pasos en el método de dos fases.
Obtenga más información sobre los motores paso a paso y sus modos aquí.
Creación de la interfaz gráfica de usuario de MATLAB para controlar el motor paso a paso
Luego tenemos que construir GUI (interfaz gráfica de usuario) para controlar el motor paso a paso. Para iniciar la GUI, escriba el siguiente comando en la ventana de comandos
guía
Se abrirá una ventana emergente, luego seleccione una nueva GUI en blanco como se muestra en la imagen de abajo,
Ahora elija dos botones de alternancia para girar el motor paso a paso en sentido horario y antihorario, como se muestra a continuación,
Para redimensionar o cambiar la forma del botón, simplemente haga clic en él y podrá arrastrar las esquinas del botón. Al hacer doble clic en el botón de alternancia, puede cambiar el color, la cadena y la etiqueta de ese botón en particular. Hemos personalizado dos botones como se muestra en la imagen de abajo.
Puede personalizar los botones según su elección. Ahora, cuando guarda esto, se genera un código en la ventana Editor de MATLAB. Para codificar su Arduino para realizar cualquier tarea relacionada con su proyecto, siempre debe editar este código generado. Entonces, a continuación, hemos editado el código MATLAB. Puede obtener más información sobre la ventana de comandos, la ventana del editor, etc.en el tutorial Introducción a MATLAB.
Código MATLAB para controlar el motor paso a paso con Arduino
El código completo de MATLAB, para controlar el motor paso a paso, se proporciona al final de este proyecto. Además, incluimos el archivo GUI (.fig) y el archivo de código (.m) aquí para descargar (haga clic con el botón derecho en el enlace y luego seleccione 'Guardar enlace como…')), mediante el cual puede personalizar los botones según sus requisitos. A continuación se muestran algunos ajustes que hicimos para girar el motor paso a paso en sentido horario y antihorario usando dos botones de alternancia.
Copie y pegue el siguiente código en la línea no. 74 para asegurarse de que Arduino esté hablando con MATLAB cada vez que ejecute el archivo m.
limpiar todo; global a; a = arduino ();
Cuando se desplaza hacia abajo, verá que hay dos funciones creadas para ambos botones en la GUI. Ahora escriba el código en ambas funciones de acuerdo con la tarea que desea realizar al hacer clic.
En la función del botón en el sentido de las agujas del reloj , copie y pegue el siguiente código justo antes del final de la función para girar el motor en el sentido de las agujas del reloj. Para rotar continuamente el motor paso a paso en el sentido de las agujas del reloj, utilizamos el bucle while para repetir los pasos del modo completo de dos fases en el sentido de las agujas del reloj.
while get (hObject, 'Value') global a; writeDigitalPin (a, 'D8', 1); writeDigitalPin (a, 'D9', 0); writeDigitalPin (a, 'D10', 0); writeDigitalPin (a, 'D11', 1); pausa (0,0002); writeDigitalPin (a, 'D8', 0); writeDigitalPin (a, 'D9', 0); writeDigitalPin (a, 'D10', 1); writeDigitalPin (a, 'D11', 1); pausa (0,0002); writeDigitalPin (a, 'D8', 0); writeDigitalPin (a, 'D9', 1); writeDigitalPin (a, 'D10', 1); writeDigitalPin (a, 'D11', 0); pausa (0,0002); writeDigitalPin (a, 'D8', 1); writeDigitalPin (a, 'D9', 1); writeDigitalPin (a, 'D10', 0); writeDigitalPin (a, 'D11', 0); pausa (0,0002); fin
Ahora, en la función del botón en sentido antihorario , pegue el siguiente código en la función para girar el motor en sentido antihorario. Para rotar continuamente el motor paso a paso en el sentido contrario a las agujas del reloj, estamos usando el bucle while para repetir los pasos del modo completo de dos fases en el sentido antihorario.
while get (hObject, 'Value') global a; writeDigitalPin (a, 'D8', 1); writeDigitalPin (a, 'D9', 1); writeDigitalPin (a, 'D10', 0); writeDigitalPin (a, 'D11', 0); pausa (0,0002); writeDigitalPin (a, 'D8', 0); writeDigitalPin (a, 'D9', 1); writeDigitalPin (a, 'D10', 1); writeDigitalPin (a, 'D11', 0); pausa (0,0002); writeDigitalPin (a, 'D8', 0); writeDigitalPin (a, 'D9', 0); writeDigitalPin (a, 'D10', 1); writeDigitalPin (a, 'D11', 1); pausa (0,0002); writeDigitalPin (a, 'D8', 1); writeDigitalPin (a, 'D9', 0); writeDigitalPin (a, 'D10', 0); writeDigitalPin (a, 'D11', 1); pausa (0,0002); fin
Material requerido
- Laptop instalada en MATLAB (preferencia: R2016a o versiones superiores)
- Arduino UNO
- Motor paso a paso (28BYJ-48, 5VDC)
- ULN2003 - Controlador de motor paso a paso
Diagrama de circuito
Control del motor paso a paso con MATLAB
Después de configurar el hardware de acuerdo con el diagrama de circuito, simplemente haga clic en el botón Ejecutar para ejecutar el código editado en el archivo.m
MATLAB puede tardar unos segundos en responder, no haga clic en ningún botón de la GUI hasta que MATLAB muestre un mensaje de ocupado en la parte inferior de la esquina izquierda como se muestra a continuación.
Cuando todo esté listo, haga clic en el botón en sentido horario o antihorario para hacer girar el motor. Mientras usamos el botón de alternancia, el motor paso a paso se moverá continuamente en el sentido de las agujas del reloj hasta que presionemos el botón nuevamente. Del mismo modo, al presionar el botón de alternancia en sentido antihorario, el motor comienza a girar en sentido antihorario hasta que presionamos el botón nuevamente.