Представь ситуацию: резистор на плате подгорел, маркировка нечитаемая, мультиметр лежит дома, а ближайший магазин закрыт. Или ты просто хочешь проверить номинал без лишних движений. Если у тебя есть Arduino, ты уже можешь измерить сопротивление — точнее, чем кажется на первый взгляд. Расскажу, как это сделать без экспериментов с таймерами и без лишних компонентов.
Суть метода
Идея простая: собираем делитель напряжения из известного резистора и неизвестного, подаём напряжение и измеряем выход аналоговым входом Arduino. По формуле делителя вычисляем неизвестное сопротивление.
Схема выглядит так: 5V → R_known → A0 → R_unknown → GND. Между резисторами и землёй — точка измерения. Всё, никаких дополнительных деталей не нужно.
Формула расчёта:
R_unknown = R_known × (1023 / ADC - 1)
Где ADC — значение с аналогового входа (0–1023 для 10-битного АЦП Arduino Uno). Если измеряешь напряжение на выходе делителя, формула будет такой:
R_unknown = R_known × (V_out / (5.0 - V_out))
Но на практике удобнее считать через код АЦП — меньше ошибок из-за нестабильного опорного напряжения.
Что понадобится
- Arduino Uno или любая модель с аналоговым входом
- Один резистор с известным номиналом (R_known)
- Провода для соединения
- Сам измеряемый резистор
Никаких конденсаторов, стабилизаторов или плат не требуется. Всё собирается на макетке или напрямую пайкой.
Какой резистор выбрать в качестве R_known
От правильного выбора зависит точность измерения. Если взять слишком большой или слишком маленький номинал, результат будет гулять.
Общее правило: сопротивление должно быть того же порядка, что и измеряемое. Если не знаешь даже примерно, что измеряешь, начни с 10 кОм. Для диапазона от 1 кОм до 100 кОм это хороший старт.
Если измеряешь малые сопротивления (единицы-десятки Ом), бери R_known около 100 Ом. Если большие (сотни килоом и выше) — 100 кОм.
Важно: чем точнее ты знаешь номинал R_known, тем точнее будет результат. Если есть хотя бы приблизительный мультиметр для его проверки — проверь.
Схема подключения
Всё просто:
- Один вывод R_known подключаешь к 5V Arduino.
- Второй вывод R_known — к аналоговому входу A0 и одновременно к одному выводу R_unknown.
- Второй вывод R_unknown — к GND.
Точка между резисторами — это и есть вход A0. Никаких дополнительных компонентов не нужно.
Если хочешь измерять не один резистор, а много — можно сделать переключатель на несколько R_known для разных диапазонов, но для разового измерения это избыточно.
Код для Arduino
Код элементарный. Вот рабочий вариант:
const int analogPin = A0;
const float R_known = 10000.0; // 10 кОм
void setup() {
Serial.begin(9600);
}
void loop() {
int adcValue = analogRead(analogPin);
float rUnknown = R_known * (1023.0 / adcValue - 1.0);
Serial.print("ADC: ");
Serial.print(adcValue);
Serial.print(" R_unknown: ");
Serial.print(rUnknown);
Serial.println(" Ohm");
delay(500);
}
Загружаешь, открываешь монитор порта — видишь сопротивление. Если значение ADC близко к 0 или 1023, значит R_known не подходит по номиналу, и нужно его заменить.
Насколько точно это работает
Точность зависит от трёх вещей:
- Реальное сопротивление R_known (не номинал, а то, что на самом деле)
- Точность АЦП Arduino (10 бит — это примерно 5 мВ на деление)
- Стабильность напряжения питания
Для бытовых задач — проверить, жив ли резистор, подобрать номинал для ограничения тока светодиода, отсеять брак — точности хватает с запасом. Для прецизионных измерений нужна внешняя опора и калибровка, но это уже другая история.
Реально достижимая погрешность при использовании обычного резистора с допуском 5% — около 10–15%. Если нужна точность — бери R_known с допуском 1% и стабилизированное питание.
Когда этот метод работает хорошо, а когда — плохо
| Ситуация | Подходящий диапазон | Комментарий |
|---|---|---|
| Малые сопротивления (1–100 Ом) | R_known = 100 Ом | На малых значениях контактное сопротивление и сопротивление проводов дают ощутимую погрешность |
| Средние сопротивления (100 Ом – 100 кОм) | R_known = 1–10 кОм | Золотая середина — максимальная точность |
| Большие сопротивления (100 кОм – 1 МОм) | R_known = 100 кОм | На больших сопротивлениях шумы АЦП заметнее, но в целом работает |
| Сопротивления выше 1 МОм | R_known = 1 МОм | Уже чувствительны к паразитным утечкам и помехам, результат может сильно гулять |
Частые ошибки
- Взять R_known не того номинала. Если ADC показывает 5 или 1018 — измерение бессмысленно. Меняй резистор.
- Забыть, что АЦП не любит напряжение выше 5 В. Если схема питается от 12 В без делителя — сгорит вход.
- Использовать длинные провода без экрана на высоких сопротивлениях. На мегаомах провода работают как антенны, и показания прыгают.
- Не учитывать допуск R_known. Если резистор на 10 кОм с допуском 10%, то и измерение будет с той же погрешностью плюс ошибка АЦП.
- Считать, что можно измерить сопротивление под напряжением. Схема должна быть обесточена, измеряемый резистор — отдельно от остальной платы.
Как улучшить точность без мультиметра
Если тебе нужна повышенная точность, а мультиметра так и нет, попробуй следующее:
- Измерь реальное напряжение на пинах 5V и GND другим способом или хотя бы прими его как переменную в коде. Если там 4.8 В вместо 5.0 В — поправка в формуле снизит систематическую ошибку.
- Делай несколько измерений и усредняй. 10–20 отсчётов с небольшой задержкой убирают случайный разброс.
- Используй стабилизированное питание. Если питание идёт от USB ноутбука, напряжение может проседать под нагрузкой. Лучше взять внешний стабилизатор 5 В.
- Проверь контакты. Плохой контакт на макетке может добавить десятки ом, и ты будешь думать, что резистор бракованный.
Что делать, если под рукой нет даже одного резистора
Если совсем пусто, можно использовать саму Arduino. У неё есть подтягивающие резисторы на портах, которые можно включать программно. Их номинал примерно 20–50 кОм (зависит от модели), но он некалиброванный. Подойдёт только для грубой оценки.
Другой вариант — использовать потенциометр или фоторезистор как известный элемент, если знаешь его характеристики. Но это уже экзотика.
Когда без мультиметра не обойтись
Честно скажу: если ты регулярно работаешь с электроникой, мультиметр — это не роскошь, а необходимость. С Arduino ты измеряешь сопротивление с погрешностью 10–15%, мультиметр даёт 1–3%. Для отладки и ремонта это критично.
Но если мультиметра нет прямо сейчас, а резистор проверить нужно — Arduino вполне справится. Особенно если задача не в точном измерении, а в том, чтобы понять, жив ли компонент и примерно какой у него номинал.
Итог
Схема делителя напряжения с Arduino — это рабочий способ измерить сопротивление без мультиметра. Точность достаточна для бытовых задач и отладки. Главное — правильно подобрать номинал опорного резистора и понимать ограничения метода.
Если нужна высокая точность — бери прецизионный R_known, стабилизированное питание и делай усреднение измерений. Если нужно просто быстро проверить резистор — собери схему за минуту и смотри значения в мониторе порта.
И помни: мультиметр в хозяйстве необходим. Но пока его нет — Arduino выручит.
