Come usare scheda motor driver L298N con Arduino

Impara ad usare il motor driver L298N con Arduino per comandare motori in continua e motori passo passo.

Il mio amico Aldo ha recentemente acquistato una scheda “cinese” per comandare dei motori passo passo, ed all’occorrenza anche dei motori in continua. L’affare era troppo allettante per non farlo, ma spesso le “cinesate” non danno informazioni particolareggiate su come utilizzare la scheda elettronica. Vediamo di analizzare la scheda ed imparare ad utilizzarla per i nostri progetti con Arduino.

La scheda elettronica, grande 60×56 millimetri, si basa sull’integrato L298N. Questo circuito integrato è composto da due ponti ad H. Il ponte H è una particolare configurazione elettronica che permette di invertire la marcia/direzione dei motori utilizzando un segnale di comando a 5V TTL. Le caratteristiche principali di questo integrato sono:

– può comandare 2 motori in corrente continua o 1 motore passo passo con correnti fino a 2A per motore/uscita

– può essere alimentato da 7,5 a 46V con tensione e corrente continua

– è dotato di protezione termica

– fornisce la possibilità di misurare la corrente assorbita dai motori

– può funzionare con un segnale PWM con frequenza massima di 40 kHz

Il circuito elettrico di questa scheda elettronica lo vedete nella figura sotto:

motor driver arduino con L298N - circuito elettrico
motor driver arduino con L298N – circuito elettrico

mentre nella immagine seguente vedete le connessioni elettriche:

motor driver arduino con L298N - vista connessioni elettriche
motor driver arduino con L298N – vista connessioni elettriche

Come alimentare la scheda motor driver:  per far funzionare il motore dobbiamo alimentare la scheda elettronica. Possiamo utilizzare una batteria o un alimentatore elettronico. La scheda funziona con un minimo di 7,5 Volt. Questo la rende ideale per far funzionare motori da 9 o 12 Volt. I segnali di comando di Arduino funzionano con 5 Volt. Questa scheda elettronica è dotata di un regolatore di tensione che abbassa la tensione di ingresso a 5 Volt. Così possiamo collegare direttamente i segnali di comando dalla scheda Arduino alla scheda motor driver senza problemi. Volendo possiamo alimentare la stessa scheda Arduino direttamente con la scheda motor driver. Il polo positivo della batteria/alimentatore (filo rosso) lo colleghiamo al morsetto chiamato VMS. Il polo negativo lo colleghiamo al morsetto chiamato GND. Al morsetto chiamato 5V possiamo collegare la scheda Arduino.

Impostazione dei ponticelli/jumper: tutto dovrebbe funzionare con i ponticelli collegati come vedete nella figura sopra “vista connessioni elettriche”.

Uscite motore: le due uscite chiamate “MOTORA” e “MOTORB” possono alimentare due motori separati, un singolo motore fino a 4A usando le uscite in configurazione parallelo. In alternativa possono alimentare un singolo motore passo passo a “quattro fili”.

Ingressi di comando: servono per avviare il motore o cambiarne il senso di rotazione. Il pin ENA abilita la marcia del motore collegato al morsetto “MOTORA”. Il pin ENA deve essere collegato ad una tensione positiva di 5V per far funzionare il motore. Nel caso usate la scheda con Arduino, questo pin va collegato ad una uscita PWM della scheda Arduino. I pin IN1 e IN2 decidono il senso di marcia, cioè se il motore gira in senso orario oppure antiorario. Se collegate il pin IN1 al +5V, e il pin IN2 al -GND il motore girerà in un senso. Se collegate il pin IN1 al -GND, ed il pin IN2 al +5V il motore “MOTORA” girerà in senso contrario a prima. Per il motore collegato al morsetto “MOTORB” valgono le stesse informazioni. Il pin ENB abilita il funzionamento del motore, in poche parole lo fa partire. I pin IN3 e IN4 decidono in quale senso gira il motore.

In basso come appaiono le connessioni elettriche dei due motori:

motor driver arduino con L298N - connessione elettrica motori
motor driver arduino con L298N – connessione elettrica motori

Con questa scheda motor driver con L298N possiamo anche non utilizzare Arduino per controllare i motori. Basta che colleghiamo ai pin IN1 e IN2 un deviatore che alternativamente fornisce i segnali di +5V e -GND in modo tale da scegliere il senso di marcia. Per diminuire o aumentare la velocità colleghiamo al pin ENA un segnale PWM, che può essere generato da un semplice circuito con timer NE555. La frequenza del PWM deve essere compresa tra gli 8 e i 40 kHz. Per il secondo motore valgono le stesse informazioni, cambiano solo i nomi dei pin di comando.

MOTORE PASSO PASSO: il motore passo passo necessita di segnali di comando generati con una successione ben precisa. In questo caso l’uso di Arduino è quasi obbligatorio. Sono già disponibili programmi gratuiti per utilizzare i motori passo passo con Arduino. Vediamo la connessione elettrica per utilizzare un motore passo passo con la scheda motor driver con L298N:

motor driver arduino con L298N - connessione elettrica motore passo passo
motor driver arduino con L298N – connessione elettrica motore passo passo

I segnali di comando vanno collegati alla scheda Arduino come in figura sotto (se utilizzate la scheda con Arduino in un robot alimentato a batteria dovrete collegare il pin di Arduino chiamato 5V al morsetto della scheda motor driver chiamato 5V. In questo modo la scheda Arduino viene alimentata direttamente dal +5Volt della scheda motor driver):

motor driver arduino con L298N - connessioren elettrica con Arduino
motor driver arduino con L298N – connessione elettrica con Arduino

I comandi ENA e ENB devono essere collegati al morsetto 5V. In alternativa si possono collegare ai pin di Arduino come riportato nell’immagine precedente. Si deve aggiungere al programma i comandi che impostano le uscite pin 10 e pin 9 positivi HIGH.

Il programma da caricare nella scheda Arduino è il seguente (il programma è semplice e serve a verificare che il motore passo passo e la scheda siano funzionanti):


/* 
 Programma controllo motore passo passo 
 
 Questo programma comanda un motore passo passo.
 I fili del motore sono collegati ai pin della scheda Arduino chiamati 5, 4, 3, 2. 
 
 Il motore dovrebbe compiere un giro in un senso e poi compiere un giro in senso opposto.

#include <Stepper.h>

const int passi_motore = 200; // cambia questo numero in base ai passi che compie il motore
 // che hai collegato

// inizializza la libreria con i pin utilizzati da Arduino:
Stepper motore(passi_motore,5,4,3,2); 

void setup() {
 // imposta la velocità di rotazione a 60 giri al minuto:
 motore.setSpeed(60);
 // apre la porta seriale di comunicazione:
 Serial.begin(9600);
// attiva i motori:
 pinMode(10, OUTPUT);
 digitalWrite(10, HIGH);
 pinMode(9, OUTPUT);
 digitalWrite(9, HIGH);
}

void loop() {
 // compie un giro in una direzione:
 Serial.println("clockwise");
 motore.step(passi_motore);
 delay(500); // ritardo
 
 // compie un giro nella direzione opposta:
 Serial.println("counterclockwise");
 motore.step(-passi_motore);
 delay(500); // ritardo
}

Mi piace aiutare creando informazioni che spero ti siano utili, usando il mio tempo libero. Anche tu puoi aiutarmi, come ?

Se ti serve un prodotto che vedi pubblicizzato clicca sull’immagine e valuta le offerte. Se trovi qualcosa che ti piace e lo compri il blog riceverà un piccolo contributo, senza che tu spenda niente in più di quello che avresti già speso.

Autore dell'articolo: Lucio Sciamanna