Come controllare la velocità di un motore DC con un modulo ESP32 e L298N

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.

ESP32_L298N_DC_principale

Il video che accompagna questo tutorial fornisce una dimostrazione visiva dell'intero processo, inclusi cablaggio e programmazione (nel video a :00).

Hardware Spiegato

Modulo di controllo motore L298N
Modulo di Controllo Motore L298N

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

ESP32_L298N_wiring

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

Immagini

Modulo di Controllo Motore L298N
Modulo di Controllo Motore L298N
ESP32_L298N_DC_main
ESP32_L298N_DC_main
ESP32_L298N_wiring
ESP32_L298N_wiring
278-Library Example for L298N Module to control DC motors
Lingua: C++
Copia!

Cose di cui potresti avere bisogno

Risorse e riferimenti

File📁

Librerie Arduino (zip)

File Fritzing