Finita la serie di articoli sui Giochi di luce con Arduinoecco un articolo sui motori passo-passo. E’ molto tempo che non mi occupavo di motori passo-passo ed erano rimasti esclusi i motori bipolari.
Iniziamo subito riprendendo un mio precedente articolo in cui hai imparato a riconoscere i motori di tipo passo-passo. Dopo averli riconosciuti avrai letto come pilotare i motori di tipo unipolare, ma se hai riconoscuito che il tuo motore è di tipo bipolare, probabilmete ti sei chiesto … e adesso come lo piloto questo?
Ecco quindi un articolo su come pilotare i motori passo-passo bipolari.
I motori passo-passo bipolari di base presentano 4 avvolgimenti collegati come in figura, questo significa che se hai un motore a 5 o 6 fili puoi utilizzarlo come bippolare, facendo una forzatura e non utilizzando i 2 comuni, o se hai un motore a 8 fili puoi eseguire i collegamenti tra gli avvolgimenti per poterlo utilizare come bipolre.
A questo punto ti occorre un driver per pilotare questo tipo di motori, sul sito ufficiale Arduino ho trovato una pagina interessante, in cui sono rappresentati due integrati o driver utilizzabili per pilotare questi motori, per semplicità elettronica, non ci sono componenti extra da utilizzare, io ho deciso di utilizzare l’integrato SN754410NE:
Realizzandolo su di una breadboard puoi seguire i collegamenti come nelle figre sotto:
Collega i pin 4,5,12 e 13 a massa (GND), il pin 16 a Vcc (+5v) ed i pin 1 e 9 ai +5v ricordando che questi ultimi due sono l’enable del primo e del secondo avvolgimento, per cui potresti decidere di pilotarli con un segnale digitale da Arduino, per semplicità nello schema sono collegati al +5v ossia sempre abilitati.
Avrai notato che anche il pin 8 è connesso al +5v, questo pin dell’SN754410NE è destinato all’alimentazione esterna del motore, per cui se il tuo motore stepprer funziona a 12v è a questo pin che dovrai connettere tale alimentazione, nel mio esempio ti indico di connetterlo ai +5v perchè io ho utilizzato un motore funzionante a tale voltaggio.
Ed ecco come collegare l’SN754410NE ad Arduino, come anticipavo se anche il tuo circuito funziona a 5v collegherai il positivo ai +5v ed il negativo a massa (GND) di Arduino. Se non hai un circuito in funzione a 5v ricordati di collegare i +5v di arduino ai pin 1,9 e 16 e il pin 8 all’alimentazione esterna; Il negativo del cirduito devi collegarlo sia al GND di Arduino sia al negativo dell’alimentazione esterna, altrimenti non otterrai nessun movimento del motore.
Passa a collegare ad uno ad uno i pin di INPUT dell’SN754410NE ad Arduino, rispettivamente 7,2,10 e 15 del driver sui pin 8,9,10 e 11 di Arduino, come nelle figure seguenti:
Non ti resta che collegare il motore passo-passo al driver, prima di eseguire il collegamento dobrai aver chiaro quali siano i due distinti avvolgimenti del motore, se hai letto i miei articoli non avrai problemi di alcun genere, non potrai tuttavia determinare quale terminale del primo avvolgimento sia A+ e quale A- così anche per il secondo, occorreranno alcune prove invertendo i collegamenti mentre Arduino è in funzione, per determinare quali siano i pin corretti.
Non scoraggiarti se ti è chiaro come funziona un motore bipolare non ci metterai molto a capirlo, io ho impiegato poche decine di secondi, e ti consiglio di eseguire i test una coppia alla volta per non fare confusione.
Ecco come collegarli:
Se tutto è collegato correttamente quando caricherai lo sketch su Arduino vedrai muoversi il tuo motore passo-passo bipolare.
In questo articolo lo sketch lo pubblico per non asciarti in sospeso il lavoro e per farti verificare subito che tutto funziona, lasciandoti ai tuoi esperimenti per determinare come sono collegati gli avvolgimenti del motore, nel prossimo articolo analizzerai linea per linea lo sketch comprendendone il funzionamento.
Ecco lo sketch:
int motorPin1 = 8;
int motorPin2 = 9;
int motorPin3 = 10;
int motorPin4 = 11;
int delayTime = 100;
void setup() {
Serial.begin(9600);
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);
}
Buon lavoro.
















16 comments
4 pings
Salvatore
8 febbraio 2012 a 00:30 (UTC 2) Link to this comment
Ho letto con interesse il articolo e vorrei provare a realizzare il controller.
Al momento non riesco a reperire un integrato SN754410NE ma ho a disposizione un L293NE
Che tu sappia é funzionalmente equivalente? richiede accortezze particolari?
Mauro Alfieri
8 febbraio 2012 a 11:39 (UTC 2) Link to this comment
Ciao Salvatore,
l’SN754410NE non è di facilissimo reperimento, io l’ho ordianto da Farnell.
Ho recuperato il datasheet del L293D:
http://www.datasheetcatalog.org/datasheets/90/69628_DS.pdf
non ho trovato l’L293NE, in ogni caso a meno di qualche collegamento differente tra i due tipi dovrebbe andar bene.
Sicuramente un’accortezza è quella di controllare l’assorbimento delle fasi e verificare che non assorbano più di quello che l’integrato può erogare, ed in ogni caso prevedere una aletta di raffreddamento adeguata.
Lascio ad altri utenti del blog l’invito a correggere o integrare con le proprie conoscenze ed esperienza sull’argomento.
Ciao
Mauro
Salvatore
8 febbraio 2012 a 23:37 (UTC 2) Link to this comment
Quello che mi hai indicato penso proprio sia il datasheet di tutta la famiglia di integrati L293.
Guardando ancora un po’ in rete ho trovato quanto segue
D = diode
L293D has output clamping diodes for inductive transient suppression while the L293NE does not. Since you’re going to drive a motor you will want to use clamping diodes to avoid inductive spikes from the motor killing the output transistors in the chip.
If you can only find the L293NE you can add your own diodes. See the datasheet for how they are connected.
Secondo te posso usare l’IC senza diodi per fare qualche test o ci vogliono? E nel caso che diodi? Uno per ogni uscita verso i motori? Grazie.
Manuel
4 luglio 2012 a 05:37 (UTC 2) Link to this comment
Salve io vorrei sapere un’informazione devo attaccare 5 motori passo passa con questo integrato: SN754410ne su arduino peró ci sono riuscito solo con un motore. Ho provato ha copiare il listato uno sotto l’altro per 5 volte ovviamente cambiando le uscite ma niente come posso fare Per risolvere ????? Grazie
Mauro Alfieri
4 luglio 2012 a 17:00 (UTC 2) Link to this comment
Ciao Manuel,
come hai collegato i 5 integrati? Tutti in parallelo?
Mauro
gabriele
13 luglio 2012 a 18:00 (UTC 2) Link to this comment
ho recuperato unb motore della ventola dell’unità esterna di un condizionatore. pensavo ne uscissero tre fili,i soliti ma ne escono ben 5,due bianchi,un rosso ,un blu,un giallo.provando col tester tutti e cinque risultano collegati agli altri,cioè hanno continuità.(spero di usare termini giusti).come faccio a farlo funzionare collegandolo ai normali tre fili(fase,neutro,terra,)?per favore mi risponda alla mail…grazie
Mauro Alfieri
14 luglio 2012 a 09:25 (UTC 2) Link to this comment
Ciao Gabriele,
prima di tutto devi capire ne tipo di motore sia, da come scrivi sembra un passo-passo unipolare, nel blog trovi tutti gli articoli per “riconoscere i motori passo-passo” prova a leggerne qualcuno.
Un motore passo-passo quando fai ruotare l’alberino a mano e senza alimentazione lo senti spostarsi a piccoli scattileggeri, non in modo fluido.
Se si tratta di un passo-passo non puoi collegarlo con 3 fili. Prova a documentarti nel blog.
P.S. Non mettere la tua email come testo dei commenti, mi arriva già compilando il campo email. in un commento rischi che malintenzionati la prendano per inviarti spam
Fabio
29 settembre 2012 a 15:08 (UTC 2) Link to this comment
Ciao Mauro, volevo chiederti una cosa, ma si può utilizzare un’altro integrato oltre a questo? Se si, quale? Grazie
Mauro Alfieri
30 settembre 2012 a 09:56 (UTC 2) Link to this comment
Ciao Fabio,
si, é possibile di integrati adatti ad essere usati come driver di potenza per motori passo passo c’è ne sono migliaia.
La Motor shield Fe usa ad esempio un L298p ed io ho scritto dei tutorial per pilotar i motori passo passo.
Puoi anche leggere l’articolo di settimana scorsa sul l’easydriver prodotto sparkfun e distribuito sul sito robot-domestici.
Ci sono poi i driver della pololu, se cerchi in un sito di elettronica e robotica come quello indicato sopra ne troverai tanti altri.
Mauro
Fabio
30 settembre 2012 a 11:36 (UTC 2) Link to this comment
Ok, capito, grazie
Leandro
19 novembre 2012 a 16:47 (UTC 2) Link to this comment
Ciao MAuro, ho seguito con molta attenzione tutti i tuoi tutorial sul pilotaggio dei motori passo passo e li ho trovati molto interessanti.
Purtroppo io sono in possesso di un motore passo passo bipolare che richiede una tensione di alimentazione di 2,8 V. Sarebbe possibile pilotarlo utilizzando il driver SN754410NE?
Che differenza c’è con il drivere L293DNE?
Sei per caso a conoscenza di qualche sito dove poter eventualmente reperire delle informazioni per potersene realizzare uno da soli utilizzando componenti discreti?
Grazie
Saluti
Mauro Alfieri
19 novembre 2012 a 18:26 (UTC 2) Link to this comment
Ciao Leandro,
ho dato un occhio ai datasheet dei due integrati, entrabi doppio ponte-H, il motore che tu possiedi ha una tensione di alimentazione molto bassa ma la caratteristica che dovresti valutare è la corrente ( A ) assorbita, è in funzione della corrente puoi definire che tipo di integrato ti occorre.
In merito al circuito, sul mio blog ci sono alcuni circuiti per l’SN754410NE realizzati non solo da me, poi puoi seguire i circuiti descritti nei datasheet e valutare se un EasyDriver può fare al caso tuo con pochi euro è già realizzato e sul blog trovi dei codici per utilizzarlo.
Mauro
Leandro
20 novembre 2012 a 12:44 (UTC 2) Link to this comment
Ciao Mauro,
grazie mille per la risposta.
La mia perplessità maggiore era proprio quella di riuscire a capire se gli integrati indicati erano in grado di fornire in uscita i 2,8 V necessari, perchè sui datasheet mi è parso di capire che in uscita non si può scendere sotto i 4,5 V. Oltretutto non saprei come collegare il piedino corrispondente dell’integrato visto che la scheda arduino uno non fornisce 2,8 V in uscita ma solo 5 o 3,3.
Non so proprio come fare….
Mauro Alfieri
20 novembre 2012 a 14:20 (UTC 2) Link to this comment
Ciao Leandro,
i 2,8v come tutte le tensioni per alimentare i motori passo-passo con gli integrati SN754410NE o L293 deve essere esterna.
La funzione di tali integrato è proprio alimentare separatamente i motori passo-passo, arduino non ha sufficente corrente per alimentare i motori sopratutto sotto sforzo.
Resta valido che se non sai quanto assorbe ogni motore è impossibile definire alcun tipo di controllo.
Mauro
Albano
8 dicembre 2012 a 21:16 (UTC 2) Link to this comment
Ciao Mauro
Volevo chiedere quanti ampere per fase (massimi) di un passo-passo puo soportare l’integrato SN754410NE
e visto che è di difficile reperimento se si puo al suo posto usare EASY DRIVER e come si collega ad ARDUINO ed al motore senza pulsanti (come in uno dei tuoi tutor) per girare diciamo ad 1/2 passo.
Grazie!
Mauro Alfieri
9 dicembre 2012 a 10:48 (UTC 2) Link to this comment
Ciao Albano,
si puoi sostituire l’SN754410NE con l’Easy Driver.
Trovi alcuni articoli sul blog dedicati a questo driver per motori passo-passo.
Tra gli ultimi articoli c’è anche come utilizzare l’easy driver con il 1/2 passo, 1/4 di passo, 1/8 di passo.
Buona lettura
Mauro
Mauro Alfieri » Blog Archive » Motori passo-passo bipolari con Arduino – seconda parte
11 gennaio 2012 a 08:43 (UTC 2) Link to this comment
[...] Mauro Alfieri Tweet Nel precedente articolo hai imparato come funziona un motore bipolare, e forse hai già sperimentato lo sketch di esempio [...]
Mauro Alfieri » Blog Archive » Motori passo-passo bipolari comandati da interruttori – prima parte
18 gennaio 2012 a 10:01 (UTC 2) Link to this comment
[...] Tweet Pilota un motore passo-passo con due interruttori. Nei precedenti articoli hai imparato a collegare e regolare la velocità di un motore passo-passo bipolare con [...]
Mauro Alfieri » Blog Archive » Come eccitare un motore passo passo bipolare – terza parte
26 febbraio 2012 a 16:24 (UTC 2) Link to this comment
[...] Ovviamente utilizzare la libreria Stepper.h rende le cose davvero più semplici, di contro se vuoi capire quale sia il principio di funzionamento di un motore stepper, ti consiglio di partire dal primo articolo sull’argomento. [...]
Mauro Alfieri » Blog Archive » Motori passo-passo bipolari con Arduino controlla la velocità
26 febbraio 2012 a 16:25 (UTC 2) Link to this comment
[...] il collegamento del motore all’SN754410NE ed Arduino puoi leggere l’articolo: Motori passo-passo bipolari con Arduino – prima parte in cui ho scattato delle foto passo dopo passo su come eseguire il [...]