Продвинутый курс Arduino · Незнакомые детали

Урок 4. Конденсатор: копилка тока

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

Урок 4 из 8⏱ примерно 40 минутОбновлено: 14 августа 2026

Что понадобится

  • Контроллер Uno и кабель USB
  • Макетная плата
  • Конденсаторы 2,2 мкФ и 4,7 мкФ
  • Резисторы 10 кОм и 470 Ом
  • Кнопка
  • Провода

Все детали есть в обучающем наборе, по которому идёт курс.

Начинаем блок «Незнакомые детали». На дне коробки набора всё ещё лежат нетронутые пакетики, и сегодня мы вскроем первый — с маленькими бочонками. Это конденсаторы, и после этого урока вы будете видеть их везде: в блоке питания, в наушниках, на материнской плате компьютера их сотни.

Урок будет непривычным: новых команд в нём нет совсем. Это урок про электричество — три опыта, каждый из которых объясняет одну суперспособность бочонка. Программы нужны только как измерительные приборы: вы уже умеете писать вольтметры и самописцы, самое время пустить их в дело.

Знакомство: копилка тока

Конденсатор — это крошечная перезаряжаемая копилка электричества. Подали напряжение — накопил, сняли — отдал. В отличие от батарейки он наполняется и высыпается за доли секунды, зато и хранит совсем чуть-чуть. Сколько именно — говорит его ёмкость в микрофарадах: в наборе лежат бочонки на 2,2 мкФ и 4,7 мкФ.

4,7мкФсветлая полоса с «−»:с этой стороны — минусовая ножкадлинная ножка — «плюс»как у светодиодаОбозначение на схемах+C1Прямая пластина — «плюс», дуга — «минус».Буква C — конденсатор, ёмкость меряют в микрофарадах (мкФ).
Электролитический конденсатор из набора. Светлая полоса с «−» — минусовая сторона, длинная ножка — плюс.

Полярность — закон. Наши бочонки — электролитические, у них есть плюс и минус, как у светодиода. Подсказки сразу две: светлая полоса на корпусе показывает минус, длинная ножка — плюс. Перепутаете — конденсатор может вздуться и испортиться. При наших 5 вольтах взрыва не будет, но деталь жалко.

Опыт 1. Заряд не бывает мгновенным

Первый вопрос: как быстро наполняется копилка? Ответ зависит не только от неё самой, но и от «трубки», через которую течёт ток.

Конденсатор — это бачок для электричества, а уровень воды — напряжениеузкая трубка — резисторбачок — конденсаторТолько включиливода едва капает: трубка узкаяузкая трубка — резисторбачок — конденсаторПрошло время τ = R × Cбачок уже наполнен на 63 %узкая трубка — резисторбачок — конденсаторЕщё немного — полныйнапор кончился: ток больше не течёт
Вода льётся в бачок через узкую трубку: сначала бодро, потом всё ленивее — чем полнее бачок, тем слабее напор.

Соберём эту картинку из деталей: вывод 5 будет краном, резистор 10 кОм — узкой трубкой, конденсатор 4,7 мкФ — бачком. А вход A0 подключим прямо к бачку: пусть меряет «уровень воды», то есть напряжение.

++abcdefghij11020591210 кОм+1231Вывод 5 → резистор 10 кОм → «плюс» конденсатора (столбик 9).2«Минус» конденсатора (полоса на корпусе) — в шину «−»; туда же GND платы.3Вход A0 подключён к «плюсу» конденсатора: он подглядывает за напряжением.Берите конденсатор 4,7 мкФ — с ним кривые на графике самые наглядные.
Вывод 5 → резистор 10 кОм → плюс конденсатора. Минус — на землю, A0 подглядывает за плюсом.
// Продвинутый курс, урок 4. Шаг 2: смотрим, как дышит конденсатор.

const int SOURCE = 5;    // вывод-источник: он и заряжает, и разряжает
const int PROBE = A0;    // вход-подглядыватель: меряет напряжение на копилке

void setup() {
  Serial.begin(9600);
  pinMode(SOURCE, OUTPUT);
}

void loop() {
  // Подали 5 вольт — конденсатор начинает наполняться через резистор.
  digitalWrite(SOURCE, HIGH);
  for (int i = 0; i < 100; i++) {
    Serial.println(analogRead(PROBE));
    delay(3);
  }

  // Вывод-источник стал «землёй» — копилка высыпается через тот же резистор.
  digitalWrite(SOURCE, LOW);
  for (int i = 0; i < 100; i++) {
    Serial.println(analogRead(PROBE));
    delay(3);
  }
}

Загрузите скетч и откройте вкладку «График» — ту самую, из урока про монитор порта. Плата раз за разом заряжает и разряжает конденсатор, а на графике рисуется его «дыхание»:

10230заряд: сначала быстро, потом всё ленивееразряд: зеркальная горкаНи одного прямого угла: напряжение на конденсаторе не умеет прыгать — только перетекать.
Заряд — быстрый старт и ленивый финиш. Разряд — та же горка зеркально. Прямых углов нет вообще.

Обратите внимание на форму горки: напряжение на конденсаторе не умеет прыгать. Оно только перетекает — быстро в начале, медленно в конце. У этой плавности есть точная мера: время τ = R × C. Для наших 10 кОм и 4,7 мкФ это 47 миллисекунд — за это время копилка наполняется на 63 %, а за пять τ — практически доверху. Хотите медленнее — берите резистор побольше или конденсатор пожирнее. Проверьте: замените 4,7 мкФ на 2,2 мкФ — горки на графике станут вдвое круче.

Опыт 2. Конденсатор сглаживает

Вспомните секрет ШИМ из восьмого урока: «половинная яркость» — это на самом деле очень быстрое мигание, полдоли секунды 5 вольт, полдоли — ноль. Глаз это мигание усредняет. А можно ли усреднить его по-настоящему, электрически? Схема уже собрана — просто загрузите другой скетч.

// Продвинутый курс, урок 4. Шаг 3: превращаем мигание в ровное напряжение.

const int SOURCE = 5;
const int PROBE = A0;

void setup() {
  Serial.begin(9600);
  pinMode(SOURCE, OUTPUT);

  // «Половинная яркость» из урока 8. На самом деле вывод просто очень
  // быстро мигает: половину времени 5 В, половину — 0 В.
  analogWrite(SOURCE, 128);
}

void loop() {
  // Что видит вход: мигание или ровную середину? Смотрим в «График».
  Serial.println(analogRead(PROBE));
  delay(10);
}

На графике — ровная полка около 512, ровно половина от 1023. Конденсатор не успевает ни зарядиться за «вспышку», ни разрядиться за «темноту» — и держит честную середину. Мигание превратилось в постоянное напряжение.

Контрольный фокус: аккуратно выньте конденсатор из макетки, не трогая остального. График тут же превратится в хаос из нулей и максимумов — вход A0 начнёт ловить голое мигание ШИМ. Вставьте бочонок обратно — и снова ровная полка. Вот это и называется фильтром: деталь, которая пропускает среднее и глотает дёрганье.

Теперь вы знаете, почему конденсаторы стоят везде: они сглаживают питание, глотают помехи и превращают «икающие» сигналы в ровные. Попробуйте сменить analogWrite(SOURCE, 128) на 64 или 200 — полка на графике послушно переедет.

Опыт 3. Антидребезг без единой строчки кода

В одиннадцатом уроке мы лечили дребезг кнопки программой: окно тишины на 30 миллисекунд. А в прошлом уроке — прямо в обработчике прерывания. Пришло время третьего способа — железного. Раз конденсатор глотает дёрганье, пусть проглотит и дребезг.

Сначала соберите схему без конденсатора и измерьте врага честной программой:

// Продвинутый курс, урок 4. Шаг 4: измеряем дребезг в штуках.

const int BUTTON = 2;

int lastState = HIGH;
int changes = 0;                  // сколько раз сигнал дёрнулся
unsigned long lastChange = 0;     // когда дёрнулся в последний раз

void setup() {
  Serial.begin(9600);
  pinMode(BUTTON, INPUT_PULLUP);
  Serial.println("Нажимайте кнопку — я считаю каждое дрожание сигнала.");
}

void loop() {
  int state = digitalRead(BUTTON);
  if (state != lastState) {
    lastState = state;
    changes = changes + 1;
    lastChange = millis();
  }

  // Полсекунды тишины после последнего дёрганья — отчёт готов.
  if (changes > 0 && millis() - lastChange > 500) {
    Serial.print("Переходов за нажатие: ");
    Serial.println(changes);
    changes = 0;
  }
}

Скетч считает каждый скачок сигнала и через полсекунды тишины печатает итог. Идеальное нажатие с отпусканием — это ровно 2 перехода: вниз и вверх. Понажимайте: у настоящей кнопки будут «нажатия» по 4, 8, а то и 20 переходов — это пружинка звенит о контакты.

++abcdefghij11020911+2,2 мкФ1231Кнопка верхом на канавке: столбик 9 сверху → вывод 2, столбик 11 снизу → шина «−».2Конденсатор 2,2 мкФ — параллельно кнопке: «плюс» в столбик 9, «минус» в столбик 11.3Земля: GND платы → верхняя шина «−», перемычка — к нижней.«Минус» конденсатора — к той стороне кнопки, что уходит на землю. Полоса подскажет.
Конденсатор 2,2 мкФ встаёт параллельно кнопке: плюс — к сигнальной стороне, минус — к земляной.

Теперь добавьте конденсатор 2,2 мкФ параллельно кнопке — и понажимайте снова. Переходов станет 2, редко 3. Что произошло: пока кнопка отпущена, бочонок заряжен; удар пружинки на микросекунды замыкает контакты, но крошечная копилка тут же подпитывает вход, и сигнал не успевает дёрнуться. Дребезг тонет в конденсаторе.

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

Частые проблемы

  • График — ровный ноль. Проверьте полярность бочонка: полоса «−» должна смотреть в сторону земли. И убедитесь, что A0 подключён к плюсовой ноге, а не к минусовой.
  • Горки на графике обрезаны сверху. Так и должно быть, если вы уменьшили паузы: конденсатор не успевает дозарядиться. Верните delay(3) — или наслаждайтесь «пилой», она тоже красивая.
  • В опыте с кнопкой всегда печатается 1. Вы считаете нажатие и отпускание отдельно? Подержите кнопку дольше полсекунды — тогда нажатие и отпускание дадут по своему отчёту, и это нормально: тишина в полсекунды разрезала их на два.
  • Числа скачут даже с конденсатором. Проверьте, что минус бочонка и земля кнопки — в одном узле: конденсатор должен стоять именно параллельно кнопке, а не «где-то рядом».

Задания для тренировки

  • РазминкаПоставьте в опыт с зарядом резистор 1 кОм вместо 10 кОм (τ станет в десять раз короче) и посмотрите на график. А теперь — два конденсатора параллельно: ёмкости складываются, горка растянется.
  • ПосложнееСделайте «медленный рассвет»: пусть плата заряжает конденсатор совсем большим резистором (два по 10 кОм последовательно), а второй вывод через 470 Ом зажигает светодиод, когда A0 увидит больше 800. Получится таймер на чистой физике.
  • Со звёздочкой ⭐Соберите стрелочный вольтметр: сглаженный конденсатором ШИМ подаётся на A0, а сервопривод из прошлого урока показывает напряжение стрелкой. Команда L 0…255 с клавиатуры — и стрелка плывёт к новому уровню. Разбор ниже.
Показать разбор «стрелочный вольтметр»

Схема — из первого опыта, плюс сервопривод, подключённый как в прошлом уроке: оранжевый на вывод 9, красный на «+», коричневый на «−», шину «+» запитайте от 5V платы. Дальше всё собирается из готовых кубиков: команда L из урока про пульт задаёт ШИМ, конденсатор превращает его в ровное напряжение, а map переводит вольты в градусы стрелки.

// Продвинутый курс, урок 4. Разбор задания: стрелочный вольтметр.
// ШИМ → резистор → конденсатор = ровное напряжение. Стрелка его показывает,
// а команда L из урока про пульт задаёт уровень.

#include <Servo.h>

const int SOURCE = 5;
const int PROBE = A0;
const int SERVO_PIN = 9;

Servo strelka;

void setup() {
  Serial.begin(9600);
  pinMode(SOURCE, OUTPUT);
  strelka.attach(SERVO_PIN);
  analogWrite(SOURCE, 128);   // для начала — половина
  Serial.println("Команда: L 0..255. Стрелка покажет напряжение копилки.");
}

void loop() {
  if (Serial.available() > 0) {
    char c = Serial.read();
    if (c == 'L' || c == 'l') {
      int value = constrain(Serial.parseInt(), 0, 255);
      analogWrite(SOURCE, value);
      Serial.print("ШИМ: ");
      Serial.println(value);
    }
  }

  int voltage = analogRead(PROBE);             // 0…1023 = 0…5 вольт
  int angle = map(voltage, 0, 1023, 0, 180);   // переводим в угол стрелки
  strelka.write(angle);
  delay(50);
}

Самое интересное — вынуть конденсатор: стрелка тут же начнёт биться в судорогах, потому что A0 будет ловить то 0, то 1023. Вставьте обратно — стрелка успокоится. Лучшей демонстрации слова «фильтр» не придумать.

Что вы теперь умеете

  • узнавать электролитический конденсатор и подключать его правильной стороной;
  • объяснять заряд и разряд через τ = R × C — и растягивать их по своему желанию;
  • сглаживать ШИМ в настоящее постоянное напряжение;
  • лечить дребезг кнопки железом, без единой строчки кода;
  • смотреть на графики напряжения как на осциллограммы — глазами инженера.

В следующем уроке достанем из коробки чёрные трёхногие таблетки — транзисторы BC337 и BC327. Вы уже знакомы с их старшим братом-полевиком по уроку о моторе; теперь разберёмся с биполярными — и соберём кнопку, у которой вообще нет подвижных частей: сенсорную, из куска фольги.

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

Почему конденсатор не заменяет батарейку?

Ёмкости несравнимы: наш бочонок 4,7 мкФ хранит энергию, которой светодиоду хватает на сотые доли секунды. Зато конденсатор отдаёт и принимает заряд мгновенно и переживает миллионы циклов — поэтому у него своя работа: сглаживать, фильтровать и помогать в переходные моменты, а не питать устройство.

Что значит надпись «2,2 мкФ 50 В» на корпусе?

Первое число — ёмкость в микрофарадах, размер копилки. Второе — предельное напряжение: больше подавать нельзя. Наши 5 вольт для конденсатора на 50 В — лёгкая прогулка, запас в десять раз.

Есть ли конденсаторы без плюса и минуса?

Да, керамические — маленькие плоские «чечевички», им всё равно, какой стороной стоять. Но большая ёмкость в таком исполнении получается дорогой, поэтому от микрофарада и выше почти всегда используют полярные электролитические, как в нашем наборе.

← Все уроки курса