Pilotiamo dei grossi motori con Arduino!

Quando il gioco si fa duro.. Arduino comincia a giocare!
oggi vediamo come funziona questo bellissimo modulo per Arduino,
si chiama Powerlolu e permette di controllare motori stepper fino a 10 Ampere!



Ecco allora che vi mostro questa promettente scheda:


Nota dolente il prezzo, infatti potete trovarla già assemblata intorno ai 50 euro, ad esempio qui,
ma il bello è che è open source e quindi potete costruirvela da soli e gli schemi sono disponibili online qui!

Passo alla prova pratica, realizzate i collegamenti in questo modo:

Scusate se questa volta lo schema è un po' meno chiaro del solito ma ho dovuto modificarlo con photoshop!
se quualcosa non dovesse essere chiaro lasciatemi un commento/insulto :)

Fatto il montaggio elettrico caricate questo sketch di prova, farà semplicemente ruotare il vostro motore prima in un verso e poi nell'altro.

  1. int Dir1=2;
  2. int Step1=3;
  3. int Enable1=4;
  4. int tempomotore=20;
  5. void setup()
  6. {
  7.   pinMode (Enable1, OUTPUT);
  8.   pinMode (Step1, OUTPUT);
  9.   pinMode (Dir1, OUTPUT);
  10. }
  11. void loop()
  12. {
  13.   for (long i=0; i<200000; i++)
  14.   //200000 è il numero di passi che farà il motore
  15.   {
  16.     digitalWrite (Enable1, LOW);
  17.     //con il pin "enable" a livello basso il driver si "accende"
  18.     digitalWrite (Dir1, LOW);
  19.     /* con il pin "dir" a livello basso il motore gira in un senso,
  20.     con il pin  a livello alto gira nell'altro. */
  21.     digitalWrite (Step1, HIGH);
  22.     delayMicroseconds (tempomotore);
  23.     digitalWrite (Step1, LOW);
  24.     delayMicroseconds (tempomotore);
  25.     /* ogni volta che il pin "step" passa da livello basso ad alto,
  26.     il motore compie un passo. */
  27.   }
  28.   digitalWrite (Enable1, HIGH);
  29.   //con il pin enable a livello alto il driver si "spegne"
  30.   delay(1000);
  31.   for (long i=0; i<200000; i++)
  32.   {
  33.     digitalWrite (Enable1, LOW);
  34.     digitalWrite (Dir1, HIGH);
  35.     digitalWrite (Step1, HIGH);
  36.     delayMicroseconds (tempomotore);
  37.     digitalWrite (Step1, LOW);
  38.     delayMicroseconds (tempomotore);
  39.     /* questo ciclo serve a far girare il motore nel senso opposto,
  40.     infatti l'unica cosa che cambia rispetto a sopra è il livello del
  41.     pin "dir" */
  42.   }
  43.   digitalWrite (Enable1, HIGH);
  44.   delay(1000);
  45. }

Ciao a tutti e al prossimo tutorial!

Seguimi sulle mie pagine per rimanere sempre aggiornato sui nuovi post!

7 commenti:

  1. salve
    sono rega e ti faccio i miei piu sinceri congratulazioni-
    volevo chiederti: dove posso trovare questi motori da 10A.
    regaanvi@gmail.com
    grazie

    RispondiElimina
  2. salve e grazie per la dritta sul main menu nello sketch, sei stato veramente tempestivo e ho apprezzato molto il tuo impegno fattivo. mi incuriosisce questo motore potente e la scheda poichè vorrei realizzare una macchina cnc; logicamente scheda e motore vanno moltiplicati per 3, quanti gli assi per la tridimensionalità se si vuol costruire una macchina potente. ho acquistato 3 kit piccoli comprensivi di motore e scheda driver per arduino, ancora da aprire, giusto per fare un piccolo test ma presumo, e qui la domanda sorge spontanea, che ci sia amcora qualche modulo per interfacciare il tutto ( i tre moduli per asse) con il pc (via usb probabilmente) e un programma cad che dovrebbe vedere tutto questo ambaradam di sistema come una stampante... vero? grazie e saluti

    RispondiElimina
    Risposte
    1. La scheda per interfacciarsi con il PC è la stessa Arduino (tramite cavo USB), solo che serve uno sketch da caricare all'interno che ti permetta di gestire i motori (la stessa cosa avviene nelle stampanti 3d)
      Solo che io non ho questo sketch, dovresti fare una ricerca per vedere se qualcuno sta lavorando ad un progetto simile. Ciao!

      Elimina
  3. Questo commento è stato eliminato dall'autore.

    RispondiElimina
  4. Complimenti per la spiegazione.
    Vorrei aggiungere qualche dettaglio a chi fosse interessato a pilotare delle macchine cnc di grandi dimensioni (anche piccole perche il sistema é lo stesso) bisogna Caricare su Arduino lo sketch "GRBL" (meglio iniziare con arduino MEGA se si vogliono pilotare piu di tre motori o se si vuole utilizzare un quarto asse). GRBL su arduino funge da interfaccia/traduttore dei comandi GCODE verso i driver di potenza. il file GCODE viene inviato a GRBL tramite un software chiamato "Universal GCODE Sender" che funziona molto bene con moltissimi formati Gcode esportati dai piu comuni software CAM tipo BOB CAD, ARTCAM etcc ecc.. Ho realizzato una scheda simile a questa Powerlolu che é basata Sul driver Allegro A4989. ma il PCB che ho creato permette realmente di arrivare a pilotare motori fino a 500 W. perche basata sullo sbroglio originale del PCB di esempio fornito da ALLEGRO MICRO Che ha ampie superfici di dissipazione del calore prodotto dai Mosfet di potenza e sopratutto un perfetto sbroglio dei percorsi delle piste che dal 4988 vanno a gestire i due ponti H che lavorando in modalita' PWM inducono sulle piste di segnale effetti parassitici non indifferenti se i PCB non sono realizzati a dovere. a breve pubblichero' su' thingiverse.com i file necessari per realizzare la mia schedina che si chiamera " BEE A4989 Stepper Motor Driver ".

    RispondiElimina
    Risposte
    1. Grazie mille per il tuo contributo! Se vorrai poi potremmo fare un post ad hoc mostrando la tua scheda, sembra molto interessante!

      Elimina
  5. Ciao Daniele,
    mi sono costruito un driver da 10a power lolu per pilotare un motore stepper;
    avrei un dubbio ... chi invia il 5 volt alla scheda driver filo rosso sul connettore x4 dove ci sono anche step/dir/enable...? viene da arduino uno il 5 volt ..? ringrazio per l'eventuale risposta
    Sandro

    RispondiElimina

Lascia un commento qui sotto, ti risponderò il prima possibile!

Altri Post