Imaginile produselor au caracter informativ si pot prezenta diferente minore, in functie de lot si de furnizor. Este posibil ca specificatiile si pretul produselor sa fie modificate fara preaviz. Facem tot posibilul sa adaugam in pagina produselor specificatii cat mai exacte si corecte dar este posibil ca acestea sa nu fie in totalitate corecte. in cazul in care identificati un astfel de caz, va rugam sa ne semnalati acest lucru.
Produsele noastre sunt destinate in principal dezvoltarii, prototiparii si proiectelor tehnice. Informatiile privind specificatiile, instructiunile si conformitatea sunt furnizate conform datelor disponibile de la producatori sau furnizori. Pentru integrarea in produse finale sau aplicatii comerciale, recomandam verificarea compatibilitatii si conformitatii in functie de utilizarea dorita.
Specificatiile tehnice mentionate (curent, putere etc.) reprezinta valori maxime admise in conditii ideale de functionare. Pentru o utilizare sigura si o durata de viata optima, recomandam exploatarea produsului in regim continuu la cel mult 50% din valorile maxime specificate.
Punte H Dubla L298N, 2 motoare DC, 5-35V, 2A pe canal
Modul punte H dubla cu circuitul L298N pentru controlul directiei si vitezei a doua motoare DC sau a unui motor pas cu pas bipolar. Alimentare motoare 5 - 35 VDC, pana la 2 A pe canal, intrari PWM pana la 40 kHz, regulator de 5 V integrat si radiator pe circuit. Compatibil cu Arduino si cu alte placi de dezvoltare.
Cumparand acest produs primesti 0,71 RON in puncte de fidelitate.
Adauga in cos produse in valoare de 130 Ron si ai livrare gratuita daca alegi sa platesti online
Produsele sunt expediate din stoc propriu
Primesti puncte la fiecare comanda, in valoare de 5%
Puntea H dubla L298N este un modul driver pentru motoare care permite controlul directiei si al vitezei a doua motoare de curent continuu sau al unui motor pas cu pas bipolar. Modulul primeste semnale logice de la un microcontroler si le transforma in curent pentru motoare, ceea ce il face potrivit pentru roboti mobili, masinute teleghidate, mecanisme de actionare, imprimante 3D simple si alte proiecte de mecatronica.
Circuitul principal este L298N, o punte H dubla cu doua canale independente, fiecare putand furniza pana la 2 A catre motor. Motoarele se alimenteaza la 5 - 35 VDC, iar partea logica functioneaza la 5 V. Directia fiecarui motor se stabileste prin doua intrari (IN1 si IN2 pentru motorul A, IN3 si IN4 pentru motorul B), iar viteza se reglaza prin semnal PWM pe intrarile de activare ENA si ENB, cu frecventa de pana la 40 kHz.
Printre caracteristicile principale se numara radiatorul montat pe circuitul L298N, regulatorul de 5 V 78M05 cu jumper de activare 5V-EN, jumperele ENA si ENB pentru activarea permanenta a canalelor, bornele cu surub pentru motoare si alimentare, opt diode de protectie pentru sarcini inductive, doua condensatoare electrolitice de filtrare, LED indicator si patru gauri de montare. Alimentarea motoarelor se face la bornele +12V si GND, iar regulatorul de 5 V poate alimenta si logica placii sau a microcontrolerului atunci cand tensiunea de alimentare este mai mica de 12 V.
Prin intrarile de control logic, modulul este compatibil cu Arduino, ESP32, STM32, Raspberry Pi si cu alte placi de dezvoltare care au iesiri digitale si iesiri PWM.
Specificatii:
Tensiune alimentare motoare: 5 - 35 VDC
Curent motoare: max. 2 A pe canal
Circuit driver: L298N, punte H dubla
Numar canale: 2
Motoare comandate: 2 motoare DC sau 1 motor pas cu pas bipolar
Tensiune logica: 5 V
Regulator 5 V: 78M05, activat prin jumperul 5V-EN, pentru alimentare motoare sub 12 V
Nivel logic intrari: LOW maxim 1.5 V, HIGH de la 2.3 V
Frecventa maxima PWM: 40 kHz
Protectie: 8 diode pentru sarcini inductive
Conectare: Borne cu surub pentru motoare si alimentare, pini pentru semnale de control
Dimensiuni: 43 x 43 x 27 mm
Layout:
| Element | Functie |
|---|---|
| Circuit L298N cu radiator | Puntea H dubla care comuta curentul spre cele doua motoare. Radiatorul preia caldura produsa la curenti mari. |
| Borna OUT1 / OUT2 | Iesire pentru motorul A sau pentru bobina A a unui motor pas cu pas bipolar. |
| Borna OUT3 / OUT4 | Iesire pentru motorul B sau pentru bobina B a unui motor pas cu pas bipolar. |
| Borna de alimentare cu 3 pozitii (+12V, GND, +5V) | Intrarea +12V primeste alimentarea motoarelor de 5 - 35 VDC, GND este masa comuna, iar +5V este iesire de 5 V cand jumperul 5V-EN este montat si intrare de 5 V pentru logica cand jumperul este scos. |
| Jumper 5V-EN | Montat, activeaza regulatorul 78M05 care produce 5 V pentru logica din tensiunea de alimentare a motoarelor, folosit cand aceasta este sub 12 V. Scos, regulatorul este dezactivat, iar logica trebuie alimentata extern la 5 V pe borna +5V. |
| Regulator 78M05 | Produce tensiunea de 5 V pentru partea logica a modulului. |
| Pini ENA, IN1, IN2, IN3, IN4, ENB | Intrari de control. IN1 si IN2 stabilesc directia motorului A, IN3 si IN4 directia motorului B, iar ENA si ENB activeaza canalul respectiv si primesc semnalul PWM pentru viteza. |
| Jumper ENA | Montat, mentine canalul A activat permanent, iar motorul A merge la viteza maxima atunci cand intrarile IN1 si IN2 au niveluri diferite. Scos, activarea si viteza motorului A se comanda prin pinul ENA. |
| Jumper ENB | Montat, mentine canalul B activat permanent, iar motorul B merge la viteza maxima atunci cand intrarile IN3 si IN4 au niveluri diferite. Scos, activarea si viteza motorului B se comanda prin pinul ENB. |
| Diode de protectie (8 buc.) | Preiau tensiunea inversa generata de bobinele motoarelor la oprire sau la schimbarea sensului, protejand circuitul L298N. |
| Condensatoare electrolitice 220 uF / 35 V | Filtreaza tensiunea de alimentare a motoarelor si tensiunea de 5 V. |
| LED indicator | Se aprinde cand linia de 5 V a modulului este alimentata. |
| Gauri de montare | Fixarea modulului pe sasiu. |
Pinout:

| Conector | Pin | Functie |
|---|---|---|
| Borna alimentare | +12V | Alimentare motoare 5 - 35 VDC |
| Borna alimentare | GND | Masa comuna pentru motoare si logica |
| Borna alimentare | +5V | Iesire 5 V cu jumperul 5V-EN montat, intrare 5 V pentru logica fara jumper |
| Borna motor A | OUT1 | Iesire motor A |
| Borna motor A | OUT2 | Iesire motor A |
| Borna motor B | OUT3 | Iesire motor B |
| Borna motor B | OUT4 | Iesire motor B |
| Pini control | ENA | Activare motor A si intrare PWM pentru viteza |
| Pini control | IN1 | Intrare directie motor A |
| Pini control | IN2 | Intrare directie motor A |
| Pini control | IN3 | Intrare directie motor B |
| Pini control | IN4 | Intrare directie motor B |
| Pini control | ENB | Activare motor B si intrare PWM pentru viteza |
| ENA | IN1 | IN2 | Stare motor A |
|---|---|---|---|
| 0 | X | X | Oprit, rotire libera |
| 1 | 1 | 0 | Rotire intr-un sens |
| 1 | 0 | 1 | Rotire in sens opus |
Motorul B functioneaza identic, cu pinii ENB, IN3 si IN4.
Utilizare:
Conectati motorul A la bornele OUT1 si OUT2 si motorul B la bornele OUT3 si OUT4. Pentru un motor pas cu pas bipolar, conectati o bobina la OUT1 si OUT2 si cealalta bobina la OUT3 si OUT4.
Alimentati motoarele la 5 - 35 VDC prin bornele +12V si GND, respectand polaritatea. Tensiunea ajunsa la motor este cu aproximativ 2 V mai mica decat cea de alimentare, deoarece o parte cade pe puntea H.
Pentru alimentarea logicii din modul, lasati jumperul 5V-EN montat atunci cand tensiunea de alimentare a motoarelor este sub 12 V. In acest caz borna +5V devine iesire de 5 V si poate alimenta placa de control, iar LED-ul indicator se aprinde.
Pentru tensiuni de alimentare de 12 V sau mai mari, scoateti jumperul 5V-EN si alimentati logica cu 5 V pe borna +5V.
Nu aplicati tensiune pe borna +5V cat timp jumperul 5V-EN este montat si regulatorul alimenteaza deja logica.
Conectati masa placii de control (GND) la borna GND a modulului, pentru ca semnalele de control sa aiba o referinta comuna.
Conectati intrarile IN1, IN2, IN3 si IN4 la patru iesiri digitale ale placii de control si ENA si ENB la doua iesiri PWM. De exemplu, la Arduino Uno folositi ENA la D9, IN1 la D8, IN2 la D7, IN3 la D5, IN4 la D4 si ENB la D3.
Pentru viteza reglabila, scoateti jumperele ENA si ENB si trimiteti semnal PWM pe aceste intrari. Cu jumperele montate, motoarele merg doar la viteza maxima, iar controlul se limiteaza la directie si oprire.
Setati directia unui motor punand un nivel HIGH pe una dintre intrarile sale si LOW pe cealalta. Inversand nivelurile se schimba sensul de rotatie.
Nu setati pe HIGH ambele intrari ale aceluiasi motor in acelasi timp, de exemplu IN1 si IN2 sau IN3 si IN4, deoarece se poate deteriora modulul. In programe, aduceti mai intai la LOW intrarea care se dezactiveaza si abia apoi la HIGH cealalta intrare.
La prima pornire folositi o valoare PWM mica si cresteti treptat. Daca motorul nu se invarte, verificati alimentarea, masa comuna si montarea jumperelor ENA si ENB, iar daca sensul este invers fata de cel dorit, inversati firele motorului sau nivelurile IN1 si IN2.
Pentru curenti apropiati de 2 A pe canal, asigurati ventilatie in jurul radiatorului si evitati blocarea motorului, deoarece circuitul se incalzeste.
Pentru placile cu logica de 3.3 V, semnalele de control sunt recunoscute ca nivel HIGH de la 2.3 V, iar alimentarea logicii se face in continuare la 5 V.
Produs destinat utilizarii in proiecte electronice, automatizari, prototipare, educatie si cercetare.
Produsul trebuie utilizat numai conform specificatiilor tehnice mentionate in descriere si/sau in documentatia produsului.
Avertismente generale de siguranta:
Acest produs este destinat utilizarii in proiecte electronice, automatizari, prototipare, educatie, cercetare si aplicatii tehnice similare. Produsul trebuie utilizat doar conform specificatiilor tehnice mentionate in pagina produsului si/sau in documentatia disponibila.
Utilizarea incorecta, depasirea valorilor maxime admise de tensiune, curent, temperatura sau conectarea gresita pot duce la defectarea produsului, deteriorarea altor echipamente sau la riscuri de siguranta.
Produsul nu este jucarie si nu este destinat copiilor. Montajul, testarea si utilizarea trebuie realizate de persoane cu cunostinte minime in domeniul electric/electronic. Se recomanda utilizarea produsului in montaje protejate, carcase adecvate sau sisteme care respecta normele de siguranta aplicabile.
Identificare produs:
Denumirea produsului, codul/SKU-ul si caracteristicile tehnice sunt mentionate in pagina produsului si/sau pe eticheta ambalajului.
Producator / Importator / Distribuitor:
Sigmanortec S.R.L.
Calea Bucuresti nr. 9, Targu Jiu, Gorj, Romania
E-mail: [email protected]
Website: www.sigmanortec.ro
Persoana responsabila in UE:
Sigmanortec S.R.L.
Calea Bucuresti nr. 9, Targu Jiu, Gorj, Romania
E-mail: [email protected]
/*
L298N dual H-bridge motor driver test
Board: Arduino Uno (Tools > Board > Arduino AVR Boards > Arduino Uno)
Libraries: none needed
Wiring:
L298N ENA -> D9 (PWM) L298N IN1 -> D8 L298N IN2 -> D7
L298N ENB -> D3 (PWM) L298N IN3 -> D5 L298N IN4 -> D4
L298N GND -> Arduino GND and the power supply minus
L298N +12V -> motor power supply plus (5 - 35 VDC)
Motor A on OUT1 / OUT2, motor B on OUT3 / OUT4
Remove the ENA and ENB jumpers so PWM can control the speed
*/
const int ENA = 9;
const int IN1 = 8;
const int IN2 = 7;
const int ENB = 3;
const int IN3 = 5;
const int IN4 = 4;
// Run both motors in the same direction at a given PWM value
void driveBoth(int speed, bool forward) {
// Set the inactive input LOW first, so both inputs are never HIGH together
digitalWrite(forward ? IN2 : IN1, LOW);
digitalWrite(forward ? IN1 : IN2, HIGH);
digitalWrite(forward ? IN4 : IN3, LOW);
digitalWrite(forward ? IN3 : IN4, HIGH);
analogWrite(ENA, speed);
analogWrite(ENB, speed);
}
// Stop both motors
void stopBoth() {
analogWrite(ENA, 0);
analogWrite(ENB, 0);
digitalWrite(IN1, LOW);
digitalWrite(IN2, LOW);
digitalWrite(IN3, LOW);
digitalWrite(IN4, LOW);
}
void setup() {
pinMode(ENA, OUTPUT);
pinMode(IN1, OUTPUT);
pinMode(IN2, OUTPUT);
pinMode(ENB, OUTPUT);
pinMode(IN3, OUTPUT);
pinMode(IN4, OUTPUT);
Serial.begin(9600);
Serial.println("L298N test started");
stopBoth();
}
void loop() {
Serial.println("Both motors forward, PWM 180");
driveBoth(180, true);
delay(2000);
Serial.println("Both motors stopped");
stopBoth();
delay(1000);
Serial.println("Both motors backward, PWM 180");
driveBoth(180, false);
delay(2000);
Serial.println("Both motors stopped");
stopBoth();
delay(2000);
}
Modulul Punte H Dubla L298N este un driver pentru motoare de curent continuu, construit in jurul circuitului L298N. Poate comanda doua motoare DC independent, ca sens si viteza, sau un motor pas cu pas bipolar. Il intalnim in roboti pe roti, masinute teleghidate, benzi transportoare mici si orice proiect in care un microcontroler trebuie sa miste un motor care consuma mai mult decat poate da un pin al placii.
In acest tutorial folosim Arduino Uno R3, pentru ca modulul are nevoie de un microcontroler care sa ii dea semnalele de comanda, iar logica de 5 V a placii Uno se potriveste direct cu intrarile modulului. Vom controla doua motoare TT cu reductor, alimentate de la un adaptor de retea de 9 VDC.

Cum functioneaza:
Un motor DC se invarte intr-un sens sau in altul in functie de polaritatea tensiunii de la borne. Puntea H este un montaj cu patru comutatoare care permite inversarea acestei polaritati dintr-un semnal logic. Circuitul L298N contine doua astfel de punti, deci poate comanda doua motoare. Pentru motorul A se folosesc intrarile IN1 si IN2, iar pentru motorul B intrarile IN3 si IN4.
Sensul de rotatie se alege din combinatia de nivele de pe cele doua intrari ale motorului. Combinatia HIGH pe ambele intrari nu trebuie folosita niciodata, pentru ca poate deteriora modulul.
| IN1 (IN3) | IN2 (IN4) | Rezultat |
|---|---|---|
| HIGH | LOW | Motorul se invarte inainte |
| LOW | HIGH | Motorul se invarte inapoi |
| LOW | LOW | Motorul este oprit |
| HIGH | HIGH | Interzis in acest montaj, nu folositi aceasta combinatie |
Viteza se regleaza cu semnal PWM pe pinii ENA (motorul A) si ENB (motorul B). Pe Arduino Uno, functia analogWrite accepta valori de la 0 la 255. Valoarea 0 inseamna motor oprit, iar 255 inseamna alimentare continua. Tensiunea medie care ajunge la motor este aproximativ Vmotor = (VS - Vcadere) x PWM / 255.
Circuitul L298N pierde intern o parte din tensiune, aproximativ 1.8 - 3.2 V la un curent de 1 A si aproape 5 V la 2 A. In montajul nostru VS este 9 V, deci la PWM 255 un motor care consuma in jur de 1 A primeste aproximativ 7 V. Motoarele TT sunt facute pentru 3 - 6 V, asa ca limitam valoarea PWM la 200. La 200, tensiunea medie este aproximativ 7 x 200 / 255 = 5.5 V, adica in domeniul sigur al motoarelor.
Modulul are si un regulator 78M05 care poate produce 5 V pentru logica. Cu jumperul 5V-EN montat, regulatorul este activ si borna +5V devine iesire de 5 V, cu un curent de pana la 0.5 A. Aceasta varianta se foloseste doar cand tensiunea VS este de cel mult 12 V. Peste 12 V se scoate jumperul si borna +5V se alimenteaza din exterior.
Conectare:
Alimentati motoarele dintr-un adaptor de retea de 9 VDC cu minimum 1 A, conectat prin adaptorul de mufa jack cu borne cu surub. Placa Arduino Uno ramane alimentata separat, prin cablul USB. Masa adaptorului, masa modulului si masa placii Uno trebuie unite, altfel semnalele de comanda nu au referinta comuna si motoarele nu raspund corect. Intrarile modulului accepta direct nivelul logic de 5 V al placii Uno, deci nu este nevoie de convertor de nivel.
| Pin produs | Se conecteaza la | Rol |
|---|---|---|
| +12V (VS) | Plusul adaptorului de 9 VDC | Alimentarea motoarelor |
| GND | Minusul adaptorului de 9 VDC si pinul GND al placii Uno | Masa comuna |
| +5V | Neconectat | Cu jumperul 5V-EN montat este iesire de 5 V, placa Uno ramane alimentata prin USB |
| ENA | D9 (PWM) | Viteza motorului A |
| IN1 | D8 | Sensul motorului A |
| IN2 | D7 | Sensul motorului A |
| IN3 | D5 | Sensul motorului B |
| IN4 | D4 | Sensul motorului B |
| ENB | D3 (PWM) | Viteza motorului B |
| OUT1 | Firul rosu al motorului A | Iesire motor A |
| OUT2 | Firul negru al motorului A | Iesire motor A |
| OUT3 | Firul rosu al motorului B | Iesire motor B |
| OUT4 | Firul negru al motorului B | Iesire motor B |
Scoateti jumperele de pe ENA si ENB inainte de a alimenta modulul, ca sa puteti regla viteza cu PWM. Modulul are deja pe placa doua condensatoare de 220 uF si diodele de protectie pentru motoare, deci nu trebuie adaugate componente suplimentare.
Butoane, reglaje si indicatoare:
| Element | Ce face | Cum se foloseste |
|---|---|---|
| Jumper 5V-EN | Activeaza regulatorul de 5 V al modulului | Se lasa montat cand VS este 12 V sau mai putin, ca in acest tutorial. Se scoate cand VS depaseste 12 V, iar borna +5V se alimenteaza din exterior |
| Jumper ENA | Fixeaza intrarea ENA la 5 V, deci motorul A merge mereu la viteza maxima | Se scoate, ca sa poata comanda pinul D9 viteza prin PWM |
| Jumper ENB | Fixeaza intrarea ENB la 5 V, deci motorul B merge mereu la viteza maxima | Se scoate, ca sa poata comanda pinul D3 viteza prin PWM |
| LED de alimentare | Indica prezenta alimentarii pe modul | Se aprinde cand modulul primeste tensiune. Daca ramane stins, verificati adaptorul si borna +12V |
Jumperul 5V-EN: porniti cu el montat. In acest montaj VS este 9 V, deci regulatorul poate ramane activ. Borna +5V nu se conecteaza la Arduino, pentru ca placa Uno este alimentata prin USB. Nu alimentati niciodata borna +5V din exterior cat timp jumperul este montat.
Jumperele ENA si ENB: scoateti-le pe amandoua inainte de prima pornire. Cu jumperul montat, motorul respectiv ruleaza permanent la viteza maxima si comanda PWM nu are niciun efect. Reglajul a functionat cand viteza motorului se schimba in timp ce programul variaza valoarea analogWrite.
LED-ul de alimentare: dupa conectarea adaptorului, el trebuie sa se aprinda imediat. Este primul lucru de verificat cand ceva nu merge.
Placa si biblioteci:
In Arduino IDE selectati Tools > Board > Arduino AVR Boards > Arduino Uno. Pachetul Arduino AVR Boards vine odata cu Arduino IDE, deci nu trebuie instalat separat. Programul foloseste doar functiile de baza ale Arduino, asa ca nu trebuie instalata nicio biblioteca.
Codul:
Programul porneste fiecare motor inainte si inapoi, cu doua viteze, apoi ruleaza ambele motoare impreuna. Copiati-l in Arduino IDE si incarcati-l pe placa Uno.
/*
L298N dual H-bridge motor driver demo
Board: Arduino Uno (Tools > Board > Arduino AVR Boards > Arduino Uno)
Libraries: none, the sketch uses only the core Arduino functions
Wiring:
ENA -> D9 (PWM) IN1 -> D8 IN2 -> D7
ENB -> D3 (PWM) IN3 -> D5 IN4 -> D4
L298N GND -> Arduino GND and the adapter minus
L298N +12V -> adapter plus (9 VDC, min. 1 A)
Remove the ENA and ENB jumpers so PWM can control the speed
*/
// Motor A pins
const int ENA = 9; // Speed of motor A (PWM)
const int IN1 = 8; // Direction input 1 of motor A
const int IN2 = 7; // Direction input 2 of motor A
// Motor B pins
const int ENB = 3; // Speed of motor B (PWM)
const int IN3 = 5; // Direction input 1 of motor B
const int IN4 = 4; // Direction input 2 of motor B
// Maximum PWM value, keeps 3-6 V motors in a safe range when VS is 9 V
const int MAX_PWM = 200;
// Run motor A at a given speed, forward or backward
void setMotorA(int speed, bool forward) {
speed = constrain(speed, 0, MAX_PWM); // Limit the speed
// Write LOW first, so both inputs are never HIGH at the same time
digitalWrite(forward ? IN2 : IN1, LOW);
digitalWrite(forward ? IN1 : IN2, HIGH);
analogWrite(ENA, speed); // Apply the speed
Serial.print("Motor A: ");
Serial.print(forward ? "forward" : "backward");
Serial.print(", PWM ");
Serial.println(speed);
}
// Run motor B at a given speed, forward or backward
void setMotorB(int speed, bool forward) {
speed = constrain(speed, 0, MAX_PWM); // Limit the speed
// Write LOW first, so both inputs are never HIGH at the same time
digitalWrite(forward ? IN4 : IN3, LOW);
digitalWrite(forward ? IN3 : IN4, HIGH);
analogWrite(ENB, speed); // Apply the speed
Serial.print("Motor B: ");
Serial.print(forward ? "forward" : "backward");
Serial.print(", PWM ");
Serial.println(speed);
}
// Stop motor A
void stopMotorA() {
analogWrite(ENA, 0); // No drive
digitalWrite(IN1, LOW); // Both inputs LOW
digitalWrite(IN2, LOW);
Serial.println("Motor A: stopped");
}
// Stop motor B
void stopMotorB() {
analogWrite(ENB, 0); // No drive
digitalWrite(IN3, LOW); // Both inputs LOW
digitalWrite(IN4, LOW);
Serial.println("Motor B: stopped");
}
void setup() {
// Configure all control pins as outputs
pinMode(ENA, OUTPUT);
pinMode(IN1, OUTPUT);
pinMode(IN2, OUTPUT);
pinMode(ENB, OUTPUT);
pinMode(IN3, OUTPUT);
pinMode(IN4, OUTPUT);
Serial.begin(9600); // Start the serial monitor
Serial.println("L298N motor driver test started");
// Make sure both motors are off at start
stopMotorA();
stopMotorB();
delay(1000);
}
void loop() {
// Motor A: forward at two speeds, then backward
setMotorA(120, true);
delay(2000);
setMotorA(200, true);
delay(2000);
stopMotorA();
delay(1000);
setMotorA(200, false);
delay(2000);
stopMotorA();
delay(1000);
// Motor B: forward, then backward
setMotorB(200, true);
delay(2000);
stopMotorB();
delay(1000);
setMotorB(200, false);
delay(2000);
stopMotorB();
delay(1000);
// Both motors together
setMotorA(150, true);
setMotorB(150, true);
delay(3000);
stopMotorA();
stopMotorB();
delay(3000); // Pause before the cycle repeats
}
Cum functioneaza codul:
La inceput sunt definiti pinii cu constantele ENA, IN1, IN2, ENB, IN3 si IN4, exact ca in tabelul de conectare. Constanta MAX_PWM are valoarea 200 si limiteaza viteza, ca motoarele TT sa nu primeasca peste 6 V.
In functia setup se configureaza toti pinii ca iesiri, se porneste monitorul serial la 9600 baud si se opresc ambele motoare, ca sa nu porneasca nimic nedorit la resetare.
Functiile setMotorA si setMotorB primesc viteza si sensul. Ele limiteaza viteza cu constrain, scriu intai nivelul LOW pe intrarea care trebuie sa fie inactiva si abia apoi HIGH pe cealalta. In acest fel cele doua intrari ale aceluiasi motor nu sunt niciodata HIGH in acelasi timp. La final, analogWrite aplica viteza pe pinul de enable. Functiile stopMotorA si stopMotorB pun ambele intrari pe LOW si viteza pe 0.
Functia loop ruleaza secventa de test: motorul A inainte la doua viteze, oprire, motorul A inapoi, apoi aceleasi etape pentru motorul B si in final ambele motoare impreuna. Pauzele se fac cu delay, iar mesajele de pe monitorul serial arata la fiecare pas ce comanda s-a trimis.
Rezultat:
Deschideti Serial Monitor la 9600 baud. Dupa incarcarea programului vedeti mesajele de mai jos, iar motoarele se misca in aceeasi ordine. Daca un motor se invarte in sens opus fata de mesaj, inversati intre ele cele doua fire ale lui de la borna OUT.
L298N motor driver test started
Motor A: stopped
Motor B: stopped
Motor A: forward, PWM 120
Motor A: forward, PWM 200
Motor A: stopped
Motor A: backward, PWM 200
Motor A: stopped
Motor B: forward, PWM 200
Motor B: stopped
Motor B: backward, PWM 200
Motor B: stopped
Probleme frecvente:
Motoarele nu se misca deloc. Cauza obisnuita este alimentarea sau masa. Verificati ca LED-ul de alimentare este aprins si ca GND de la placa Uno este unit cu GND de la modul. Fara masa comuna semnalele de comanda nu sunt recunoscute.
Un motor merge mereu la viteza maxima, indiferent de valoarea PWM. Jumperul ENA sau ENB este inca montat. Scoateti-l, ca pinul D9 sau D3 sa poata controla viteza.
Motorul bazaie dar nu porneste la viteze mici. Sub o anumita valoare PWM tensiunea medie este prea mica pentru a invinge frecarile reductorului. Cresteti valoarea analogWrite sau, la nevoie, folositi o tensiune VS mai mare.
Motorul se invarte in sens opus fata de cel dorit. Inversati intre ele cele doua fire ale motorului la borna OUT sau schimbati in cod valorile HIGH si LOW pentru acel motor.
Placa Uno se reseteaza cand pornesc motoarele. Motoarele produc perturbatii si caderi de tensiune pe masa. Verificati firele de masa, folositi un adaptor care da cel putin 1 A si pastrati firele motoarelor departe de cele de semnal.
Radiatorul modulului se incalzeste. Este normal la curenti mari, pentru ca o parte din putere se pierde in circuitul L298N. Daca este prea fierbinte pentru a fi atins mult timp, reduceti sarcina sau asigurati ventilatie.
Limitari si sfaturi:
Modulul accepta pentru motoare tensiuni de 5 - 35 VDC si poate da pana la 2 A pe canal. Din cauza caderii de tensiune interne, motorul primeste mai putin decat tensiunea de alimentare, deci alegeti VS cu 2 - 3 V peste tensiunea nominala a motorului. Pentru motoare mici de 3 - 6 V, o sursa de 9 V cu limitarea PWM la aproximativ 200 este o alegere sigura.
Circuitul L298N nu este eficient, deci pentru motoare alimentate la baterie si cu consum mare un driver cu tranzistoare MOSFET este mai potrivit. In schimb, modulul este foarte bun pentru invatare si pentru roboti mici. Cu acelasi montaj puteti construi un robot pe doua roti, adaugand un senzor de distanta sau o telecomanda. Nu aplicati niciodata HIGH simultan pe IN1 si IN2 sau pe IN3 si IN4.