Основы · 11 мин чтения

Что такое транзистор: как он работает, NPN и PNP, применение с Arduino

Что такое транзистор и как он работает? NPN и PNP, расчёт базового резистора, сравнение BC547, 2N2222A и TIP120, схемы с мотором и реле на Arduino.

Транзистор — это полупроводниковый компонент с тремя ножками, который с помощью небольшого тока управляет гораздо большим. У него две основные задачи: включать и выключать нагрузку, как электронный ключ, и работать усилителем, который делает слабый сигнал сильнее. Пин Arduino безопасно отдаёт только около 20 mA: этого хватает для светодиода, но не для мотора, реле или светодиодной ленты на 12 V. Здесь и нужен транзистор: получая от пина несколько миллиампер, он управляет сотнями миллиампер и даже несколькими амперами.

Транзистор изобрели в 1947 году в Bell Labs Джон Бардин, Уолтер Браттейн и Уильям Шокли; он заменил электронные лампы и уместил компьютеры в наших карманах. Сегодня процессор в твоём телефоне содержит миллиарды крошечных транзисторов, и ATmega328P, сердце Arduino, тоже состоит из огромного их числа. В этой статье ты узнаешь, чем отличаются NPN и PNP, что делают база, коллектор и эмиттер, как рассчитать базовый резистор, чем отличаются BC547, 2N2222A и TIP120, как управлять моторами, реле и светодиодными лентами с Arduino, ESP32 и Raspberry Pi Pico и как определить выводы мультиметром.

NPN-транзистор S8050 и его условное обозначение
NPN-транзистор S8050 в корпусе TO-92: если повернуть его маркировкой к себе, выводы слева направо — эмиттер (1), база (2) и коллектор (3). На обозначении NPN справа стрелка на эмиттере направлена наружу.

Что такое транзистор и как он работает?

Транзистор можно представить как водопроводный кран: чтобы повернуть ручку, нужно совсем немного усилия, но по трубе течёт много воды. В транзисторе ручка — это ток базы, а вода в трубе — основной ток, текущий от коллектора к эмиттеру. Отношение между ними — это коэффициент усиления по току, в даташитах он обозначается hFE или β (бета): IC = hFE × IB. Например, если подать 0,1 mA в базу BC547 с hFE 200, через коллектор может течь до 20 mA. Чтобы кремниевый транзистор начал проводить, между базой и эмиттером должно появиться около 0,6–0,7 V: это пороговое напряжение его перехода, похожего на диод. Ток, выходящий из эмиттера, равен сумме обоих: IE = IC + IB.

ВыводОбозначениеНазначениеКуда подключается в NPN-ключе
БазаBУправляющий вывод; сюда входит малый токК пину Arduino через резистор
КоллекторCСюда входит ток нагрузкиК минусу нагрузки
ЭмиттерEОтсюда выходит суммарный ток (IE = IC + IB)К GND

Транзисторы NPN и PNP

Биполярные транзисторы (BJT) состоят из трёх полупроводниковых слоёв. В NPN-транзисторе тонкий P-слой посередине — это база; когда база примерно на 0,7 V положительнее эмиттера, ток течёт от коллектора к эмиттеру. В PNP-транзисторе всё наоборот: эмиттер подключается к плюсу питания, а когда базу опускают примерно на 0,7 V ниже эмиттера, ток течёт от эмиттера к коллектору. Обозначение проще всего запомнить по стрелке на эмиттере: у NPN она направлена наружу, у PNP — внутрь. В проектах на Arduino NPN встречается гораздо чаще, потому что эмиттер идёт прямо на GND, а транзистор открывается, когда на пине HIGH; нагрузка стоит между плюсом питания и коллектором. Это называется ключом в нижнем плече (low-side).

ПараметрNPNPNP
Стрелка на обозначенииНаправлена из эмиттераНаправлена в эмиттер
Эмиттер подключается кGND (минус)Плюсу питания (+)
Чтобы открыть, база должна быть≈0,7 V выше эмиттера (пин HIGH)≈0,7 V ниже эмиттера (пин LOW)
Направление основного токаОт коллектора к эмиттеруОт эмиттера к коллектору
Положение нагрузкиМежду + и коллектором (нижнее плечо)Между коллектором и GND (верхнее плечо)
Распространённые моделиBC547, S8050, 2N2222A, BC337, TIP120BC557, S8550, 2N2907A, BC327, TIP125

Режимы работы: отсечка, активный режим и насыщение

РежимУсловиеТок коллектораVCEПрименение
ОтсечкаVBE < ≈0,6 V, тока базы нетПочти нольБлизко к напряжению питанияКлюч ВЫКЛ
Активный режимVBE ≈ 0,65–0,7 V, умеренный ток базыIC = hFE × IBГде-то посерединеУсилитель
НасыщениеIB намного больше, чем IC / hFEОграничен нагрузкой и питанием0,1–0,3 V (0,8–2 V у Дарлингтона)Ключ ВКЛ

Когда транзистор работает ключом, его держат только в двух крайних состояниях: полностью закрытым (отсечка) или полностью открытым (насыщение). Активный режим посередине нужен усилителям, а в ключе он нежелателен, ведь мощность, которую рассеивает транзистор, равна P = VCE × IC. Насыщенный 2N2222A при 150 mA падает не более 0,3 V и выделяет всего 45 mW тепла; если же при том же токе он остаётся полуоткрытым и на нём падает 3 V, он рассеивает 450 mW. Это очень близко к пределу 625 mW для корпуса TO-92, и транзистор раскаляется так, что к нему не прикоснуться. Поэтому в ключевых схемах на базу всегда подают достаточный ток, чтобы уверенно загнать транзистор в насыщение.

Транзистор как усилитель

Если держать транзистор в активном режиме, он превращает небольшие изменения на базе в бо́льшие изменения на коллекторе. Например, у транзистора с hFE 200 рост тока базы на 10 µA увеличивает ток коллектора на 2 mA; на коллекторном резисторе 2,2 kΩ это изменение напряжения на 4,4 V. На этом принципе работают микрофонные предусилители, радиоприёмники и усилители звука. Самая распространённая схема — усилитель с общим эмиттером: делитель напряжения ставит базу в середину активного режима, резистор в эмиттере (RE) стабилизирует схему по температуре, а коэффициент усиления по напряжению примерно равен RC / RE, то есть около 10 раз при 4,7 kΩ и 470 Ω. Даже в электретных микрофонах есть крошечный транзистор (JFET), усиливающий сигнал. В проектах на Arduino сигналы датчиков обычно усиливают готовыми микросхемами; об этом читай в статье Что такое операционный усилитель? Дальше речь пойдёт о ключевом режиме, который с Arduino нужен чаще всего.

Подключение транзисторного ключа к Arduino

Чаще всего используется ключ в нижнем плече на NPN-транзисторе. Плюс нагрузки (мотора, катушки реле, светодиодной ленты) идёт на плюс внешнего источника питания, а минус — на коллектор транзистора. Эмиттер подключается к GND. Пин Arduino соединяется с базой всегда через резистор: он ограничивает и ток, потребляемый от пина, и ток базы. Резистор 10 kΩ между базой и GND не даёт транзистору открыться самому, пока пин «висит» в воздухе при включении питания или сбросе. В такой схеме транзистор лишь открывает и закрывает путь нагрузки к GND, поэтому нагрузка может работать от 12 V, а Arduino — от 5 V.

ПодключениеArduino UnoESP32Raspberry Pi Pico
Управляющий пин (вход базового резистора)D9 (PWM) или D7GPIO 18GP15
Стягивающий резистор от базы к GND10 kΩ10 kΩ10 kΩ
ЭмиттерGNDGNDGND
КоллекторМинус нагрузки (−)Минус нагрузки (−)Минус нагрузки (−)
Плюс нагрузки (+)+ внешнего источника (например, 12 V)+ внешнего источника (например, 12 V)VBUS (5 V) или + внешнего источника
Минус внешнего источника (−)GND Arduino (общая земля)GND ESP32 (общая земля)GND Pico (общая земля)
Самая частая ошибка — забыть общую землю: если минус внешнего источника не соединён с GND Arduino, ток базы не может замкнуть свою цепь, и нагрузка вообще не работает. Вторая ошибка — подключить пин к базе без резистора: переход база-эмиттер ведёт себя как диод, поэтому пин оказывается почти закорочен, и могут пострадать и пин, и транзистор. Не питай мотор или светодиодную ленту от пина 5V Arduino; используй внешний адаптер.

Расчёт базового резистора: hFE и насыщение

Чтобы выбрать базовый резистор, нужны две вещи: ток, который потребляет нагрузка (IC), и минимальный hFE из даташита транзистора. Даже у одной модели hFE сильно различается от экземпляра к экземпляру и меняется с температурой и током; у BC547 он лежит в пределах от 110 до 800. Поэтому считают по минимальному значению, а не по типичному, и умножают результат на коэффициент запаса от 2 до 10. Формулы такие: IB = (IC / hFE) × коэффициент запаса и RB = (Vpin − VBE) / IB. Vpin равно 5 V на Arduino Uno и 3,3 V на ESP32 и Pico; VBE около 0,7 V у обычного транзистора и около 1,4 V у транзистора Дарлингтона, например TIP120. Распространённое упрощение — считать hFE для насыщения равным 10 (принудительная бета, forced beta); именно при этом условии в даташитах указывают напряжение насыщения.

  1. Найди ток нагрузки: реле на 5 V с катушкой 70 Ω по закону Ома потребляет 5 / 70 ≈ 71 mA. Для расчёта можно воспользоваться утилитой «Закон Ома».
  2. Выбери транзистор: 71 mA очень близко к пределу 100 mA у BC547; 2N2222A, рассчитанный на 600 mA, — более надёжный выбор.
  3. Рассчитай ток базы: при принудительной бете 10 IB = 71 / 10 ≈ 7 mA.
  4. Рассчитай резистор: на Uno RB = (5 − 0,7) / 0,007 ≈ 614 Ω; бери ближайший больший стандартный номинал 680 Ω, он даёт ток базы около 6,3 mA.
  5. Повтори для плат на 3,3 V: на ESP32 или Pico RB = (3,3 − 0,7) / 0,007 ≈ 371 Ω. Подойдёт ближайший стандартный номинал 390 Ω или более распространённый 470 Ω (около 5,5 mA); это всё ещё принудительная бета около 13.
  6. Перепроверь: ток пина должен быть меньше 20 mA, допустимый ток транзистора — минимум в 1,5 раза больше тока нагрузки, а рассеиваемая мощность (VCE(sat) × IC ≈ 0,2 V × 71 mA ≈ 14 mW) — намного ниже предела корпуса.
Нагрузка (ток)Рекомендуемый транзисторArduino Uno (5 V)ESP32 / Pico (3,3 V)
Группа светодиодов, зуммер (20–50 mA)BC547, S80502,2 kΩ (≈2 mA)1,2 kΩ (≈2,2 mA)
Катушка реле на 5 V (70–90 mA)2N2222A, BC337, S8050680 Ω (≈6,3 mA)470 Ω (≈5,5 mA)
Небольшой DC-мотор, короткая светодиодная лента (0,3–1 A)TIP1201 kΩ (≈3,6 mA)470 Ω (≈4 mA)
Больше 1,5 A (крупный мотор, длинная светодиодная лента)MOSFET с логическим уровнем управленияIRLZ44N; 220 Ω к затвору, 10 kΩ от затвора к GNDIRLB8721; 220 Ω к затвору, 10 kΩ от затвора к GND
Эти значения — отправная точка; допустимый ток и порядок выводов своего транзистора проверь в утилите распиновки транзисторов. Когда схема собрана, лучшая проверка — измерить мультиметром напряжение коллектор-эмиттер: если оно ниже 0,3 V у обычного транзистора или ниже 1,5 V у Дарлингтона, транзистор в насыщении.

BC547, 2N2222A и TIP120: сравнение популярных транзисторов

МодельТип / корпусVCEOПостоянный IChFEПорядок выводовТипичное применение
BC547NPN / TO-9245 V100 mA110–800 (группы A, B, C)C-B-EСветодиоды, зуммеры, коммутация сигналов
BC557PNP / TO-9245 V100 mA125–800C-B-EPNP-пара к BC547, ключ в верхнем плече
S8050NPN / TO-9225 V500 mA85–300 (по группе)E-B-CСтартовые наборы, модули реле
2N2222ANPN / TO-9240 V600 mA100–300 (при 150 mA)E-B-CРеле, небольшие моторы, вентиляторы
BC337NPN / TO-9245 V800 mA100–630C-B-EРеле, группы светодиодов, вибромоторы
TIP120NPN Дарлингтон / TO-22060 V5 AНе менее 1000B-C-EDC-моторы, светодиодные ленты, соленоиды

Порядок выводов читается слева направо, если повернуть транзистор плоской стороной с маркировкой к себе, ножками вниз. Внимание: у BC547 и 2N2222A порядок противоположный (C-B-E и E-B-C), поэтому при замене одного на другой нужно поменять местами коллектор и эмиттер. У 2N2222 в металлическом корпусе (TO-18) и у копий разных производителей порядок может отличаться; если сомневаешься, проверь мультиметром. TIP120 — это транзистор Дарлингтона: внутри два транзистора, включённых каскадом, поэтому его усиление не меньше 1000, и им можно управлять прямо с пина Arduino через резистор 1 kΩ. Плата за это — падение 1–2 V на нём и связанный с этим нагрев: при 1 A он рассеивает около 1 W, а корпус TO-220 без радиатора нагревается примерно на 60 °C выше комнатной температуры. Готовые платы драйверов тоже собраны на транзисторах: в плате ULN2003 для шагового двигателя 28BYJ-48 семь транзисторов Дарлингтона, а в модуле L298N — два H-моста из транзисторов.

Управление DC-мотором с Arduino: TIP120 и обратный диод

Теперь зададим скорость небольшого DC-мотора на 6–12 V потенциометром. PWM-пин 9 Arduino подключается к базе TIP120 через резистор 1 kΩ, мотор ставится между плюсом внешнего источника и коллектором TIP120, эмиттер идёт на GND. Крайние выводы потенциометра подключаются к 5V и GND, а средний (движок) — к A0. Параллельно мотору в обратном направлении ставится обратный (защитный) диод (1N4007 или более быстрый 1N5819): катод, отмеченный полоской, смотрит на плюс питания, другой конец — на коллектор. Сигнал PWM открывает и закрывает транзистор сотни раз в секунду, и мотор крутится медленнее или быстрее в зависимости от среднего напряжения.

C++ (Arduino IDE)
1// TIP120 ile DC motor hız kontrolü / DC motor speed control with a TIP120
2const int MOTOR_PIN = 9;    // PWM pini, 1 kΩ ile TIP120 beyzine / PWM pin, to the TIP120 base via 1 kΩ
3const int POT_PIN = A0;     // potansiyometre orta ucu / potentiometer wiper
4
5void setup() {
6  pinMode(MOTOR_PIN, OUTPUT);
7  Serial.begin(9600);
8}
9
10void loop() {
11  int pot = analogRead(POT_PIN);            // 0–1023
12  int speed = map(pot, 0, 1023, 0, 255);    // PWM değerine çevir / convert to a PWM value
13  if (speed < 40) speed = 0;                // çok düşükte motor yalnızca vızıldar / too low, the motor only hums
14  analogWrite(MOTOR_PIN, speed);
15  Serial.println(speed);
16  delay(50);
17}
Выпрямительный диод в роли обратного диода
Выпрямительный диод в корпусе DO-41 (типа 1N4007): включённый в обратном направлении параллельно индуктивной нагрузке, он защищает транзистор от выброса напряжения при выключении. Катод отмечен полоской на корпусе.
Индуктивные нагрузки — моторы, реле, соленоиды и вентиляторы — в момент разрыва тока отдают энергию, запасённую в катушке, в виде обратного выброса напряжения (V = L × di/dt). Этот выброс может достигать десятков и даже сотен вольт; без диода он пробивает транзистор или вызывает перезагрузку Arduino. Если поставить диод наоборот, питание закоротится, как только транзистор откроется. Нагрузкам без катушки, таким как светодиодные ленты и резисторы, диод не нужен. Подробнее о типах диодов — в статье Что такое диод?

Управление реле: реле на 5 V с 2N2222A

В готовых модулях реле эта схема уже есть: небольшой транзистор, базовый резистор и обратный диод. Если используется голое реле на 5 V, ту же схему собираешь своими руками: катушка реле ставится между 5V и коллектором 2N2222A, диод 1N4007 — параллельно катушке в обратном направлении, а пин D7 подключается к базе через 680 Ω. Код ниже включает реле, когда в мониторе порта вводишь 1, и отпускает его, когда вводишь 0. Прежде чем коммутировать контактами реле сетевое напряжение, обязательно прочитай правила безопасности в статье Что такое модуль реле?

C++ (Arduino IDE)
1// 2N2222A ile 5 V röle sürme / Driving a 5 V relay with a 2N2222A
2const int RELAY_PIN = 7;    // 680 Ω ile transistör beyzine / to the transistor base via 680 Ω
3
4void setup() {
5  pinMode(RELAY_PIN, OUTPUT);
6  digitalWrite(RELAY_PIN, LOW);             // açılışta kapalı / off at startup
7  Serial.begin(9600);
8  Serial.println("1: röle açık / relay on, 0: röle kapalı / relay off");
9}
10
11void loop() {
12  if (Serial.available() > 0) {
13    char c = Serial.read();
14    if (c == '1') {
15      digitalWrite(RELAY_PIN, HIGH);        // transistör doyumda, röle çeker / transistor saturated, relay pulls in
16      Serial.println("Röle açık / relay on");
17    } else if (c == '0') {
18      digitalWrite(RELAY_PIN, LOW);         // transistör kesimde, röle bırakır / transistor cut off, relay releases
19      Serial.println("Röle kapalı / relay off");
20    }
21  }
22}

Транзисторы с ESP32 и Raspberry Pi Pico

Пины ESP32 и Pico выдают 3,3 V, поэтому базовый резистор нужно рассчитывать для 3,3 V: резистор 1 kΩ, подобранный для 5 V, при 3,3 V даёт TIP120 всего 1,9 mA. Пример для ESP32 ниже плавно зажигает и гасит светодиодную ленту на 12 V с помощью PWM на GPIO 18. Лента 5050 с 60 светодиодами на метр потребляет около 1,2 A на метр; для отрезка длиной 1 м хватит TIP120 с базовым резистором 470 Ω, но не забудь небольшой радиатор. У светодиодной ленты нет катушки, поэтому обратный диод не нужен. В коде используются функции ledcAttach и ledcWrite из ядра ESP32 Arduino версии 3.x; в старой версии 2.x вместо них были ledcSetup и ledcAttachPin.

C++ (Arduino IDE)
1// ESP32 ile 12 V LED şerit parlaklığı (TIP120) / 12 V LED strip brightness with ESP32 (TIP120)
2const int STRIP_PIN = 18;   // 470 Ω ile TIP120 beyzine / to the TIP120 base via 470 Ω
3
4void setup() {
5  ledcAttach(STRIP_PIN, 1000, 8);   // 1 kHz, 8 bit (0–255); çekirdek 3.x / core 3.x
6}
7
8void loop() {
9  for (int d = 0; d <= 255; d++) {  // yavaşça aydınlan / fade in
10    ledcWrite(STRIP_PIN, d);
11    delay(10);
12  }
13  delay(1000);
14  for (int d = 255; d >= 0; d--) {  // yavaşça karar / fade out
15    ledcWrite(STRIP_PIN, d);
16    delay(10);
17  }
18  delay(1000);
19}

Управление транзистором с Raspberry Pi Pico на MicroPython работает точно так же. Код ниже читает встроенный датчик температуры Pico; когда температура достигает 32 °C, он запускает небольшой вентилятор на 5 V через транзистор на GP15 и останавливает его, когда она падает до 29 °C. Два отдельных порога (гистерезис) не дают вентилятору часто включаться и выключаться около границы. Вентилятор питается от пина VBUS (5 V от USB); для вентилятора на 100 mA хватит BC337 или 2N2222A с резистором 1 kΩ, и параллельно вентилятору снова ставится диод. Температура чипа на несколько градусов выше окружающей; в реальном проекте точнее будет датчик вроде DS18B20.

MicroPython
1# Pico yonga sıcaklığına göre fan / Fan controlled by the Pico's chip temperature
2from machine import Pin, ADC
3import time
4
5fan = Pin(15, Pin.OUT, value=0)   # 1 kΩ ile transistör beyzine / to the transistor base via 1 kΩ
6sensor = ADC(4)                   # yonga içi sıcaklık sensörü / on-chip temperature sensor
7ON_C, OFF_C = 32, 29              # açma ve kapama eşikleri / switch-on and switch-off thresholds
8
9while True:
10    v = sensor.read_u16() * 3.3 / 65535
11    temp = 27 - (v - 0.706) / 0.001721       # RP2040 veri sayfası formülü / RP2040 datasheet formula
12    if temp >= ON_C:
13        fan.value(1)                         # transistör iletimde, fan döner / transistor on, fan spins
14    elif temp <= OFF_C:
15        fan.value(0)                         # transistör kesimde, fan durur / transistor off, fan stops
16    print("{:.1f} C, fan: {}".format(temp, fan.value()))
17    time.sleep(1)

Как определить выводы транзистора мультиметром

  1. Выпаяй транзистор из схемы и переведи мультиметр в режим проверки диодов (значок диода).
  2. Держи красный щуп на одном выводе и по очереди касайся чёрным щупом двух других. Если оба показания между 0,5 и 0,8 V, под красным щупом база, а транзистор NPN.
  3. Если такой вывод не находится, поменяй щупы местами: если при чёрном щупе на одном выводе два других показывают 0,5–0,8 V, этот вывод — база, а транзистор PNP.
  4. Сравни показания между базой и двумя другими выводами: чуть большее (например, 0,65 V против 0,62 V) — это эмиттер, меньшее — коллектор. Если разница совсем мала, доверься даташиту.
  5. Между коллектором и эмиттером в обоих направлениях должно быть OL (обрыв); в обратном направлении от базы тоже должно быть OL.
  6. Если у мультиметра есть гнездо hFE, вставь транзистор в слот NPN или PNP по найденному порядку выводов; на дисплее появится коэффициент усиления по току.

В транзисторах Дарлингтона, таких как TIP120, между базой и эмиттером два перехода и внутренние резисторы (около 8 kΩ и 120 Ω), поэтому показания этому правилу не подчиняются; порядок выводов уточняй по даташиту. Если между коллектором и эмиттером в обе стороны почти ноль, транзистор пробит; если база ни в одном направлении ничего не показывает до других выводов, внутри оборвался переход. Подробно о пределах измерения мультиметра — в статье Как пользоваться мультиметром.

Идеи проектов с транзисторами

  • Автоматический ночник: когда фоторезистор (LDR) замечает темноту, включай светодиодную ленту на 12 V через TIP120.
  • Умный вентилятор: по мере роста температуры, измеренной DHT11, повышай скорость вентилятора с помощью PWM и транзистора.
  • Автополив: когда датчик влажности почвы определяет сухую почву, запускай небольшой водяной насос через транзистор.
  • Кодовый замок: когда на матричной клавиатуре введён верный код, открывай соленоидный замок на 12 V через TIP120 с диодом.
  • Тихое оповещение: управляй вибромотором через BC337 и собери носимое устройство уведомлений.
  • Громкая сигнализация: когда PIR-датчик замечает движение, включай через транзистор сирену на 12 V, которую пин Arduino сам бы не потянул.

Частые ошибки и как их исправить

СимптомВероятная причинаРешение
Нагрузка совсем не работаетНет общей земли или перепутаны выводыСоедини минусы источников и проверь порядок выводов
Транзистор сильно греетсяОн не входит в насыщение (мал ток базы) или превышен допустимый токУменьши базовый резистор, выбери транзистор мощнее или MOSFET
Arduino перезагружается или транзистор выходит из строя при остановке мотораНет обратного диодаПоставь 1N4007 или 1N5819 параллельно нагрузке в обратном направлении, полоской к плюсу
Нагрузка работает даже при LOW на пинеПробитый транзистор (замыкание C-E) или висящая базаПроверь транзистор мультиметром и добавь 10 kΩ от базы к GND
PNP-транзистор никогда не закрываетсяНа эмиттере 12 V, а пин поднимается только до 5 VУправляй базой PNP через NPN или коммутируй нагрузку в нижнем плече NPN-транзистором
Пин Arduino повреждёнПин подключён прямо к базе без резистораВсегда используй базовый резистор и держи ток пина ниже 20 mA
С ESP32 или Pico нагрузка работает слабоРезистор подобран для 5 V, или MOSFET не открывается полностью при 3,3 VРассчитай базовый резистор для 3,3 V и выбери MOSFET, совместимый с 3,3 V
Если нагрузка больше 1,5 A или транзистор греется даже с радиатором, MOSFET с логическим уровнем управления будет намного холоднее: он управляется напряжением, а не током, и на нём почти не падает напряжение. О подключении и выборе читай в статье MOSFET с Arduino.

Транзистор — ключ к управлению большими нагрузками с помощью слабого сигнала, то есть к связи твоего Arduino с реальным миром. Когда расчёт базового резистора, общая земля и обратный диод встают на свои места, моторы, насосы и светодиодные ленты перестают пугать. В приложении BlueGrays можно шаг за шагом, со схемами и кодом, разобрать такие проекты, как ночник на фоторезисторе, зуммер, плавное зажигание светодиода через PWM, шаговый двигатель и управление сетевой лампой.

Частые вопросы

Для чего нужен транзистор?

Транзистор выполняет две основные задачи: работает электронным ключом, который малым током включает и выключает большой, и усилителем, который делает слабый сигнал сильнее. В проектах на Arduino им чаще всего управляют нагрузками, которые пин не может потянуть сам: моторами, реле, вентиляторами и светодиодными лентами.

Чем отличаются транзисторы NPN и PNP?

У NPN-транзистора эмиттер подключается к GND, и он проводит, когда база примерно на 0,7 V выше эмиттера; ток течёт от коллектора к эмиттеру. У PNP эмиттер подключается к плюсу питания, а открывается он, когда базу опускают на 0,7 V ниже эмиттера. Для коммутации нагрузки со стороны GND с Arduino проще NPN.

Как определить выводы транзистора?

Самый надёжный способ — даташит: если повернуть транзистор маркировкой к себе, слева направо порядок такой: C-B-E у BC547, E-B-C у 2N2222A и B-C-E у TIP120. Без даташита базу и тип можно найти в режиме проверки диодов мультиметра, а эмиттер отличить по тому, что показание база-эмиттер чуть больше, чем база-коллектор.

Какой транзистор использовать с Arduino?

Для нагрузок до 50 mA, таких как светодиоды и зуммеры, хватит BC547. Для катушек реле на 5 V (70–90 mA) и небольших моторов до 500 mA бери 2N2222A или BC337, а для моторов и светодиодных лент около 1 A — TIP120. При больших токах холоднее работает MOSFET с логическим уровнем управления.

Какой базовый резистор ставить к транзистору?

Базовый резистор рассчитывается по формуле RB = (Vpin − VBE) / IB; для обычных транзисторов хорошая отправная точка для IB — десятая часть тока нагрузки. С Arduino Uno типичные значения: 680 Ω для реле на 5 V, 2,2 kΩ для нагрузок 20–50 mA, таких как светодиоды и зуммеры, и 1 kΩ для TIP120.

Почему греется транзистор?

Тепло, которое выделяет транзистор, равно P = VCE × IC. Если ток базы слишком мал, транзистор не входит в насыщение, на нём остаются вольты, и он греется; то же происходит, если ток нагрузки превышает допустимый. Уменьши базовый резистор, выбери транзистор мощнее или MOSFET, а выше 1 A ставь радиатор.

Все проекты
Ночник на LDR
#12Новичок

Ночник на LDR

Маленький ночник, который сам включается, когда темнеет, и гаснет, когда наступает утро. Датчик освещённости измеряет, насколько светло в комнате, и Arduino включает светодиод, когда достаточно темно,

4.8(102)
205
Работа с зуммером
#13Новичок

Работа с зуммером

Интересно, как дверной звонок или сигнализация издают звук? Arduino заставляет маленький зуммер пищать через короткие промежутки: пик, пауза, пик, пауза. Ты видишь, как электричество превращается в зв

4.7(89)
161
Плавное затухание светодиода с PWM на ESP32
#110Новичок

Плавное затухание светодиода с PWM на ESP32

Плавное изменение яркости светодиода от 0 до максимума и от максимума до 0. PWM управляется через analogWrite(), как в Arduino, — тот же синтаксис без проблем работает в ESP32 Arduino Core 3.0+. Достаточно определения пина, pinMode и analogWrite.

4.8(36)
54
Плавное затухание светодиода с PWM на Pico (эффект дыхания)
#160Новичок

Плавное затухание светодиода с PWM на Pico (эффект дыхания)

Светодиод больше не просто мигает — он дышит! С помощью PWM (широтно-импульсной модуляции) Raspberry Pi Pico яркость светодиода медленно растёт и медленно падает, как огонёк спящего MacBook. Изучи класс machine.PWM, duty_u16() (16-битная яркость 0–65535), частоту PWM (freq(1000) — 1000 циклов вкл/выкл в секунду, мерцания не видно), циклы range() с шагом (вверх и вниз) и почти аналоговый выход с цифрового пина.

0.0(0)
4
Работа с шаговым мотором
#67Средний
Premium

Работа с шаговым мотором

Мотор, который поворачивается шаг за шагом ровно настолько, насколько нужно, как стрелка часов. Через плату драйвера Arduino поворачивает маленький шаговый мотор на полный оборот в одну сторону, ждёт

4.5(31)
42
Включение лампы 220V кнопкой (удержание)
#19Продвинутый
Premium

Включение лампы 220V кнопкой (удержание)

Пока ты держишь кнопку, горит настоящая лампа на 220 вольт, а как только отпустишь — гаснет. Слабый сигнал Arduino не может зажечь лампу напрямую, поэтому между ними стоит реле — выключатель с электри

4.4(30)
38
Умная станция полива
#83Продвинутый
Premium

Умная станция полива

Садовник, который сам поливает растения, чтобы они не засохли, пока ты в отпуске. Датчик влажности почвы измеряет, насколько влажная земля; когда она сохнет, Arduino на несколько секунд включает водян

5.0(42)
57
Умное освещение на ESP32 (PIR + LDR + реле + OLED)
#141Продвинутый
Premium

Умное освещение на ESP32 (PIR + LDR + реле + OLED)

Сделай умное освещение для коридора, ванной или кладовки на ESP32! С PIR-датчиком движения, датчиком освещённости LDR и модулем реле собирается классический сценарий «свет включается при движении в темноте»: если вокруг уже светло, движение свет НЕ включает, и днём энергия экономится. Свет горит 30 секунд; если движение продолжается, таймер сбрасывается, и свет горит дольше. OLED SSD1306 крупно показывает состояние (ON / DAYTIME / WAITING) и обратный отсчёт.

4.3(6)
11