Резисторы в моём наборе лежат в коробочке из-под конфет, россыпью. Год назад это была главная причина моих остановок: возьмёшь полосатый бочонок, поднесёшь к свету — и вот ты уже пять минут читаешь кольца, как гадание на кофейной гуще. А проект стоит и ждёт.
Хуже того: однажды я собрал делитель напряжения для фоторезистора — по схеме, из двух деталей, — и analogRead упорно выдавал одно и то же максимальное значение при любом освещении. Я поменял фоторезистор. Потом резистор. Потом переписал код — хотя куда уж его переписывать в четырёх строках. Ошибка оказалась в макетке: средняя точка делителя, о которой ниже, осталась «висеть» без своего резистора.
В этом уроке закроем вопрос раз и навсегда. Научимся читать цветовые кольца за пару секунд, поймём, зачем придуман ряд E12 и почему номиналы такие странные, посчитаем по закону Ома резистор для светодиода и соберём делитель напряжения — сердце любого аналогового датчика на макетке.
Зачем резистор в цепи: честная работа закона Ома
Резистор — деталь-ограничитель. У него есть сопротивление, измеряемое в омах, и больше у него ничего нет: ни полярности, ни логики, ни памяти. Ток через участок цепи подчиняется закону Ома: I = U/R. В светодиодной цепи напряжение делится: на кристалле красного светодиода падает около 2 В, остаток — 3 В — падает на резисторе. При 220 Ом ток получается 3 В / 220 Ом ≈ 13,6 мА.
Числа с условиями: если взять 1 кОм — ток упадёт до 3 мА, светодиод будет светить тускло, но для индикации этого хватает. Если взять 100 Ом — ток подскочит до 30 мА: ярко, но на пределе, ведь пин Arduino рассчитан на 40 мА абсолютного максимума, а комфортно ему при 20 мА. Если взять 22 Ом при 5 В без светодиода — резистору достанутся все 5 В, ток 227 мА, мощность больше ватта: бочонок обожжёт пальцы и завоняет лаком.
Отсюда рабочая таблица новичка. 220 Ом — «светит ярко и живёт». 330 Ом — «чуть тусклее, вообще без вопросов». 1 кОм — «экономная индикация». 10 кОм — «еле видно, для светодиодов не годится, но отлично тянет подтяжку входа». Мнение с оговоркой: если сомневаетесь — берите 330 Ом; я сам по умолчанию ставлю 220, но только потому, что их у меня сотня и я давно умею отличать кольца.
Читаем кольца: две цифры, множитель, допуск
Большинство резисторов в наборах — четырёхполосные: три полосы слева и золотая справа. Читают слева направо, держа бочонок золотой полосой вправо. Первая полоса — первая цифра, вторая — вторая цифра, третья — множитель: сколько нулей дописать. Золотая — допуск ±5%; у серебряной — ±10%, а у точных пятиполосных последняя полоса бывает коричневой, это ±1%.
| Цвет полосы | Цифра | Множитель |
|---|---|---|
| чёрный | 0 | ×1 |
| коричневый | 1 | ×10 |
| красный | 2 | ×100 |
| оранжевый | 3 | ×1 000 |
| жёлтый | 4 | ×10 000 |
| зелёный | 5 | ×100 000 |
| синий | 6 | ×1 000 000 |
| фиолетовый | 7 | — |
| серый | 8 | — |
| белый | 9 | — |
| золотой | допуск ±5% | ×0,1 |
Тренировка. Красный-красный-коричневый — 2, 2 и один ноль: 220 Ом, тот самый для светодиода. Коричневый-чёрный-оранжевый — 1, 0 и три нуля: 10 000 Ом, он же 10 кОм, он же подтяжка. Жёлтый-фиолетовый-оранжевый — 47 кОм. Коричневый-чёрный-красный — 1 кОм. Заметьте: «кило» и «мега» появляются сами, когда нулей набирается больше трёх: шесть нулей — мегаомы.
Допуск ±5% означает вилку: у того же 220-омного реальное сопротивление гуляет от 209 до 231 Ом — измерьте мультиметром и убедитесь. Для светодиода это безразлично, для точных измерительных схем — нет, но учебные проекты точности не требуют. Быстрый способ отличить 10 кОм от 100 Ом на бегу: смотрите на третью полосу. Оранжевая — держишь килоомы, красная — сотни ом, коричневая — десятки.
Ряд E12: почему в магазине нет резистора на 219 Ом
Резисторы делают не «любого» номинала, а по рядам. Самый ходовой — E12: двенадцать значений на каждую декаду — 10, 12, 15, 18, 22, 27, 33, 39, 47, 56, 68, 82 — и умножай на любую степень десяти: 10 Ом, 100 Ом, 1 кОм, 10 кОм, 100 кОм. Выглядит странно, пока не увидишь причину: соседние значения отличаются примерно на 20%, а допуск E12 — ±10%. Любое возможное реальное сопротивление попадает в чью-нибудь вилку, ряд покрывает числовую прямую внахлёст, без дыр.
Поэтому резистора «на 219 Ом» не существует — есть 220 Ом ±5%, то есть 209–231. Нужна точнее — берут ряд E24: двадцать четыре значения на декаду с шагом около 10% и допуском ±5%, добавляются 11, 13, 16, 20, 24, 30 и так далее. Для учебных проектов E24 с запасом достаточно, и наборы из 300–600 резисторов по этому ряду закрывают практически всё.
Практический вывод: когда расчёт дал 215 Ом, не ищите 215 — берите ближайший из ряда, 220. Когда дал 3,3 кОм — берите 3,3 кОм (оранжевый-оранжевый-красный), он есть. Единственное условие, при котором стоит думать о точности глубже, — измерительная схема вроде моста Уитстона; светодиоду, кнопке и делителю ряда E12 хватает за глаза.
Делитель напряжения: два резистора и средняя точка
Аналоговый вход Arduino меряет напряжение от 0 до 5 В и превращает его в число от 0 до 1023. Но многие датчики не выдают напряжение — они меняют сопротивление: фоторезистор в темноте — сотни килоом, на свету — единицы килоом. Мост между «сопротивлением» и «напряжением» — делитель: резистор R1 от 5 В к точке A, резистор R2 от точки A к земле. Напряжение в средней точке: Vout = 5 В × R2 / (R1 + R2).
Проверим числами. Два одинаковых по 10 кОм: 5 × 10/20 = 2,5 В — analogRead покажет около 512. Теперь фоторезистор: ставим его сверху, к 5 В, а фиксированные 10 кОм — снизу. У моего GL5528 на ярком свету сопротивление около 2 кОм: Vout = 5 × 10/(2+10) ≈ 4,2 В, reading около 850. В темноте — сотни килоом, пусть 500 кОм: Vout = 5 × 10/510 ≈ 0,1 В, reading около 20. Свет рулит числом от 20 до 850 — дальше с ним работает код.
И та самая ошибка из начала урока. Средняя точка делителя — это столбец макетки, в котором должны встретиться три ножки: вывод фоторезистора, вывод резистора 10 кОм и провод к A0. Я воткнул фоторезистор и провод в один столбец, а резистор — в соседний. Средняя точка осталась подтянутой к 5 В только через фоторезистор, вниз не уходила, и analogRead выдавал максимум при любой освещённости. Схема на бумаге была верной — неверным был узел.
void setup() { Serial.begin(9600);} void loop() { int raw = analogRead(A0); // 0..1023 — средняя точка делителя long mV = raw * 5000L / 1023; // в милливольтах; 5000L — long, иначе int переполнится Serial.print("raw="); Serial.print(raw); Serial.print(" mV="); Serial.println(mV); delay(300);}Подтяжка 10 кОм: резистор, который держит вход
Цифровой вход без цепи читает «погоду»: помехи, наводки, электрическое поле вашей руки. Об этом плотно поговорим в следующем уроке, а пока — про резистор, который эту погоду отменяет. Подтягивающий резистор 10 кОм от входа к 5 В гарантирует: пока кнопка не нажата, вход твёрдо читает HIGH. Нажали кнопку — вход соединился с землёй и читает LOW, а через подтяжку течёт 5 В / 10 000 Ом = 0,5 мА. Полмиллиампера: ничего не греется, батарейка не садится.
Почему именно 10 кОм? Возьмём 220 Ом — держать будет, но при каждом нажатии через резистор потечёт 5/220 ≈ 23 мА впустую: как ещё один светодиод, только не светящий. Возьмём 1 МОм — ток копеечный, но подтяжка слабая: вход снова начнёт ловить помехи. Десять килоом — золотая середина, поэтому она же — дефолт в тысяче схем из интернета. В Arduino есть и внутренняя подтяжка (режим INPUT_PULLUP, сопротивление около 20–50 кОм), но внешний бочонок нагляднее: его видно на макетке, и он учит читать схемы.
Эксперименты для закрепления
На виртуальной плате слайдер A0 изображает среднюю точку делителя с фоторезистором. Первый скетч выше меняет яркость светодиода плавно, второй — включает «ночник» по порогу. Задачи:
- Посчитайте на бумаге, что покажет делитель из 10 кОм сверху и 4,7 кОм снизу: Vout = 5 × 4,7/14,7 ≈ 1,6 В, raw ≈ 330. Поставьте слайдер примерно на треть и сверьте raw с расчётом.
- В ночнике сделайте два порога: включать свет при raw ниже 250, выключать при raw выше 400, а между ними — помнить прежнее состояние. Это гистерезис, и он спасает от мигания на границе срабатывания.
- Замените map(raw, 0, 1023, 0, 255) на деление raw на 4 и убедитесь, что результат тот же. Объясните себе, почему деление на 4 даёт тот же диапазон: 1024/4 = 256 значений.
- Четыре полосы: две цифры, множитель, допуск; золотая полоса — справа
- красный-красный-коричневый = 220 Ом; коричневый-чёрный-оранжевый = 10 кОм
- Ряд E12: 10-12-15-18-22-27-33-39-47-56-68-82 × степень десяти; шаг около 20% под допуск ±10%
- Ток светодиода: (5 В − 2 В)/R; при 220 Ом это примерно 14 мА, при 1 кОм — 3 мА
- Делитель: Vout = 5 × R2/(R1+R2); средняя точка — один узел на три ножки
- Подтяжка 10 кОм к 5 В держит вход в HIGH и тратит всего 0,5 мА при нажатой кнопке
- 1. красный-красный-коричневый-золотой — какой номинал?
- 2. Что кодирует третья полоса в четырёхполосной маркировке?
- 3. Пин выдаёт 5 В, светодиод «съедает» 2 В, резистор 220 Ом. Ток примерно...
- 4. Почему для подтяжки входа берут 10 кОм, а не 220 Ом?
- 5. Делитель: сверху 10 кОм к 5 В, снизу 10 кОм к земле. Напряжение в средней точке?
- 6. Зачем придуман ряд E12?
Остался последний кусок головоломки — схемы. Тот самый делитель, который вы только что собрали, в любом туториале нарисован парой прямоугольников и точкой посередине, и после этого урока вы знаете, что точка на бумаге — это столбец на макетке. В следующем уроке выучим словарь схемных символов, соберём по чертежу кнопку с подтяжкой и поймаем плавающий вход — причину, по которой мой фонарик когда-то включался от приближения руки. Коробочка из-под конфет, к слову, с тех пор рассортирована по номиналам.
Частые вопросы по теме урока
- красный-красный-коричневый-золотой — какой номинал?
- 2, 2 и множитель ×10 (коричневый) дают 220 Ом; золотая полоса — допуск ±5%. 220 Ом ±5%
- Что кодирует третья полоса в четырёхполосной маркировке?
- Третья полоса — множитель: коричневый — один ноль, красный — два, оранжевый — три. Количество нулей после двух цифр
- Пин выдаёт 5 В, светодиод «съедает» 2 В, резистор 220 Ом. Ток примерно...
- (5 − 2)/220 ≈ 13,6 мА. Ярко, безопасно для пина и для светодиода. 14 мА
- Почему для подтяжки входа берут 10 кОм, а не 220 Ом?
- 220 Ом подтянет, но при каждом нажатии будет впустую тратиться 5/220 ≈ 23 мА. 10 кОм тратит 0,5 мА и всё ещё держит вход крепко. Через 220 Ом при нажатии потечёт лишние 23 мА
- Делитель: сверху 10 кОм к 5 В, снизу 10 кОм к земле. Напряжение в средней точке?
- Vout = 5 × R2/(R1+R2) = 5 × 10/20 = 2,5 В. analogRead при этом покажет около 512. 2,5 В
- Зачем придуман ряд E12?
- Вилки допусков соседних номиналов перекрываются: любое реальное сопротивление попадает в ряд, дыр в номенклатуре нет. 12 номиналов с шагом около 20% покрывают все значения при допуске ±10%