Motori passo-passo bipolari con Arduino – seconda parte

Nel precedente articolo hai imparato come funziona un motore bipolare, e forse hai già sperimentato lo sketch di esempio con il tuo Arduino.motore passo-passo bipolare

Lo sketch proposto non è complesso, ripete una sequendi segnali in cui il valore HIGH si sposta lungo i 4 pin a cui è connesso il driver SN754410NE e di conseguenza il motore passo-passo.

Come avrai già letto il driver utilizzato non ha una sua intelligenza specifica, il suo scopo è consentirti di utilizzare tensioni e correnti superiori a quelle gestibili con Arduino e quindi pilotare motori con coppia elevata con Arduino.

Tutta l’intelligenza del movimento proviene dallo sketch e da Arduino.

Prima di iniziare a sviscerare il programma linea per linea mi preme che ti sia chiaro il concetto con cui il motore esegue i suoi passi successivi: trattandosi di 4 bobine collegate a due a due poste agli antipodi il movimento è dato dalla polarizzazione delle bobine stesse:

Motore passo-passo a 4 fili

Figura 1

Nella posizione in cui si trova il magnete centrale permanente, se volessi far spostare l’albero del motore in senso orario dovresti polarizzare correttamente la bobina in basso, applica quindi un segnale positivo al B+ ed uno negativo al B- se l’albero ruota in senso orario hai ottenuto quato desideravi e sai che la bobina inferiore attiva il magnete centrale quando riceve corrente positiva su B+ e negativa da B- attraverso la bobina ai suoi antipodi. Lo stesso concetto vale per A+ e A-, immagina che il magnete si trovi rivolto verso il basso e che tu voglia continuare la tua rotazione in senso orario applicherai il positivo ad A+ ed il negativo ad A-; per spostarlo quindi verso l’alto dovrai attirare il magnete centrale ( permanente ) verso l’alto eccitando la bobina in alto, sai che per eccitare quella in basso hai applicato positivo a B+ e negativo a B-, applica i poli inversi ( positivo a B- e negativo a B+) e la bobina in alto sarà eccitata facendo spostare l’alberino in senso orario di un altro step ( passo ).

Ripetendo il gioco dell’inversione dei poli su A+ e A- ( positivo su A- e negativo su A+ ) l’alberino si sposta nella posizione iniziale.

La sequenza che hai appena utilizzato per eseguire un giro completo è:

B+ B- A+ A-
Step1 high low low low
Step2 low low high low
Step3 low high low low
Step4 low low low high


A questo punto ti è chiaro come opera un motore bipolare e come vanno polarizzati i suoi terminali e puoi riprendere lo sketck:

int motorPin1 = 8;
int motorPin2 = 9;
int motorPin3 = 10;
int motorPin4 = 11;
int delayTime = 100;

void setup() {
  pinMode(motorPin1, OUTPUT);
  pinMode(motorPin2, OUTPUT);
  pinMode(motorPin3, OUTPUT);
  pinMode(motorPin4, OUTPUT);
}

void loop() {
  digitalWrite(motorPin1, HIGH);
  digitalWrite(motorPin2, LOW);
  digitalWrite(motorPin3, LOW);
  digitalWrite(motorPin4, LOW);
  delay(delayTime);
  digitalWrite(motorPin1, LOW);
  digitalWrite(motorPin2, LOW);
  digitalWrite(motorPin3, HIGH);
  digitalWrite(motorPin4, LOW);
  delay(delayTime);
  digitalWrite(motorPin1, LOW);
  digitalWrite(motorPin2, HIGH);
  digitalWrite(motorPin3, LOW);
  digitalWrite(motorPin4, LOW);
  delay(delayTime);
  digitalWrite(motorPin1, LOW);
  digitalWrite(motorPin2, LOW);
  digitalWrite(motorPin3, LOW);
  digitalWrite(motorPin4, HIGH);
  delay(delayTime);
}

Iniziamo con la definizione dei pin a cui collegare il driver SN754410NE:

linee 01-04: definisci le quattro variabili di tipo  integer ciascuna per uno dei 4 pin a cui è connesso il motore;

linea 05: definisci un tempo di attesa tra uno step ed il successivo, lo scopo è attendere questo tempo per darti modo di comprendere il senso di rotazione e verificare i collegamenti tra Arduino ed il driver/motore;

linee 07-12: definisci la funzione setup() in cui indichi ad Arduino che ciascuno dei 4 pin dichiarati nelle linee 01-04, è da utilizzare come OUTPUT ossia per inviare segnali;

linea 14: definisci la funzione loop() in cui esegui i comendi di rotazione vera e propria, la funzione loop() è divisa in 4 blocchi simili, in cui ciascun blocco ricalca uno degli step della Tabella sopra;

linee 15-18: definisci il primo blocco o step che il motore esegue, per farlo invii un segnale HIGH sul pin 8 che avrai avuto cura di collegare al B+ (vedi tabella) e LOW per tutti gli altri pin;

linea 19: attendi il tempo definito alla linea 05, prima di eseguire il passo successivo, ricorda che tale tmpo è definito in millisecondi;

linee 20-23: è un blocco del tutto simile al precedente che invia il segnale HIGH al pin 10, a cui avrai avuto cura di collegare A+;

linea 24: attendi un tempo identico a delayTime prima di compiere il passo successivo;

linee 25-28: compie un nuovopasso in avanti inviando HIGH al pin 9, e LOW a tutti gli altri, il pin 9 deve essere collegato a B-;

linea 29: attendi un tempo identico a delayTime prima di compiere il passo successivo;

linee 30-33: compie l’ultimo passo del nostro ciclo prima di ripetere tutta la sequenza, per eseguirlo invii al pin 11 il segnale HIGH e LOW a tutti gli altri;

linea 34: attendi il delayTime prima di ricominciare il ciclo di rotazione.

Ora che sai esattamente come pilotare questi motori potrai sperimentare altri sketch e realizzare nuovi progetti con Arduino e i motori bipolari, ricorda che se ne trovano molti nelle vecchie stampanti, non ti costa nulla e puoi divertirti davvero tanto.

Buon divertimento.

Prima di inserire un commento, per favore, leggi il regolamento

Permanent link to this article: https://www.mauroalfieri.it/elettronica/motori-passo-passo-bipolari-con-arduino-seconda-parte.html

37 pings

Skip to comment form

  1. […] esperimento con il mio motore bipolare, Arduino e l’SN754410NE, nel precedente articolo: Motori passo-passo bipolari con Arduino – seconda parte hai imparato a pilotare un motore bipolare con Arduino, oggi imparerai come regolarne la […]

  2. […] ne puoi rendere conto utilizzando lo sketch presentato in questo articolo e impostando il delayTime a 0, anche il tuo motore resterà fermo ed emetteva un […]

  3. […] Ringrazio da subito il Sig. Franco Da Re, che qualche giorno fa mi ha scritto dopo aver letto questo articolo: […]

Lascia un commento

Your email address will not be published.

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.