- Modes de funcionament al motor pas a pas
- Creació d’una interfície gràfica d’usuari MATLAB per controlar el motor pas a pas
- Codi MATLAB per controlar el motor pas a pas amb Arduino
- Material requerit
- Esquema de connexions
- Control del motor pas a pas amb MATLAB
Els motors pas a pas són un motor de corrent continu sense escombretes que gira en passos discrets i són la millor opció per a moltes aplicacions de control de moviment de precisió. A més, els motors pas a pas són bons per al posicionament, el control de velocitat i les aplicacions que requereixen un parell elevat a baixa velocitat.
En tutorials anteriors de MATLAB, hem explicat com utilitzar MATLAB per controlar el motor de corrent continu, el servomotor i els electrodomèstics. Avui aprendrem a controlar el pas a pas mitjançant MATALB i Arduino. Si no coneixeu MATLAB, és recomanable començar amb un senzill programa de parpelleig LED amb MATLAB.
Modes de funcionament al motor pas a pas
Abans de començar a codificar el motor pas a pas, heu d’entendre el concepte de funcionament o rotació d’un motor pas a pas. Atès que l'estator del mode pas a pas està format per diferents parells de bobines, cada parell de bobines es pot excitar en molts mètodes diferents, cosa que permet que els modes es puguin conduir en molts modes diferents. A continuació es detallen les classificacions generals
Mode de pas complet
En el mode d'excitació de pas complet, podem aconseguir una rotació completa de 360 ° amb un nombre mínim de voltes (passos). Però això comporta una menor inèrcia i la rotació no serà suau. Hi ha dues classificacions addicionals en Excitació de pas complet, són un pas d'ona de fase i dos de fase.

1. Un pas escalonat o escalonament d'ona: en aquest mode, només es connectarà un terminal (fase) del motor en cada moment. Això té menys nombre de passos i, per tant, pot aconseguir una rotació completa de 360 °. Com que el nombre de passos és menor, el corrent consumit per aquest mètode també és molt baix. La taula següent mostra la seqüència de pas d'ona per a un motor pas a pas de 4 fases
| Pas | Fase 1 (blau) | Fase 2 (rosa) | Fase 3 (groc) | Fase 4 (taronja) |
| 1 | 1 | 0 | 0 | 0 |
| 2 | 0 | 1 | 0 | 0 |
| 3 | 0 | 0 | 1 | 0 |
| 4 | 0 | 0 | 0 | 1 |
2. Dos passos en fase: tal com indica el nom en aquest mètode, dues fases seran una. Té el mateix nombre de passos que el pas d’ona, però, atès que dues bobines s’alimenten alhora, pot proporcionar un millor parell i velocitat en comparació amb el mètode anterior. Tot i que un aspecte negatiu és que aquest mètode també consumeix més energia.
|
Pas |
Fase 1 (blau) |
Fase 2 (rosa) |
Fase 3 (groc) |
Fase 4 (taronja) |
|
1 |
1 |
1 |
0 |
0 |
|
2 |
0 |
1 |
1 |
0 |
|
3 |
0 |
0 |
1 |
1 |
|
4 |
1 |
0 |
0 |
1 |
Mode de mig pas
El mode Half Step és la combinació de modes d’activació de fase i de fase. Aquesta combinació ens ajudarà a superar el desavantatge esmentat dels dos modes.
Com ho hauríeu imaginat, ja que combinem els dos mètodes, haurem de realitzar 8 passos en aquest mètode per obtenir una rotació completa. La seqüència de commutació d’un motor pas a pas de 4 fases es mostra a continuació
|
Pas |
Fase 1 (blau) |
Fase 2 (rosa) |
Fase 3 (groc) |
Fase 4 (taronja) |
|
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 |
Per tant, és la vostra opció programar el motor pas a pas en qualsevol mode, però prefereixo el mode de pas complet amb dos passos. Com que aquest mètode proporciona una velocitat més ràpida que el mètode d'una fase i, en comparació amb el mode mitjà, la part de codificació és menor a causa del menor nombre de passos del mètode de dues fases.
Obteniu més informació sobre els motors pas a pas i els seus modes aquí
Creació d’una interfície gràfica d’usuari MATLAB per controlar el motor pas a pas
Després hem de construir una interfície gràfica d’usuari (GUI) per controlar el motor pas a pas. Per iniciar la GUI, escriviu l'ordre següent a la finestra d'ordres
guia
S'obrirà una finestra emergent i, a continuació, seleccioneu una nova interfície gràfica en blanc com es mostra a la imatge següent.

Ara trieu dos botons de commutació per girar el motor pas a pas en sentit horari i antihorari, com es mostra a continuació.

Per canviar la mida o canviar la forma del botó, només cal que hi feu clic i podreu arrossegar les cantonades del botó. En fer doble clic al botó d’alternació, podeu canviar el color, la cadena i l’etiqueta d’aquest botó en particular. Hem personalitzat dos botons com es mostra a la imatge següent.


Podeu personalitzar els botons segons la vostra elecció. Ara, quan el deseu, es genera un codi a la finestra Editor de MATLAB. Per codificar el vostre Arduino per realitzar qualsevol tasca relacionada amb el vostre projecte, sempre heu d’editar aquest codi generat. Per tant, a continuació hem editat el codi MATLAB. Podeu obtenir més informació sobre la finestra d'ordres, la finestra de l'editor, etc. a Introducció al tutorial MATLAB.
Codi MATLAB per controlar el motor pas a pas amb Arduino
El codi MATLAB complet, per controlar el motor pas a pas, es dóna al final d’aquest projecte. A més, incloem el fitxer GUI (.fig) i el fitxer de codi (.m) aquí per descarregar (feu clic dret a l'enllaç i seleccioneu "Desa l'enllaç com…")), amb el qual podeu personalitzar els botons segons el vostre requisit. A continuació es mostren alguns ajustaments que hem fet per girar el motor pas a pas en sentit horari i antihorari mitjançant dos botons de commutació.
Copieu i enganxeu el codi següent a la línia núm. 74 per assegurar-vos que l'Arduino parla amb MATLAB cada vegada que executeu el fitxer m.
netejar-ho tot; global a; a = arduino ();

Quan desplaceu-vos cap avall, veureu que hi ha dues funcions creades per als dos botons de la GUI. Ara escriviu el codi a les dues funcions segons la tasca que vulgueu fer en fer clic.
A la funció del botó horari , copieu i enganxeu el codi següent just abans de finalitzar la funció per girar el motor en sentit horari. Per fer girar contínuament el motor pas a pas en el sentit de les agulles del rellotge, estem fent servir el bucle while per repetir els dos passos de mode complet de pas gradual per a la direcció de les agulles del rellotge.
mentre get (hObject, 'Valor') 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); final

Ara, a la funció del botó antihorari , enganxeu el codi següent a la funció per girar el motor en sentit antihorari. Per fer girar contínuament el motor pas a pas en sentit antihorari, estem fent servir el bucle while per repetir els dos passos de mode complet de pas en fase en mode antihorari.
mentre get (hObject, 'Valor') 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); final

Material requerit
- Portàtil instal·lat per MATLAB (preferència: R2016a o versions superiors)
- Arduino UNO
- Motor pas a pas (28BYJ-48, 5VDC)
- ULN2003: controlador de motor pas a pas
Esquema de connexions


Control del motor pas a pas amb MATLAB
Després de configurar el maquinari segons el diagrama del circuit, només cal que feu clic al botó d'execució per executar el codi editat al fitxer.m

MATLAB pot trigar uns quants segons a respondre, no feu clic a cap botó GUI fins que MATLAB no mostri el missatge ocupat a la part inferior de l’angle esquerre, tal com es mostra a continuació

Quan tot estigui a punt, feu clic al botó horari o antihorari per girar el motor. Com fem servir el botó de commutació, el motor pas a pas es mourà contínuament en sentit horari fins que tornem a prémer el botó. De la mateixa manera, prement el botó de commutació en sentit antihorari, el motor comença a girar en sentit antihorari fins que tornem a prémer el botó.
