
A hűtés és a légkeverés kulcsszerepet játszik az elektronikai rendszerek stabil működésében, legyen szó mikrovezérlős projektekről, robotikáról vagy akár egyedi számítógépházakról. A megfelelő ventilátorvezérlés azonban kihívást jelenthet, különösen kezdők számára. Hogyan kapcsolhatunk be és szabályozhatunk egy ventilátort egy egyszerű mikrokontrollerrel? Hogyan biztosíthatjuk, hogy megfelelő sebességgel forogjon? Milyen módon állíthatjuk be a forgásirányt?
Ebben a cikkben a L9110 motorvezérlő IC-vel ellátott ventilátormodul működését, használatát és programozását mutatom be. Kezdők számára érthető módon, de kellő mélységben ahhoz, hogy haladóbb felhasználók is hasznosnak találják. Az útmutató segít Arduino, ESP8266 és ESP32 mikrokontrollerekkel történő vezérlésben, részletes kódrészletekkel és gyakorlati tippekkel.
Ha saját DIY ventilátoros hűtési rendszert, okos légkeverőt vagy egy kompakt robotikai alkalmazást szeretnél építeni, ez az útmutató Neked szól!
Mi az L9110 ventilátormodul, és mire használható?
Az L9110 ventilátormodul egy kisméretű, könnyen vezérelhető motorvezérlő és ventilátor egyetlen áramköri lapon. A célja, hogy egyszerű és hatékony megoldást nyújtson a kis teljesítményű ventilátorok vezérlésére, miközben lehetőséget biztosít a forgásirány megváltoztatására és a sebesség szabályozására.
Ez a modul ideális választás kezdők számára, hiszen kevés alkatrészt igényel, könnyen programozható és stabilan működik 3,3V-os vagy 5V-os logikai jelekkel is.
Hol használható az L9110 ventilátormodul?
- Mikrokontrolleres hűtési rendszerekben – például Arduino és Raspberry Pi hűtésére,
- DIY légkeverő projektekhez – kis helyiségek szellőztetése vagy automatizált légáramlás szabályozására,
- Robotikában – kis méretű mobil robotok légáramlási optimalizálásához,
- Intelligens ventilátoros vezérlésekhez – például hőmérséklet-érzékelőkkel kombinálva automatizált hűtőrendszerek építésére.
Az L9110 ventilátormodul működése és technikai paraméterei
A motorok és ventilátorok közvetlenül nem köthetők mikrokontrollerre, mert azok nem képesek elég áramot biztosítani, valamint a feszültségkülönbség is problémát okozhat. Az L9110 ezt a problémát oldja meg, mivel egy H-híd típusú motorvezérlő IC-t tartalmaz, amely lehetővé teszi az egyszerű motor- és ventilátorszabályozást.

A ventilátor-modul önállóan tartalmazza a nagyobb áramú motorvezérlést és a ténylegesen meghajtandó motort – ami egy ventilátorlapátban végződik.
Az áramköri modul felépítését a kapcsolási rajz jól mutatja:

A vezérlő áramkör bemenetei:
– SV1 csatlakozó (jobb oldalon) biztosítja a vezérlőjelet és a tápfeszültséget.
– R1 és R2 ellenállások segítenek a megfelelő jelszintek beállításában (opcionális, a belső felhúzó-ellenállás preferált).
– A szűrőkondenzátorok opcionálisan elhagyhatóak.
Az L9110 motorvezérlő működési elv
Az L9110 IC egy H-híd konfigurációt valósít meg, amely lehetővé teszi a motorok és ventilátorok előre és hátra történő forgatását. A H-híd áramkör négy kapcsolóelemet tartalmaz, amelyek megfelelő kombinációjával a motorra jutó feszültség polaritása megváltoztatható, így szabályozva a forgásirányt.
InA és InB: Ezek a bemeneti lábak határozzák meg a motor forgásirányát és állapotát az alábbi igazságtábla szerint:
InA | InB | Motor Állapota |
---|---|---|
0 | 0 | Fék (mindkét kimenet LOW) |
1 | 0 | Előre forgás |
0 | 1 | Hátra forgás |
1 | 1 | Stop (mindkét kimenet HIGH) |
OA és OB: Ezek a kimeneti lábak csatlakoznak a motorhoz vagy ventilátorhoz, és a bemeneti jeleknek megfelelően szolgáltatják a szükséges feszültséget és áramot.
Működési paraméterek
Az L9110 IC legfontosabb műszaki jellemzői a következők:
- Tápfeszültség (VCC): 2,5V – 12V
- Kimeneti Áram: 800mA folyamatos, 1,5A csúcsáram
- Bemeneti Feszültségszintek:
- Alacsony Szint (VINL): 0 – 0,25 * VCC
- Magas Szint (VINH): 0,7 * VCC – VCC
- Kimeneti Teljesítmény: Alacsony telítési feszültség, például 100mA kimeneti áram esetén a telítési feszültség mindössze 0,19V
- Nyugalmi Áramfelvétel: 0,2µA (terhelés nélkül)
- Üzemi Hőmérséklet: -20°C – 80°C
- Kompatibilitás: TTL/CMOS kimeneti szintek, közvetlenül csatlakoztatható mikrokontrollerekhez
- Védelem: Beépített szorító diódák az induktív terhelések okozta visszáramok ellen
Bekötés és csatlakoztatás mikrokontrollerhez
Az L9110 két bemenetet használ a vezérléshez, azaz a ventilátormodul négy csatlakozási ponttal rendelkezik:
- IN1 (irányvezérlés) – Ez a bemenet határozza meg, hogy a ventilátor melyik irányba forogjon.
- PWM jel (sebességszabályozás) – Az áramkör támogatja a pulzusszélesség-modulációt (PWM), amely lehetővé teszi a ventilátor sebességének finomhangolását.
Csatlakozó neve | Funkció | Uno kivezetés |
VCC | Tápellátás (5V vagy 12V) | +5V |
GND | Föld | GND |
INA (IN1) | Forgásirány-vezérlés (LOW vagy HIGH) | D8 |
INB (PWM) | Sebességszabályozás (PWM jel 0-255) | D9 |
Egy Arduino mikrokontrollerhez a bekötése egyszerűen:

Arduino programkód – ventilátor sebesség- és irányvezérlése
Az alábbi program segítségével beállíthatod a ventilátor sebességét és forgásirányát.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | // L9110 ventilátormodul vezérlése Arduinóval #define FAN_PWM 9 // PWM kimenet a sebességhez #define FAN_IN1 8 // Ventilátor forgásirány-vezérlés void setup() { pinMode(FAN_IN1, OUTPUT); pinMode(FAN_PWM, OUTPUT); } void loop() { // Ventilátor előre 50%-os sebességgel digitalWrite(FAN_IN1, LOW); analogWrite(FAN_PWM, 128); delay(5000); // Maximális sebesség ugyanabban az irányban analogWrite(FAN_PWM, 255); delay(5000); // Forgásirány megfordítása digitalWrite(FAN_IN1, HIGH); analogWrite(FAN_PWM, 128); delay(5000); // Maximális sebesség az ellenkező irányban analogWrite(FAN_PWM, 255); delay(5000); // Kikapcsolás analogWrite(FAN_PWM, 0); delay(5000); } |
Program működése
1. Lábak beállítása a setup()
függvényben:
– Az IN1 lábat kimeneti üzemmódba állítjuk, ez vezérli a ventilátor forgásirányát.
– A PWM lábat (D9) szintén kimeneti üzemmódba állítjuk, amely a ventilátor sebességét szabályozza.
2. A loop()
ciklusban végrehajtott lépések:
– Először beállítjuk az IN1 lábat LOW-ra, így a ventilátor egy adott irányba forog.
– A analogWrite(FAN_PWM, 128);
sor 50%-os sebességet állít be, vagyis a ventilátor fél erővel pörög.
– 5 másodpercig ebben az állapotban marad (delay(5000);
).
– Ezután a PWM értéket 255-re növeljük, ami maximális sebességet jelent.
– Újabb 5 másodperc várakozás után a PWM-et 0-ra állítjuk, így a ventilátor kikapcsol.
– Ha egyszerűen szeretnéd bekapcsolni vagy kikapcsolni a ventilátort.
– Ha nincs szükséged forgásirány váltásra.
– Ha csak néhány sebességszintet szeretnél használni (pl. 50% és 100%).
Ez az alapvető kód teljesen működőképes, és nagyon könnyen bővíthető további funkciókkal, például nyomógombos vezérléssel vagy hőmérséklet-érzékelővel!
Bővített programkód az L9110 motorvezérlő és ventilátormodulhoz
Az alábbi bővített programkód lehetővé teszi az L9110 ventilátormodul teljes körű vezérlését. A programban a ventilátor sebességét PWM-mel szabályozzuk, valamint lehetőséget biztosítunk a forgásirány megváltoztatására. Emellett gombok segítségével manuálisan is vezérelhetjük a ventilátor működését.
A program funkciói
- Ventilátor be- és kikapcsolása
- Sebességszabályozás PWM segítségével
- Forgásirány megváltoztatása
- Nyomógombokkal történő kézi vezérlés
- Hőmérséklet-vezérlés (NTC szenzorral, opcionálisan)
Az Arduino programkód
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 | // L9110 ventilátormodul vezérlése Arduinóval // Arduino lábkiosztás #define FAN_PWM 9 // PWM kimenet a sebesség szabályozására #define FAN_IN1 8 // Digitális kimenet a forgásirány vezérlésére #define BUTTON_SPEED_UP 2 // Nyomógomb a sebesség növelésére #define BUTTON_SPEED_DOWN 3 // Nyomógomb a sebesség csökkentésére #define BUTTON_DIRECTION 4 // Nyomógomb a forgásirány váltására int fanSpeed = 128; // Kezdő ventilátor sebesség (50%) bool fanDirection = LOW; // Alapértelmezett forgásirány void setup() { pinMode(FAN_IN1, OUTPUT); pinMode(FAN_PWM, OUTPUT); pinMode(BUTTON_SPEED_UP, INPUT_PULLUP); pinMode(BUTTON_SPEED_DOWN, INPUT_PULLUP); pinMode(BUTTON_DIRECTION, INPUT_PULLUP); // Kezdetben állítsuk le a ventilátort digitalWrite(FAN_IN1, fanDirection); analogWrite(FAN_PWM, 0); Serial.begin(9600); // Soros monitor indítása a hibakereséshez } void loop() { // Nyomógombok kezelése if (digitalRead(BUTTON_SPEED_UP) == LOW) { increaseSpeed(); delay(300); // Debounce a gombnyomásokhoz } if (digitalRead(BUTTON_SPEED_DOWN) == LOW) { decreaseSpeed(); delay(300); } if (digitalRead(BUTTON_DIRECTION) == LOW) { toggleDirection(); delay(500); // Irányváltás esetén hosszabb debounce idő } // Frissítsük a ventilátor sebességét és irányát digitalWrite(FAN_IN1, fanDirection); analogWrite(FAN_PWM, fanSpeed); // Kiírjuk az aktuális állapotot a soros monitorra Serial.print("Ventilátor sebessége: "); Serial.print(fanSpeed); Serial.print(" | Forgásirány: "); Serial.println(fanDirection ? "Hátra" : "Előre"); } // Sebesség növelése (max: 255) void increaseSpeed() { if (fanSpeed < 255) { fanSpeed += 25; // 10%-os lépésenként növeljük if (fanSpeed > 255) fanSpeed = 255; } Serial.println("Sebesség növelve!"); } // Sebesség csökkentése (min: 0) void decreaseSpeed() { if (fanSpeed > 0) { fanSpeed -= 25; // 10%-os lépésenként csökkentjük if (fanSpeed < 0) fanSpeed = 0; } Serial.println("Sebesség csökkentve!"); } // Forgásirány váltás void toggleDirection() { fanDirection = !fanDirection; Serial.println("Forgásirány megváltoztatva!"); } |
Részletes magyarázat a kódról
– Sebességszabályozás PWM segítségével
- Az
analogWrite(FAN_PWM, fanSpeed);
sor gondoskodik róla, hogy a ventilátor a beállított sebességgel forogjon. - A
fanSpeed
változó értéke 0 és 255 között mozog, ahol 0 = kikapcsolt, 255 = maximális sebesség.
– Forgásirány vezérlése
- Az IN1 kimenetet
LOW
vagyHIGH
állapotba állítjuk atoggleDirection()
függvény segítségével. - Ha
LOW
, akkor a ventilátor egyik irányba, haHIGH
, akkor az ellenkező irányba forog.
– Nyomógombok kezelése
- A nyomógombok a sebesség növelésére, csökkentésére és az irány megváltoztatására szolgálnak.
- A
digitalRead(BUTTON_SPEED_UP) == LOW
vizsgálja, hogy a gomb meg lett-e nyomva, majd meghívja azincreaseSpeed()
függvényt. - Debounce késleltetés (
delay(300);
) biztosítja, hogy egyetlen gombnyomás ne aktiválódjon többször.
– Soros monitor kimenet a hibakereséshez
- A program a ventilátor sebességét és forgásirányát a Serial Monitorra is kiírja (
Serial.print()
függvények). - Ez segít ellenőrizni, hogy a beállítások megfelelően működnek-e.
További fejlesztési lehetőségek
Ha szeretnéd továbbfejleszteni a mintaprogramokat, akkor az alábbiakat érdemes beépíteni:
- Hőmérséklet-vezérelt ventilátor – Egy NTC termisztor vagy DS18B20 hőmérséklet-érzékelő segítségével a ventilátor sebessége automatikusan változhat a hőmérséklet alapján.
- Távoli vezérlés ESP8266 vagy ESP32 segítségével – Wi-Fi kapcsolattal távolról is szabályozhatod a ventilátort egy webes felületen keresztül.
- Automatikus sebességállítás PID szabályozással – Az optimális fordulatszám beállításához egy zárt hurkú visszacsatolásos vezérlési algoritmus használható.
Típushibák és gyakori kérdések
A mikrokontrolleres motorvezérlés során számos olyan kérdés merülhet fel, amelyek a helyes bekötéshez, a megfelelő működéshez vagy a gyakori hibák elkerüléséhez kapcsolódnak. Az alábbiakban a gyakori kérdéseket találod az L9110 ventilátormodullal kapcsolatosan.
Miért nem indul el a ventilátor, amikor bekötöm a modult?
- Ellenőrizd, hogy a VCC és GND helyesen van-e bekötve.
- Bizonyosodj meg róla, hogy az Arduino megfelelő PWM jelet küld a megfelelő bemenetre.
- Ha külső tápellátást használsz, győződj meg arról, hogy az elég áramot tud biztosítani a ventilátornak.
Miért nem reagál a ventilátor a PWM vezérlésre?
- Ellenőrizd, hogy az Arduino PWM lábhoz van-e csatlakoztatva a ventilátorvezérlés.
- Próbáld meg másik PWM frekvenciával használni, mert egyes ventilátorok nem működnek alacsony PWM beállítással (javasolt: min. 25 értéket megadni).
Hogyan lehet teljesen kikapcsolni a ventilátort?
A ventilátor kikapcsolásához használd az alábbi parancsot:
1 | analogWrite(FAN_PWM, 0); |
Ez teljesen leállítja a ventilátort, nincs szükség relére vagy más külső kapcsolóra.
Használható-e 12V-os ventilátor az L9110 modullal?
Igen, az L9110 akár 12V-os tápellátást is kezel, de győződj meg róla, hogy az Arduino csak a vezérlőjelekhez van csatlakoztatva, és ne próbálja közvetlenül tápellátásként használni a 12V-ot. Az Arduino Vin bemenetére mehet csak a 12V. Viszont a modulnak az elvárt H és L szinteket nem tudja az 5V tápfeszültségről járó Arduino biztosítani (Low:0…3.6V, High: 8.4..12V)! Javasolt más megoldást keresni a 12V motor meghajtására – direkt motormeghajtó modulok esetén a motor és a logika tápfeszültsége külön van választva, így az Arduio jelszintjeivel már vezérelhető.
Mi történik, ha fordítva kötöm be a tápellátást?
Az L9110 modul nem tartalmaz polaritásvédelmet, így a helytelen bekötés károsíthatja az áramkört. Mindig ellenőrizd a bekötést, mielőtt feszültséget kapcsolsz rá.
Miért melegszik túl az L9110 IC?
Ha az IC túlmelegszik, annak több oka lehet:
- A ventilátor túl nagy áramot vesz fel.
- Nem megfelelő hűtés vagy rossz szellőzés az áramkör körül.
- A modul nem kap megfelelő feszültséget és emiatt nagyobb áramot kell leadnia.
- A kész modulon valami hiba van (pl. motor rövidzár vagy korábban meghibásodott vezérlőchip)
Hogyan lehet automatikusan szabályozni a ventilátor sebességét hőmérséklet alapján?
Használhatsz hőmérséklet-érzékelőt (DS18B20, NTC termisztor stb.), amely a hőmérséklet függvényében állítja a PWM jel értékét.
Melyik mikrokontrollerrel használható az L9110?
Arduino UNO, Mega, ESP8266, ESP32 és bármilyen más mikrokontroller használható, amely képes PWM jelet generálni és 3,3V vagy 5V vezérlőjeleket kiadni.
Miért nem forog egyenletesen a ventilátor?
Ha a ventilátor sebessége ingadozik, próbáld ki az alábbiakat:
- Növeld a PWM frekvenciát és/vagy kitöltési tényezőjét .
- Ellenőrizd, hogy a tápellátás stabil-e.
- A ventillátormotor elkopott – ekkor csere szükséges.
Miért nem áll meg a ventilátor azonnal, amikor lekapcsolom?
A tehetetlenség miatt lassan állnak meg – szabadonfutás miatt a lendület viszi tovább. Ha azonnali leállást szeretnél, próbáld az IN1 és IN2 bemeneteket egyszerre HIGH-ra állítani (fékezési mód).
Hogyan lehet szoftveresen finomhangolni a sebességszabályozást?
Használj exponenciális vagy logaritmikus sebességszabályozást a fokozatos gyorsítás érdekében, például egy look-up table segítségével.
Hogyan lehet Wi-Fi vagy Bluetooth kapcsolaton keresztül vezérelni a ventilátort?
Ha távolról szeretnéd vezérelni a ventilátort, akkor használhatsz ESP8266 vagy ESP32 alapú megoldást, amely egy webes felületen keresztül lehetővé teszi a sebesség és irány beállítását.
Források
A cikkhez kapcsolódóan az alábbi hasznos linkeket ajánlom figyelmedbe:
- L9110 Motorvezérlő IC adatlap és működés [Components101]
- AnalogWrite – PWM jelek használata [Arduino.cc]
- PWM használata [Arduino.cc]
- L9110S Library for Arduino (GitHub) [FalconLee1011]