Come controllare la velocità di un motore DC con un modulo ESP32 e L298N
Il controllo dei motori DC può essere un compito semplice con i componenti e la comprensione giusti. In questo tutorial, esploreremo come controllare due motori DC utilizzando il microcontroller ESP32 e il modulo driver motore L298N. Alla fine di questa guida, sarai in grado di regolare la velocità e la direzione dei tuoi motori in base ai segnali PWM provenienti dall'ESP32, consentendo applicazioni versatili nella robotica e nell'automazione.
Il video che accompagna questo tutorial fornisce una dimostrazione visiva dell'intero processo, inclusi cablaggio e programmazione (nel video a :00).
Hardware Spiegato
Per ottenere il controllo del motore, utilizzeremo l'ESP32 e il modulo driver per motori L298N. L'ESP32 è un potente microcontrollore con capacità Wi-Fi e Bluetooth, rendendolo ideale per progetti IoT. L'L298N è un driver per motori a ponte H che ci consente di controllare la direzione e la velocità dei motori utilizzando segnali PWM. Il modulo L298N presenta due circuiti a ponte H, il che significa che possiamo controllare due motori in modo indipendente. Ogni ponte H consente di controllare la direzione del motore (in senso orario o antiorario) e la velocità variando il segnale PWM. Collegando i pin di abilitazione e di ingresso dell'L298N all'ESP32, possiamo manipolare i motori in modo efficace.
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 (max. ass.) |
| Corrente di picco (per canale) | 2,5 A |
| Linee guida sulla frequenza PWM | 1 kHz - 15 kHz |
| Soglie logiche di ingresso | 2,5 V (alto), 1,5 V (basso) |
| Caduta di tensione / RDS(on)/ saturazione | 1,8 V a 2 A |
| Limiti termici | 150 °C |
| Pacchetto | Connettore Multiwatt a 15 pin |
| Note / varianti | Driver di motore a ponte H duale |
- Assicurati che il valore di tensione del motore corrisponda alla tensione di alimentazione dell'L298N.
- Usa un adeguato dissipatore di calore per un funzionamento continuo ad alte correnti.
- Collegare i masse di tutti i componenti per evitare riferimenti flottanti.
- Utilizzare una frequenza PWM adatta all'applicazione (1-15 kHz).
- Fai attenzione alle valutazioni massime di corrente per prevenire il surriscaldamento.
- Testare la direzione del motore prima di finalizzare il cablaggio per evitare danni.
- Considera i condensatori di disaccoppiamento sull'alimentazione per la stabilità.
Istruzioni per il cablaggio

Collegare l'L298N all'ESP32, inizia collegando i due motori DC ai terminali di uscita dell'L298N. Collega il Motore 1 ai terminali etichettati comeOUT1eOUT2, e Motore 2 aOUT3eOUT4La polarità dei motori non importa poiché il L298N gestirà la direzione. Successivamente, collega la tua alimentazione esterna a theVMSeGNDterminali sull'L298N. Assicurati che la tensione sia appropriata per i tuoi motori, tipicamente tra 5V e 46V. Il5VIl terminale sull'L298N può essere utilizzato per alimentare l'ESP32 se necessario, ma assicurati che siano soddisfatti i requisiti di corrente. Per i pin di controllo, collegaENAal GPIO 19,IN1a GPIO 18, eIN2a GPIO 5 per il Motore 1. Per il Motore 2, collegareIN3a GPIO 17,IN4a GPIO 16, eENBal GPIO 4. Infine, collega i poli negativi dell'ESP32 e dell'L298N insieme per garantire un riferimento comune.
Esempi di codice e guida passo passo
I seguenti frammenti di codice illustrano come controllare i motori utilizzando la libreria L298N progettata per l'ESP32. La libreria semplifica il processo di invio di comandi ai motori. Innanzitutto, viene inclusa la libreria necessaria e vengono definiti i parametri del motore:
#include
#define ENA 19
#define IN1 18
#define IN2 5
#define IN3 17
#define IN4 16
#define ENB 4
Robojax_L298N_DC_motor robot(IN1, IN2, ENA, CHA, IN3, IN4, ENB, CHB);
In questo frammento, definiamo i pin di controllo per entrambi i motori. L'istanza della libreriarobotviene creato, che verrà utilizzato per controllare i motori durante tutto il programma. Successivamente, impostiamo la comunicazione seriale e inizializziamo l'istanza del robot nelsetup()funzione:
void setup() {
Serial.begin(115200);
robot.begin();
}
Questo inizializza la comunicazione seriale per il debug e prepara la libreria di controllo del motore per il funzionamento. Infine, la logica di controllo principale viene posta nelloop()funzione, dove possiamo ruotare i motori e regolarne la velocità:
void loop() {
robot.rotate(motor1, 80, CW); // run motor1 at 80% speed in CW direction
delay(3000); // wait for 3 seconds
robot.brake(1); // brake motor1
delay(2000); // wait for 2 seconds
}
Questo estratto dimostra come ruotare il Motore 1 all'80% della velocità in senso orario per tre secondi prima di frenare. Il codice completo include logica aggiuntiva per il Motore 2 e velocità variabili, che possono essere viste nel programma completo caricato sotto l'articolo.
Dimostrazione / Cosa Aspettarsi
Quando eseguito, i motori dovrebbero rispondere ai segnali PWM inviati dall'ESP32. Vedrai il Motore 1 ruotare in senso orario a una velocità dell'80%, seguito da un'azione di frenata. Il programma include anche la logica per gestire le variazioni di velocità in modo graduale, che può essere testata osservando l'accelerazione del motore dal 0% al 100% (nel video alle 05:00). Gli errori comuni includono il non collegare correttamente i terreni, il che può portare a comportamenti erratici, e il superamento delle capacità di corrente dell'L298N, causando il surriscaldamento. Assicurati di monitorare il comportamento del motore e di regolare i parametri secondo necessità.
Timestamp video
- 00:46 Introduzione
- 04:07 Cablaggio ESP32 con L298N
- 06:10 Preparazione dell'IDE Arduino per lavorare con le schede ESP32
- 08:15 Codice Arduino spiegato
- 15:00 Dimostrazione del controllo di un singolo motore
- 16:00 Dimostrazione del controllo di 2 motori CC
- 17:00 Dimostrazione di alimentazione dell'ESP32 tramite L298N e alimentazione esterna
Cose di cui potresti avere bisogno
-
Amazon
-
eBay
Risorse e riferimenti
-
Esterno
File📁
Librerie Arduino (zip)
-
robojax_ESP32_L298N_library
robojax_ESP32_L298N_library.zip0.18 MB
File Fritzing
-
ESP32-38Pin_Wide
ESP32-38Pin_Wide.fzpz0.03 MB -
L298N DC motor driver
L298N DC motor driver.fzpz0.11 MB