Транзистор BC547 и Arduino: схема подключения, расчёт резистора базы и скетч
BC547 — маленький транзистор в чёрном корпусе, который позволяет плате управлять тем, что она сама вытянуть не может. Вывод Arduino отдаёт двадцать миллиампер, транзистор пропускает до ста и берёт ток от отдельного источника.
Работает он просто: подали напряжение на базу — открылся канал между коллектором и эмиттером, и через нагрузку пошёл ток. Убрали — закрылся. По сути это выключатель, у которого вместо пальца ваш цифровой вывод.
Схема подключения
Распиновка
| Провод | Куда и зачем |
|---|---|
| C — коллектор | Левый вывод при виде на плоскую грань. Сюда подключается нагрузка. |
| B — база | Средний вывод. Управляющий сигнал через резистор. |
| E — эмиттер | Правый вывод. Идёт на землю. |
Характеристики
- Тип
- биполярный NPN
- Максимальный ток коллектора
- 100 мА
- Максимальное напряжение
- 45 В
- Коэффициент усиления
- 110–800 в зависимости от партии
- Резистор базы для 5 В
- 1 кОм
- Корпус
- TO-92
Как посчитать резистор базы
Биполярный транзистор управляется током. Чтобы он открылся полностью, ток базы должен быть примерно в двадцать раз меньше тока нагрузки — берут именно такой запас, а не паспортное усиление, потому что оно гуляет от экземпляра к экземпляру.
Для нагрузки в двадцать миллиампер нужен ток базы около одного миллиампера. Из пяти вольт вычитаем ноль целых семь десятых — столько падает на переходе база-эмиттер — и делим на одну тысячную ампера: получается около четырёх килоом. На практике ставят один килоом, с запасом: транзистор откроется гарантированно, а вывод платы отдаст пять миллиампер вместо двадцати допустимых.
Без резистора переход база-эмиттер работает как обычный диод с почти нулевым сопротивлением — вывод платы окажется фактически замкнут на землю.
BC547 или 2N2222: главная ловушка
Эти два транзистора выглядят одинаково — один и тот же чёрный корпус TO-92 — и часто заменяют друг друга в схемах. Но выводы у них расположены зеркально.
У BC547 при виде на плоскую грань слева направо идут коллектор, база, эмиттер. У 2N2222 в том же положении — эмиттер, база, коллектор. Средний вывод совпадает, крайние меняются местами.
Результат подмены: транзистор включается наоборот, нагрузка не работает, а сам он может выйти из строя. Поэтому распиновку сверяют по маркировке на корпусе, а не по тому, что деталь похожа на прошлую.
Библиотека
не нужна— Транзистор управляется обычным digitalWrite или analogWrite — с точки зрения программы это такой же выход, как светодиод.
Готовый скетч
const int PIN_BASE = 9; // вывод с ШИМ — можно плавно
void setup() {
pinMode(PIN_BASE, OUTPUT);
}
void loop() {
// просто включить и выключить
digitalWrite(PIN_BASE, HIGH);
delay(1000);
digitalWrite(PIN_BASE, LOW);
delay(1000);
// плавное нарастание: транзистор на выводе с ШИМ
// работает как регулятор мощности
for (int power = 0; power <= 255; power++) {
analogWrite(PIN_BASE, power);
delay(8);
}
for (int power = 255; power >= 0; power--) {
analogWrite(PIN_BASE, power);
delay(8);
}
}Скетч собирается arduino-cli под Arduino UNO
Через транзистор работает и analogWrite: он открывается и закрывается тысячи раз в секунду, и нагрузка получает среднюю мощность. Так регулируют яркость ленты и скорость мотора.
Частые ошибки
Транзистор греется и не открывается полностью
Слишком большой резистор в базе либо ток нагрузки выше ста миллиампер. BC547 — маломощный: для мотора или ленты нужен TIP120 или полевой.
Нагрузка включена в эмиттер вместо коллектора
Так транзистор не откроется до конца: на нагрузке окажется на пару вольт меньше. Нагрузку всегда ставят между питанием и коллектором.
Забыт резистор в базе
Переход база-эмиттер ведёт себя как открытый диод, и вывод платы оказывается почти замкнут на землю. Один килоом решает вопрос.
Мотор выключается — транзистор сгорает
Катушка в момент разрыва отдаёт всплеск напряжения. Нужен защитный диод параллельно нагрузке, катодом к плюсу питания.
Взят 2N2222 вместо BC547
Выводы расположены зеркально. Крайние меняются местами, и схема работает наоборот.
Что понадобится
- Транзистор BC547
- Резистор 1 кОм для базы
- Резистор 220 Ом, если нагрузка — светодиод
- Диод 1N4007, если нагрузка индуктивная
- Arduino UNO