- Modalità di funzionamento nel motore passo-passo
- Creazione dell'interfaccia utente grafica MATLAB per il controllo del motore passo-passo
- Codice MATLAB per il controllo del motore passo-passo con Arduino
- Materiale richiesto
- Schema elettrico
- Controllo del motore passo-passo con MATLAB
I motori passo-passo sono un motore CC senza spazzole che ruota a passi discreti e sono la scelta migliore per molte applicazioni di controllo del movimento di precisione. Inoltre, i motori passo-passo sono ottimi per il posizionamento, il controllo della velocità e le applicazioni che richiedono una coppia elevata a bassa velocità.
In precedenti tutorial di MATLAB, abbiamo spiegato come utilizzare MATLAB per controllare il motore DC, il servomotore e gli elettrodomestici. Oggi impareremo come controllare il motore passo-passo usando MATALB e Arduino. Se sei nuovo in MATLAB, ti consigliamo di iniziare con un semplice programma di lampeggiamento LED con MATLAB.
Modalità di funzionamento nel motore passo-passo
Prima di iniziare la codifica per il motore passo-passo, è necessario comprendere il concetto di funzionamento o rotazione di un motore passo-passo. Poiché lo statore della modalità passo-passo è costituito da diverse coppie di bobine, ciascuna coppia di bobine può essere eccitata in molti metodi diversi, consentendo alle modalità di essere guidate in molte modalità diverse. Le seguenti sono le classificazioni generali
Modalità Full Step
Nella modalità di eccitazione a passo intero possiamo ottenere una rotazione completa di 360 ° con un numero minimo di giri (passi). Ma questo porta a una minore inerzia e anche la rotazione non sarà regolare. Ci sono altre due classificazioni in Full Step Excitation, sono una fase di wave stepping e due modalità phase-on.
1. Un passo in fase o un passo d'onda: in questa modalità solo un terminale (fase) del motore sarà eccitato in un dato momento. Questo ha un numero inferiore di passaggi e quindi può ottenere una rotazione completa di 360 °. Poiché il numero di passaggi è inferiore, anche la corrente consumata da questo metodo è molto bassa. La tabella seguente mostra la sequenza di passi dell'onda per un motore passo-passo a 4 fasi
Passo | Fase 1 (blu) | Fase 2 (rosa) | Fase 3 (giallo) | Fase 4 (arancione) |
1 | 1 | 0 | 0 | 0 |
2 | 0 | 1 | 0 | 0 |
3 | 0 | 0 | 1 | 0 |
4 | 0 | 0 | 0 | 1 |
2. Step a due fasi: come dice il nome in questo metodo, due fasi saranno una. Ha lo stesso numero di passi del Wave stepping, ma poiché due bobine sono eccitate contemporaneamente, può fornire una coppia e una velocità migliori rispetto al metodo precedente. Anche se un lato negativo è che questo metodo consuma anche più energia.
Passo |
Fase 1 (blu) |
Fase 2 (rosa) |
Fase 3 (giallo) |
Fase 4 (arancione) |
1 |
1 |
1 |
0 |
0 |
2 |
0 |
1 |
1 |
0 |
3 |
0 |
0 |
1 |
1 |
4 |
1 |
0 |
0 |
1 |
Modalità Half Step
La modalità Half Step è la combinazione delle modalità una fase e due fasi. Questa combinazione ci aiuterà a superare lo svantaggio sopra menzionato di entrambe le modalità.
Come avrai intuito dal momento che stiamo combinando entrambi i metodi, dovremo eseguire 8 passaggi in questo metodo per ottenere una rotazione completa. La sequenza di commutazione per un motore passo-passo a 4 fasi mostrata di seguito
Passo |
Fase 1 (blu) |
Fase 2 (rosa) |
Fase 3 (giallo) |
Fase 4 (arancione) |
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 |
Quindi, è una tua scelta programmare il tuo motore passo-passo in qualsiasi modalità, ma preferisco la modalità a passo completo a due fasi. Poiché questo metodo offre una velocità maggiore rispetto al metodo a una fase e rispetto alla modalità a metà la parte di codifica è inferiore a causa del minor numero di passaggi nel metodo a due fasi.
Scopri di più sui motori passo-passo e le sue modalità qui
Creazione dell'interfaccia utente grafica MATLAB per il controllo del motore passo-passo
Quindi dobbiamo costruire la GUI (Graphical User Interface) per controllare il motore passo-passo. Per avviare la GUI, digita il comando seguente nella finestra di comando
guida
Si aprirà una finestra popup, quindi selezionare una nuova GUI vuota come mostrato nell'immagine sottostante,
Ora scegli due pulsanti di commutazione per ruotare il motore passo-passo in senso orario e antiorario, come mostrato di seguito,
Per ridimensionare o modificare la forma del pulsante, fai clic su di esso e potrai trascinare gli angoli del pulsante. Facendo doppio clic sul pulsante di attivazione / disattivazione è possibile modificare il colore, la stringa e il tag di quel particolare pulsante. Abbiamo personalizzato due pulsanti come mostrato nell'immagine sottostante.
Puoi personalizzare i pulsanti secondo la tua scelta. Ora, quando lo salvi, viene generato un codice nella finestra Editor di MATLAB. Per codificare il tuo Arduino per l'esecuzione di qualsiasi attività relativa al tuo progetto, devi sempre modificare questo codice generato. Quindi di seguito abbiamo modificato il codice MATLAB. Puoi saperne di più sulla finestra dei comandi, sulla finestra dell'editor ecc. Nel tutorial Introduzione a MATLAB.
Codice MATLAB per il controllo del motore passo-passo con Arduino
Il codice MATLAB completo, per il controllo del motore passo-passo, è fornito alla fine di questo progetto. Inoltre includiamo il file della GUI (.fig) e il file di codice (.m) qui per il download (fare clic con il tasto destro sul collegamento, quindi selezionare "Salva collegamento con nome…"), utilizzando i quali è possibile personalizzare i pulsanti secondo le proprie esigenze. Di seguito sono riportate alcune modifiche apportate per ruotare il motore passo-passo in senso orario e antiorario utilizzando due pulsanti di commutazione.
Copia e incolla il codice sottostante sulla riga n. 74 per assicurarti che Arduino stia parlando con MATLAB ogni volta che esegui il file m.
cancella tutto; globale a; a = arduino ();
Quando scorri verso il basso, vedrai che ci sono due funzioni create per entrambi i pulsanti nella GUI. Ora scrivi il codice in entrambe le funzioni in base all'attività che desideri eseguire al clic.
Nella funzione del pulsante in senso orario , copia e incolla il codice sottostante appena prima della fine della funzione per ruotare il motore in senso orario. Per ruotare continuamente il motore passo-passo in senso orario, stiamo usando il ciclo while per ripetere i due passaggi della modalità completa a passo di fase per la direzione in senso orario.
while get (hObject, 'Value') globale 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); fine
Ora nella funzione del pulsante antiorario , incolla il codice seguente in corrispondenza della funzione per ruotare il motore in senso antiorario. Per ruotare continuamente il motore passo-passo in senso antiorario, stiamo usando il ciclo while per ripetere i due passaggi della modalità completa a passo di fase per la direzione antioraria.
while get (hObject, 'Value') globale 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); fine
Materiale richiesto
- Laptop installato MATLAB (Preferenza: R2016a o versioni successive)
- Arduino UNO
- Motore passo-passo (28BYJ-48, 5VDC)
- ULN2003 - Driver del motore passo-passo
Schema elettrico
Controllo del motore passo-passo con MATLAB
Dopo aver configurato l'hardware secondo lo schema del circuito, è sufficiente fare clic sul pulsante Esegui per eseguire il codice modificato nel file.m
MATLAB potrebbe impiegare alcuni secondi per rispondere, non fare clic su alcun pulsante della GUI finché MATLAB non mostra il messaggio di occupato nella parte inferiore dell'angolo sinistro come mostrato di seguito,
Quando tutto è pronto, fare clic sul pulsante in senso orario o antiorario per ruotare il motore. Dato che stiamo usando il pulsante di commutazione, il motore passo-passo si muoverà continuamente in senso orario fino a quando non premeremo di nuovo il pulsante. Allo stesso modo, premendo il pulsante di commutazione in senso antiorario, il motore inizia a ruotare in senso antiorario fino a quando non si preme nuovamente il pulsante.