Utilizzare un driver per motori L298N per controllare un motore passo-passo a 4 fili
In questo tutorial esploreremo come controllare un motore passo-passo a 4 fili usando il driver motore L298N insieme a un Arduino. L298N è un versatile driver a doppio ponte H che ci permette di controllare efficacemente la direzione e la velocità dei motori passo-passo. Alla fine di questa guida avrai un setup funzionante in grado di far ruotare il motore passo-passo in entrambe le direzioni e di controllarne la velocità tramite un potenziometro.


Per aiutarti a comprendere meglio il processo, ti consiglio di guardare il video associato, che offre una dimostrazione visiva del cablaggio e della programmazione (nel video a 01:30).
Hardware spiegato
Il driver per motori L298N è progettato per controllare i motori, consentendo di pilotarli sia in avanti sia in retromarcia. Utilizza una configurazione a ponte H, il che significa che può invertire la polarità della tensione applicata al motore, invertendone così la direzione. Questo driver può gestire una tensione di alimentazione fino a 46 V e una corrente continua di 2 A per canale, rendendolo adatto a molte applicazioni.
Nella nostra configurazione useremo quattro pin di controllo per gestire il motore passo-passo. I pin principali sonoENAeENB, che deve essere impostato su HIGH (5V) per abilitare il driver. I pinIN1,IN2,IN3, eIN4controllerà gli stati degli avvolgimenti del motore, consentendogli di compiere passi nella direzione desiderata.
Dettagli della scheda tecnica
| Produttore | STMicroelectronics |
|---|---|
| Numero di parte | L298N |
| Tensione logica/IO | 5 V |
| Tensione di alimentazione | 5-46 V (VS) |
| Corrente di uscita (per canale) | 2 A max/canale (continuo) |
| Corrente di picco (per canale) | 3 A massimo |
| Linee guida sulla frequenza PWM | Da 1 kHz a 20 kHz |
| Soglie logiche di ingresso | 0,8 V (basso), 2,0 V (alto) |
| Caduta di tensione / RDS(on)/ saturazione | 1,5 V max |
| Limiti termici | 150 °C massimo |
| Pacchetto | DIP-15 |
| Note / varianti | Disponibile anche in versioni piatte (L298P) |
- Garantire
ENAeENBsono collegati a 5V per il corretto funzionamento. - Utilizzare un dissipatore adeguato per applicazioni ad alta corrente per prevenire il surriscaldamento.
- Mantieni la massa comune tra l'Arduino e il driver del motore.
- Prestare attenzione alla polarità del cablaggio per evitare di danneggiare il motore o il driver.
- Posizionare condensatori di disaccoppiamento vicino ai pin di alimentazione per filtrare il rumore.
- Regolare la frequenza PWM in base alle specifiche del motore per prestazioni ottimali.
Istruzioni di cablaggio

Per collegare il driver motore L298N all'Arduino e al motore passo-passo, inizia collegando l'alimentazione. Collega ilVINCollega il pin del L298N alla tua sorgente di alimentazione da 12V. Successivamente, collega ilGNDCollega il pin sul L298N alla massa del tuo alimentatore e anche alla massa dell'Arduino.
Ora, per i pin di controllo, collegaENAal pin 2 dell'Arduino eENBal pin 3. Successivamente, collegaIN1al pin 8,IN2al pin 9,IN3al pin 10, eIN4al pin 11 dell'Arduino. Infine, collega i fili del motore passo-passo ai terminali di uscita del L298N. Assicurati che le due coppie di fili del motore siano collegate correttamente alle uscite.
Esempi di codice e guida passo-passo
Nel codice, per prima cosa includiamo ilStepper.hLibreria per semplificare il controllo del motore passo-passo. Definiamo il numero totale di passi per rivoluzione, che è cruciale per un movimento preciso. Gli identificatori chiave nel codice includonostepsPerRevolution, che imposta il numero di passi necessari per una rotazione completa, emyStepper, che inizializza l'oggetto stepper con i pin specificati.
const int stepsPerRevolution = 200; // change this to fit the number of steps per revolution
Stepper myStepper(stepsPerRevolution, 8, 9, 10, 11); // initialize the stepper libraryQuesto estratto inizializza il motore passo-passo con i pin appropriati. Nelsetup()Nella funzione, impostiamo la velocità del motore e abilitiamo il driver impostando i pin 2 e 3 su HIGH.
void setup() {
myStepper.setSpeed(300); // set the speed at 60 rpm
pinMode(2,OUTPUT); // for EN1
digitalWrite(2,HIGH); // enable EN1
pinMode(3,OUTPUT); // for EN2
digitalWrite(3,HIGH); // enable EN2
}Nelloop()Nella funzione, il motore compie una rivoluzione sia in senso orario sia in senso antiorario, con un ritardo tra i due. Questo consente di osservare il funzionamento del motore.
void loop() {
myStepper.step(stepsPerRevolution); // step one revolution in one direction
delay(500); // wait half a second
myStepper.step(-stepsPerRevolution); // step one revolution in the other direction
delay(500); // wait half a second
}Questo estratto mostra come controllare il motore per farlo ruotare in entrambe le direzioni. Il codice completo è riportato sotto l'articolo per riferimento.
Dimostrazione / Cosa aspettarsi
Una volta che tutto è cablato correttamente e il codice è caricato, dovresti vedere il motore passo-passo compiere una rivoluzione completa in una direzione, seguita da una rivoluzione completa nella direzione opposta. Inoltre, se incorpori il potenziometro per il controllo della velocità, regolarlo modificherà la velocità di rotazione del motore. Fai attenzione alla corrente assorbita dal motore; aumentando la velocità, il motore potrebbe assorbire più corrente, il che può portare al surriscaldamento se non viene gestito correttamente (nel video alle 09:45).
Se il motore non ruota come previsto, controlla il cablaggio per assicurarti che tutte le connessioni siano salde e correttamente orientate. Inoltre, verifica che la tensione di alimentazione sia appropriata per il tuo motore passo-passo.
Marcatori temporali del video
- 00:00- Introduzione
- 01:30- Spiegazione del cablaggio
- 05:00- Panoramica del codice
- 09:45- Dimostrazione del controllo del motore
Cose di cui potresti avere bisogno
-
Amazon
-
Amazon
Risorse e riferimenti
Nessuna risorsa ancora.
File📁
Nessun file disponibile.