Il driver della Pololu a4983 è un driver per motori passo-passo semplice da utilizzare e molto preciso, l’integrato a4983 è utilizzato anche per la realizzazione di altri driver non prodotti dalla pololu ed il suo funzionamento non differisce da questo articolo.
Ho trovato in internet due versioni di questo driver entrambe prodotte dalla Pololu una con regolatore di tensione ed una senza il regolatore di tensione entrambe le versioni sono state sostituite da una scheda identica basata dul regolatore a4988.
Poiché io ho acquistato la versione con l’a4983 ti mostro come realizzarci i tuoi progetti, ma puoi sostituire il driver con l’a4988 avendo la Pololu mantenuto la medesima piedinatura per entrambe le schede.
Il Pololu a4983 può pilotare motori bipolari con una corrente massima di 2A, per raggiungere potenze tali ti consiglio di dotare il driver di una aletta di raffreddamento adeguata per evitare che fonda.
Il circuito per testare il driver pololu a4983
Per eseguire i primi test devi saldare degli strip alla basetta per poi collegarla alla breadboard o sul tuo progetto finale.
Sul sito del produttore puoi trovare sia la piedinatura della scheda:
sia uno schema base di connessione dei pin:
ti suggerisco di osservarli bene prima di procedere al montaggio in quanto la serigrafia dei circuiti è inserita dal lato opposto ai componenti per cui una volta montato sulla breadboard:
non vedi più come sono disposti i pin, ed inoltre devi ragionare a specchio rispetto alla prima foto.
Per eseguire i primi test puoi utilizzare questo schema di collegamento al motore passo-passo ed ad arduino:
nello schema è rappresentato il driver senza regolatore di carica, per questo ti mostro anche lo foto del driver montato sulla breadboard anche con i pulsanti a cui l’ho collegato:
per questo test ti bastano solo i primi due pulsanti connessi rispettivamente al pin 8 ed al pin 7 di arduino, gli altri collegamenti da arduino verso i pin MS1,2 e 3 del driver Pololu a4983 e dai 3 pulsanti ai pin 4,5 e 6 di arduino puoi ometterli in questo primo test, ti serviranno per attuare le riduzioni di step con questo driver, te le mostrerò in un prossimo articolo.
Lo sketch di test per il pololu a4983
E’ giunto il momento di caricare su arduino lo sketch di test per provare il funzionamento del driver pololu a4983:
int DIR = 2; int STEP = 3; int Rotate = 7; int pinGo = 8; void setup() { Serial.begin(9600); pinMode(DIR, OUTPUT); pinMode(STEP, OUTPUT); pinMode( pinGo,INPUT ); pinMode( Rotate,INPUT ); } void loop() { digitalWrite(DIR,HIGH); delay(50); if ( digitalRead( Rotate ) == HIGH ) { for ( int i=0; i<200; i++) { stepGo(); delay(10); } } if ( digitalRead( pinGo ) == HIGH ) { delay( 300 ); stepGo(); } } void stepGo() { digitalWrite(STEP, HIGH); delayMicroseconds(100); digitalWrite(STEP, LOW); delayMicroseconds(100); }
il motore bipolare che ho utilizzato è un 200 passi = 1,8° per passo, questa informazione è necessaria per comprendere il ciclo for presente alla linea 22 che si attiva alla pressione del pulsante connesso al pin Rotate (pin 7 di arduino) e fa compiere al motore passo passo un giro completo ossia 200 step.
Lo sketch è molto semplice in quanto tutto il lavoro di spostamento lo esegue la funzione stepGo() definita alle linee 30-35: in pratica ogni volta che nella funzione loop() viene invocata la stepGo() arduino genera un segnale HIGH e LOW a distanza di 100 millisecondi sul pin 3 ( STEP ) e indica al driver pololu a4983 di spostare il motore di un passo in avanti.
Il verso di rotazione è stabilito dalla presenza sul pin 2 ( DIR ) di un segnale HIGH che hai definito alla linea 18 dello sketch.
Quindi premendo il pulsante ROTATE connesso al pin 7 il motore esegue 200 passi = 360° = un giro completo, premendo il pulsante pinGo connesso al pin 8 il motore esegue un solo passo ad ogni pressione.
Ho realizzato un video per mostrarti come funziona questo sketch:
Buon divertimento !!!
36 commenti
1 ping
Vai al modulo dei commenti
cerco gruppi di arduino a firenze
fabio
Autore
Ciao Fabio,
spero tu ne possa trovare anche grazie a questo annuncio, a che progetto stai lavorando?
Mauro
caro Mauro,
nella descrizione hai scritto che “Il Pololu a4983 può pilotare motori bipolari con una corrente massima di 2A”.
se io invece avessi bisogno di un driver per un motore bipolare con una corrente massima di 10 A?? cosa mi consigli? sul web non se ne trovano…
grazie
Pittino
Autore
Ciao Pittino,
so che non è facile trovarne nel mondo hobbystico, devi provare nella fascia dei prodotti professionali.
Se trovo qualcosa te lo inoltro.
Mauro
Ciao, sto costruendo una stampante 3D, un prusa i3, essendo arrivato alla parte elettronica volevo eseguire un test su motori e driver prima di accendere la RAMPS.
Ho riprodotto fedelmente lo schema, ho ricontrollato tre volte i collegamenti e lo sketch solo che sulla pressione dei pulsanti non succede nulla.
Ho provato anche a utilizzare un altro motore / driver / pulsante.
Per i cavi mi sono basato su queste specifiche: [http://www.linengineering.com/resources/wiring_connections.aspx]
Quindi ROSSO(1A) BLU(2A) VERDE(1B) NERO(2B)
Utilizzo dei a4988 [http://reprapsource.com/en/show/6806]
e dei Nema 17 bipolari [http://reprapworld.com/?products_details&products_id=94&cPath=1614]
Qui trovi i miei collegamenti: [https://www.dropbox.com/sc/mv08d7sei74bajw/GziQx4hSIm]
La pila da 9V è carica, come la collego i led dell’Arduino si accendono.
Il potenziometro del pololu è a un 1/4 di giro.
Qualche idea. Grazie, ciao.
Autore
Ciao Fabrizio,
controlla i collegamenti del driver pololu a volte tra le versioni di driver cambiano i collegamenti di alimentazione o per la definizione dei micro passi.
Mauro
Ciao, ho cercato un po’ in internet e con una piccola modifica sono riuscito a fare girare il nema 17.
Rispetto al tuo schema ho dovuto collegare VDD-pololu a 5V-arduino e poi ponticellare reset e sleep.
Ho utilizzato il tuo sketch, il micro passo funziona mentre il giro completo non tanto,
esegue neanche un quinto di giro e poi sento il motore che sforza e si ferma.
Se vuoi non pubblicare questi due interventi, se invece hai qualche consiglio e hai voglia e tempo
🙂 rispondimi alla mia email.
Grazie e ciao.
Autore
Ciao Fabrizio,
così come lo descrivi sembra un problema di collegamento delle fasi.
In pratica il singolo passo sposta il motore ma al passo successivo, o qualche passo dopo, una fase non riceve la corretta alimentazione e inverte il passo invece di avanzare; questo comportamento determina il malfunzionamento che rilevi sul giro completo.
Mauro
Ciao, risolto tutto, avevo collegato male 2A 2B 1A 2B, per il mio Nema 17 (42BYGHW811) la configurazione corretta è: rosso(2A) blu(2B) verde(1A) nero(1B)
Ti ringrazio per l’articolo mi è veramente utile. Adesso posso eseguire dei test su tutti i motori – pololu
così quando alimenterò la RAMPS se avrò dei problemi potrò concentrarmi su altro sapendo che
questi funzionano.
Grazie ancora, ciao.
Autore
Ottimo Fabrizio,
sono contento che tu sia riuscito a risolvere il problema.
Mauro
Ciao Mauro,
sto ancora (sigh!) lavorando al progetto di inseguitore “barn door tracker” per astrofotografia (è passato un po’ di tempo).
A causa delle eccessive vibrazioni indotte dal motore a regimi bassissimi (1 rpm), devo sostituire l’integrato SN754410N con cui pilotavo lo stepper con un driver che mi consenta il micro-passo e questo pololu a4988 mi sembra adatto (1/16 mi sembra il massimo che si possa ottenere con una spesa modesta).
Ho un dubbio: alle linee 30-35 hai inserito la funzione delayMicroseconds(100) tra l’accensione/spegnimeto del pin STEP. A cosa serve?
Devo impostare una velocità di rotazione dello stepper precisa al millisecondo e credo questo ritardo influisca sulla velocità di rotazione finale dell’albero, assieme a quello della linea 22 “delay (20)” …
Grazie, sempre utilissimo il tuo sito!
Autore
Ciao Andrea,
mi fa piacere leggere del tuo progetto.
Ogni mio sketch è commentato sotto per aiutarti a comprenderlo e modificarlo. Anche questo, se leggi il testo, trovi le linee critiche dello sketch tra cui anche le 30-35.
Come driver ti consiglio di provare/leggere anche del DRV8825 una vera potenza con 1/32 di passo possibile.
Si, grazie, avevo letto le linee di commento… mi chiedevo però se il ritardo di 100 microsecondi nell’impulso di accensione al pin STEP fosse dettato da qualche esigenza di risposta del pin stesso …
ho dato un’occhiata al driver che mi hai indicato… mi sembra molto adatto!
Autore
Ciao Andrea,
no serve solo per regolare il corretto funzionamento del driver e controllarne la velocità.
Ciao Mauro, alle fine ho scelto il driver DRV8825, con riduzione di passo fino a 1/32.
Scrivo qui per continuità con i messaggi precedenti, ma se vuoi sposto il tutto nel post specifico per questo tipo di driver …
sono vicino ad ultimare il mio progetto (inseguitore “barn-door” per astrofotografia) …
Sto facendo alcune prove di controllo…
Ora una domanda, se puoi ancora aiutarmi…
Uso uno stepper bipolare Mercury motor SM-42BYG011-25, con queste caratteristice: angolo 1.8°, 12V, resistenza per fare 34 ohm, Intensita corrente per fase 0,33A
Alimento il tutto con una batteria ad 12V, 2200 mAh (12 batterie AA ricaricabili in serie)
Ho eseguito e controllato tutti i collegamenti elettrici al driver DRV8825, impostano il micropasso a 1/32.
Ho anche regolato la Vref del motore a 0.135 V, secondo le indicazioni trovate in rete, per avere una intensità massima pari a circa 80% della corrente dichiarata sul datasheet.
Il motore sembra funzionare correttamente, a parte una rumorosità che non è costante durante il ciclo, ma ha un andamento sinusoidale (è normale?)
Ho fatto una prova, per pignoleria, amplificando ad un secondo il tempo tra un micropasso e il successivo, per valutare se tutti i micropassi erano eseguiti correttamente …
Trovo un andamento strano … il motore esegue correttamente circa 28-30 micropassi, poi ho l’impressione che ne perda 2-4 arrestandosi e poi ricominciando a muoversi …ciclicamente.
Ho questo dubbio: forse l’alimentazione non è dimensionata correttamente per questo tipo di motore che lavora ad alto voltaggio e bassa intensità? Da qualche parte ho letto (ma potrei sbagliare) che per gestire il micropasso bisogna avere tensioni in ingresso maggiori di quelle di lavoro del motore …
Scusa se mi sono dilungato … le mie conoscenze elettroniche sono molto scarse … ma mi piacerebbe aver conforto sul modo in cui studiare e risolvere il problema …
Autore
Ciao Andrea,
i motori che utilizzo normalmente nei miei esperimenti sono costanti e a meno di collegamenti errati o sforzo meccanico eccessivo che induca la perdita di passo non saperi dirti cosa comporta il fenomeno che osservi.
Ti inviterei a provare con uno dei motori che ho testato ed eseguire dei test con un astina, sufficientemente lunga ( 20/30cm ), montata direttamente sull’albero del motore per verificare visivamente quale sia il momento in cui perde passi.
Ciao Mauro,
i tuoi tutorial sono sempre molto utili, complimenti.
Ho un problema con un motore passo passo comandato dal drivere A4988.
Ho seguito alla lettera i collegamenti e lo sketch da te descritti, funziona tutto bene, ma in fase di avvio di arduino, il motore ruota di qualche grado avanti e indietro senza alcuna logica. Se prima faccio avviare arduino e poi alimento il driver con i 5V, questo malfunzionamento non si verifica.
Hai idea da cosa può dipendere.
Autore
Ciao David, questo articolo si riferisce ad un altro tipo di drive, sei certo che i pin ed i collegamenti siano gli stessi?
Verifica che il tuo drive non invii ad arduino i 5v di alimentazione, in tal caso potrebbe essere la causa del malfunzionamento.
Ciao, mi chiamo Francesco e vorrei autocostruirmi un mulino per macinare l’orzo con una macchina per fare la pasta sfoglia, essendo parecchio pigro volevo utilizzare un motore passo passo per renderlo automatizzato.
Ho trovato un motore della stampante, 17pm-j a sei fili, e volevo capire che tipo di driver mi possa servire.
Puoi aiutarmi?
Autore
Ciao Francesco,
probabilmente la scelta del motore passo-passo non è la migliore per il tipo di applicazione essendo necessaria molta coppia che non è prerogativa dei motori stepper.
Tuttavia, volendo utilizzarlo, puoi leggere i miei articoli sui motori passo-passo a 6 fili per comprendere come trasformarli in stepper bipolari ed usare un driver come quello descritto in questo articolo.
chiedo aiuto per trovare un driver idoneo a pilotare motori passo passo. ho questo tipo di motori :HV-200-2215-150 A B ‘ scritto 1,5 A/fase e 1,5 Ohm/fase. è un motore ad 8 fili. grazie
Autore
Ciao Riccardo,
hai cercato nel Blog? Ci sono driver fino a 3A per fase tipo i DRV8825 o EasyDriver
ciao! sono alle mie prime esperienze.volevo chiederti se si possono ottenere risultati identici con un driver ULN2003A?
Autore
Ciao Alessandro,
si possono ottenere risultati simili ma con molta più programmazione e studio degli algoritmi.
Ho scritto qualche articolo dedicato all’ULN2003, cercalo nel blog.
Ciao!che tipo di motore hai utilizzato?
Il mio scopo è quello di utilizzarlo per far girare una ruota di pladtica molto leggera per realizzare un dispencer che gia a 45 gradi alla volta in almeno in un secondo
Autore
Ciao Ale,
ho già risposto a questa richiesta in un altro articolo che puoi leggere.
al momento ho un nema 17 .va bene?
riguardo la resistenza sulla resistenza è di 100 kohm?
ciao! io sto provando con il driver A4988 con il tuo codice ma non funziona ,l’unica differenza di circuito che ho fatto è quella di ponticellare reset/sleep
Autore
Ciao Alessandro,
hai messo in reset il driver ?
come si mette in reset il driver?io ho connesso reset a sleep e cosi è rimasto
comunque all’inizio sembra funzionare ,io ho impasto a 25 per far compiere 45 gradi alla volta.Ma come mai dopo che un paio di volte ha lavorato bene,compiendo i suoi giri a step di 45 gradi,poi ad un certo punto non procede piu premendo il pulsante
ho alimentato con la pila di 9 volt il modello del motore è 42BYGHW208
Autore
Ciao Alessandro,
potrebbe essere un errore software, controlla con il monitor seriale se si blocca in qualche punto o esegue qualche istruzione errata.
ci sono riuscito a realizzare il circuito
vorrei solo un piccolo aiuto su come modificare il codice per inserire un buzzer ,che premendo il pulsante 7 oltre a fare girare il motore a gradi ,in contemporanea me lo faccia suonare di circa un secondo (se questo ad esempio è collegato al pin 4)
Autore
Ciao Alessandro,
ci sono molti modi di far suonare un buzzer hai provato a leggere quelli proposti sul blog?
ciao! per quasi un minuto ,sembra che tutto proceda bene,che il motore gira i suoi step impostati,poi si ferma o va a scatti.Ma può essere un problema di alimentazione con la pila da 9 volt?? ho alimentato sia il motore il nami 17 con driver A4988 e arduino
poi stranamente ,se dopo un po rialimenti,ritorna a fare i suoi giri,la pila non sembra esaurita ed è nuova,guarda il video.Spero di trovare una soluzione:
https://drive.google.com/drive/folders/1Tvk84_KKdsXtDdJZfouT2-8Mt4v4aWuM
Autore
Ciao Alessandro,
sembra un problema di sketch.
[…] Pololu a4983 driver per motori passo-passo » […]