
Prispevki
L298N: priklop DC in koračnega motorja na Arduino (pinout, koda)

Uvod
L298N je najbolj razširjen gonilnik motorjev v hobi elektroniki: za deset evrov dobite modul, ki poganja dva DC motorja ali en koračni motor, prenese od 5 do 35 V in ga na Arduino privežete s šestimi žicami. Arduinovi pini zmorejo 40 mA — motor pa potegne ampere. L298N je most med njima.
V tem vodiču razložimo pinout modula L298N, delovanje H-mostiča, priklop dveh DC motorjev in koračnega motorja z delujočo kodo, pravilno napajanje (vključno z jumperjem za 5 V) in napake, ki modul najpogosteje uničijo. Na koncu dodamo primerjavo s sodobnejšimi gonilniki, da boste vedeli, kdaj je L298N prava izbira in kdaj ne.
Kaj je L298N in kdaj ga uporabiti
Čip L298 je dvojni polni H-mostič podjetja STMicroelectronics, modul L298N pa čipu doda vse potrebno za takojšnjo uporabo: sponke za napajanje in motorje, 5 V regulator, zaščitne diode in hladilno telo. Vsak od dveh kanalov trajno prenese 2 A, kratkotrajno do 3 A.
L298N uporabite, ko želite iz Arduina krmiliti smer in hitrost enega ali dveh DC motorjev — tipično pri robotku na kolesih — ali preprost bipolarni koračni motor. Ni pa primeren za serve (ti imajo lastno krmilno elektroniko in potrebujejo samo PWM signal) niti za motorje s tokom nad 2 A na kanal.
| Specifikacija L298N | Vrednost |
|---|---|
| Napajanje motorjev (Vs) | 5–35 V |
| Trajni tok na kanal | 2 A (kratkotrajno 3 A) |
| Padec napetosti na mostiču | približno 2 V (pri 2 A tudi več) |
| Logična napetost | 5 V (HIGH že od ~2,3 V) |
| Vgrajeni regulator | 78M05, 5 V — uporaben do 12 V na Vs |
| Zaščitne diode | 8, vgrajene na modulu |
L298N pinout: priključki modula

Močnostne sponke, krmilni pini IN1–IN4, ENA/ENB in tabela smeri vrtenja.
Modul ima tri skupine priključkov: močnostne sponke, krmilne pine in izhode za motorja.
| Priključek | Funkcija |
|---|---|
| +12V (Vs) | napajanje motorjev, 5–35 V |
| GND | skupna masa — obvezno povezana z maso Arduina |
| +5V | izhod regulatorja (jumper na) ali vhod za logiko (jumper snet) |
| OUT1, OUT2 | izhod kanala A — prvi motor ali prva tuljava koračnega |
| OUT3, OUT4 | izhod kanala B — drugi motor ali druga tuljava |
| IN1, IN2 | smer kanala A |
| IN3, IN4 | smer kanala B |
| ENA, ENB | vklop kanala; s PWM signalom določata hitrost |
Kombinacija IN1/IN2 določa smer: HIGH/LOW vrti naprej, LOW/HIGH nazaj, enaki vrednosti motor ustavita. ENA in ENB imata tovarniško nata knjena jumperja — z njima je kanal stalno vklopljen s polno hitrostjo. Za nadzor hitrosti jumper snemite in pin povežite na PWM izhod Arduina.
Kako deluje H-mostič

Štiri stikala v obliki črke H obrnejo smer toka skozi motor.
H-mostič je vezje štirih stikal, razporejenih v obliki črke H, z motorjem na sredini. Če se skleneta zgornje levo in spodnje desno stikalo, teče tok skozi motor v eno smer; če se skleneta drugi dve, teče v nasprotno. Tako lahko motorju obrnete polariteto — in s tem smer vrtenja — brez fizičnega prevezovanja.
V čipu L298 so stikala izvedena z bipolarnimi Darlington tranzistorji. To je robustna, a stara tehnologija z eno pomembno posledico: na mostiču pade približno 2 V (pri večjem toku tudi 3 V ali več). Motor pri 12 V napajanju torej dobi le okoli 10 V, izgubljena moč pa se spremeni v toploto na hladilnem telesu. Zato modul pri delu greje — to je normalno — in zato L298N ni smiseln za motorje s 3 V nazivno napetostjo.
Za zaščito pred napetostnimi konicami ob izklopu navitij ima modul že vgrajenih osem povratnih (flyback) diod — zunanjih ne potrebujete.
Priklop dveh DC motorjev na Arduino

IN1–IN4 na digitalne pine, ENA na pin 9, ENB na pin 3, masa obvezno skupna.
Osnovna vezava za robotka z dvema motorjema: IN1–IN4 na digitalne pine Arduina, ENA in ENB (brez jumperjev) na PWM pina, motorja na OUT sponke, napajanje na Vs in — ključno — masa modula na maso Arduina. Razporeditev Arduinovih pinov najdete v vodiču Arduino UNO pinout.
// L298N + 2 DC motorja
#define ENA 9
#define IN1 8
#define IN2 7
#define IN3 5
#define IN4 4
#define ENB 3
void setup() {
for (int p = 3; p <= 9; p++) pinMode(p, OUTPUT);
}
void naprej(int hitrost) {
digitalWrite(IN1, HIGH); digitalWrite(IN2, LOW);
digitalWrite(IN3, HIGH); digitalWrite(IN4, LOW);
analogWrite(ENA, hitrost); // 0-255
analogWrite(ENB, hitrost);
}
void stop() {
digitalWrite(IN1, LOW); digitalWrite(IN2, LOW);
digitalWrite(IN3, LOW); digitalWrite(IN4, LOW);
}
void loop() {
naprej(200);
delay(2000);
stop();
delay(1000);
}
Za vožnjo v ovinek preprosto pošljete kanaloma različni hitrosti, za obračanje na mestu pa motorjema nasprotni smeri.
Nadzor hitrosti s PWM
Hitrost DC motorja določa povprečna napetost, to pa na L298N dosežete s PWM signalom na pinu ENA oziroma ENB. Ukaz analogWrite(ENA, 128) vklaplja kanal s 50 % delovnim ciklom, motor pa se vrti približno s polovično hitrostjo. Kaj se pri tem v resnici dogaja, smo razložili v člankih Kaj je PWM signal in PWM in Arduino mikrokrmilnik.
Pomembna praksa: DC motor se pod pragom približno 30–40 % PWM sploh ne zavrti, samo brni. Vsak motor ima svoj minimum, ki ga ugotovite s poskusom. Če potrebujete zelo počasno in hkrati močno vrtenje, je boljša izbira koračni motor ali DC motor z reduktorjem.
Priklop koračnega motorja na L298N
L298N požene bipolarni koračni motor: ena tuljava na OUT1/OUT2, druga na OUT3/OUT4, IN1–IN4 na štiri digitalne pine, jumperja na ENA in ENB pa pustite nameščena. Vrstni red energiziranja tuljav prevzame Arduinova vgrajena knjižnica Stepper.
#include <Stepper.h>
const int KORAKI = 200; // NEMA17: 1,8° na korak
Stepper motor(KORAKI, 8, 7, 6, 5); // IN1, IN2, IN3, IN4
void setup() {
motor.setSpeed(60); // vrt/min
}
void loop() {
motor.step(200); // en obrat naprej
delay(500);
motor.step(-200); // en obrat nazaj
delay(500);
}
Omejitev, ki jo morate poznati: L298N nima nastavljanja toka (current limiting). Koračni motor z nizko upornostjo navitij — to je večina sodobnih NEMA17 — bo skozi modul vlekel prevelik tok in se grel. Za resno delo s koračnimi motorji (3D tiskalnik, CNC) so pravi namenski gonilniki tipa A4988 ali DRV8825; več o tem v našem vodiču o koračnih motorjih. L298N je za koračni motor smiseln pri starejših motorjih z višjo upornostjo navitij in za učenje.
L298N in ESP32 ali drugi 3,3 V krmilniki
L298N ni omejen na Arduino Uno. Logika čipa L298 prepozna HIGH že pri približno 2,3 V, zato 3,3 V signali iz ESP32, Raspberry Pi Pico ali ESP8266 krmilijo modul brez pretvornika nivojev. IN in EN pine preprosto povežete na proste GPIO pine — pri ESP32 preverite v našem vodiču ESP32 pinout, kateri pini so varni za izhode.
Dve posebnosti pri ESP32: namesto analogWrite uporabite ledcAttach in ledcWrite (ali analogWrite iz novejših različic jedra, ki ga preslika na LEDC), PWM frekvenco pa lahko dvignete na 20 kHz in s tem odpravite piščanje motorja, ki ga pri Arduinovih 490 Hz včasih slišite. Druga posebnost je napajanje: 5 V izhod modula lahko napaja ploščo ESP32 prek pina 5V/VIN, nikoli pa ne sme na pin 3V3.
Napajanje modula: jumper, 12 V in 24 V

Do 12 V jumper nameščen, nad 12 V obvezno snet — sicer regulator pregori.
Na modulu je poleg sponk še en majhen, a odločilen jumper: regulator 5 V. Z nameščenim jumperjem vgrajeni regulator 78M05 iz napajanja motorjev izdeluje 5 V za logiko čipa — in ta 5 V izhod lahko celo napaja Arduino. To velja do približno 12 V na sponki Vs.
Nad 12 V (na primer 24 V napajanje) jumper obvezno snemite, sicer regulator pregori. V tem primeru morate na sponko +5V pripeljati logično napetost od zunaj, na primer z Arduinovega 5 V pina. Najvišje dovoljeno napajanje motorjev je 35 V.
Tok načrtujte po zagonskem, ne nazivnem toku motorja — ob zagonu ali blokadi DC motor potegne nekajkrat več. Kako dimenzionirati baterije in pretvornike, smo opisali v članku o napajanju Arduino projektov. In še zlato pravilo, ki velja za vsak gonilnik: masa napajalnika, modula in Arduina morajo biti povezane v skupno točko.
Pogoste napake pri delu z L298N
Največ modulov uniči jumper regulatorja pri napajanju nad 12 V — preverite ga, preden priklopite 24 V. Druga najpogostejša napaka je pozabljena skupna masa: motor se ne odziva ali se vrti sunkovito, IN pini pa berejo naključne vrednosti.
Tretja je pričakovanje, da bo motor pri 12 V napajanju dobil 12 V — zaradi padca na Darlington tranzistorjih dobi okoli 10 V in temu primerno slabše vleče. Če projekt računa na polno napetost, izberite napajanje 2–3 V višje od nazivne napetosti motorja.
Četrta je preobremenitev: 2 A na kanal velja z dobrim hlajenjem. Modul, ki mu pri delu ne morete držati prsta na hladilnem telesu, potrebuje večje hladilno telo, ventilator ali močnejši gonilnik. Pri robotkih na baterije pa upoštevajte še, da L298N tudi v mirovanju porablja nekaj deset miliamperov.
L298N ali sodobnejši gonilniki

L298N za učenje in 12 V motorje, TB6612FNG za baterijske projekte, A4988 za koračne.
L298N je star čip in za določene naloge obstajajo boljše izbire.
| Gonilnik | Tehnologija | Tok na kanal | Najboljši za |
|---|---|---|---|
| L298N | bipolarni (Darlington) | 2 A | učenje, robotki, 12 V DC motorji |
| TB6612FNG | MOSFET | 1,2 A | manjši DC motorji 3–12 V, baterijski projekti |
| A4988 / DRV8825 | MOSFET + omejevanje toka | 1–2,2 A | koračni motorji, 3D tiskalniki, CNC |
| BTS7960 | MOSFET pol-mostič | 43 A | veliki DC motorji, e-vozila |
Pravilo palca: za DC motorje pri 12 V in tokovih do 2 A je L298N še vedno odlično razmerje med ceno in robustnostjo. Za baterijske projekte z majhnimi motorji vzemite TB6612FNG (manjši padec napetosti), za koračne motorje namenski gonilnik z omejevanjem toka, za brezkrtačne motorje pa povsem drugo vrsto krmilnika (ESC).
Odpravljanje težav korak za korakom

Šest korakov z multimetrom: od meritve Vs do preverjanja skupne mase.
Ko motor molči, sledite vrstnemu redu, ki najhitreje izloči vzrok. Najprej z multimetrom izmerite napetost na sponkah Vs in GND — pod obremenitvijo, ne v prazno, ker slaba baterija ravno takrat klekne. Nato izmerite pin +5V: če regulator ne daje približno 5 V, logika čipa ne dela, tudi če motorsko napajanje je.
Naslednji korak je preverjanje krmilnih signalov: multimeter na IN1 mora pokazati približno 5 V (oziroma 3,3 V pri ESP32), ko koda pošlje HIGH. Če kaže nič, je težava v kodi ali ožičenju do krmilnika. Preverite tudi, da sta jumperja ENA/ENB bodisi nameščena bodisi pina vezana na PWM — odprt EN pin pomeni izklopljen kanal.
Če signali so, motor pa stoji, zamenjajte stran: motor prestavite z OUT1/OUT2 na OUT3/OUT4 in krmiljenje na IN3/IN4. Če na drugem kanalu dela, je prvi kanal čipa pregorel — najpogosteje zaradi kratkega stika na izhodu ali preobremenitve. In še zadnji klasični vzrok: IN pini brez skupne mase z Arduinom berejo naključne vrednosti, zato motor trza brez logike.
Pogosta vprašanja o L298N
Ali lahko z enim modulom L298N poganjam en močnejši motor?
Da — kanala lahko vzporedite (OUT1 z OUT3, OUT2 z OUT4, enako krmiljenje obeh kanalov) in dobite do približno 3 A trajno. Pri tem še bolj pazite na hlajenje.
Zakaj se motor pri nizkem PWM ne vrti?
Pod približno tretjino delovnega cikla navor ne premaga trenja in motor samo brni. Dvignite minimalno vrednost PWM ali uporabite motor z reduktorjem.
Ali L298N potrebuje zunanje diode?
Modul jih ima že vgrajene — osem povratnih diod ščiti tranzistorje pred napetostnimi konicami navitij. Goli čip L298 (brez modula) pa jih potrebuje.
Ali lahko na L298N priklopim servo motor?
Ne — servo ni običajen DC motor. Krmilno elektroniko že vsebuje in pričakuje samo PWM signal na signalni žici, zato gre neposredno na Arduino pin.
Kakšen koračni motor lahko požene L298N?
Bipolarnega s tokom do 2 A na fazo in po možnosti z višjo upornostjo navitij. Sodobni nizkoohmski NEMA17 se bodo greli, ker modul nima omejevanja toka — zanje uporabite A4988 ali DRV8825.
Zakaj modul L298N tako greje?
Zaradi padca napetosti okoli 2 V na Darlington tranzistorjih se pri 2 A na hladilnem telesu sprošča nekaj vatov toplote. Gretje je normalno; pregrevanje (prst ne zdrži dotika) pomeni preobremenitev.
Zaključek
L298N ostaja najpreprostejša pot od Arduina do vrtečega se motorja: dva kanala po 2 A, vgrajene zaščitne diode, 5 V regulator in cena, ki dopušča napake začetnika. Zapomnite si tri stvari — skupna masa, jumper regulatorja pod 12 V in računanje s padcem približno 2 V — pa vas modul ne bo pustil na cedilu.
Modul motor driver L298N v2 in druge gonilnike najdete med moduli za motorje na 3DSVET.eu.
Potrebujete gonilnik motorjev za svoj projekt?
V trgovini 3DSVET najdete L298N, TB6612FNG in gonilnike koračnih motorjev — vse z dostavo po EU.

