Как измерить сопротивление на ардуино
Измерение сопротивления с помощью Arduino
Но был ещё такой редко встречающийся калькулятор «Электроника МК-64», оборудованный АЦП. Одноканальным, но самым настоящим. Вот он позволял сделать омметр безо всяких генераторов. Калькулятор мог ещё и программы выполнять, почти как современный микроконтроллер, и делать пересчёт автоматически. А это уже, считай, прямопоказывающий омметр, только довольно дорогой, а программу при каждом включении надо набирать заново.
Далее идёт огромная, страшная, формула. Матан любите? Автор тоже, вот он её и упростил, и даже показал, как:
А затем вывел способ вычисления сопротивления нижнего резистора, если известно сопротивление верхнего, а также напряжение питания делителя и напряжение в его средней точке:
/*
The program reads the analog values of A0. These values are in the range of 0-1023.
*/
#define analogInput A0
#define R1 220
#define vin 5
#define BACKLIGHT_PIN 3
#define En_pin 2
#define Rw_pin 1
#define Rs_pin 0
#define D4_pin 4
#define D5_pin 5
#define D6_pin 6
#define D7_pin 7
LiquidCrystal_I2C lcd(0x27, En_pin,Rw_pin,Rs_pin,D4_pin,D5_pin,D6_pin,D7_pin);
void loop() <
int sensorValue=analogRead(analogInput);
float voltage=sensorValue*(5.0/1023.0);
screen(String(resistance(voltage)));
delay(3000);
>
int resistance(float vout) <
return R1*(1/(vin/vout-1));
>
void screen(String text) <
//Define the LCD as 16 column by 2 rows
lcd.begin (16,2);
//Switch on the backlight
lcd.setBacklightPin(BACKLIGHT_PIN,POSITIVE);
lcd.setBacklight(HIGH);
//goto first column (column 0) and first line (Line 0)
lcd.setCursor(0,0);
//Print at cursor Location
lcd.print(«Resistor value is: «);
//goto second column and first line
lcd.setCursor(0,1);
lcd.print(text);
lcd.print(» ohm»);
Небольшое, но важное примечание. В списке деталей и на схеме автор рекомендует применить дисплей на 2 строки по 16 знаков (1602), а сам берёт на 4 строки по 20 знаков (2004). И в коде первую строку на дисплее пишет такую, что в 16 знаков она не влезет. Если будете применять более распространённый дисплей 1602, вам придётся уменьшить длину этой строки.
На следующих фотографиях прибор показан в действии:
Омметр работает точно, когда сопротивления резисторов делителя близки. Если же измеряемое сопротивление слишком высоко, результат будет неточным:
Чтобы точно измерять сопротивления в широком диапазоне, можно установить переключатель фиксированных резисторов делителя, а второй галетой того же переключателя выбирать выводы Arduino для передачи скетчу данных о его положении. Конечно, это придётся учесть в скетче.
Но зачем нужен такой омметр, если в вашем мультиметре уже есть готовый? А вам не надоело его постоянно переключать: то вольты, то омы, то вольты, то омы? А с двумя приборами переключатель на мультиметре дёргать придётся реже.
Ещё у мультиметра фиксированный порог срабатывания звуковой сигнализации. Обычно 50 Ом. А тут можно к Arduino подключить пищалку, доработать скетч, и выставить такой порог, какой вам нужен. Или сделать несколько порогов с разными частотами.
Наконец, поскольку АЦП в Arduino несколько, можно попробовать сделать многоканальный омметр, одновременно считывающий, например, показания нескольких тензорезисторов, а также автоматически пересчитывающий омы в ньютоны.
Отлаженный на breadboard’е омметр следует разобрать, а затем собрать заново пайкой, после чего поместить в распаечную коробку либо самодельный корпус из фанеры, оргстекла, и т.п.
Не пропустите обновления! Подписывайтесь на нашу страницу в Instagram.
Так же у нас есть Telegram канал.
Digitrode
цифровая электроника вычислительная техника встраиваемые системы
Омметр на Arduino своими руками
Радиолюбителю зачастую необходимо знать сопротивление того или иного резистора или какого-либо участка цепи, но мультиметра под рукой может при этом не оказаться, зато неподалеку может быть Arduino, на основе которого можно самостоятельно собрать простой омметр для измерения сопротивлений.
Как измерить сопротивление с помощью Arduino
Сразу следует отметить, что помимо Arduino также нужен один резистор с известным номиналом. Схема очень проста и основана на делителе напряжения, в котором один резистор является известным, а сопротивление другого следует выяснить. Затем на Arduino мы запустим программу, которая будет вычислять сопротивление по закону Ома. Итак, схема омметра на основе Arduino и делителя напряжения выглядит следующим образом:
Код (скетч) для создания простого омметра на основе Aduino представлен ниже:
Введите значение вашего известного резистора (в омах) в строке 5 приведенного выше кода. В данном случае используется известный резистор со значением 1 КОм (1000 Ом). Поэтому строка 5 должна выглядит так: float R1 = 1000. Программа устанавливает аналоговый вывод A0 для считывания напряжения между известным резистором и неизвестным резистором. Вы можете использовать любой другой аналоговый вывод, но просто измените номер линии в строке 1 и соответствующим образом подключите схему. Когда вы откроете последовательный монитор, вы увидите значения сопротивления, выводимые один раз в секунду. Будут два значения: R2 и Vout. R2: сопротивление вашего неизвестного резистора в Ом. Vout: падение напряжения на вашем неизвестном резисторе.
Насколько же будут точными измерения с помощью Arduino? Ниже приведен экран последовательного порта при измерении резистора номиналом 200 Ом.
Значения довольно точны, ошибка составляет всего лишь 1.6%. Но это справедливо только для тех случаев, когда неизвестный резистор не на порядки отличается от известного, чтобы напряжение было не слишком маленьким, и его можно было считать с помощью АЦП Arduino. Но вот какие значения можно получить, если измерять сопротивление резистора номиналом 220 Ком при эталонном резисторе 1 КОм.
Так что для разных диапазонов измерения сопротивления нужны разные эталонные резисторы. В целом, данный проект позволяет сделать довольно простой и дешевый омметр на Arduino своими руками.
Измеритель сопротивления на Arduino
Данная статья является первой в серии статей про измерение с помощью Arduino параметров различных компонентов и физических величин, используемых в радиоэлектронике. Начнем с самого простого – с измерения сопротивления.
Определение сопротивления резистора по цветовому коду может вызывать некоторые трудности. Чтобы преодолеть эту сложность, мы собираемся с помощью Arduino построить простой измеритель сопротивления. Основным принципом данного проекта является использование схемы делителя напряжения. Значение неизвестного сопротивления будет отображаться на LCD дисплее 16×2. Данный проект также служит примером взаимодействия Arduino с символьным LCD дисплеем.
Измеритель сопротивления на Arduino
Необходимые компоненты
Принципиальная схема
Arduino Uno
Arduino Uno – это открытая микроконтроллерная плата на базе микроконтроллера ATmega328p. Она имеет 14 цифровых выводов (из которых 6 выводов можно использовать в качестве выходов ШИМ), 6 аналоговых входов, встроенные стабилизаторы напряжения и так далее. Arduino Uno имеет 32 КБ флэш-памяти, 2 КБ SRAM и 1 КБ EEPROM. Она работает с тактовой частотой 16 МГц. Для связи с другими устройствами Arduino Uno поддерживает последовательный интерфейс, I2C, SPI. В таблице ниже приведены технические характеристики Arduino Uno (более подробное техническое описание можно посмотреть здесь).
Микроконтроллер | ATmega328P |
Рабочее напряжение | 5 В |
Входное напряжение (рекомендуемое) | 7-12 В |
Цифровые входные/выходные выводы | 14 |
Аналоговые входные выводы | 6 |
Флэш-память | 32 Кбайт, из которых 0,5 Кбайт используются загрузчиком |
Оперативная память SRAM | 2 Кбайт |
Энергонезависимая память EEPROM | 1 Кбайт |
Тактовая частота | 16 МГц |
LCD дисплей 16×2
LCD дисплей 16×2 – это широко используемый во встраиваемых приложениях дисплей. Ниже приведено краткое описание выводов и работы LCD дисплея. В нем используется два важных регистра. Это регистр данных и регистр команд. Регистр команд используется для отправки таких команд как очистка дисплея, перемещение курсора и так далее. Регистр данных используется для отправки данных, которые должны быть отображены на LCD дисплее. Ниже приведена таблица описания выводов символьного LCD дисплея 16×2.
Номер вывода | Обозначение | Вход/выход | Назначение вывода |
---|---|---|---|
1 | Vss | – | Земля |
2 | Vdd | – | Питание +5В |
3 | Vee | – | Средний вывод потенциометра (для регулировки контрастности) |
4 | RS | вход | Выбор регистра (RS=0 для регистра команд, RS=1 для регистра данных) |
5 | RW | вход | Чтение/Запись (RW=0 для записи, RW=1 для чтения) |
6 | E | вход/выход | Включение |
7 | D0 | вход/выход | 8-разрядная шина данных (младший значащий бит) |
8 | D1 | вход/выход | 8-разрядная шина данных |
9 | D2 | вход/выход | 8-разрядная шина данных |
10 | D3 | вход/выход | 8-разрядная шина данных |
11 | D4 | вход/выход | 8-разрядная шина данных |
12 | D5 | вход/выход | 8-разрядная шина данных |
13 | D6 | вход/выход | 8-разрядная шина данных |
14 | D7 | вход/выход | 8-разрядная шина данных (старший значащий бит) |
15 | A | – | +4.2–5 В для подсветки |
16 | K | – | земля |
Концепция цветового кода резисторов
Чтобы определить сопротивление резистора, мы можем использовать следующую формулу:
\(R = AB \cdot 10^C \pm T\%\)
Таблица ниже показывает цветовой код резисторов.
Например, если цветовые коды на резисторе будут коричневый – зеленый – красный – серебряный, то номинал резистора рассчитывается следующим образом:
Первые три полосы соответствуют R = AB*10 C
Четвертая полоса указывает на точность ±10%
Таким образом, сопротивление реального резистора может быть где-то между 1350 Ом и 1650 Ом.
Расчет сопротивления с помощью измерителя сопротивления на Arduino
Работа измерителя сопротивлений довольно проста и может быть объяснена с помощью формулы для простого резисторного делителя напряжения, который показан на схеме измерителя сопротивления (рисунок выше).
Выходное напряжение делителя напряжения из резисторов R1 и R2 составляет
Из этой формулы мы можем вывести R2:
Примечание: значение известного резистора (R1) выбрано 3,3 кОм, но пользователи могут заменить его резистором с другим номиналом.
Измеритель сопротивления на Arduino в действии
Поэтому, если мы получим значение напряжения на неизвестном сопротивлении (Vвых), мы сможем легко рассчитать неизвестное сопротивление R2. В данном случае мы считывали значение напряжения Vвых, используя аналоговый вывод A0 (смотрите принципиальную схему), и преобразовывали эти цифровые значения в напряжение, как описано в приведенном ниже коде.
Если значение известного сопротивления намного больше или меньше неизвестного сопротивления, ошибка будет больше. Поэтому рекомендуется поддерживать значение известного сопротивления ближе к неизвестному сопротивлению.
Объяснение кода
Полный код программы для Arduino и демонстрационное видео к этому проекту приведены в конце статьи. Код разбит на небольшие важные фрагменты, которые объясняются ниже.
В данном фрагменте кода мы собираемся определить выводы, к которым на Arduino подключен LCD дисплей 16×2. Вывод RS LCD дисплея подключен к цифровому выводу 2 Arduino. Вывод включения LCD дисплея подключен к цифровому выводу 3 Arduino. Выводы данных (D4-D7) LCD дисплея подключены к цифровым выводам 4, 5, 6 и 7 Arduino.
В этом фрагменте кода мы определяем некоторые переменные, которые используются в программе.
В этом фрагменте кода мы собираемся инициализировать LCD дисплей 16×2. На LCD дисплей передаются команды таких настроек, как очистка дисплея, отображение и мигание курсора и так далее.
В этом фрагменте кода аналоговое напряжение на резисторе R2 (вывод A0) преобразуется в цифровое значение (от 0 до 1023) и сохраняется в переменной.
В этом фрагменте кода цифровое значение (от 0 до 1023) преобразуется в значение напряжения для будущих расчетов.
В следующем фрагменте кода с помощью процедуры, объясненной ранее, рассчитывается реальное значение неизвестного сопротивления.
В следующем фрагменте значение неизвестного сопротивления выводится на LCD дисплей.
Так легко с помощью Arduino мы рассчитали сопротивление неизвестного резистора.
Полный код программы
Видео
Создаем измеритель сопротивлений (Омметр) на базе Ардуино
Создаем измеритель сопротивлений (Омметр) для сортировки резисторов на базе Ардуино без использования цветовых кодов.
Идея проекта
Идея урока и нашего проекта по созданию омметра на Ардуино возникла после того как очередной проект завершился вот такой ситуацией:
Знакомая ситуация, неправда ли? Но я слишком ленив, чтобы проверять цветовой код на каждом резисторе, чтобы отсортировать их по величине сопротивления. И я настолько ленив, что даже использование мультиметра для меня уже слишком. Здесь и возникла идея и решение создать «ленивый омметр».
Мы будем полагаться на уравнение делителя напряжения, чтобы получить значение неизвестного резистора, включенного последовательно с резистором с известным значением. Эта простая техника имеет только один недостаток. Чем больше два резистора различаются, тем менее точными будут наши измерения. Чтобы преодолеть это явление, нам нужно будет использовать несколько резисторов и написать код, который позволит Arduino выбрать наиболее подходящий резистор для расчета неизвестного значения.
Комплектующие
Компоненты оборудования:
Программное обеспечение:
Ручные инструменты:
Схема соединения
Следуя всему вышесказанному, мы можем построить Омметр, следуя схеме на изображении ниже.
На фото ниже показано устройство в собранном на макете виде:
Если вы используете дисплей I2C, вы также можете следовать этой схеме. Arduino Nano использует вывод A4 для SDA и A5 для SCL.
Код проекта
Давайте теперь сосредоточимся на шаге программирования нашего омметра Ардуино. Код, который я использовал, можно скачать или скопировать ниже:
Для экрана OLED мы используем библиотеку Adafruit. Её нужно скачать через менеджер библиотек Arduino IDE (либо в Библиотеках на нашем сайте) и скопировать нужный код. Я использовал два растровых изображения, чтобы сделать считывание более интересным. Вы можете легко добавить свое растровое изображение.
В части омметра вам нужно будет понять, как всё работает, поскольку вы сможете изменить проект в зависимости от того, сколько резисторов вы используете в качестве эталонных значений.
Как только код доходит до void loop, Arduino проверяет напряжение на выводе A0. Из уравнения делителя напряжения:
Если R1 и R2 одинаковы, мы должны иметь V0, близкий к 2,5 В (т.е. 512 при нашем 10-битном чтении). Если значение далеко от этих результатов, то программа переходит к следующему значению и так далее, пока мы не получим нужный (ближайший) резистор. При выполнении условия «близкое сопротивление» значение будет напечатано на дисплее.
После выбора верного резистора неизвестное значение резистора (переменная Ru внутри кода) рассчитывается с использованием уравнения делителя напряжения.
Создание корпуса
Для реального применения нашего омметра Ардуино нам нужно будет создать какой-то корпус с выводами к которым мы сможем подключать неизвестные нам резисторы, а результат будет показан на экране. Аналогичный, сделанный мною корпус, можно легко распечатать на 3D-принтере, а все детали можно закрепить клеевым пистолетом. Конечно, потребовалась некоторая пайка «известных» резисторов, чтобы всё уместилось в небольшом объеме.
Осталось одно: вставить резистор неизвестного сопротивления в небольшие отверстия и наконец-то отсортировать кучу неизвестных резисторов.
Digitrode
цифровая электроника вычислительная техника встраиваемые системы
Миллиомметр на Arduino своими руками
Устройство измерения малых сопротивлений своими руками
Миллиомметр – это устройство, которое можно использовать для определения номиналов малых резисторов, сопротивления дорожек на печатной плате и для обнаружения короткого замыкания на печатной плате.
В Интернете есть много схем миллиомметров и схем измерителей низкого сопротивления, но сегодня мы будем использовать Arduino и популярную ИС линейного стабилизатора LM317, чтобы сделать очень простой измеритель низкого сопротивления, который не только надежен, но и дает точное измерение. Он также отобразит информацию на OLED-дисплее, и в конце мы проведем тест нашей схемы. Согласно нашим тестам, эта схема не только точна, но и имеет приличный диапазон. Нам удалось довольно точно измерить сопротивления в диапазоне 0,05–22 Ом. Итак, без лишних слов, приступим.
Как было сказано выше, миллиомметр – это устройство, которое используется для измерения низкого сопротивления, и если вы спрашиваете, почему так важно измерять низкое сопротивление, позвольте сказать вам, что его можно использовать во многих различных типах приложений, кроме измерения сопротивления. Пример может быть таким: предположим, у вас есть печатная плата, которая показывает короткое замыкание в силовой части, в большинстве случаев проблема может быть в плохом конденсаторе. Если у вас есть измеритель низкого сопротивления, вы можете проверить различные части вашей печатной платы, чтобы определить конкретную область, где сопротивление является самым низким, а затем вы можете начать отладку оттуда.
Наш миллиомметр работает по принципу закона Ома. принцип работы и схема очень просты, как вы уже знаете из названия, мы собираемся использовать Arduino для обработки текущей информации, но Arduino не умеет измерять ток, он знает только, как измерять напряжение, чтобы преобразовать значение тока в значение напряжения, мы будем использовать источник постоянного тока в сочетании с законом Ома, и мы будем использовать популярный стабилизатор LM317 для источника постоянного тока. Для создания этого проекта вам понадобится несколько компонентов, так как они очень распространенные, вы можете найти их все в своем местном магазине электроники.
Полная принципиальная схема измерителя низкого сопротивления на основе Arduino показана далее.
Схема подключения и принцип работы этой схемы очень просты, как вы можете видеть на приведенной выше схеме, у нас есть Arduino Nano, который отвечает за сбор, расчет и обработку данных. У нас есть OLED-дисплей, который показывает рассчитанное значение сопротивления. И, наконец, мы используем LM317T, который является источником постоянного тока. Имея источник постоянного тока и закон Ома, мы можем довольно легко вычислить значение сопротивления. На схеме вы можете увидеть формулу, которая используется для расчета предельного тока для ИС стабилизатора LM317. Как вы также можете видеть на схеме, мы использовали резистор 10 Ом со схемой для расчета постоянного тока 0,125 А или 125 мА. Теперь, когда у нас есть текущее значение, нам просто нужно разделить его на напряжение, чтобы получить сопротивление V = IR, поэтому R = V/I, и мы получим сопротивление.
Код программы для реализации миллиомметра на основе Arduino приведен далее.
Для проверки этой схемы используется следующая установка. Она выполнена на макетной плате только для целей тестирования, и настоятельно рекомендуется реализовывать эту схему на подходящей печатной плате.
Как вы можете видеть на картинке, мы сделали схему на макетной плате, поскольку это была тестовая схема, и это оказалось плохой идеей, потому что контактное сопротивление и импеданс серьезно сказывались на схеме. Вот почему в последний момент мы решили припаять некоторые провода прямо на печатной плате, а также припаяли сопротивление 10 Ом и провод зажима типа «крокодил» непосредственно на саму микросхему LM317.
Как только мы закончили с этим, мы измерили некоторые сопротивления этим измерителем и наблюдали за результатами, и результаты были довольно хорошими. Как вы можете видеть на изображении выше, значение очень точно соответствует реальности.