«

»

Dic 05

Stampa Articolo

Pololu a4983 driver per motori passo-passo

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.

pololu a4983 driver per motori passo-passo bipolari

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:

pololu a4983 retro

sia uno schema base di connessione dei pin:

pololu a4983 schema base

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:

pololu a4983 montato

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:

schema pololu a4983 rotazioni

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:

pololu a4983 breadboard

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 !!!

Permalink link a questo articolo: http://www.mauroalfieri.it/elettronica/pololu-a4983-driver-motori-passo-passo.html

22 comments

1 ping

Vai al modulo dei commenti

  1. fabio

    cerco gruppi di arduino a firenze
    fabio

    1. Mauro Alfieri

      Ciao Fabio,
      spero tu ne possa trovare anche grazie a questo annuncio, a che progetto stai lavorando?

      Mauro

  2. Pittino

    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

    1. Mauro Alfieri

      Ciao Pittino,
      so che non è facile trovarne nel mondo hobbystico, devi provare nella fascia dei prodotti professionali.
      Se trovo qualcosa te lo inoltro.

      Mauro

  3. fabrizio

    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.

    1. Mauro Alfieri

      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

  4. fabrizio

    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.

    1. Mauro Alfieri

      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

  5. fabrizio

    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.

    1. Mauro Alfieri

      Ottimo Fabrizio,
      sono contento che tu sia riuscito a risolvere il problema.

      Mauro

  6. Andrea Guzzini

    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!

    1. Mauro Alfieri

      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.

      1. Andrea Guzzini

        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!

        1. Mauro Alfieri

          Ciao Andrea,
          no serve solo per regolare il corretto funzionamento del driver e controllarne la velocità.

  7. Andrea Guzzini

    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 …

    1. Mauro Alfieri

      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.

  8. David

    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.

    1. Mauro Alfieri

      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.

  9. Francesco

    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?

    1. Mauro Alfieri

      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.

  10. riccardo

    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

    1. Mauro Alfieri

      Ciao Riccardo,
      hai cercato nel Blog? Ci sono driver fino a 3A per fase tipo i DRV8825 o EasyDriver

  1. Pololu a4983 arduino ridurre i passi del bipolare - Mauro Alfieri

    […] Pololu a4983 driver per motori passo-passo » […]

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Puoi usare i seguenti tag ed attributi HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>