Стенд с серво и OLED-дисплеем казался законченным, пока серво не сделало первый рывок: на экране появился мусор, DS18B20 отвалилась на один опрос, а ESP-модуль на соседней макетке умудрился перезагрузиться. Блок питания был честный на 2 А, провода короткие, код — образцовый. Осциллографа у меня тогда не было, и диагноз я поставил дедовским способом: пинза на конденсатор 100 нФ прямо к ногам дисплея — мусор исчез. Просадка питания на импульсе серво выбивала чувствительную периферию, и вылечилось это копеечной деталью.
Конденсаторы поддержки — это два номинала, которые решают 90% проблем «глючит при включении нагрузки». Керамический 100 нФ ставится ВПЛОТУЮ к ногам питания каждого датчика и чипа — он гасит высокочастотный шум и локальные звонки. Электролит 10-47 мкФ ставится на шину у входа питания — он держит медленные просадки при пиках нагрузки. В уроке — почему это работает на макетке особенно актуально (лунки и перемычки имеют сопротивление), куда именно втыкать, чем плохи конденсаторы на диэлектрике Y5V и как за пять минут увидеть просадку на АЦП без осциллографа.
Что ставить, куда втыкать и почему работает
Физика простая: любой провод и любая лунка макетки имеют сопротивление и индуктивность. Когда серво рвётся с места, ток с 10 мА взлетает до 600-700 мА за миллисекунды, на сопротивлении цепи рождается провал напряжения, и в этот момент 3,3-вольтовые чипы видят на питании 4,1 В вместо 5 — начинается паника. Керамический 100 нФ в сантиметре от ног датчика — локальный склад заряда для быстрых фронтиков: высокая частота для него «проходит мимо», потому что длинный путь до блока питания имеет индуктивность. Электролит 10-47 мкФ у входа шины держит более длинные провалы — миллисекунды и десятки миллисекунд. Это не взаимозаменяемые детали: керамика работает на ВЧ, электролит — на низких частотах, и ставят их ПАРОЙ.
Три ловушки, на которых я собрал коллекцию синяков. Первая — диэлектрик: керамика на Y5V теряет до 80% ёмкости при рабочем напряжении и температуре, то есть «100 мкФ» превращается в 20; брать X7R или X5R, они честнее. Вторая — полярность: электролит без минуса не работает, полоска на корпусе — это минус, и встречное включение рано или поздно кончается хлопком и бумажной кашей. Третья — расстояние: 100 нФ в 15 см от датчика бесполезна почти полностью, индуктивность проводов между ней и чипом съедает весь эффект. Подробный расчёт, откуда берётся просадка, я давал в уроке про бюджет тока, там же про пусковые токи серво.
// Детектор просадки без осциллографа: делитель 10к/10к с шины// +5V на A0. Серво рвётся с места - следи за цифрами в Serial.#include <Servo.h> Servo ser;const int PIN_SERVO = 9;const int PIN_ADC = A0; // делитель 10кОм/10кОм от +5V на A0 unsigned long tPrint = 0; void setup() { Serial.begin(9600); ser.attach(PIN_SERVO); Serial.println("monitor pitaniya: 512 = 5.00 V");} void loop() { // серво ходит туда-сюда каждые 3 секунды unsigned long poluvitok = (millis() / 3000) % 2; ser.write(poluvitok ? 20 : 160); if (millis() - tPrint >= 100) { // печать раз в 100 мс tPrint = millis(); int v = analogRead(PIN_ADC); // 512 = ровно 5.00 В Serial.println(v); } delay(20);}Скетч превращает Arduino в грубый, но честный вольтметр шины: делитель из двух резисторов 10 кОм делит +5V пополам, и analogRead(512) соответствует ровно пяти вольтам. Запусти без конденсаторов и смотри Serial в момент рывка серво: без поддержки значение ныряет на 10-30 единиц — это провал 0,1-0,3 В на импульсе. Втыкаешь электролит 47 мкФ у входа шины и 100 нФ рядом с серво — нырок сжимается до единиц. Точности АЦП не хватает, чтобы разглядеть быстрые звонки, которые гасит керамика, но медленную просадку, убивающую датчики, видно отлично.
Замер я делаю на шине, а не на пине 5V платы: интересует именно то, что доходит до потребителей через лунки и перемычки. Если нырок больше 30-40 единиц — увеличивай электролит до 100 мкФ, проверяй толщину проводов и убеждайся, что GND серво идёт к шине отдельным коротким путём, а не по цепочке из пяти перемычек.
| Деталь | Номинал | Куда втыкать | Что лечит |
|---|---|---|---|
| Керамика X7R/X5R | 100 нФ (маркировка 104) | вплотную к ногам питания каждого датчика и чипа | ВЧ-шум, звонки, сбои обмена I2C/1-Wire |
| Электролит | 10-22 мкФ | вход шины +5V и GND у платы | медленная просадка всей шины |
| Электролит | 47-100 мкФ | рядом с серво, реле, мотором | пусковые пики 500-700 мА |
| Керамика | 100 нФ | A0-VCC-GND у аналогового входа | шум АЦП, дрожание показаний |
| Никогда Y5V/Z5U | «100 нФ» | — | теряют до 80% ёмкости от напряжения |
- 1. Какой керамический конденсатор держит ёмкость честно под напряжением?
- 2. Куда втыкать 100 нФ поддержки, чтобы она работала?
- пара «100 нФ X7R у ног + электролит 10-47 мкФ на шину» лечит 90% глюков
- Y5V/Z5U теряют до 80% ёмкости под напряжением — бери X7R/X5R
- полоска электролита — минус, к GND; запас по напряжению 16-25 В
- просадку видно на АЦП через делитель 10к/10к: 512 = 5,00 В
Частые вопросы по теме урока
- Какой керамический конденсатор держит ёмкость честно под напряжением?
- Y5V и Z5U теряют до 80% ёмкости при рабочем напряжении и нагреве: «100 нФ» превращаются в 20. X7R/X5R проседают на проценты — именно их ставят в обвязку датчиков. X7R или X5R
- Куда втыкать 100 нФ поддержки, чтобы она работала?
- Каждый сантиметр провода добавляет индуктивность, которая на быстрых фронтах запирает конденсатор. Эффект дают сантиметры от ноги чипа, а не общая ёмкость где-то на шине. вплотную к ногам питания датчика или чипа