Prompt:Mi aiuti a capire cosa fa questa scheda e come collegare i relativi pin
Sì, ti aiuto volentieri!
Dalle foto è chiarissimo: la tua scheda è un modulo driver motori basato sul chip L298N, molto comune per pilotare motori DC o motori passo-passo bipolari.
Il modulo L298N è un ponte H doppio:
➡️ può controllare due motori DC (M1 e M2) avanti/indietro e velocità
oppure
➡️ un motore passo-passo bipolare.
Funziona tipicamente con tensioni da 7V a 35V sul motore e accetta comandi in logica 5V da Arduino, ESP32, Raspberry, ecc.
Sulla parte bassa della scheda (da foto):
+12V → alimentazione motori (da 7 a 35V)
GND → massa comune
+5V → uscita o ingresso 5V per la logica
⚠️ IMPORTANTE:
Molti moduli hanno un jumper 5V enable; qui sembra rimosso → quindi:
Devi alimentare +5V da Arduino/ESP32 verso la scheda per la logica.
Il pin +5V non può alimentare Arduino!
Lati destra e sinistra della scheda:
Nella parte sinistra e destra trovi:
IN1
IN2
ENA (Enable A - controlla la velocità di M1)
IN3
IN4
ENB (Enable B - controlla la velocità di M2)
Nota: ENA ed ENB possono essere:
lasciati con il jumper → velocità al 100%
collegati a PWM → regolazione velocità
Da un alimentatore:
+12V → +12V della scheda
GND → GND della scheda
Arduino GND → GND della scheda (obbligatorio!)
Da Arduino:
+5V Arduino → +5V della scheda (solo logica)
IN1 → D8
IN2 → D9
ENA → D10 (PWM)
IN3 → D7
IN4 → D6
ENB → D5 (PWM)
🎛️ Logica di funzionamento dei pin
1 0 Avanti
0 1 Indietro
0 0 Stop (coast)
1 1 Freno (brake)
La velocità si regola con ENA/ENB tramite PWM.
Prompt: collegamento esp32 e un motore passo passo
Perfetto — ti do subito un diagramma di collegamento testo/step-by-step chiaro (utile anche per disegnare il fritzing da te) + uno sketch di esempio per ESP32.
Assumo che stai usando la scheda driver L298N mostrata nelle tue foto e un motore passo-passo bipolare (2 avvolgimenti).
Componenti: ESP32, modulo L298N, alimentatore motore (es. 12V), motore passo-passo bipolare.
Nota importante sui livelli logici: l’ESP32 usa 3.3V.
Il L298N è progettato per logica a 5V ma nella pratica molti moduli accettano 3.3V come HIGH.
Se vuoi sicurezza usa un convertitore di livello o alimenta la logica del modulo con 5V (e condividi massa).
Se il modulo ha il jumper 5V presente, può fornire 5V alla logica dall’alimentazione motore (attenzione alla corrente).
Vcc / +12V (VM) = alimentazione motore (es. 12V)
GND = massa comune
+5V = uscita/ingresso 5V logica (dipende dal jumper)
OUT1 / OUT2 = coil A (motore)
OUT3 / OUT4 = coil B (motore)
IN1, IN2 = controllo coil A
IN3, IN4 = controllo coil B
ENA, ENB = enable / PWM per A e B (puoi collegare a PWM per controllare la velocità)
Motore:
Coil A → OUT1 (rosso) e OUT2 (verde)
Coil B → OUT3 (giallo) e OUT4 (blu)
(verifica con tester quale coppia è uno stesso avvolgimento)
Alimentazione:
Alimentatore 12V positivo → VM (+12V) del L298N
Alimentatore GND → GND del L298N
Collega anche GND dell’ESP32 alla stessa GND (massa comune obbligatoria)
Logica (ESP32 → L298N):
ESP32 GPIO 17 → IN1
ESP32 GPIO 16 → IN2
ESP32 GPIO 5 → IN3
ESP32 GPIO 18 → IN4
ESP32 GPIO 21 → ENA (PWM per coil A)
ESP32 GPIO 22 → ENB (PWM per coil B)
(se non vuoi PWM puoi mettere i jumper ENA/ENB sul modulo per abilitare in modo fisso)
+5V logica:
Se il modulo richiede 5V per la logica e non ha regolatore che fornisce 5V, collega 5V dall’alimentatore o dall’USB dell’ESP32 al pin +5V del modulo (solo se appropriato).
Altrimenti se il modulo ha il jumper per generare 5V da VM (onboard regulator), lascia il jumper e non collegare +5V esterno.
ESP32 (GND) ────> L298N GND
Alim 12V + ────> L298N VM (+12V)
ESP32 GPIO17 -> IN1
ESP32 GPIO16 -> IN2
ESP32 GPIO05 -> IN3
ESP32 GPIO18 -> IN4
ESP32 GPIO21 -> ENA (PWM)
ESP32 GPIO22 -> ENB (PWM)
OUT1 ──> Motor coil A pin1
OUT2 ──> Motor coil A pin2
OUT3 ──> Motor coil B pin1
OUT4 ──> Motor coil B pin2
Questo usa una sequenza passo completo (4 step). Adatta i pin se li hai cambiati.
// Esempio semplice per motore passo-passo bipolare con L298N
const int IN1 = 17;
const int IN2 = 16;
const int IN3 = 5;
const int IN4 = 18;
const int ENA = 21; // PWM
const int ENB = 22; // PWM
int stepDelay = 6; // ms, regola la velocità
void setup() {
pinMode(IN1, OUTPUT);
pinMode(IN2, OUTPUT);
pinMode(IN3, OUTPUT);
pinMode(IN4, OUTPUT);
pinMode(ENA, OUTPUT);
pinMode(ENB, OUTPUT);
// Abilita i canali (100% duty)
ledcAttachPin(ENA, 0); // canale 0
ledcSetup(0, 5000, 8); // 5kHz, 8-bit
ledcWrite(0, 255);
ledcAttachPin(ENB, 1);
ledcSetup(1, 5000, 8);
ledcWrite(1, 255);
}
void loop() {
// Ciclo avanti
for (int i = 0; i < 512; ++i) { // 512 passi di esempio
stepForward();
delay(stepDelay);
}
delay(500);
// Ciclo indietro
for (int i = 0; i < 512; ++i) {
stepBackward();
delay(stepDelay);
}
delay(500);
}
void stepForward() {
// sequenza a 4 step (full step)
setPins(1,0,1,0); delay(stepDelay);
setPins(0,1,1,0); delay(stepDelay);
setPins(0,1,0,1); delay(stepDelay);
setPins(1,0,0,1); delay(stepDelay);
}
void stepBackward() {
// inverso
setPins(1,0,0,1); delay(stepDelay);
setPins(0,1,0,1); delay(stepDelay);
setPins(0,1,1,0); delay(stepDelay);
setPins(1,0,1,0); delay(stepDelay);
}
void setPins(int a1,int a2,int b1,int b2){
digitalWrite(IN1, a1);
digitalWrite(IN2, a2);
digitalWrite(IN3, b1);
digitalWrite(IN4, b2);
}
Consigli pratici
Controlla con multimetro quali cavi del motore sono coppie dello stesso avvolgimento (coils).
Se il motore richiede molta corrente, il L298N può scaldarsi molto: usare dissipatore (hai già dissipatore nella foto)