»
Добавить статью

Измерение сопротивления с помощью Arduino

2020-03-21 в 07:26

Давным-давно, когда только появились электронные калькуляторы, реакция пользователей на них была различной. Одни утверждали, что пока новинка значительно дороже логарфимической линейки (а это тогда было так), они даже и думать не будут о её приобретении. Другие - приобретали, и тут же начинали находить для устройства какие-нибудь новые применения, кроме математических расчётов. Самой простой конструкцией был счётчик импульсов, причём стоило отключить добавленный снаружи геркон - и калькулятор снова становился самим собой. Потом придумали омметр. Работал он так: частота генератора зависела от сопротивления внешнего резистора, второй же генератор вырабатывал сверхдлинные прямоугольные импульсы неизменной частоты. Калькулятор считал периоды первого генератора лишь тогда, когда на выходе второго была единица. Чем больше частота первого генератора, тем больше периодов первого сосчитает калькулятор за один полупериод второго. Затем оба генератора выключали, результат по специальной формуле пересчитывали на том же калькуляторе, и получали сопротивление резистора.

Но был ещё такой редко встречающийся калькулятор "Электроника МК-64", оборудованный АЦП. Одноканальным, но самым настоящим. Вот он позволял сделать омметр безо всяких генераторов. Калькулятор мог ещё и программы выполнять, почти как современный микроконтроллер, и делать пересчёт автоматически. А это уже, считай, прямопоказывающий омметр, только довольно дорогой, а программу при каждом включении надо набирать заново.

В наши дни Arduino - это уже и не один, а несколько АЦП, и возможность выполнения программ значительно большей сложности, не теряющихся после выключения питания, и цена более доступная. Почему бы не построить омметр на этой платформе, задействовав из нескольких АЦП всего один?

Автор сайта Arduino Project Hub под ником xristos_xatz выложил свой проект омметра на Arduino по адресу https://create.arduino.cc/project....-9af726 под лицензией LGPL.

В основе конструкции лежит простейший делитель напряжения на двух резисторах. Нижний резистор - тот, сопротивление которого нужно измерить, верхний - фиксированный, встроенный в омметр.

Далее идёт огромная, страшная, формула. Матан любите? Автор тоже, вот он её и упростил, и даже показал, как:

А затем вывел способ вычисления сопротивления нижнего резистора, если известно сопротивление верхнего, а также напряжение питания делителя и напряжение в его средней точке:

Теория кончилась. Началась практика. Состоит она из трёх частей. Первая - сборка схемы:

схема омметра на arduino

Та же схема в формате Fritzing лежит по адресу: https://hacksterio.s3.amazonaws.com/uploads....hom.fzz

Вторая часть практики - заливка скетча:

Код
/*
The program reads the analog values of A0. These values are in the range of 0-1023.  
*/

#include <LiquidCrystal_I2C.h>
#include <LCD.h>

#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 setup() {
   
  Serial.begin(9600);  
   
}

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 подключить пищалку, доработать скетч, и выставить такой порог, какой вам нужен. Или сделать несколько порогов с разными частотами.

А если вы работаете на предприятии, выпускающем резисторы, и ваша задача - сортировать их по точности: 1, 5, 10, 20%? Тогда можно сделать такой скетч, чтобы можно было с клавиатуры номинал задать, а потом дисплей будет показывать отклонение от него в процентах.

Наконец, поскольку АЦП в Arduino несколько, можно попробовать сделать многоканальный омметр, одновременно считывающий, например, показания нескольких тензорезисторов, а также автоматически пересчитывающий омы в ньютоны.

Отлаженный на breadboard'е омметр следует разобрать, а затем собрать заново пайкой, после чего поместить в распаечную коробку либо самодельный корпус из фанеры, оргстекла, и т.п.


Не пропустите обновления! Подписывайтесь на нашу группу Вконтакте и страницу в Twitter!
Так же у нас есть Telegram канал.
Вам понравился наш материал? Поделитесь с друзьями!

Оценка статьи: 5.0 из 5. Уже оценило 1 читатель
Автор: tormozedison
Источник: https://create.arduino.cc/projecthub/xristos_xatz/ohm-meter-with-arduino-uno-9af726


Вам может быть это интересно

Всего комментариев: 0
Добавить комментарий
Все смайлы
Сейчас читают