A termékfotók tájékoztató jellegűek, és a gyártási tételtől és a beszállítótól függően kisebb eltéréseket mutathatnak. A termék specifikációi és árai előzetes értesítés nélkül változhatnak. Mindent megteszünk, hogy a lehető legpontosabb és leghitelesebb specifikációkat adjuk meg a termékoldalon, de lehetséges, hogy ezek nem teljesen helyesek. Ha ilyen esetet észlel, kérjük, jelentse nekünk.
A termék szakemberek számára készült, és használatához képzett, valamint felhatalmazott személyzet szükséges. A termék nem tartalmaz összeszerelési/használati útmutatót . A termék nem megfelelő képesítéssel rendelkező személyek általi üzembe helyezése a weboldalon található Általános Szerződési Feltételek értelmében a jótállás elvesztését eredményezi.
A megadott műszaki adatok (áram, teljesítmény stb.) ideális működési körülmények között érvényes maximális értékeket jelentenek. A biztonságos használat és az optimális élettartam érdekében javasolt a terméket folyamatos üzemben legfeljebb a megadott maximális értékek 50%-án használni.
L298N kettős H-híd, 2 DC motor, 5-35V, 2A csatornánként
Kettős H-híd modul L298N áramkörrel két DC motor vagy egy bipoláris léptetőmotor irányának és sebességének vezérlésére. Motortápfeszültség 5 - 35 VDC, csatornánként legfeljebb 2 A, PWM bemenetek legfeljebb 40 kHz-ig, beépített 5 V-os szabályozó és hűtőborda az áramkörön. Kompatibilis az Arduinóval és más fejlesztőkártyákkal.
A termék megvásárlásával jár 0,71 lei hűségpont.
Nemzetközi gyors szállítás az EU-n belül. Ingyenes szállítás 100 EUR feletti megrendelések esetén a legtöbb EU-országban.
24 órán belül szállítunk raktárunkból
Minden rendelés után pontokat kap, a rendelés értékének 5%-ában.
Az L298N kettős H-híd motorvezérlő modul két egyenáramú motor, vagy egy bipoláris léptetőmotor irányának és sebességének szabályozására alkalmas. A modul a mikrokontrollertől kapott logikai jeleket motoráramma alakítja, ezért jól használható mobil robotokhoz, távirányítós autókhoz, működtető mechanizmusokhoz, egyszerű 3D nyomtatókhoz és más mechatronikai projektekhez.
A fő áramkör az L298N, egy kettős H-híd két független csatornával, amelyek mindegyike legfeljebb 2 A áramot tud szolgáltatni a motornak. A motorok 5 - 35 VDC tápfeszültségről működnek, a logikai rész 5 V-on üzemel. Mindegyik motor irányát két bemenet határozza meg (IN1 és IN2 az A motorhoz, IN3 és IN4 a B motorhoz), a sebességet pedig az ENA és ENB engedélyező bemeneteken megadott PWM jel szabályozza, legfeljebb 40 kHz frekvenciával.
A főbb jellemzők között szerepel az L298N áramkörre szerelt hűtőborda, a 78M05 5 V-os szabályozó az 5V-EN engedélyező jumperrel, az ENA és ENB jumperek a csatornák állandó engedélyezéséhez, a motorok és a tápellátás csavaros sorkapcsai, nyolc védődióda induktív terhelésekhez, két elektrolit szűrőkondenzátor, LED jelzőfény és négy rögzítőfurat. A motorok tápellátása a +12V és GND kapcsokon történik, az 5 V-os szabályozó pedig a modul és a mikrokontroller logikai részét is táplálhatja, ha a tápfeszültség 12 V alatt van.
A logikai vezérlőbemeneteknek köszönhetően a modul kompatibilis az Arduinóval, ESP32-vel, STM32-vel, Raspberry Pi-vel és más olyan fejlesztőkártyákkal, amelyeknek vannak digitális és PWM kimenetei.
Specifikációk:
Motorok tápfeszültsége: 5 - 35 VDC
Motoráram: max. 2 A csatornánként
Meghajtó áramkör: L298N, kettős H-híd
Csatornák száma: 2
Vezérelhető motorok: 2 DC motor vagy 1 bipoláris léptetőmotor
Logikai feszültség: 5 V
5 V-os szabályozó: 78M05, az 5V-EN jumperrel engedélyezve, motortápellátás 12 V alatt
Bemenetek logikai szintje: LOW legfeljebb 1.5 V, HIGH 2.3 V-tól
Maximális PWM frekvencia: 40 kHz
Védelem: 8 dióda induktív terhelésekhez
Csatlakozás: csavaros sorkapcsok a motorokhoz és a tápellátáshoz, tűsorok a vezérlőjelekhez
Méretek: 43 x 43 x 27 mm
Elrendezés:
| Elem | Funkció |
|---|---|
| L298N áramkör hűtőbordával | Kettős H-híd, amely a két motor felé kapcsolja az áramot. A hűtőborda elvezeti a nagy áramoknál keletkező hőt. |
| OUT1 / OUT2 kapocs | Kimenet az A motorhoz, vagy a bipoláris léptetőmotor A tekercséhez. |
| OUT3 / OUT4 kapocs | Kimenet a B motorhoz, vagy a bipoláris léptetőmotor B tekercséhez. |
| 3 pólusú tápcsatlakozó (+12V, GND, +5V) | A +12V bemenet kapja a 5 - 35 VDC motortápellátást, a GND a közös föld, a +5V pedig 5 V-os kimenet, ha az 5V-EN jumper be van dugva, és 5 V-os bemenet a logikának, ha a jumper ki van véve. |
| 5V-EN jumper | Behelyezve: engedélyezi a 78M05 szabályozót, amely a motortápfeszültségből 5 V-ot állít elő a logikának, 12 V alatti tápfeszültség esetén használva. Kivéve: a szabályozó kikapcsol, a logikát külön kell 5 V-ra táplálni a +5V kapcson. |
| 78M05 szabályozó | 5 V feszültséget állít elő a modul logikai részéhez. |
| ENA, IN1, IN2, IN3, IN4, ENB tűk | Vezérlőbemenetek. Az IN1 és IN2 határozza meg az A motor irányát, az IN3 és IN4 a B motorét, az ENA és ENB pedig engedélyezi az adott csatornát, és a sebességhez PWM jelet kap. |
| ENA jumper | Behelyezve: az A csatorna állandóan engedélyezett, az A motor pedig maximális sebességgel jár, ha az IN1 és IN2 bemenetek különböző szintűek. Kivéve: az A motor engedélyezését és sebességét az ENA tűn keresztül kell vezérelni. |
| ENB jumper | Behelyezve: a B csatorna állandóan engedélyezett, a B motor pedig maximális sebességgel jár, ha az IN3 és IN4 bemenetek különböző szintűek. Kivéve: a B motor engedélyezését és sebességét az ENB tűn keresztül kell vezérelni. |
| Védődiódák (8 db) | Elnyelik a motortekercsek által leállításkor vagy irányváltáskor keltett fordított feszültséget, és védik az L298N áramkört. |
| Elektrolit kondenzátorok 220 uF / 35 V | A motortápfeszültséget és az 5 V-os feszültséget szűrik. |
| LED jelzőfény | Akkor világít, ha a modul 5 V-os vonala táplált. |
| Rögzítőfurat | A modul rögzítése az alvázra. |
Kiosztás:

| Csatlakozó | Tű | Funkció |
|---|---|---|
| Tápcsatlakozó | +12V | Motortáplálás 5 - 35 VDC |
| Tápcsatlakozó | GND | Közös föld a motorok és a logika számára |
| Tápcsatlakozó | +5V | 5 V-os kimenet az 5V-EN jumperrel, 5 V-os bemenet a logikának jumper nélkül |
| A motor kapocs | OUT1 | A motor kimenete |
| A motor kapocs | OUT2 | A motor kimenete |
| B motor kapocs | OUT3 | B motor kimenete |
| B motor kapocs | OUT4 | B motor kimenete |
| Vezérlőtűk | ENA | Az A motor engedélyezése és PWM bemenet a sebességhez |
| Vezérlőtűk | IN1 | Az A motor irányának bemenete |
| Vezérlőtűk | IN2 | Az A motor irányának bemenete |
| Vezérlőtűk | IN3 | A B motor irányának bemenete |
| Vezérlőtűk | IN4 | A B motor irányának bemenete |
| Vezérlőtűk | ENB | A B motor engedélyezése és PWM bemenet a sebességhez |
| ENA | IN1 | IN2 | Állapot A motor |
|---|---|---|---|
| 0 | X | X | Kikapcsolva, szabad forgás |
| 1 | 1 | 0 | Forgás egy irányba |
| 1 | 0 | 1 | Forgás ellenkező irányba |
A B motor ugyanúgy működik, az ENB, IN3 és IN4 tűkkel.
Használat:
Csatlakoztassa az A motort az OUT1 és OUT2 kapocsra, a B motort pedig az OUT3 és OUT4 kapocsra. Bipoláris léptetőmotor esetén az egyik tekercset az OUT1 és OUT2, a másikat az OUT3 és OUT4 kapocsra kösse.
Táplálja a motorokat 5 - 35 VDC feszültséggel a +12V és GND kapcson keresztül, ügyelve a polaritásra. A motorhoz jutó feszültség körülbelül 2 V-tal kisebb a tápfeszültségnél, mert egy része a H-hídon esik el.
A modul logikájának táplálásához hagyja az 5V-EN jumpert behelyezve, ha a motorok tápfeszültsége 12 V alatt van. Ebben az esetben a +5V kapocs 5 V-os kimenetté válik, és táplálhatja a vezérlőkártyát, a LED jelzőfény pedig világít.
12 V vagy annál nagyobb tápfeszültség esetén vegye ki az 5V-EN jumpert, és a logikát 5 V-tal táplálja a +5V kapcson.
Ne kapcsoljon feszültséget a +5V kapocsra, amíg az 5V-EN jumper be van dugva, mert a szabályozó már táplálja a logikát.
Csatlakoztassa a vezérlőkártya földjét (GND) a modul GND kapcsára, hogy a vezérlőjeleknek közös referenciájuk legyen.
Csatlakoztassa az IN1, IN2, IN3 és IN4 bemeneteket a vezérlőkártya négy digitális kimenetéhez, az ENA és ENB bemeneteket pedig két PWM kimenethez. Például az Arduino Unónál használja az ENA-t a D9-re, az IN1-et a D8-ra, az IN2-t a D7-re, az IN3-at a D5-re, az IN4-et a D4-re és az ENB-t a D3-ra kötve.
A állítható sebességhez vegye ki az ENA és ENB jumpereket, és küldjön PWM jelet ezekre a bemenetekre. Behelyezett jumperekkel a motorok csak maximális sebességgel járnak, a vezérlés pedig csak az irányra és a leállításra korlátozódik.
Egy motor irányát úgy állítsa be, hogy az egyik bemenetére HIGH, a másikra LOW szintet ad. A szintek felcserélésével megfordul a forgásirány.
Ne állítsa egyszerre HIGH szintre ugyanazon motor mindkét bemenetét, például az IN1 és IN2, vagy az IN3 és IN4 bemenetet, mert ez tönkreteheti a modult. A programokban előbb a kikapcsolandó bemenetet vigye LOW szintre, és csak utána a másik bemenetet HIGH szintre.
Első induláskor kis PWM értéket használjon, és fokozatosan növelje. Ha a motor nem forog, ellenőrizze a tápellátást, a közös földet és az ENA és ENB jumperek behelyezését. Ha a forgásirány eltér a kívánttól, cserélje fel a motor vezetékeit vagy az IN1 és IN2 szinteket.
2 A-hez közeli áram csatornánként esetén biztosítson szellőzést a hűtőborda körül, és kerülje a motor leblokkolását, mert az áramkör felmelegszik.
3.3 V-os logikájú kártyák esetén a vezérlőjeleket 2.3 V-tól HIGH szintként ismeri fel a modul, a logika táplálása pedig továbbra is 5 V-on történik.
- Tápfeszültség
- 5-35 V DC
- Méretek
- 43 x 43 x 27 mm
- Típus
- Dupla H-híd
- Kimeneti áram
- max. 2 A csatornánként
- Logikai feszültség
- 5 V
- Védelmek
- 8 dióda induktív terhelésekhez
- Csatornák száma
- 2
- Integrált áramkör
- L298N
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:
Nu utilizati produsul la tensiuni, curenti sau temperaturi peste valorile specificate.
Montajul si conectarea trebuie realizate de persoane cu cunostinte tehnice minime in domeniul electric/electronic.
Evitati scurtcircuitele, inversarea polaritatii si conectarea gresita a alimentarii.
Nu lasati produsul alimentat nesupravegheat in timpul testelor.
Produsul nu este jucarie si nu este destinat copiilor.
Pentru modulele electronice, se recomanda utilizarea in carcase, panouri sau montaje protejate, dupa caz.
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]
Documentatie si siguranta:
Pentru informatii suplimentare, fise tehnice, declaratii de conformitate sau instructiuni, ne puteti contacta la [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);
}
A Dupla H-híd L298N modul egy egyenáramú motorok meghajtására szolgáló vezérlő, amely az L298N áramkör köré épül. Két DC motort tud egymástól függetlenül vezérelni irány és sebesség szerint, vagy egy bipoláris léptetőmotort. Robotokban kerekekkel, távirányítós autókban, kis szállítószalagokon és minden olyan projektben találkozunk vele, ahol a mikrokontrollernek olyan motort kell mozgatnia, amely többet fogyaszt, mint amennyit a kártya egy lába képes adni.
Ebben az útmutatóban Arduino Uno R3-at használunk, mert a modulnak szüksége van egy mikrokontrollerre, amely vezérlőjeleket ad neki, és az Uno 5 V-os logikai szintje közvetlenül illeszkedik a modul bemeneteihez. Két, fokozatmentes TT motort vezérlünk, amelyeket 9 VDC-s hálózati adapterről táplálunk.

Működés:
Egy DC motor a kapcsain lévő feszültség polaritásától függően az egyik vagy a másik irányba forog. A H-híd egy négy kapcsolóból álló elrendezés, amely lehetővé teszi, hogy egy logikai jelből megfordítsuk ezt a polaritást. Az L298N áramkör két ilyen hidat tartalmaz, így két motort tud vezérelni. Az A motorhoz az IN1 és IN2 bemenetek tartoznak, a B motorhoz pedig az IN3 és IN4 bemenetek.
A forgásirányt a motor két bemenetén lévő szintek kombinációja határozza meg. A HIGH szint mindkét bemeneten soha nem használható, mert károsíthatja a modult.
| IN1 (IN3) | IN2 (IN4) | Eredmény |
|---|---|---|
| HIGH | LOW | A motor előre forog |
| LOW | HIGH | A motor hátra forog |
| LOW | LOW | A motor áll |
| HIGH | HIGH | Tilos ebben az áramkörben, ne használja ezt a kombinációt |
A sebességet PWM jellel szabályozzuk az ENA (A motor) és az ENB (B motor) lábakon. Az Arduino Unón az analogWrite függvény 0 és 255 közötti értékeket fogad el. A 0 érték azt jelenti, hogy a motor áll, a 255 pedig folyamatos táplálást jelent. A motorra jutó átlagos feszültség hozzávetőleg Vmotor = (VS - Vcadere) x PWM / 255.
Az L298N belsőleg veszít egy részt a feszültségből, hozzávetőleg 1,8 - 3,2 V-ot 1 A áramnál, és közel 5 V-ot 2 A áramnál. Ebben az áramkörben a VS 9 V, tehát 255-ös PWM mellett egy körülbelül 1 A-t fogyasztó motor hozzávetőleg 7 V-ot kap. A TT motorokat 3 - 6 V-ra tervezték, ezért a PWM értéket 200-ra korlátozzuk. 200-nál az átlagos feszültség hozzávetőleg 7 x 200 / 255 = 5,5 V, ami a motorok biztonságos tartományán belül van.
A modul egy 78M05 stabilizátort is tartalmaz, amely 5 V-ot tud előállítani a logikai részhez. Ha az 5V-EN jumper be van dugva, a stabilizátor aktív, és a +5V csatlakozó 5 V-os kimenetté válik, legfeljebb 0,5 A áramerősséggel. Ez a változat csak akkor használható, ha a VS feszültség legfeljebb 12 V. 12 V felett a jumpert ki kell venni, és a +5V csatlakozót külső forrásból kell táplálni.
Csatlakoztatás:
A motorokat egy legalább 1 A-es, 9 VDC-s hálózati adapterről táplálja, amely egy csavaros sarkú jack csatlakozón keresztül kapcsolódik. Az Arduino Uno kártyát külön, az USB kábelen keresztül kell táplálni. Az adapter mínuszát, a modul GND pontját és az Uno kártya GND lábát össze kell kötni, különben a vezérlőjelek nem lesznek közös referenciával, és a motorok nem reagálnak megfelelően. A modul bemenetei közvetlenül elfogadják az Uno 5 V-os logikai szintjét, ezért nincs szükség szintillesztőre.
| Modul láb | Csatlakozik ide | Szerep |
|---|---|---|
| +12V (VS) | A 9 VDC-s adapter pozitív kivezetése | A motorok táplálása |
| GND | A 9 VDC-s adapter negatív kivezetése és az Uno kártya GND lába | Közös föld |
| +5V | Nincs csatlakoztatva | Az 5V-EN jumperrel 5 V-os kimenet, az Uno kártya USB-n keresztül marad táplálva |
| ENA | D9 (PWM) | Az A motor sebessége |
| IN1 | D8 | Az A motor iránya |
| IN2 | D7 | Az A motor iránya |
| IN3 | D5 | A B motor iránya |
| IN4 | D4 | A B motor iránya |
| ENB | D3 (PWM) | A B motor sebessége |
| OUT1 | Az A motor piros vezetéke | A motor A kimenete |
| OUT2 | Az A motor fekete vezetéke | A motor A kimenete |
| OUT3 | A B motor piros vezetéke | A motor B kimenete |
| OUT4 | A B motor fekete vezetéke | A motor B kimenete |
Az ENA és ENB jumpereket távolítsa el a modul táplálása előtt, hogy a sebességet PWM-mel tudja szabályozni. A modulon már van két 220 uF-os kondenzátor és a motorok védődiódái, ezért további alkatrészeket nem kell hozzáadni.
Gombok, beállítások és jelzők:
| Elem | Mire szolgál | Hogyan használjuk |
|---|---|---|
| 5V-EN jumper | Bekapcsolja a modul 5 V-os stabilizátorát | Helyben hagyjuk, ha a VS 12 V vagy annál kevesebb, mint ebben az útmutatóban. Ki kell venni, ha a VS 12 V fölé megy, és a +5V csatlakozót külső forrásból tápláljuk |
| ENA jumper | Az ENA bemenetet 5 V-ra rögzíti, így az A motor mindig maximális sebességgel jár | Ki kell venni, hogy a D9 láb PWM-mel tudja vezérelni a sebességet |
| ENB jumper | Az ENB bemenetet 5 V-ra rögzíti, így a B motor mindig maximális sebességgel jár | Ki kell venni, hogy a D3 láb PWM-mel tudja vezérelni a sebességet |
| Táplálást jelző LED | Jelzi, hogy a modul kap-e feszültséget | Akkor világít, ha a modul feszültséget kap. Ha sötét marad, ellenőrizze az adaptert és a +12V csatlakozót |
Az 5V-EN jumper: a jumperrel bekapcsolva indítsa el. Ebben az áramkörben a VS 9 V, így a stabilizátor aktív maradhat. A +5V csatlakozót nem kell az Arduinóhoz kötni, mert az Uno kártya USB-n keresztül kap táplálást. Soha ne táplálja külső forrásból a +5V csatlakozót, amíg a jumper be van dugva.
Az ENA és ENB jumperek: mindkettőt távolítsa el az első indítás előtt. Ha a jumper be van dugva, az adott motor folyamatosan maximális sebességgel fut, és a PWM vezérlés nincs hatással rá. A szabályozás akkor működik, ha a motor sebessége változik, miközben a program az analogWrite értékét módosítja.
A táplálást jelző LED: az adapter csatlakoztatása után a LED-nek azonnal ki kell gyulladnia. Ez az első dolog, amit ellenőrizni kell, ha valami nem működik.
Panel és könyvtárak:
Az Arduino IDE-ben válassza a Tools > Board > Arduino AVR Boards > Arduino Uno menüpontot. Az Arduino AVR Boards csomag az Arduino IDE-vel együtt érkezik, ezért nem kell külön telepíteni. A program csak az Arduino alapfunkcióit használja, így nem szükséges könyvtárat telepíteni.
A kód:
A program minden motort előre és hátra forgat, két sebességgel, majd mindkét motort együtt jártatja. Másolja be az Arduino IDE-be, és töltse fel az Uno kártyára.
/*
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
}
A kód működése:
Az elején a lábak a következő konstansokkal vannak megadva: ENA, IN1, IN2, ENB, IN3 és IN4, pontosan a csatlakoztatási táblázat szerint. A MAX_PWM konstans értéke 200, és a sebességet korlátozza, hogy a TT motorok ne kapjanak 6 V-nál többet.
A setup függvényben minden lábat kimenetként konfigurálunk, elindítjuk a soros monitort 9600 baudon, és mindkét motort leállítjuk, hogy alaphelyzetbe állításkor ne induljon el semmi nemkívánatos.
A setMotorA és setMotorB függvények megkapják a sebességet és az irányt. A sebességet a constrain függvénnyel korlátozzák, először LOW szintet írnak arra a bemenetre, amelynek inaktívnak kell lennie, és csak utána HIGH szintet a másikra. Így ugyanazon motor két bemenete soha nincs egyszerre HIGH állapotban. Végül az analogWrite alkalmazza a sebességet az enable lábon. A stopMotorA és stopMotorB függvények mindkét bemenetet LOW szintre állítják, a sebességet pedig 0-ra.
A loop függvény a tesztsorozatot futtatja: az A motor előre két sebességgel, leállítás, az A motor hátra, majd ugyanezek a lépések a B motorral, végül mindkét motor együtt. A szüneteket a delay függvény adja, a soros monitor üzenetei pedig minden lépésnél megmutatják, milyen parancs ment ki.
Eredmény:
Nyissa meg a Serial Monitort 9600 baudon. A program feltöltése után megjelennek az alábbi üzenetek, és a motorok ugyanabban a sorrendben mozognak. Ha valamelyik motor az üzenettel ellentétes irányban forog, cserélje meg egymással a motor két vezetékét az OUT csatlakozónál.
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
Gyakori problémák:
A motorok egyáltalán nem mozognak. A leggyakoribb ok a táplálás vagy a föld. Ellenőrizze, hogy a táplálást jelző LEDég-e, és hogy az Uno kártya GND lába össze van-e kötve a modul GND lábával. Közös föld nélkül a vezérlőjeleket nem ismeri fel a rendszer.
Az egyik motor mindig maximális sebességgel jár, a PWM értékétől függetlenül. Az ENA vagy ENB jumper még be van dugva. Vegye ki, hogy a D9 vagy a D3 láb tudja szabályozni a sebességet.
A motor zúg, de kis sebességnél nem indul el. Egy bizonyos PWM érték alatt az átlagos feszültség túl kicsi ahhoz, hogy legyőzze a sebességváltó súrlódását. Növelje az analogWrite értékét, vagy szükség esetén használjon nagyobb VS feszültséget.
A motor a kívánttal ellentétes irányba forog. Cserélje meg egymással a motor két vezetékét az OUT csatlakozónál, vagy változtassa meg a kódban az adott motorhoz tartozó HIGH és LOW értékeket.
Az Uno kártya újraindul, amikor a motorok elindulnak. A motorok zavarokat és feszültségesést okoznak a földön. Ellenőrizze a földvezetékeket, használjon legalább 1 A-t szolgáltató adaptert, és tartsa távol a motorok vezetékeit a jelvezetékektől.
A modul hűtőbordája felmelegszik. Nagy áramnál ez normális, mert a teljesítmény egy része az L298N áramkörben disszipálódik. Ha hosszú ideig nem érinthető meg, csökkentse a terhelést, vagy biztosítson szellőzést.
Korlátok és tanácsok:
A modul motorokhoz 5 - 35 VDC feszültséget fogad el, és csatornánként legfeljebb 2 A áramot tud adni. A belső feszültségesés miatt a motor a táplálófeszültségnél kevesebbet kap, ezért válassza úgy a VS feszültséget, hogy az 2 - 3 V-tal a motor névleges feszültsége fölött legyen. Kis, 3 - 6 V-os motorokhoz egy 9 V-os tápforrás, a PWM kb. 200-ra korlátozásával, biztonságos választás.
Az L298N áramkör nem hatékony, ezért elemről működő, nagy fogyasztású motorokhoz a MOSFET tranzisztorokkal működő meghajtó megfelelőbb. Ugyanakkor a modul kiválóan alkalmas tanulásra és kis robotokhoz. Ugyanezzel az elrendezéssel építhet két kerekes robotot, ha távolságérzékelőt vagy távirányítót ad hozzá. Soha ne kapcsoljon HIGH szintet egyszerre az IN1 és IN2, vagy az IN3 és IN4 bemenetekre.