Таймер 555: распиновка, астабильная и моностабильная схемы
Как работает таймер 555? Распиновка, астабильное и моностабильное включение, формулы f = 1,44/((R1+2R2)C) и t = 1,1RC, мигалка на светодиодах и код для Arduino.
Таймер 555 — дешёвая 8-выводная микросхема-таймер, которая с помощью всего одного резистора и одного конденсатора задаёт интервалы времени от микросекунд до часов. Мигать светодиодом с заданной частотой, держать лампу включённой минуту после нажатия кнопки, извлекать звук из зуммера или управлять мотором через PWM — всё это она делает без микроконтроллера и без единой строчки кода. Микросхему разработал Ханс Камензинд (Hans Camenzind) для Signetics в 1971 году, в продажу она вышла в 1972-м и стала одной из самых массовых микросхем в мире: по оценкам, в 2003 году её выпускали около миллиарда штук в год.
В этом руководстве ты узнаешь распиновку 555, как внутри работают компараторы и триггер, две базовые схемы (астабильную мигалку и моностабильный одновибратор), откуда берутся формулы частоты и длительности, как опустить коэффициент заполнения ниже 50% и как использовать 555 вместе с Arduino, ESP32 и Raspberry Pi Pico. Если не хочется считать вручную, калькулятор таймера 555 мгновенно покажет частоту, коэффициент заполнения и форму сигнала.
Что такое таймер 555 и как он работает?
Внутри 555 четыре основные части. Первая — делитель напряжения из трёх одинаковых резисторов, включённых последовательно между VCC и GND (в классическом NE555 по 5 kΩ каждый); он формирует два опорных напряжения: 2/3 и 1/3 VCC. Вторая — пара компараторов, подключённых к этим опорным напряжениям: пороговый компаратор сравнивает пин THRES с 2/3 VCC, а компаратор запуска сравнивает пин TRIG с 1/3 VCC. Третья — RS-триггер, который эти два компаратора устанавливают и сбрасывают, а четвёртая — выходной каскад, управляемый триггером, вместе с разрядным транзистором, который разряжает конденсатор.
Правило на самом деле очень простое: когда напряжение на TRIG падает ниже 1/3 VCC, выход переходит в HIGH, а разрядный транзистор закрывается. Когда напряжение на THRES поднимается выше 2/3 VCC, выход переходит в LOW, а разрядный транзистор открывается и притягивает пин 7 к GND. Если не происходит ни того ни другого, выход сохраняет прежнее состояние. Время задаёт то, сколько внешний конденсатор заряжается и разряжается через резистор между этими двумя порогами. При питании 5 V пороги равны 3,33 V и 1,67 V, при 9 V — 6 V и 3 V. Часто говорят, что название микросхемы происходит от трёх резисторов по 5 kΩ внутри, но Камензинд рассказывал, что Signetics выбрала это число произвольно.
| Характеристика | NE555 (биполярный) | TLC555 (КМОП) |
|---|---|---|
| Напряжение питания | 4,5–16 V (SE555: до 18 V) | 2–15 V (LMC555: от 1,5 V) |
| Ток покоя (5 V) | 2–6 mA | Около 0,2 mA |
| Выходной ток | Отдаёт и принимает до 200 mA | Отдаёт около 10 mA, принимает 100 mA |
| Уровень HIGH на выходе | Примерно на 1,5–1,7 V ниже VCC | До VCC (rail-to-rail) |
| Рекомендуемая максимальная частота | 100 kHz | Около 2 MHz |
| Работа от 3,3 V | Нет | Да |
| Сдвоенная версия | NE556 (14 выводов) | TLC556 (14 выводов) |
Распиновка таймера 555
Полукруглая выемка (ключ) или маленькая точка на корпусе отмечает вывод 1. Если смотреть сверху так, чтобы выемка была слева, выводы 1–4 идут слева направо по нижнему ряду, а выводы 5–8 — справа налево по верхнему; иначе говоря, номера растут против часовой стрелки, и вывод 8 (VCC) находится прямо напротив вывода 1. Корпус DIP-8 идеально встаёт поперёк канавки посередине макетной платы: по одному ряду ножек должно оказаться с каждой стороны канавки.
| Вывод | Название | Назначение | Типичное подключение |
|---|---|---|---|
| 1 | GND | Земля (0 V) | Минус питания |
| 2 | TRIG (запуск) | Когда напряжение падает ниже 1/3 VCC, переводит выход в HIGH и запускает отсчёт времени | Астабильный режим: к выводу 6; моностабильный: подтяжка (pull-up) + кнопка |
| 3 | OUT (выход) | Выход; у NE555 отдаёт или принимает до 200 mA | Светодиод через резистор, зуммер, транзистор |
| 4 | RESET | Принудительно переводит выход в LOW, если напряжение на нём ниже примерно 0,7 V | Если не используется — прямо на VCC |
| 5 | CONT (управление) | Прямой доступ к опорному напряжению 2/3 VCC; сдвигает пороги | Конденсатор 10 nF на GND |
| 6 | THRES (порог) | Выше 2/3 VCC переводит выход в LOW и завершает отсчёт времени | К времязадающему конденсатору |
| 7 | DISCH (разряд) | Вывод с открытым коллектором, замкнутый на GND, пока выход в LOW | Астабильный режим: между R1 и R2; моностабильный: к выводу 6 |
| 8 | VCC | Плюс питания (NE555: 4,5–16 V) | Плюс питания + развязывающий конденсатор 100 nF |
Три режима работы: астабильный, моностабильный и бистабильный
| Режим | Другое название | Что делает | Типичное применение |
|---|---|---|---|
| Астабильный | Автоколебательный мультивибратор | Сам по себе непрерывно выдаёт прямоугольный сигнал | Мигалка на светодиодах, звук зуммера, тактовый сигнал, PWM |
| Моностабильный | Одновибратор | При запуске на заданное время переходит в HIGH, затем возвращается в LOW | Лампа с задержкой, лестничный таймер, расширение импульса |
| Бистабильный | Триггер | Переходит в HIGH по TRIG и в LOW по RESET и сохраняет состояние; отсчёта времени нет | Выключатель с двумя кнопками «вкл/выкл» |
Астабильная схема: мигалка на светодиодах с 555
В астабильной схеме выводы TRIG (2) и THRES (6) соединены вместе и подключены к времязадающему конденсатору. Конденсатор заряжается от VCC через R1 и R2; когда напряжение на нём достигает 2/3 VCC, выход переходит в LOW, разрядный транзистор открывается, и теперь конденсатор разряжается в вывод 7 только через R2. Когда напряжение падает до 1/3 VCC, выход снова переходит в HIGH, и цикл повторяется сам. Конденсатор никогда не разряжается полностью, а колеблется между 1/3 и 2/3 VCC; только при включении питания он начинает с нуля, поэтому первый период HIGH чуть длиннее. Схема ниже работает от батарейки на 9 V и поочерёдно зажигает два светодиода раз в секунду — это самая простая полицейская мигалка.
- Установи 555 поперёк канавки посередине макетной платы выемкой влево. Если не знаешь, как макетная плата соединена внутри, сначала прочитай Что такое макетная плата?.
- Подключи выводы 8 (VCC) и 4 (RESET) к шине +9 V, а вывод 1 (GND) — к минусовой шине. Поставь керамический конденсатор 100 nF между выводами 8 и 1 как можно ближе к микросхеме.
- Подключи R1 = 10 kΩ между выводами 8 и 7 и R2 = 68 kΩ между выводами 7 и 6.
- Соедини выводы 6 и 2 проводом. От этой точки подключи электролитический конденсатор C = 10 µF к GND; его короткая (минусовая) ножка должна идти к GND.
- Поставь конденсатор 10 nF (с маркировкой 103) от вывода 5 (CONT) на GND.
- От выходного вывода 3 через резистор 470 Ω подключи анод первого светодиода, а его катод — к GND; этот светодиод горит, пока на выходе HIGH. Анод второго светодиода подключи к +9 V через 470 Ω, а катод — к выходу; этот светодиод горит, пока на выходе LOW.
- Подключи батарейку: два светодиода должны загораться по очереди примерно на 0,54 с и 0,47 с. Если не горит ни один, первым делом проверь, что вывод 4 подключён к VCC.
При 9 V уровень HIGH на выходе NE555 составляет около 7,5 V, поэтому через первый светодиод течёт около 12 mA, а через второй — около 15 mA. Если питать схему от 5 V, уменьши резисторы до 220–330 Ω; значение поможет рассчитать калькулятор резистора для светодиода, а о самом светодиоде читай в статье Что такое светодиод?. Поскольку частота не зависит от напряжения питания, те же R1, R2 и C и при 5 V дают одну вспышку в секунду.
Формулы частоты и длительности для таймера 555
Когда конденсатор заряжается через резистор R, напряжение на нём растёт по экспоненте; τ = R·C — постоянная времени, подробно о ней в статье Что такое конденсатор?. Путь от 1/3 VCC до 2/3 VCC занимает ровно ln 2 · R · C ≈ 0,693 · R · C, потому что за это время оставшийся до цели разрыв уменьшается вдвое. Так как заряд идёт через R1 + R2, а разряд только через R2, время HIGH и время LOW различаются. Если сложить эти два времени и взять обратную величину, получается коэффициент 1 / 0,693 ≈ 1,44 и знаменитая формула: f = 1,44 / ((R1 + 2·R2) · C).
| Величина | Формула | Пример: R1 = 10 kΩ, R2 = 68 kΩ, C = 10 µF |
|---|---|---|
| Время HIGH (tH) | 0,693 · (R1 + R2) · C | 0,54 с |
| Время LOW (tL) | 0,693 · R2 · C | 0,47 с |
| Период (T) | 0,693 · (R1 + 2·R2) · C | 1,01 с |
| Частота (f) | 1,44 / ((R1 + 2·R2) · C) | 0,99 Hz |
| Коэффициент заполнения | (R1 + R2) / (R1 + 2·R2) | 53,4% |
| Длительность импульса в моностабильном режиме (t) | 1,1 · R · C | 1,1 с при R = 100 kΩ, C = 10 µF |

При выборе номиналов помни о нескольких ограничениях. R1 должен быть не меньше 1 kΩ: иначе, когда разрядный транзистор открывается, он соединяет VCC почти напрямую с GND. Согласно даташиту Texas Instruments, из-за небольшого тока, который потребляет пороговый вход, сумма R1 + R2 не должна превышать примерно 3,4 MΩ при 5 V или 10 MΩ при 15 V; на практике надёжнее всего оставаться в пределах от 1 kΩ до 1 MΩ. Не бери конденсатор меньше 1 nF, потому что собственная ёмкость макетной платы и проводов собьёт расчёт. Используй NE555 на частотах ниже 100 kHz; для более быстрых сигналов выбирай КМОП-версию. Расшифровать цифры на конденсаторе поможет утилита код конденсатора, а увидеть кривую заряда — утилита постоянная времени RC.
| R1 | R2 | C | Частота | Заполнение | Применение |
|---|---|---|---|---|---|
| 10 kΩ | 100 kΩ | 10 µF | 0,69 Hz | 52% | Медленный предупреждающий огонь |
| 10 kΩ | 68 kΩ | 10 µF | 0,99 Hz | 53% | Мигалка на светодиодах, раз в секунду |
| 4,7 kΩ | 47 kΩ | 1 µF | 14,6 Hz | 52% | Быстрый стробоскоп |
| 1 kΩ | 10 kΩ | 100 nF | 686 Hz | 52% | Звук зуммера |
| 1 kΩ | 6,8 kΩ | 100 nF | 986 Hz | 53% | Тестовый сигнал около 1 kHz |
| 1 kΩ | 10 kΩ | 10 nF | 6,86 kHz | 52% | Высокий тон, PWM |
| 1 kΩ | 18 kΩ | 1 nF | 38,9 kHz | 51% | Несущая для ИК-пульта (подстрой до 38 kHz подстроечным резистором) |
Настройка коэффициента заполнения: ниже 50%
В базовой астабильной схеме конденсатор заряжается через R1 + R2, а разряжается только через R2, поэтому время HIGH всегда больше времени LOW, и коэффициент заполнения не может опуститься ниже 50%; если сделать R2 намного больше R1, можно приблизиться к 50%, но не уйти ниже. Решение — диод 1N4148 параллельно R2, анодом к выводу 7 и катодом к выводу 6. При заряде ток идёт через диод в обход R2; при разряде диод смещён в обратном направлении, и ток течёт через R2. Получаем tH ≈ 0,693 · R1 · C и tL ≈ 0,693 · R2 · C, а коэффициент заполнения падает до R1 / (R1 + R2). Например, при R1 = 10 kΩ, R2 = 47 kΩ и C = 10 µF светодиод горит 69 мс и не горит 326 мс: короткая, заметная вспышка с заполнением 17,5%. Прямое падение напряжения на диоде около 0,6 V делает время HIGH чуть длиннее расчётного, особенно при 5 V. Как ведут себя диоды в целом, читай в статье Что такое диод?.
Если нужно сохранить частоту неизменной и регулировать только коэффициент заполнения, используй потенциометр и два диода. Подключи движок потенциометра к выводу 7; один конец потенциометра соедини с конденсатором через диод (анодом к потенциометру), а другой — с конденсатором через второй диод, включённый в обратную сторону (катодом к потенциометру). При R1 = 1 kΩ, потенциометре на 100 kΩ и C = 10 nF частота остаётся около 1,4 kHz, а коэффициент заполнения меняется примерно от 1% до 99%, потому что при вращении ручки сумма сопротивлений заряда и разряда не меняется. С MOSFET на выходе это классический способ регулировать скорость DC-мотора или яркость светодиодной ленты на 12 V; подробности — в статьях Что такое PWM? и MOSFET и Arduino.
Моностабильная схема: одиночный импульс и лампа с задержкой
В моностабильной схеме выводы 6 (THRES) и 7 (DISCH) соединены вместе; от этой точки резистор R идёт к VCC, а конденсатор C — к GND. Вывод TRIG (2) удерживается в HIGH подтягивающим резистором. В режиме ожидания выход в LOW, и разрядный транзистор держит конденсатор разряженным. Когда на TRIG приходит короткий импульс LOW, выход переходит в HIGH, разрядный транзистор закрывается, и конденсатор начинает заряжаться через R. Когда напряжение на нём достигает 2/3 VCC, выход возвращается в LOW, а конденсатор мгновенно разряжается. На этот раз конденсатор заряжается с самого нуля до 2/3 VCC, поэтому импульс длится ln 3 · R · C ≈ 1,1 · R · C и снова не зависит от напряжения питания.
- Подключи выводы 8 и 4 к +5 V, а вывод 1 — к GND; поставь конденсатор 100 nF между выводами 8 и 1 и конденсатор 10 nF между выводом 5 и GND.
- Соедини выводы 6 и 7. От этой точки подключи R = 470 kΩ к +5 V и электролитический конденсатор C = 100 µF к GND (минусовой ножкой к GND).
- Подтяни TRIG (вывод 2) к +5 V резистором 10 kΩ и подключи кнопку между выводом 2 и GND. Подробнее о подключении кнопок — в статье Как подключить кнопку к Arduino.
- Для первой проверки подключи светодиод к выходному выводу 3 через резистор 330 Ω.
- Коротко нажми кнопку: светодиод горит примерно 1,1 × 470 kΩ × 100 µF ≈ 52 секунды и затем гаснет. Из-за допуска электролитического конденсатора ±20% нормальным считается любой результат от 42 до 62 секунд.
- Для настоящей лампы вместо светодиода управляй реле: от выхода через 1 kΩ подключи базу транзистора BC547, эмиттер — к GND, а коллектор — к одному концу катушки реле; другой конец катушки идёт к +5 V. Не забудь диод 1N4007 параллельно катушке (катодом к +5 V); о роли транзистора читай в статье Что такое транзистор?.
| R | C | Время (1,1 · R · C) | Применение |
|---|---|---|---|
| 10 kΩ | 1 µF | 11 мс | Подавление дребезга кнопки, расширение коротких импульсов |
| 100 kΩ | 10 µF | 1,1 с | Короткий сигнал, дверной звонок |
| 220 kΩ | 47 µF | 11,4 с | Кратковременное освещение |
| 470 kΩ | 100 µF | 52 с | Лестничный таймер, лампа с задержкой |
| 10 kΩ + потенциометр 1 MΩ | 100 µF | 1,1–111 с | Таймер с регулируемым временем |
Чтобы прервать задержку досрочно, можно добавить вторую кнопку на вывод RESET (4): подтяни вывод к VCC резистором 10 kΩ и подключи кнопку между RESET и GND; в момент нажатия выход переходит в LOW, а конденсатор разряжается. Моностабильная схема иногда один раз запускается сама при первой подаче питания. Чтобы этого не было, подключи вывод RESET к VCC через 10 kΩ и к GND через 10 µF: при включении микросхема удерживается в сбросе то короткое время, пока заряжается этот конденсатор, и начинает нормально работать, когда питание установится.
Как использовать таймер 555 с Arduino?
555 и Arduino — не соперники, а хорошая команда. Простую мигалку можно сделать и на Arduino с помощью millis(), но 555 не нужен код, он работает от питания до 16 V, отдаёт с выхода 200 mA и продолжает работать, даже если Arduino зависнет. Поэтому 555 обычно дополняет Arduino в одной из трёх ролей: как источник сигнала, который измеряет Arduino, как аппаратный таймер, который запускает Arduino (измеритель ёмкости, расширитель импульсов), и как генератор, который Arduino включает и выключает через вывод RESET (сирена или звук зуммера). В последнем случае достаточно подключить вывод 4 таймера 555 к выходу Arduino: пока пин в HIGH, генератор работает, а пока в LOW — молчит.
| Вывод 555 | Arduino Uno | ESP32 | Raspberry Pi Pico |
|---|---|---|---|
| 8 VCC | 5V | 3V3 (только КМОП 555) | 3V3(OUT) (КМОП 555) или VBUS (NE555) |
| 1 GND | GND | GND | GND |
| 3 OUT | D2 | GPIO 27 | GP15 (с NE555 через делитель 10 kΩ + 20 kΩ) |
| 2 TRIG (пример с запуском) | D7 | GPIO 26 | GP14 (только с КМОП 555 с питанием от 3V3) |
| 4 RESET | 5V или цифровой пин | 3V3 | 3V3(OUT) |
В первом примере Arduino измеряет частоту и коэффициент заполнения мигалки и сравнивает их со значениями по формулам. Схема та же астабильная, что и выше (R1 = 10 kΩ, R2 = 68 kΩ, C = 10 µF), только питается от пина 5V на Arduino вместо 9 V, а выходной вывод 3 идёт на D2. Функция pulseIn() возвращает в микросекундах, сколько времени пин остаётся в HIGH или LOW.
1// 555 flaşörünün frekansını ve duty cycle'ını ölçer / Measures the frequency and duty cycle of a 555 flasher
2const int SIGNAL_PIN = 2; // 555 çıkışı (pin 3) / 555 output (pin 3)
3const float R1_OHM = 10000.0; // R1 = 10 kΩ
4const float R2_OHM = 68000.0; // R2 = 68 kΩ
5const float C_FARAD = 10e-6; // C = 10 µF
6const unsigned long TIMEOUT_US = 3000000UL; // 3 s: ~1 Hz sinyal için / for a ~1 Hz signal
7
8void setup() {
9 Serial.begin(9600);
10 pinMode(SIGNAL_PIN, INPUT);
11
12 // Formüllerle hesaplanan değerler / Values from the formulas
13 float fCalc = 1.44 / ((R1_OHM + 2 * R2_OHM) * C_FARAD);
14 float dutyCalc = 100.0 * (R1_OHM + R2_OHM) / (R1_OHM + 2 * R2_OHM);
15 Serial.print(F("Hesaplanan / Calculated: f = "));
16 Serial.print(fCalc, 3);
17 Serial.print(F(" Hz, duty = "));
18 Serial.print(dutyCalc, 1);
19 Serial.println(F(" %"));
20}
21
22void loop() {
23 unsigned long highUs = pulseIn(SIGNAL_PIN, HIGH, TIMEOUT_US); // HIGH süresi / HIGH time
24 unsigned long lowUs = pulseIn(SIGNAL_PIN, LOW, TIMEOUT_US); // LOW süresi / LOW time
25
26 if (highUs == 0 || lowUs == 0) { // zaman aşımı / timeout
27 Serial.println(F("Sinyal yok / No signal"));
28 return;
29 }
30
31 unsigned long periodUs = highUs + lowUs;
32 float f = 1000000.0 / periodUs; // f = 1 / T
33 float duty = 100.0 * highUs / periodUs; // duty = tH / T
34
35 Serial.print(F("Olculen / Measured: f = "));
36 Serial.print(f, 3);
37 Serial.print(F(" Hz, duty = "));
38 Serial.print(duty, 1);
39 Serial.print(F(" %, tH = "));
40 Serial.print(highUs / 1000);
41 Serial.print(F(" ms, tL = "));
42 Serial.print(lowUs / 1000);
43 Serial.println(F(" ms"));
44}По умолчанию pulseIn() ждёт не больше 1 секунды; при сигнале около 1 Hz она сначала ждёт окончания текущего импульса, а потом начала нового, поэтому мы увеличили таймаут до 3 секунд. Нормально, если измеренная частота в мониторе порта отличается от расчётной на 5–20%; большая часть разницы возникает из-за допуска электролитического конденсатора. Эта разница заодно позволяет узнать реальную ёмкость конденсатора: подставь измеренную частоту в f = 1,44 / ((R1 + 2·R2) · C) и вырази C. Для более быстрых сигналов точнее считать фронты с помощью прерывания, а не pulseIn().
Запуск 555 от Arduino: измеритель ёмкости
Поскольку длительность импульса в моностабильном режиме t = 1,1 · R · C, зная R и измерив t, можно найти ёмкость конденсатора по формуле C = t / (1,1 · R). Схема такая: выводы 6 и 7 соединены, от этой точки 100 kΩ к 5 V и проверяемый конденсатор к GND; выводы 4 и 8 на 5 V, вывод 5 через 10 nF на GND. TRIG (вывод 2) подтянут к 5 V резистором 10 kΩ и подключён к D7, а выходной вывод 3 идёт на D2. Arduino посылает с D7 импульс LOW длиной 10 µs и с помощью micros() измеряет, сколько выход остаётся в HIGH.
1// 555 monostable ile kondansatör ölçer / Capacitance meter with a 555 monostable
2const int TRIG_PIN = 7; // 555 pin 2 (TRIG)
3const int OUT_PIN = 2; // 555 pin 3 (OUT)
4const float R_OHM = 100000.0; // 6-7 ile 5V arasındaki direnç / resistor between pins 6-7 and 5V
5const float CAL = 1.0; // kalibrasyon: gerçek / ölçülen / calibration: real / measured
6const unsigned long TIMEOUT_US = 6000000UL; // 6 s: ~47 µF'a kadar / up to ~47 µF
7
8void setup() {
9 Serial.begin(9600);
10 pinMode(OUT_PIN, INPUT);
11 pinMode(TRIG_PIN, OUTPUT);
12 digitalWrite(TRIG_PIN, HIGH); // TRIG beklemede HIGH / TRIG idles HIGH
13}
14
15void loop() {
16 while (digitalRead(OUT_PIN) == HIGH) {} // önceki darbenin bitmesini bekle / wait for any previous pulse to end
17
18 digitalWrite(TRIG_PIN, LOW); // 10 µs'lik LOW darbesiyle tetikle / trigger with a 10 µs LOW pulse
19 delayMicroseconds(10);
20 digitalWrite(TRIG_PIN, HIGH);
21
22 unsigned long t0 = micros();
23 while (digitalRead(OUT_PIN) == LOW) { // çıkışın HIGH olmasını bekle / wait for OUT to go HIGH
24 if (micros() - t0 > 1000) {
25 Serial.println(F("555 yanit vermiyor / 555 not responding"));
26 delay(1000);
27 return;
28 }
29 }
30
31 t0 = micros();
32 while (digitalRead(OUT_PIN) == HIGH) { // darbe süresini ölç / time the pulse
33 if (micros() - t0 > TIMEOUT_US) {
34 Serial.println(F("Kondansator cok buyuk / Capacitor too large"));
35 delay(1000);
36 return;
37 }
38 }
39 unsigned long widthUs = micros() - t0;
40
41 // t = 1,1 · R · C -> C = t / (1,1 · R)
42 float capNf = CAL * (widthUs * 1e-6) / (1.1 * R_OHM) * 1e9;
43
44 Serial.print(F("t = "));
45 Serial.print(widthUs);
46 Serial.print(F(" us, C = "));
47 if (capNf >= 1000.0) {
48 Serial.print(capNf / 1000.0, 2);
49 Serial.println(F(" uF"));
50 } else {
51 Serial.print(capNf, 1);
52 Serial.println(F(" nF"));
53 }
54 delay(1000);
55}Здесь мы измеряем вручную с micros(), а не с pulseIn(), потому что сразу после запуска выход уже в HIGH, и pulseIn() сочла бы этот импульс «предыдущим» и пропустила бы его. На Uno разрешение micros() — 4 µs; со 100 kΩ конденсатор 1 nF даёт импульс 110 µs, так что диапазон измерения — примерно от 1 nF до 47 µF. Измерь конденсатор с известной ёмкостью и запиши отношение его реального значения к измеренному в коэффициент CAL, чтобы откалибровать свой измеритель. Перед подключением электролитического конденсатора разряди его, замкнув ножки, и подключай его плюсовой ножкой к стороне выводов 6–7.
Таймер 555 с ESP32 и Raspberry Pi Pico
ESP32 и Raspberry Pi Pico работают от 3,3 V, и их пины не выдерживают 5 V. Классическому NE555 же нужно не меньше 4,5 V, так что от 3,3 V он работать не может. Самое аккуратное решение — КМОП-версия 555, например TLC555, LMC555 или ICM7555: у неё та же распиновка, она питается от пина 3V3, а её выход меняется от 0 до 3,3 V, поэтому подключается прямо к GPIO. Если под рукой только NE555, питай его от 5 V и подели выход резисторами 10 kΩ (последовательно) и 20 kΩ (на GND). Поскольку уровень HIGH у NE555 около 3,5 V, на выходе делителя будет примерно 2,3 V: этого хватает для порога Pico в 2 V, но для порога ESP32 около 2,5 V это на грани. Поэтому с ESP32 лучше использовать КМОП-версию 555.
В примере для ESP32 КМОП-555 с R1 = 1 kΩ, R2 = 6,8 kΩ и C = 100 nF выдаёт сигнал около 986 Hz: соотношения те же, что у мигалки, только в тысячу раз быстрее. ESP32 запускает обработчик прерывания на каждом нарастающем фронте и выводит, сколько фронтов насчитано за секунду; это число и есть частота в Hz. Коэффициент заполнения рассчитывается по одному времени HIGH, измеренному с помощью pulseIn().
1// ESP32 + CMOS 555 (TLC555) frekans ve duty ölçer / ESP32 + CMOS 555 (TLC555) frequency and duty meter
2const int SIGNAL_PIN = 27; // 555 çıkışı (pin 3) / 555 output (pin 3)
3
4volatile uint32_t edgeCount = 0;
5portMUX_TYPE mux = portMUX_INITIALIZER_UNLOCKED;
6
7void IRAM_ATTR onRise() {
8 portENTER_CRITICAL_ISR(&mux);
9 edgeCount++; // her yükselen kenarı say / count every rising edge
10 portEXIT_CRITICAL_ISR(&mux);
11}
12
13void setup() {
14 Serial.begin(115200);
15 pinMode(SIGNAL_PIN, INPUT);
16 attachInterrupt(digitalPinToInterrupt(SIGNAL_PIN), onRise, RISING);
17}
18
19void loop() {
20 static uint32_t lastMs = millis();
21 if (millis() - lastMs < 1000) return; // 1 saniyelik ölçüm penceresi / 1-second gate
22 lastMs += 1000;
23
24 portENTER_CRITICAL(&mux);
25 uint32_t edges = edgeCount; // sayacı oku ve sıfırla / read and reset the counter
26 edgeCount = 0;
27 portEXIT_CRITICAL(&mux);
28
29 unsigned long highUs = pulseIn(SIGNAL_PIN, HIGH, 100000UL); // tek bir HIGH süresi / one HIGH time
30 float duty = highUs * (float)edges / 10000.0; // duty % = tH(µs) · f(Hz) / 10000
31
32 Serial.printf("f = %u Hz, tH = %lu us, duty = %.1f %%\n", (unsigned)edges, highUs, duty);
33}На Pico функция machine.time_pulse_us() в MicroPython — аналог pulseIn() из Arduino, но с одним важным отличием: если пин уже на нужном уровне, она сразу начинает отсчёт. Поэтому первый вызов используется, чтобы пропустить неполный импульс и синхронизироваться с фронтом сигнала; следующие за ним измерения LOW и HIGH — уже полные импульсы. Пример измеряет мигалку с частотой раз в секунду и при каждом измерении переключает встроенный светодиод.
1# Pico ile 555 flaşörünü ölçmek / Measuring a 555 flasher with the Pico
2from machine import Pin, time_pulse_us
3import time
4
5sig = Pin(15, Pin.IN) # 555 çıkışı: CMOS 555 doğrudan, NE555 bölücüyle / 555 output: CMOS 555 direct, NE555 via a divider
6led = Pin(25, Pin.OUT) # dahili LED (Pico W'de Pin("LED")) / onboard LED (Pin("LED") on a Pico W)
7TIMEOUT = 2_000_000 # 2 s zaman aşımı / 2 s timeout
8
9while True:
10 # İlk ölçüm yarım darbeyi atlar ve kenara senkronlar / The first call skips a partial pulse and syncs to an edge
11 if time_pulse_us(sig, 1, TIMEOUT) < 0:
12 print("Sinyal yok / No signal")
13 continue
14 low_us = time_pulse_us(sig, 0, TIMEOUT) # tam LOW süresi / full LOW time
15 high_us = time_pulse_us(sig, 1, TIMEOUT) # tam HIGH süresi / full HIGH time
16 if low_us < 0 or high_us < 0:
17 continue
18 period = low_us + high_us
19 print("f = {:.3f} Hz, duty = {:.1f} %, tH = {} ms, tL = {} ms".format(
20 1_000_000 / period, 100 * high_us / period, high_us // 1000, low_us // 1000))
21 led.toggle() # her ölçümde LED'i değiştir / toggle the LED on every reading
22 time.sleep_ms(200)Идеи проектов с таймером 555
- Полицейская мигалка: поочерёдно мигай красным и синим светодиодами, один из которых подключён от выхода к GND, а другой — от VCC к выходу; 4,7 kΩ, 47 kΩ и 1 µF дают быстрый стробоскопический эффект.
- Двухтональная сирена: подай выход первого, медленного 555 через резистор на вывод 5 (CONT) второго 555; при смещении порогов тон второй микросхемы то повышается, то понижается. Для звука используй пассивный зуммер или небольшой динамик.
- Лестничный таймер: собери на моностабильном 555, реле и кнопках таймер, который держит лампу включённой одну минуту, а кнопки на разных этажах подключены параллельно.
- Измеритель ёмкости: с помощью кода для Arduino из этой статьи измеряй конденсаторы со стёршейся маркировкой и выводи результат на I2C LCD-дисплей.
- ИК-передатчик: управляй ИК-светодиодом от астабильного 555, настроенного на 38 kHz, и принимай сигнал ИК-приёмником — получится простая сигнализация на пересечение луча. Приёмники для пультов вроде TSOP или VS1838B могут счесть непрерывную несущую помехой и через некоторое время подавить её, поэтому включай и выключай этот 555 через его вывод RESET вторым, медленным 555, чтобы передавать пачками.
- Регулятор скорости мотора: подключи схему PWM с фиксированной частотой и потенциометром к MOSFET, чтобы регулировать мощность DC-мотора на 12 V или светодиодной ленты.
- Детектор пропущенного импульса: поставь PNP-транзистор (например, BC557) параллельно времязадающему конденсатору, соединив его базу с TRIG; каждый импульс LOW, который Arduino посылает через равные промежутки, и запускает 555, и разряжает конденсатор, начиная отсчёт заново. Если Arduino зависнет и импульсы прекратятся, время истечёт, и 555 подаст сигнал тревоги или перезапустит систему.
Частые ошибки и как их исправить
| Симптом | Вероятная причина | Решение |
|---|---|---|
| Светодиод не мигает, всё время горит или не горит | RESET (4) висит в воздухе или на GND; в астабильном режиме выводы 2 и 6 не соединены | Подключи RESET к VCC и соедини выводы 2 и 6 проводом |
| Частота сильно отличается от расчётной | Допуск электролитического конденсатора ±20%, неверно прочитанный номинал (nF вместо µF), слишком маленькая C | Измерь конденсатор, проверь его код, для точных задач используй плёночный конденсатор |
| Схема работает нестабильно или запускается сама | Нет развязки по питанию, вывод CONT или TRIG висит в воздухе | 100 nF + 10 µF между выводами 8 и 1, 10 nF на выводе 5, подтяжка 10 kΩ на TRIG |
| Микросхема греется | Выход замкнут на светодиод без резистора или на GND; слишком маленький R1 | Поставь последовательный резистор к светодиоду, сделай R1 не меньше 1 kΩ |
| Задержка в моностабильном режиме не заканчивается | Кнопка удерживается или TRIG застрял в LOW | Нажимай кнопку коротко или посылай короткий импульс LOW с Arduino |
| Микросхема сбрасывается или выходит из строя при отпускании реле | Нет диода, гасящего обратное напряжение катушки | Подключи 1N4007 параллельно катушке реле |
| Arduino читает неверные значения или пин повреждён | 555 питается от 9–12 V | Питай 555 от 5 V или понизь выход делителем напряжения |
| Коэффициент заполнения не опускается ниже 50% | Естественный предел базовой астабильной схемы | Добавь диод 1N4148 параллельно R2 |
Таймер 555 — одна из лучших деталей для обучения, потому что в одной дешёвой микросхеме он показывает ключевые идеи отсчёта времени в электронике (заряд RC-цепи, пороги, компараторы, триггеры). Начни с мигалки раз в секунду, поменяй номиналы, чтобы получить звук зуммера, затем попробуй моностабильную лампу с задержкой и измеритель ёмкости на Arduino. В приложении BlueGrays есть пошаговые проекты «Полицейская мигалка», «Освещение лестницы» и проекты с зуммером со схемами подключения и кодом, так что версии своих схем на 555 для Arduino и Pico можно попробовать бок о бок.
Частые вопросы
Для чего нужен таймер 555?
555 — универсальная микросхема-таймер, которая задаёт интервалы времени с помощью резистора и конденсатора. В астабильном режиме она выдаёт непрерывный прямоугольный сигнал для мигалок на светодиодах, звука зуммера или тактовых сигналов; в моностабильном режиме — выход, который после запуска остаётся включённым заданное время, для ламп с задержкой или таймеров. Ей не нужны ни микроконтроллер, ни код.
Какое напряжение нужно таймеру 555?
Классический NE555 работает от 4,5 до 16 V (SE555 — до 18 V); чаще всего используют питание 5, 9 и 12 V. Для более низких напряжений, например 3,3 V, бери КМОП-версии вроде TLC555 (2–15 V), ICM7555 или LMC555, который работает от 1,5 V. Пока питание остаётся стабильным, частота и длительность от напряжения не зависят.
Какие номиналы нужны для мигалки на 555 с частотой 1 Hz?
При R1 = 10 kΩ, R2 = 68 kΩ и C = 10 µF получается f = 1,44 / ((10 kΩ + 2 · 68 kΩ) · 10 µF) ≈ 0,99 Hz; светодиод горит около 0,54 с и не горит 0,47 с. Из-за допуска электролитического конденсатора ±20% реальное значение будет немного другим. Для точной подстройки замени R2 подстроечным резистором.
Как опустить коэффициент заполнения 555 ниже 50%?
В базовой астабильной схеме конденсатор заряжается через R1 + R2, а разряжается только через R2, поэтому время HIGH всегда больше времени LOW. Если добавить диод 1N4148 параллельно R2 анодом к выводу 7, конденсатор будет заряжаться только через R1. Тогда tH ≈ 0,693 · R1 · C и tL ≈ 0,693 · R2 · C, и если выбрать R1 меньше R2, заполнение опустится ниже 50%.
Чем NE555 отличается от TLC555?
NE555 построен на биполярных транзисторах, требует не меньше 4,5 V и может отдавать с выхода до 200 mA, но в покое потребляет 2–6 mA и с трудом работает выше 100 kHz. TLC555 — КМОП-версия: работает от 2 V, потребляет около 0,2 mA, достигает примерно 2 MHz, а его выход поднимается до самого напряжения питания; зато отдавать он может лишь около 10 mA. Распиновка у обоих одинаковая.
Можно ли не подключать выводы 4 и 5 таймера 555?
Вывод RESET (4) никогда нельзя оставлять висящим в воздухе; если он не нужен, соедини его прямо с VCC, иначе помехи могут случайным образом сбрасывать микросхему. Вывод CONT (5) технически можно оставить свободным, но подключать его к GND через конденсатор 10 nF — хорошая привычка, чтобы помехи не сдвигали пороги. Если подать на этот вывод внешнее напряжение, изменятся пороги, а значит, и частота.
Что собрать после прочтения
Все проекты
Полицейская мигалка на светодиодах
Как огни на полицейской машине: красный светодиод три раза быстро вспыхивает, затем три раза вспыхивает синий, и узор повторяется без перерыва. Нужны всего два светодиода и два резистора, подключённые

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

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

Полицейский стробоскоп на Pico (красный + синий)
Имитируем мигалку полицейской машины на Raspberry Pi Pico в самом простом виде! Красный и синий светодиоды работают по очереди (мигалка): пока горит красный, синий погашен, и они меняются каждые 0,3 секунды бесконечно. Код записывает два шага прямо в одном цикле while True; скорость задаёт константа WAIT_MS.

Умное освещение лестницы и коридора
Ступи на лестницу или в коридор, и свет загорается ступенька за ступенькой в ту сторону, куда ты идёшь. На каждом конце стоит датчик расстояния; мимо какого ни пройдёшь, восемь светодиодов загораются

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

Полицейский стробоскоп на ESP32
Имитация стробоскопа полицейской машины быстрыми вспышками групп красных и синих светодиодов. По 2 светодиода в каждой группе делают эффект эффектнее. Классический пример быстрого переключения и группового управления.
Другие статьи
Приложение BlueGrays
Собери эту схему шаг за шагом в телефоне
Схема подключения, код и список деталей на одном экране. 200+ проектов на Arduino, ESP32 и Pico готовы к сборке.
Наведи камеру телефона
Наведи камеру на код — откроется магазин приложений на телефоне.
или открыть магазин

