Швидкість двигуна: ШІМ + MOSFET IRLZ44N і захисний діод
GPIO не потягне навіть маленький двигун, але MOSFET рівня логіки перемикає амперні струми від 3.3 В. Керуємо швидкістю потенціометром, розбираємося з logic-level транзисторами, резистором на затворі та діодом проти викидів напруги.
Про проєкт
Вивід ESP32 віддає до 20–40 мА, а навіть іграшковий двигун на старті бере сотні міліампер. Потрібен ключ, і найпростіший — N-канальний MOSFET між двигуном і землею. ESP32 подає на затвор ШІМ, а транзистор вмикає й вимикає двигун з тим самим коефіцієнтом заповнення.
Що знадобиться
- ESP32 DevKit
- MOSFET IRLZ44N (або AO3400 на платі-перехіднику)
- Двигун постійного струму 3–6 В
- Діод 1N4007 (або швидший 1N5819)
- Резистор 10 кОм
- Потенціометр 10 кОм
- Окреме живлення 5 В для двигуна
Схема
+5V (БЖ) ──┬──────────── (+) двигун (−) ──┬── D (сток)
└──|◀── 1N4007 ────────────────┘ IRLZ44N
(смужка діода до +) GPIO25 ── G (затвор)
10 кОм: G → S
GND (БЖ) ── GND ESP32 ─────────────────────── S (витік)
- Потенціометр: крайні виводи на 3V3 і GND, повзунок на GPIO34.
- Земля блока живлення і ESP32 — спільна.
Три правила ключа на MOSFET
- Logic level. Затвор IRLZ44N повністю відкривається вже від ~3 В. Популярний IRF540N при 3.3 В відкривається лише частково: він гріється, а двигун ледь крутиться. Симулятор про це попереджає.
- Резистор 10 кОм між затвором і витоком. Поки ESP32 завантажується, GPIO «висить», і транзистор може відкритися від наводок. Резистор тримає його закритим.
- Захисний діод паралельно двигуну. Обмотка — це індуктивність: коли транзистор різко розриває струм, на ній виникає викид у десятки вольтів, що пробиває транзистор. Діод, увімкнений у зворотному напрямку, дає цьому струму замкнутися.
Код
// Швидкість двигуна: потенціометр → ШІМ → logic-level MOSFET (IRLZ44N)
const int POT = 34;
const int GATE = 25;
void setup() {
Serial.begin(115200);
ledcAttach(GATE, 20000, 8); // 20 кГц: вище межі чутності, двигун не пищить
}
void loop() {
int duty = map(analogRead(POT), 0, 4095, 0, 255);
ledcWrite(GATE, duty);
Serial.printf("заповнення %3d%%\n", duty * 100 / 255);
delay(300);
}
Корисно знати
- Частота ШІМ. На 1–5 кГц двигун неприємно пищить, а на 20 кГц тихий. Дуже висока частота (понад 50 кГц) без драйвера затвора гріє транзистор.
- Малий оборот. При заповненні нижче ~20 % двигун може не рушити з місця: моменту не вистачає, щоб подолати тертя. Стартуйте з більшого значення.
- Напрямок. Один MOSFET крутить двигун тільки в один бік. Для реверсу потрібен H-міст, наприклад L298N (є окрема стаття).
Що в симуляторі
Амперметр у розриві кола показує струм двигуна. Спробуйте прибрати діод, поставити IRF540N замість IRLZ44N або підключити двигун прямо до GPIO: симулятор пояснить, чому так не можна.