Come collegare un motore stepper ad Arduino con l298n

Questo tutorial vi sarà utile per scoprire come collegare un motore passo passo ad Arduino utilizzando un driver l298n.

Come potete vedere, anche nel mio blog, esistono vari tipi di motori e vari modi di collegarli.
Oggi vi mostrerò quello che secondo me è un ottimo modo per collegare dei motori con una coppia relativamente alta ed utilizzarli nei nostri progetti.

Il modulo che ho usato monta un chip L298N, ha un prezzo molto basso e può pilotare un motore stepper con assorbimento fino a circa 2 Ampere (dipende da vari fattori, tra cui il tipo di dissipatore).
Per farvi un idea vi metto un link eBay dove potete trovarlo.

Il video qui sotto vi mostra cosa farà nel nostro esempio il motore collegato al modulo L298N.









Qui sotto potete vedere il collegamento da effettuare per utilizzare il vostro driver per motori.
Sui morsetti OUT 1 e OUT 2 del modulo dovete collegare una fase del motore, sui morsetti OUT 3 e OUT 4 l'altra fase.
Per riconoscere una fase del motore dovete munirvi di un multimetro e impostarlo come ohmmetro, quando troverete due fili che vi daranno una resistenza molto bassa tra loro avrete trovato una fase, ovviamente gli altri 2 fili saranno l'altra.


Nell'immagine sopra ho cercato di riprodurre al meglio il modulino, ma considerate che solitamente è rosso o blu, quindi no, non avete sbagliato tutorial!

Solitamente sul modulo è presente anche un ponticello, se chiuso la tensione 5V verrà generata direttamente all'interno del modulo, quindi non sarà necessario fornirgliela. Se non mettiamo il ponticello invece, dovremo fornirgli il 5V esternamente, ad esempio come fatto con il nostro Arduino nello schema sopra.

Lo sketch da caricare questa volta lo trovate negli esempi di arduino, sotto File → Esempi → Stepper → stepper_oneRevolution

Comunque per completezza lo riporto anche qui sotto:

  1. /*
  2.  Stepper Motor Control - one revolution
  3.  This program drives a unipolar or bipolar stepper motor.
  4.  The motor is attached to digital pins 8 - 11 of the Arduino.
  5.  The motor should revolve one revolution in one direction, then
  6.  one revolution in the other direction.  
  7.  Created 11 Mar. 2007
  8.  Modified 30 Nov. 2009
  9.  by Tom Igoe
  10.  */
  11. #include <Stepper.h>
  12. const int stepsPerRevolution = 200;  // change this to fit the number of steps per revolution
  13.                                      // for your motor
  14. // initialize the stepper library on pins 9 through 12:
  15. Stepper myStepper(stepsPerRevolution, 9,10,11,12);            
  16. void setup() {
  17.   // set the speed at 60 rpm:
  18.   myStepper.setSpeed(60);
  19.   // initialize the serial port:
  20.   Serial.begin(9600);
  21. }
  22. void loop() {
  23.   // step one revolution  in one direction:
  24.    Serial.println("clockwise");
  25.   myStepper.step(stepsPerRevolution);
  26.   delay(500);
  27.    // step one revolution in the other direction:
  28.   Serial.println("counterclockwise");
  29.   myStepper.step(-stepsPerRevolution);
  30.   delay(500);
  31. }

Bene, spero che sia tutto chiaro, se ci sono problemi lasciate un commento qui sotto, ciao!

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

3 commenti:

  1. Buona sera, Mi chiamo Daniele e ti seguo da un po' di tempo. Non so se mi puoi aiutare ma volevo capire se si può inserire un pulsante di Star ed un di Stop nell'esempio che hai pubblicato.grazie e scusa se ti ho disturbato.

    RispondiElimina
  2. Salve mi chiamo Riccardo ho visto questo tuo articolo sui motori passo passo e dato che non ho esperienza volevo chiederti se è possibile programmare in maniera che il motore un passo alla volta ogni 2 secondi di modo che per ottenere una rotazione di 180° impieghi un tempo abbastanza lungo in funzione del numero di step del motore. Scusa se forse chiedo troppo ma visto la tua conoscenza penso tu sia la persona più adatta a rispondere. Grazie Riccardo

    RispondiElimina
    Risposte
    1. Ciao, potresti programmare il movimento di uno step alla volta e mettere un delay di 2 secondi

      Elimina

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

Altri Post