Продвинутый курс Arduino · Незнакомые детали
Урок 5. Транзистор: усилитель и сенсорная кнопка из фольги
Чёрные трёхногие таблетки BC337 и BC327 идут в дело: собираем логический тестер, который цветом показывает единицы и нули, а потом — кнопку из куска фольги, у которой нет подвижных частей.
Что понадобится
- Контроллер Uno и кабель USB
- Макетная плата
- Транзисторы BC337 и BC327
- Резисторы 1 кОм, 10 кОм и 470 Ом
- Светодиоды: зелёный, красный и любой для ночника
- Кусочек пищевой фольги
- Провода
Все детали есть в обучающем наборе, по которому идёт курс.
В коробке набора остался последний нетронутый пакетик — с чёрными трёхногими «таблетками». Это биполярные транзисторы BC337 и BC327, младшие братья полевика IRFZ24, который крутил мотор в двадцать третьем уроке. Сегодня они отработают своё имя дважды: сначала соберём из них логический тестер — прибор, который показывает цветом, что творится на любом выводе платы, — а потом сотворим маленькое чудо: кнопку из куска фольги, у которой вообще нет подвижных частей.
Знакомство: три ноги и стрелка
Запомнить выводы просто: смотрите на плоскую сторону, ножки вниз — слева направо Коллектор, База, Эмиттер. В наборе два типа: BC337 — «n-p-n», открывается, когда на базу подают напряжение побольше, и BC327 — «p-n-p», его зеркальный близнец, открывающийся от нуля. Корпуса неотличимы, поэтому надпись на плоской стороне — единственный способ их не перепутать.
Главный фокус тот же, что у полевика: слабый сигнал управляет сильным. Но есть отличие, важное для схем: полевик открывался напряжением, а биполярный транзистор — током через базу. Ток надо отмерять, поэтому в базу всегда ставят резистор. В наборе для этого лежат специальные 1 кОм — вот и их очередь пришла.
Проект 1. Логический тестер
Соберём прибор из главы 10 брошюры набора: два транзистора разного типа с общим входом. Подали на вход «единицу» — открывается n-p-n и зажигает красный светодиод. Подали «ноль» — открывается p-n-p и зажигает зелёный. Прибор показывает цветом логический уровень — настоящий инструмент электронщика.
Проверьте перед включением: оба транзистора стоят плоской стороной к вам (к нижнему краю макетки), BC327 — слева, BC337 — справа. Эмиттер BC327 уходит на «+», эмиттер BC337 — на «−». Перепутанные местами транзисторы не сгорят, но тестер будет показывать ерунду.
// Продвинутый курс, урок 5. Шаг 1: проверяем логический тестер.
const int TESTER = 12; // вход тестера — сюда подаём «1» и «0»
void setup() {
pinMode(TESTER, OUTPUT);
}
void loop() {
digitalWrite(TESTER, HIGH); // «1»: открывается BC337 — горит красный
delay(1000);
digitalWrite(TESTER, LOW); // «0»: открывается BC327 — горит зелёный
delay(1000);
}
Загрузите — светодиоды замигают по очереди: секунду красный («на выводе 12 единица»), секунду зелёный («ноль»). Обратите внимание: плата тратит на управление двумя яркими светодиодами меньше миллиампера — весь рабочий ток идёт через транзисторы от шин питания. Именно так один слабый вывод контроллера управляет гирляндой, мотором или реле.
Поиграйте в электрика: вытащите зелёный провод из вывода 12 и воткните его в вывод 13. Теперь тестер показывает жизнь встроенного светодиода L — загрузите любой скетч с миганием из третьего урока и посмотрите, как тестер честно повторяет его цветами. Прибор работает!
Проект 2. Кнопка из фольги
А теперь — магия из главы 11 брошюры. Вокруг нас всюду «электрический шум»: провода сети 220 вольт, зарядки, техника — всё это наводит в любом проводнике слабенькие колебания напряжения. Обычно наводки — враг, с которым борются. Но наш транзистор умеет усиливать — а значит, может сделать наводки видимыми. И тут выясняется приятное: человеческое тело собирает наводки отлично. Коснулись провода — транзистор усилил вашу «шумность» — плата заметила касание. Готовая сенсорная кнопка.
Разберём схему. Резистор 10 кОм от «+» приоткрывает транзистор — как чуть-чуть отвёрнутый кран. К базе же подключён сенсорный провод: его свободный конец оберните кусочком пищевой фольги — это и есть кнопка. Эмиттер через 470 Ом уходит на землю, и с него же сигнал идёт на вход A0.
// Продвинутый курс, урок 5. Шаг 3: слушаем наводки через транзистор.
const int PROBE = A0; // сюда транзистор отдаёт усиленный сигнал
void setup() {
Serial.begin(9600);
}
void loop() {
// Откройте вкладку «График» и потрогайте фольгу.
Serial.println(analogRead(PROBE));
delay(5);
}
Откройте вкладку «График» и потрогайте фольгу. Видите пляску? Частота этих волн — 50 герц, ровно как у розеточной сети: вы в прямом смысле видите на экране электрическое эхо проводки вашего дома, пойманное вашим же телом.
Учим плату замечать касание
// Продвинутый курс, урок 5. Шаг 4: касание зажигает свет.
const int PROBE = A0;
const int LED = 13; // встроенного светодиода для опыта достаточно
const int SENS = 3; // чувствительность: БОЛЬШЕ число — ГРУБЕЕ сенсор
int last = 0; // прошлое показание
int glow = 0; // «свечение»: пока больше нуля — светим
void setup() {
pinMode(LED, OUTPUT);
last = analogRead(PROBE);
}
void loop() {
int now = analogRead(PROBE);
// Наводка — это дрожание: текущее показание отличается от прошлого.
if (abs(now - last) > SENS) {
glow = 500; // заметили касание — светим ближайшие 500 кругов
}
last = now;
if (glow > 0) {
glow = glow - 1;
digitalWrite(LED, HIGH);
} else {
digitalWrite(LED, LOW);
}
}
Идея детектора проста: касание — это дрожание сигнала, поэтому сравниваем каждое показание с предыдущим. Разница больше порога SENS — значит, трогают. А чтобы светодиод не мерцал в такт волнам, работает приём «растянуть короткое событие» из урока о датчиках: переменная glow заряжается на 500 кругов и тает по единичке.
// Продвинутый курс, урок 5. Шаг 5: выключатель без подвижных частей.
const int PROBE = A0;
const int LED = 13;
const int SENS = 3;
int last = 0;
bool lightOn = false;
unsigned long lastTouch = 0; // когда сработали в прошлый раз
void setup() {
pinMode(LED, OUTPUT);
last = analogRead(PROBE);
}
void loop() {
int now = analogRead(PROBE);
bool touched = (abs(now - last) > SENS);
last = now;
// Пауза 800 мс — иначе одно долгое касание переключит свет много раз.
if (touched && millis() - lastTouch > 800) {
lastTouch = millis();
lightOn = !lightOn; // восклицательный знак — «наоборот»
digitalWrite(LED, lightOn);
}
}
Следующий шаг — выключатель: одно касание зажигает, следующее гасит. Новинка в строке lightOn = !lightOn: восклицательный знак означает «наоборот» — из правды делает неправду и обратно. Идеальный переключатель в одну строку. Пауза в 800 миллисекунд бережёт от двойных срабатываний — это тот же антидребезг, только для пальца.
Финал: сенсорный ночник
// Продвинутый курс, урок 5. Шаг 6: сенсорный ночник.
// Касание фольги плавно зажигает лампу на выводе 10, ещё касание — гасит.
const int PROBE = A0;
const int LED = 10;
const int SENS = 3;
int last = 0;
bool lightOn = false;
unsigned long lastTouch = 0;
int current = 0; // яркость сейчас
int target = 0; // яркость-цель
void setup() {
pinMode(LED, OUTPUT);
last = analogRead(PROBE);
}
void loop() {
int now = analogRead(PROBE);
bool touched = (abs(now - last) > SENS);
last = now;
if (touched && millis() - lastTouch > 800) {
lastTouch = millis();
lightOn = !lightOn;
if (lightOn) {
target = 255;
} else {
target = 0;
}
}
// Плавность — старый добрый шаг к цели.
if (current < target) {
current = current + 1;
}
if (current > target) {
current = current - 1;
}
analogWrite(LED, current);
delay(2);
}
Соединяем всё: детектор касания, переключатель и плавность из урока про умный ночник. Коснулись фольги — лампа на выводе 10 плавно разгорается, коснулись ещё раз — плавно тает. Приклейте фольгу под лист бумаги на столе — и у вас невидимая кнопка, о которой гости не догадаются.
Частые проблемы
- Сенсор срабатывает сам по себе. Ваш порог слишком чуткий — поднимите
SENSдо 5–8. И укоротите сенсорный провод: длинный ловит наводки даже без касания. - Сенсор не чувствует палец. Проверьте резистор 10 кОм от «+» к базе — без него транзистору не хватает «приоткрытости». И убедитесь, что трогаете именно фольгу, а не изоляцию провода... хотя через тонкую изоляцию сенсор тоже часто слышит!
- Тестер горит обоими цветами сразу. Так и должно быть, если вход тестера никуда не подключён: обе базы «висят в воздухе». Подключите зелёный провод к выводу — останется один цвет.
- График ровный даже при касании. Перепроверьте ножки транзистора: К—Б—Э, плоской стороной к себе. Перевёрнутый BC337 усиливать не будет.
Задания для тренировки
- РазминкаСделайте из ночника «сенсорный диммер»: первое касание — половина яркости, второе — полная, третье — выключить. Счётчик режимов и остаток от деления вам в помощь.
- ПосложнееПодключите зуммер и превратите сенсор в «терменвокс наоборот»: пока фольгу трогают — звучит нота, отпустили — тишина. Помните про таймеры: зуммер на выводе 12 не мешает ничему.
- Со звёздочкой ⭐Глава 11 брошюры называется «Съедобная сенсорная кнопка» неспроста: вместо фольги воткните сенсорный провод в яблоко или банан. Фрукт проводит ток — значит, тоже собирает наводки. Сделайте яблочный дверной звонок и удивите семью.
Что вы теперь умеете
- различать выводы TO-92: Коллектор — База — Эмиттер, плоской стороной к себе;
- объяснять, чем n-p-n отличается от p-n-p и почему в базе всегда резистор;
- собирать транзисторный ключ: слабый вывод управляет сильной нагрузкой;
- превращать наводки из помехи в сигнал — и видеть сеть 50 Гц на графике;
- строить сенсорные кнопки из фольги, бумаги и даже яблока.
Остался последний нетронутый уголок коробки — три ярких светодиода. В следующем уроке они выстроятся в светящуюся шкалу-градусник, а заодно мы научимся зажигать «полтора светодиода» — звучит невозможно, но вы уже почти умеете.
Частые вопросы
Чем биполярный транзистор отличается от полевого из урока про мотор?
Оба — усилители, но открываются по-разному: полевой IRFZ24 управляется напряжением на затворе и почти не берёт тока, биполярный — током через базу, поэтому в базе обязателен резистор. Для тяжёлых нагрузок вроде мотора удобнее полевик, для маленьких сигналов и сенсоров — биполярный.
Опасно ли трогать сенсорный провод руками?
Совершенно безопасно: вы касаетесь цепи с напряжением 5 вольт через резисторы, ток там — миллионные доли ампера. Наоборот, это вы «даёте» схеме свои наводки, а не она вам ток.
Почему сенсор лучше работает вечером или у розетки?
Сенсор питается наводками от сети 220 В: чем ближе провода и работающая техника, тем громче электрический шум и увереннее срабатывание. В глухом поле от батарейки такая кнопка работать почти перестанет — там нечего усиливать.
