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.
101 commenti
4 ping
Vai al modulo dei commenti
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?
Autore
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
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.
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
Autore
Ciao Manuel,
come hai collegato i 5 integrati? Tutti in parallelo?
Mauro
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
Autore
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 🙂
Ciao Mauro, volevo chiederti una cosa, ma si può utilizzare un’altro integrato oltre a questo? Se si, quale? Grazie
Autore
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
Ok, capito, grazie 🙂
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
Autore
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
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….
Autore
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
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!
Autore
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
Ciao Mauro, ancora un piccolo aiuto sugli steppe. Per l’unipolare ho fatto parecchie prove con diversi sketc a tutto va bene grazie a te. Per il bipolare ho qualche problema e per evitare di agire pappagalescamente ti chiedo un chiarimento.
Dalla scheda dell’integrato L293 leggo che i pin logici sono ( come del resto tu indichi nel tutorial, il: 2-7-10-15 che ho collegato rispettivamente ai pin digitali di Arduino 8-9-10-11 ——
Stepper: ho individuato le fasi… ed ho collegato i quattro terminali del motore ai pin 3-6 e 11-14 dell’integrato.
Poi: VCC1 ai 5V e VCC2 al positivo della batteria ( al Vin di Arduino).
Credo di non avere fatto errori ma la verità è cosi non mi gira.
La domanda è anche: i pin 1 e 9 dell’L293 non corrispondono all’ ENABLE dei motori?
Dovremmo collegarli entrambi al Power o no?Ho provato a collegarli na anche così nisba.
Spero veramente di non rompere….e mi scuso.
Dimmi almeno se i miei ragionamenti sono validi o se c’è qualche errore di concetto.
Un cordiale saluto
Arnaldo
Autore
Ciao Arnaldo,
non ricordo a memoria la piedinatura dell’L293
Da quanto ricordo sono 6 pin da collegare, alcuni schemi usano dei diodi di protezione e dei transistor per ridurre a 4 i pin.
Prova a guardare gli schemi della Motor shield fe o della Motor shield arduino, mi sembra che entrambe usino l’integrazione L293 con soli 4 pin.
Mauro
Ciao Mauro, è destino che dopo averti disturbato io risolva il problema…..me ne scuso vivamente….Non c’era nessun errore ma un difetto di contatto dell’integrato sulla breadboard…Mi tocca tenerlo pressato con una biro…
Ciao e Buona Domenica
Autore
Ciao Arnaldo,
sono solo contento che tu risolva sempre da solo le tue difficoltà dimostra che la tenacia e la sperimentazione ripagano e tu le applichi egregiamente.
Se vuoi puoi provare con una tecnica che io uso quando sono difronte ad un ostacolo, mi fermo, distolgo l’attenzione per qualche minuto o anche ora, dipende dal mio tempo, ritorno sul progetto e riprovo prima di cercare nel web la soluzione.
Solitamente funziona, a volte trovo la soluzione solo sul web.
Detto questo, puoi scrivermi tutte le volte che lo desideri, io cercò di aiutarti quando posso e come posso, poi sei sempre gentile ad avvisarmi quando risolvi.
Mauro
ciao mauro volevo chiederti se anche un integrato di tipo ULN2003A da te consigliato per motori unipolari puo essere usato per motori bipolari
grazie
Autore
Ciao Dario,
io per i motori bipolari preferisco usare un driver specifico, meglio ancora i driver della sparkfun o della pololu.
Mauro
Ho capito cosa intendi ma vuol dire che non posso usare il sopra indicato integrato oppure posso usarlo?
grazie in anticipo
Autore
Ciao Dario,
non sono così bravo in elettronica per poterti dare questa certezza.
Lascio il tuo commento on-line in modo che altri appassionati possano aiutarti 🙂
Mauro
Grazie e allo stesso tempo scusa della domanda poiché cercando su internet ho trovato su un forum riguardante Arduino il perché non si possa usare quel tipo di integrato
adesso userò quello consigliato nel tuo articolo .
Dario
Autore
Ciao Dario,
ti va di condividere ciò che hai appreso descrivendolo brevemente in un commento, servirà ad altri appassionati.
Grazie
Mauro
d ‘accordo ( il forum e in inglese e la traduzione di google non è molto accurata ).
https://www.google.it/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&cad=rja&ved=0CDAQFjAA&url=http%3A%2F%2Fwww.instructables.com%2Fanswers%2FI-want-to-ask-Is-it-possible-to-run-bipolar-step%2F&ei=yhB1UsGULI7G7AbZnoGABw&usg=AFQjCNE_5gez-4MB_53PfFChhxs2BRJjEQ&bvm=bv.55819444,d.ZGU
non e molto chiaro ma bene o male spiegano che l’integrato ULN2003A non e consigliabile per i motori bipolari ma solo per quelli unipolari deduco.
volevo anche chiederti se questo integrato e uguale a quello che tu usi per i motori bipolari
http://www.ebay.it/itm/SN754410NE-SN-754410-Arduino-come-L293-driver-motori-DC-e-stepper-fino-1A-/261318412214?pt=Componenti_elettronici_attivi&hash=item3cd7ca87b6
Grazie in anticipo
Autore
Ciao Dario,
grazie per il primo link.
Il componente usato in alcuni dei miei esperimenti con i motori bipolari è SN754410NE, il link che mi hai inviato è di un oggetto scaduto, in ogni caso è un componente che trovi facilmente da un rivenditore di elettronica o su siti on-line di rivendita componenti elettronici.
Mauro
ciao mauro volevo sapere se potevi risolvere un mio interrogativo:
ditro al mio motore bipolare c’è scritto 2,4v(volt )/phase e 2.0A(ampere)/phase
devo quindi alimentarlo a 2.4 volt e 2 ampere ?
posso alimentarlo con arduino ?
o devo usare un alimentazione esterna?
potresti spiegarmi inoltre come dovrei collegare il polo positivo e negativo dell’alimentazione esterna alla breadboard
(inoltre come facci a ottenere da un alimentazione esterna esattamente 2.4 volt e 2 ampere ammesso che il voltaggio e amperaggio siano quelli ?)
grazie
dario
Autore
Ciao Dario,
trovi sul blog un articolo dedicato alla corrente erogata dai singoli pin arduino.
Certamente con 2A per fase avrai difficoltà di controllo anche con alcuni driver di controllo motori; prova a verificare la BigEasyDriver che dovrebbe controllare motori fino a 3A per fase ma non ricordo se la tenzione può essere inferiore agli 8v.
Mauro
Ciao Mauro,ho seguito il tuo corso base a Novembre, riuscire a movere un motore P-P era un mio desiderio, sebbene non avessi esperienza in elettronica ho seguito i tuoi consigli ed il motore ha mosso i primi passi.
Grazie mille!!! Ciao da Alberto.
Autore
Ciao Aberto,
sei bravissimo il tuo commento mi riempie di gioia.
Ti sei impegnato e sarai entusiasto del tuo risultato.
Oggi si svolgerà un corso simile a quello a cui hai partecipato e il tuo commento é il miglior incoraggiamento che potessi ricevere.
Mauro
Ciao Mauro,
premetto che sono entrato nel mondo di arduino da meno di 24 ore e con l’elettronica sono molto a diguno.
detto questo provo a chiederti la soluzione ad un problema, forse per te, anche troppo semplice.
Ho la scheda Arduino Uno, una breadboard, un integrato L298N e un motore passo passo recuperato da una vecchia inkjet espon siglato EM-434.
Con questi pochi elementi posso azionare tale motore e se si, sapresti indicarmi con cablare l’integrato ad arduino e al motore?
Grazie mille per la risposta e le tue preziose guide che sto seguendo con molto interesse.
Ciao
Mirco
Autore
Ciao Mirco,
ho usato un motore simile per alcuni dei miei tutorial, ti invito a leggerli.
Se sei a digiuno con l’elettronica e vuoi imparare di più ti consiglio di leggere il mio corso on-line gratuito.
Ti anticipo che il motore in tuo possesso è un bipolare e troverai dei tutorial per controllarlo con altri integrati, tuttavia compresa la logica di funzionamento potrai usare anche un L298 come mostro nei tutorial con i passo-passo e le varie motor shield.
Mauro
Ciao Mauro, innanzi tutto mi complimento con te per il fantastico sito! Pieno d’informazioni!
Adesso veniamo al punto… Come faccio a sostituire il delay con millis in modo tale che il programma non venga rallentato? Ho provato parecchie volte ma non riesco.
Ciao, grazie!
Autore
Ciao Federico,
millis() e dalay() sono due funzioni molto differenti, per applicare la sostituzione dovrai ragionare in modo completamente differente tra millis() e delay().
Prova a leggere il mio articolo dedicato al millis()
Mauro
Grazie per la risposta,
il tuo articolo l’avevo già letto e avevo provato ad applicarlo ad un mio programma (inseguitore fotovoltaico con duo motori passo passo).
Il problema è che non mi funziona… Potrei postarti o mandarti via mail il programma cosi vedi se riesci a darmi un aiuto?
Grazie mille.
Ciao!
Autore
Ciao Fede,
io offro consulenza gratuita sul sito per capire come risolvere eventuali incomprensioni degli sketch che scrivo e siccome siete tanti ( 1700 al giorno circa ) non posso analizzare gli sketch di tutti anche se vorrei.
Ti invito a ragionare su cosa vuoi ottenere e cosa ottieni al fine di capire dove si trova l’errore e correggerlo, se non sai come correggerlo posso darti qualche dritta su cosa leggere del blog ma prima dovrai impegnarti da solo a realizzare ciò che desideri.
Mauro
Thank you Mauro!
Autore
You are welcome Skourkos !!
Ciao Mauro,
come uno scemo ho comprato un motore passo-passo bipolare senza prima leggere la tua guida, e l’ho preso da 7,4V, quindi non funziona. Ho letto però che potrei collegare il pin 8 ad un’alimentazione esterna. Mi puoi spiegare come lo posso fare?
Grazie mille,
Claudio
Autore
Ciao Claudio, non comprendo perché non debba funzionare, basta usarlo come bipolare e non cercare di usarlo in altro modo; se ti riferisci al collegamento diretto ad arduino io lo sconsiglio anche per i motori passo-passo a 2v perché comunque la corrente per fase richiesta dal motore rischia di bruciarti arduino. Per l’alimentazione esterna usa un driver tipo Easydriver o driver della pololu, trovi sul sito tanti articoli.
Il motore non l’ho collegato direttamente ad Arduino, ma ho seguito le tue istruzione con il driver integrato nello starter kit (L293D). I cavi del motorino li ho invece connessi ai pin 3, 6, 11 e 14 del driver, ma quando carico lo sketch il motore fa piccole rotazioni come se non funzionasse…
Ti ringrazio ancora (e mi scuso per la mia ignoranza in materia),
Claudio
Autore
Ciao Claudio in questo articolo non utilizzo l’integrato L293D ma un SN754410NE probabilmente é per questa differenza che lo sketch si comporta i modo differente..
Ho sbagliato, scusa, i pin del driver sono il 2, il 7, il 10 e il 15
Autore
Ciao Claudio, se é sempre l’L293D che stai usando dovrai senza dubbio cambiare sketch, prova con quelli che ho scritto per controllare i motori passo-passo con la motor shield arduino che é basata su un driver più simile al tuo.
Buongiorno Mauro,
innanzitutto complimenti.
Il tuoi tutorial sono molto chiari anche per me che sono alquanto digiuno sia di elettronica che di programmazione, ma ho molta voglia di sperimentare.
Sono un appassionato di astrofotografia e userò arduino come controller di un motore passo passo bipolare che muova una “tavoletta equatoriale”, ossia un supporto della macchina fotografica che compensa esattamente la rotazione terrestre e consente tempi di posa lunghi delle stelle (dell’ordine di molti minuti…) (per intenderci, una cosa tipo questa http://davetrott.com/inventions/double-arm-barn-door-drive/) In pratica il motore dovrei pilotarlo a “mezzo passo” (eccitazione 2:1, come detto in un altro post) a 1 rpm, per azionare la vite che muove la tavoletta.
A tal fine ho comprato tutti i componenti e sto realizzando sia l’hardware che lo sketch … Quando avrò finito (a patto che funzioni 😉 ) sarei felice di condividerlo con il tuo sito.
MA … ora ho un dubbio AMLETICO anche se abbastanza idiota…
il motore funziona a 12V, arduino a 5V … ho già fatto due linee di alimentazione con le tensioni adeguate. Ma non mi è chiaro il tuo passaggio sul collegamento a massa del circuito integrato SN754410NE:
” Il negativo del cirduito devi collegarlo sia al GND di Arduino sia al negativo dell’alimentazione esterna, altrimenti non otterrai nessun movimento del motore”
cioè? collego i pin 4,5,12,12 del circuito integrato SN754410NE contemporaneamente SIA al negativo della linea di alimentazione a 5V SIA al negativo di quella a 12V.
Magari sto chiedendo una stupidaggine, ma prima di bruciare tutto, essendo un praticone, meglio domandare …
Autore
Ciao Andrea,
bel progetto e spero di poterlo pubblicare quando avrai finito, vorrà dire che funziona.
In risposta al tuo quesito devi considerare che il pin negativo è anche detto massa, gnd o comune.
L’ultimo nome è quanto mai adeguato al suo significato ossia è il collegamento “comune” a tutto il circuito.
Per capirci se hai una alimentazione a 5v ed una a 12v i terminali negativi di entrambe devono essere connessi tra loro, siccome la 5v alimenta Arduino e la 12v alimenta il tuo driver il collegamento è fatto.
Buongiorno Mauro,
in questi giorni ho lavorato al controller del motore passo passo per l’astroinseguitore, dopo aver fatto i collegamenti come suggerito.
Come detto, usa uno stepper da 12V, 0,33 A per fase, 1.8° per step.
Ci ho aggiunto un deviatore on-off-on che consenta di commutare il controllo da inseguimento (1 rpm con moto orario “half pass”) a ritorno (25 rpm “2 fasi” con moto antiorario), oltre a due pulsanti normalmente aperti di fine corsa che arrestano il moto quando premuti. Inoltre ho aggiunto una funzione controllo del led di arduino in modo da farlo funzionare come indicatore (con l’astroinseguitore devo farci foto di notte, quindi … al buio!)
Potrei sottoporti lo sketch (che mi sembra funzionare)? Come posso inviarlo?
Due domande:
– con il motore in moto, ho notato un accentuato riscaldamento sia del circuito integrato SN754410NE (ho misurato con il tester una temperatura di circa 60°C) e del motore. E’ normale? (il circuito integrato dovrebbe supportare fino a 1A di corrente, se ho letto bene le specifiche: eccitando due fasi a 12V, dovrei avere al massimo 0,66A e ci dovrei stare, esatto?)
– durante l’arresto del motore, ho scelto di lasciare tutte le fasi ad un livello LOW (spente): è corretto? Tanto la coppia che si esercita sulla vite che fa girare l’astrinseguitore non dovrebbe vincere l’inerzia del rotore …
Autore
Ciao Andrea,
se vuoi condividere il progetto pubblicandolo sul blog puoi inviare alla casella info del blog la descrizione del progetto, lo sketch con descrizione, le foto, eventuale video in modo che io possa pubblicarlo.
In merito ai componenti che scaldano è normale che questo accada, se la temperatura resta costante raggiunto un picco non mi preoccuperei, se, al contrario, continua a crescere al passare delle ore di utilizzo allora potrebbe esserci qualche errore nei collegamenti o nei calcoli di assorbimento.
In ogni caso io prevederei un’aletta di raffreddamento per l’SH754410NE.
In merito alle fasi è tutto dipendente dal sistema meccanico che hai utilizzato, se come dici, la coppia della vite è inferiore alla coppia necessaria a far spostare l’asse del rotore puoi lasciare le fasi a riposo durante i periodi di attesa.
Grazie Mauro.
Allora dividerò il lavoro in due parti.
Fatte le dovute prove e raccolto il materiale ti invierò la parte relativa al controller del motore passo passo.
Poi mi dedicherò alla costruzione “fisica” della tavoletta equatoriale (astroinseguitore) e, per completezza, ti invierò anche questa parte. Speriamo di farcela in tempi non lunghi (questa seconda parte richiede una meccanica abbastanza precisa e non vorrei fare lavori grossolani).
Per l’aletta di raffreddamento, vedo se riesco a fare qualcosa di autocostruito con una lamina di rame.
In merito ala coppia della vite, verificherò una volta costruita la tavoletta, Ad occhio mi sembrerebbe così.
Se non fosse, ci sono problemi a lasciare il carico induttivo acceso per lunghi periodi (a parte il consumo di corrente …)?
Autore
Ciao Andrea,
non vedo l’ora di poter pubblicare il tuo lavoro.
In merito al carico induttivo sicuramente, come scrivi, consumerai più corrente e potresti ottenere un surriscaldamento da parte del motore e del driver se la meccanica cercasse di spostare l’albero ed il motore dovesse essere costretto a opporre costantemente forza per non spostarsi.
Qualche esperienza con il chip LMD 18200 di TI (o anche NI) ? La documentazione dice che può essere usato per il controllo di motori passo a passo con il vantaggio che arriva a gestire fino a 3A per fase (quindi motori più grossi). Non sono riuscito a trovare nessuno schema che lo impieghi per i motori bipolari e questo è strano perché è molto citato.
Grazie
Autore
Ciao Gianmarco,
hai già provato a verificare se esiste un datasheet consultabile?
Io non lo conosco e non l’ho mai usato, tuttavia se, come dici, è molto citato dovresti trovare il datasheet on-line.
Ciao, ottimo articolo!
Ho bisogno di pilotare due motori passo passo e vorrei provare con due integrati SN754410NE che lei ha mostrato nell’articolo. Poiché ho vincoli di ingombro è possibile collegare questi con Arduino direttamente? (Ossia senza breadboard)
Grazie.
Autore
Ciao Fabio,
si puoi collegare questi integrati su una basetta millefori.
Considera che per un uso continuativo sono consigliati anche altri componenti aggiuntivi, il mio è solo un test.
Se hai problemi di ingombro ti consiglio i driver Pololu o EasyDriver che sono già completi e testati per funzionare correttamente a lungo.
Grazie mille per la risposta, opterò per i driver Pololu o EasyDriver.
In ogni caso, cosa devo sapere per poter scegliere un driver adatto alle mie necessità? (oltre costi ed ingombro)
Grazie ancora
Autore
Ci sono molte informazioni che ti occorrono, solo per citarne alcune: coppia, numero di passi, alimentazione, assorbimento per fase …
Direi che la cosa migliore è leggere della documentazione su un motore passo-passo da internet e studiare bene le sue caratteristiche prima di sceglierlo.
Salve non mi è chiaro questo punto
“Il negativo del cirduito devi collegarlo sia al GND di Arduino sia al negativo dell’alimentazione esterna”
il mio motore funziona a 12 volt, quindi al pin numero 8 ci attacco i 12 volt e la massa del mio alimentatore esterno la collego alla massa di arduino? Per il negativo del circuito cosa intende? Grazieee
Autore
Ciao Johny, la massa é anche detta negativo, comune, Gnd, terra é sempre lo sesso polo ed é l’unico che in un circuito deve essere comune a tutti i componenti e alimentazioni.
Attenzione: i pin Arduino tollerano al Max 5v, NON collegare 12v a nessun pin digitale o analogico arduino.
Buon giorno, io ho acquistato un l293d, lo posso utilizzare come driver per motori passo passo?
Grazie in anticipo.
Saluti Carmelo
Autore
Ciao Carmelo, é il meno indicato per questo scopo ma con qualche accorgimento software puoi farlo, io ho scritto dei tutorial in cui spiego come ho fatto.
io ho collegato il motore passo passo bipolare ad arduino,ma non fa i giri che dovrebbe fare,vibra solo senza girare
Autore
Ciao Simone,
potrebbe essere dovuto ad un tempo di pausa tra un passo ed il successivo troppo esiguo per cui il motore non riesce ad eseguire i passi che gli chiedi di eseguire.
In alternativa potresti semplicemente aver invertito le fasi o il loro collegamento per cui ti sembra che vibri ma in realtà esegue un passo in senso orario ed uno in senso antiorario così velocemente da simulare una vibrazione.
Prova in ogni caso ad aumentare a 1000 millisecondi il tempo tra un passo ed il successivo.
Salve, Ho collegato tutto come descritto nella sua guida. I motori sono questi http://………/itm/3-pz-Motore-passo-passo-NEMA-17-stepper-motor-arduino-rep-rap-ART-CN09-/261561200850?pt=LH_DefaultDomain_101&hash=item3ce64330d2 .
Il driver è il sn754410ne, come in descrizione. L’ho collegato ad una batteria del motorino da 12V, 7.2Ah.
Il fatto è che quando metto tutto in funzione il motore non fa che vibrare (cioè fa avanti e indietro). Ma la cosa più strana è che se collego i fili, nello stesso ordine, direttamente ad arduino mi funziona. (ovviamente ha una coppia molto bassa). Come è possibile?
Ho fatto alcuni esperimenti di collegamento ed ho notato che collegando la prima bobina (verde e nero) al driver e la seconda bobina (rosso e blu) direttamente ad arduino, il motore gira lo stesso. Ma appena inserisco anche la seconda bobina inizia a vibrare.
Non riesco a capire come mai. Forse devo cambiare driver? Grazie in anticipo, Alberto.
Autore
Ciao Alberto,
è vietato introdurre nei commenti link a siti di aste online o siti generalisti di vendita o annunci in quanto poi quei link scadono o spariscono ed altri appassionati non riescono a trovare i riferimenti necessari.
Il comportamento del tuo motore con questo driver potrebbe essere dovuto ad un pausa troppo breve tra una fase e la successiva che induce il motore a vibrare anziché muoversi.
Prova ad aumentare il tempo tra una fase e la successiva e se rilevi che il motore si muove puoi decidere di usare un differente driver per questo motore come l’easy driver o i pololu.
Ciao Mauro,
io ho un motore bipolare 57STH56 NEMA-23 con un controller PoStep 25-32 da collegare ad Arduino, vorrei controllare la velocità con un potenziometro ma non riesco a capire i collegamenti giusti.
il controller ha i seguenti pin:
-Enable,
-DIR,
-STP,
-Error (from PoStep to controller) O.C.
-e 5 GND
a quanto ho capito si collegano ad arduino e configurati come Output High o low
riesci a darmi una mano?
Grazie mille..
Autore
Ciao Demis,
non conosco quel controller, hai verificato che il produttore/venditore non abbia rilasciato degli esempi di sketch con cui utilizzarlo?
Posso consigliarti di provare con uno degli sketch che ho descritto per easyDriver o drv8825 adattandoli al tuo driver.
Secondo me può funzionare ma va provato dopo aver compreso bene come adattare circuito e sketch.
Grazie Mauro, ora do un occhiata grazie mille
Ciao Mauro,
Sono riuscito a farlo girare con alcuni sketch ma non alla velocità di 3000 RPM come descritto dal motore sai darmi consiglio?
Autore
Ciao Demis,
dipende molto dal tipo di driver che utilizzi e dai tempi che imposti nello sketch.
il driver è Postep 25-30, il motore è 57STH56 NEMA-23, vuoi i link?
Autore
Ciao Demis,
mi spiace ma non lo conosco, non l’ho mai provato.
Ok, Grazie ancora.
sempre riguardo i motorini controllo minimo sulle auto: è possibile collegare 2 motorini passo passo con 1 solo cavo a 4 fili, per farli muovere contemporaneamente? cioè solamente duplicando il cavo si può muovere 2 motorini simultaneamente, in modo che facciano lo stesso spostamento? questi motorini fanno uno spostamento lineare di circa 10 mm, non incontrano nessuna resistenza, semplicemente aprono un foro per passaggio aria, eventualmente come posso replicare i segnali di un motore per far funzionare l’altro allo stesso modo?grazie anticipatamente dell’ eventuale risposta
Autore
Ciao Roberto,
sulle stampanti 3D ad esempio si usa controllare 2 motori in parallelo con un unico driver di controllo sdoppiando i collegamenti.
Salve, volevo sapere come posso controllare un motore passo a passo di 3,6 volt e 6 ampere.. quale driver ( scheda) posso usare?? sa darmi qualche dritta a riguardo?? Grazie !
Autore
Ciao Eduardo,
in ambito makers o non professionale non conosco schede in grado di controllare motori con 6A per fase e voltaggio inferiore ai 6v.
Ti consiglio di orientare la tua ricerca in un ambito semi-professionale o professionale.
Autore
Ciao Eduardo,
in ambito makers o non professionale non conosco schede in grado di controllare motori con 6A per fase e voltaggio inferiore ai 6v.
Ti consiglio di orientare la tua ricerca in un ambito semi-professionale o professionale.
ciao,
ti ringrazio per tutte le tue pubblicazioni che mi sono state utili ma sui motori passo passo non ho idea da dove iniziare, tra l’altro lo devo pilotare con arduino mega che lavora 3,3 volt, supponendo di alzare i livelli logico o di trovare un driver adeguato volevo chiederti alcuni concetti base che mi sfuggono
n1. nello sketch sopra il motore fa un giro completo a ogni ciclo ? a me servirebbero fare una regolazione più accurata. come si fa ?
n2. se arduino lo blocca il ciclo e il motore sta fermo con l’alimentazione mantiene la posizione anche sotto un piccolo sforzo ? se no come si fa ?
grazie in anticipo
Autore
Ciao Armando,
ti consiglio di approfondire l’argomento sui motori passo-passo leggendo tutti i miei articoli e comprendendone i concetti di funzionamento.
Troverai tutte le risposte.
ciao. è possibile pilotare un passo passo bipolare con 4 transistor invece dell’integrato? con l’unipolare lo so fare ma con questo?
Autore
Ciao Davide,
non ho mai provato, trovo più semplice usare dei driver.
Buonasera Michele,
Sto sperimentando un po’ seguendo i tuoi tutorial. Ho qualche motore nema 17 su cui sto provando a pilotare con l’integrato L293C del kit basic Arduino.
Il motore nominale ha 0.65 A/phase, step 1.8°, coppia 1800 g*cm
Lo alimento con un alimentatore 12V (qui sotto l’immagine) sul pin dell’integrato
http://www.4shared.com/download/htj-4y_Zba/Foto_31-01-16_16_52_07.jpg?sbsr=0ff15930e88336068fb290bd1be8571b964&lgfp=3000
Qui l’immagine del circuito:
http://www.4shared.com/download/eg73u196ba/Foto_31-01-16_16_53_22.jpg?sbsr=7f4b942e8009f3e95e9a1ad71a1eaf6e964&lgfp=3000
Ho provato ad utilizzare la libreria Stepper, impostando come nr step 200 e come velocità 60 rpm (ne ho provate diverse, maggiori e inferiori). Il loop fa girare di un giro completo il motore in un senso e poi nell’altro.
Il problema è che il motore compie i primi 3 giri correttamente, poi inizia a vibrare e compie dei giri parziali, si ferma, riparte, …ha un funzionamento anomalo. Ho provato per scrupolo un altro motore simile (ma non identico, con corrente 0.6 A/ph)….ma il problema è lo stesso. Ho postato un video qui
http://www.4shared.com/video/SX1_b0pMce/Video_31-01-16_16_51_23.html
Qualche suggerimento/verifica? Grazie
Autore
Ciao Claudio,
io non uso la libreria Stepper in questo esempio e potrei non essere preciso nella risposta.
Il comportamento che evidenzi sembra essere legato all’assorbimento del motore, controlla il datasheet del SN754410NE non penso vada oltre i 40/50mA
Grazie Michele, il datasheet ST indica:
600mA OUTPUT CURRENT CAPABILITY
PER CHANNEL
1.2A PEAK OUTPUT CURRENT (non repetitive)
PER CHANNEL
Il motore che sto utilizzando è 0,6 A/ph. ll “channel” presumo includa l’output dei pin collegati alle fasi. Quindi in teoria non dovrei avere problemi, è borderline (=600 mA)….
Ho provato cmq anche seguendo il tuo esempio, modificando il Delay tra gli step, usando valori bassi (10 ms), quello dell’esempio (100 ms) e più elevati (500 ms) , ma non ho riscontrato differenze di comportamento significative….dopo un paio di giri abbondanti (….500 steps all’incirca) inizia a perdere sincronismo, a vibrare, e peggiora a tal punto da indurmi a staccare l’alimentazione…
Autore
Ciao Claudio,
Michele ha un altro blog 🙂 io sono Mauro.
Si sei borderline, sul datasheet che ho trovato io della TI il valore massimo è 60mA, mentre typ. 33mA
In ogni caso hai verificato la temperatura del motore quando perde colpi ed ha comportamenti errati ?
Prova anche a raffreddare il componente stesso.
Speravo non te ne accorgessi che ti ho chiamato per ben due volte Michele Sì, il motore si scalda subito, non è bollente ma dopo pochi secs è bello caldo. Sul datasheet sono abbastanza sicuro perchè l’ho scaricato dal sito Arduino. Provo un motorino ancora più piccolo e vedo se cambia qualcosa…
Autore
Ciao Claudio,
il datasheet deve essere del componente che possiedi non del sito arduino.
Ciao Mauro,
Il componente è parte del kit arduino basic starter, é il chip L293D della ST. In ingresso sul pin di alimentazione motore accetta 10-30V e la max corrente in uscita per canale è di 600mA (=0,6A). Tecnicamente non capisco se in uscita il chip “riduce” la corrente in base al carico collegato o invece alimenta il motore con tutta la corrente che arriva dall’alimentatore. Quest’ultimo eroga max 20A ai suoi 12V in uscita stabilizzati. Quindi come tensione è nel range che accetta l’integrato. Gli collego un motore bipolare con corrente per fase pari a 0,4A (quindi al disotto dei 0,6A max del datasheet), motore alimentabile a 9,6V (dal datasheet del motore, con resistenza di 24ohm/fase). Mi sembra che “sulla carta” tutto quadri, eppure il motore si scalda molto e perde subito steps girando random…non riesco a capire se mi sfugge qualche altro aspetto. Per l’integrato L293D la tensione di alimentazione del motore in ingresso al pin Vss deve essere esattamente la stessa di alimentazione del motore tal quale? Come se alimentassi il motore direttamente senza il chip? Grazie
Autore
Ciao Claudio,
perdonami ma non comprendo perché tu stia utilizzando un codice scritto per il SN754410NE su un componente differente.
Usa i codici e le connessioni presenti nel kit arduino o quanto meno codici adeguati al driver che possiedi.
Grazie Mauro,
I chip sono analoghi, due ponti H, e i codici vanno bene per entrambi. Comunque grazie per la disponibilità, continueró a seguirti
Ciao, Claudio
Autore
Ciao Claudio,
sono analoghi, come scrivi, ed il codice non penso sia la causa del problema.
Il comportamento che ottieni sembra causato dal surriscaldamento del componente e/o del motore, proverei a raffreddarli entrambi.
ciao Mauro
Grazie al tuo articolo/i sono riuscito a far funzionare motore stepper s35v2 recuperato scanner hp.
Funziona tutto perfettamente. MA o notato casualmente una cosa che mi preccupa.
Stacando accidentalmente l’alimentazione 12 vcc(piedino 12 – l293D) il motore continua a funzionare nat + lentamente.
i collegamenti sono giusti e controllati allo sfinimento…. Non mi sembra normale…
Ti ringrazio ancora per gli ottimi e “chiari” articoli
Autore
Ciao Mauro,
se hai alimentato il chip con i 5v di arduino è lui che sta fornendo la tensione/corrente necessaria.
Tuttavia ti sconsiglio di perseverare in quanto la corrente erogata dai pin di arduino e dal circuito di alimentazione +5v è insufficente al corretto funzionamento del motore e rischi di compromettere il funzionamento dell’arduino o della porta USB del Pc.
Ciao,
per prima cosa voglio farti i complimenti per il tutorial che trovo veramente completo e interessante, dopo averlo letto ora mi accingo a fare qualche esperimento.
In particolare avrei la necessità di pilotare un attuatore lineare che se non ho capito male dovrebbe essere un motore passo passo bipolare.
Dato che dal lato “elettronico” faccio un po fatica vorrei chiederti conferma se con questo motore posso utilizzare le tue lezioni…
Questo è il motore:
http://www.sonceboz.com/medias/Products/PDFs/datasheets%20V2/7217%20NEW.pdf
Come driver ho preso quello da te consigliato Easydriver.
Grazie
Andrea
Autore
Ciao Andrea,
se segui i miei tutorial ed il datasheet indicato dal produttore riuscirai facilmente a controllare questo attuatore lineare passo-passo.
Ciao Mauro,
mi sono imbattuto casualmente nel tuo blog alla ricerca disperata di consigli o esempi su come far funzionare uno stepper da remoto e siccome vedo che i tuo consigli sono molto seguiti mi permetto di chiederti anch’io un consiglio ….
Ho a disposizione questi componenti:
Arduino UNO,
un modulo Shield GSM GPRS per Arduino, con SIM CARD,
un driver “Shield v1.1”
un motore passo passo NEMA 17.
Vorrei far ruotare di due giri l’asse dello stepper inviando al modulo GSM un SMS un messaggio (solo una parola) tramite SMS o whatsapp e poi, in un seconto momento (ore o giorni) farlo girare al contrario, sempre di due giri, all’invio di un ulteriore messaggio (sempre e solo una parola).
Purtroppo non sono capace di programmare un’apposito sketch per Arduino… Saresti così gentile da fornirmi un tutorial per principianti assoluti o uno sketch che io possa modificare?
Ti ringrazio moltissimo
Sergio
Autore
Ciao Sergio,
ti consiglio di partire con il mio corso base on-line gratuito arduino ed imparare pian piano a programmare fino ad arrivare a progetti complessi come il controllo di attuatori ( nel tuo caso stepper ) con un cellulare via sms.
Buonasera, sto costruendo un progetto che consiste in una porta automatica per il mio pollaio; ho già creato la parte fisica utilizzando un pannello in plexiglass e una vite senza fine con un motore (VORCOOL Nema 17 Motore Passo a Passo con Cavo per Stampante 3D – 4 Fili Fase 2 34mm 1.8°) , quest’ultimo è collegato alla scheda ( Kuman L293D Motor Drive Shield) anch’essa collegata ad arduino; vorrei sapere un modo per riuscire a pilotare questo motore tramite un pulsante, che quando viene premuto dice al motore di girare tante volte abbastanza per far chiudere la mia porta, e con un finecorsa e un led mi segnali che questa sia chiusa, e ripremendo il pulsante, il motore giri in senso opposto facendo in modo che la porta si riapra facendo spegnere il led. È possibile anche senza l’aiuto della scheda aggiuntiva?
Autore
Ciao Michele,
nel blog trovi tutte le informazioni che chiedi.
Proprio in questi giorni ho preso in considerazione il discorso motori passo passo utilizzando una nuova shield, purtroppo non possiedo e conosco quella da te utilizzata, ma se i concetti sono riproducibili puoi modificare il mio sketch.
[…] Mauro Alfieri Tweet Nel precedente articolo hai imparato come funziona un motore bipolare, e forse hai già sperimentato lo sketch di esempio […]
[…] 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 […]
[…] 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. […]
[…] 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 […]