Измеритель сопротивления на Arduino. Создаем измеритель сопротивлений (Омметр) на базе Ардуино

Схема омметра на базе мультиметра и на базе платы Arduino

Для измерения такой электротехнической величины, как сопротивление используется измерительный прибор называемый Омметр. Приборы, измеряющие только одно сопротивление, в радиолюбительской практике используются достаточно редко. Основная масса пользуется типовым мультиметров в режиме измерения сопротивления. В рамках данной темы рассмотрим простую схему Омметра из журнала Радио и еще более простую на плате Arduino.

Измеритель сопротивления на Arduino. Создаем измеритель сопротивлений (Омметр) на базе АрдуиноИзмеритель сопротивления на Arduino. Создаем измеритель сопротивлений (Омметр) на базе Ардуино

С помощью омметра можно проверить полностью или частично исправность большинства радиокомпонентов, таких как катушки индуктивности, резисторы, диоды, трансформаторы, плавкие предохранители.

С помощью омметра можно даже проверить конденсаторы на наличие электрического пробоя обкладок, узнать о наличии обрыва или пробой p-n перехода транзистора или другого полупроводника, оценить целостность соединений и дорожек на печатной плате.

На принципиальных схемах это измерительное устройство встречается не часто, но имеет свое условно графическое обозначение.

Как видем на схеме омметр изображен в виде кружка с двумя выводами, которые в радиолюбительской практике являются измерительными выводами. Внутри кружка изображается греческий символ “омега”, говорящий2 о том, что в данной схеме прибор измеряет сопротивление.

В когда-то популярном журнале “Радио” была опубликована схема простого омметра, которым можно измерять сопротивление различных элементов в диапазоне от нескольких омов до пары мегаом.

Амперметр подсоединен к измерительной цепи, составленной из резисторов R1, R2, батарейки, выключател и гнезд коммутации Х1-ХЗ, к которым подключают проверяемые радиоэлементы.

Когда контакты SA1 разомкнуты, измеряемый компонент, например резисторы, подсоединяют к гнездам Х2 и Х3. Но предварительно их замыкают и устанавливают стрелку амперметра переменным резистором R1 на конечное деление шкалы – условный нуль отсчета. После размыкания Х2 и Х3 к ним подключают исследуемый резистор. Это первый поддиапазон прибора, на котором схема омметра измеряет сопротивления от 0,9 кОм до 2 МОм. Чем больше номинал резистора, тем меньший ток протекает через амперметр и меньше отклонение его стрелки. Установив SA1 в положение замкнутых контактов, устанавливают стрелку на нуль отсчета, после чего подключают резистор к Х1, Х2 второго поддиапазона. Теперь проверяемое в схеме омметра сопротивление шунтируется микроамперметром, стрелка его отклонится на гораздо меньший угол при меньшем сопротивлении резистора. Пределы измерения в этом режиме – 9 Ом – 22 кОм.

В мультиметрах при измерении сопротивления в режиме Омметра необходимо выбрать секцию с обозначением греческим символом “Омега” при помощи ручного переключателя режимов работы. Для измерения сопротивления схемы необходимо ориентировочно прикинуть сопротивление измеряемой цепи и выбрать нужный предел измерения. У омметров в серии DT-83x, M83x имеется 5 диапазонов измерения: 200 (до 200 Ом), 2k или 2000 (до 2000 Ом), 20k (до 20.000 Ом), 200k (до 200.000 Ом), 2М либо 2000k (до 2.000.000 Ом).

Например, имется неизвестный резистор, его номинал ориентировочно составляет от 1 килоОма до 10 килоОм. Выбираем предел измерения, который выше наибольшего предполагаемого номинала. Для цифрового мультиметра M830 таким пределом будет 20k. Если же номинал резистора окажется больше, то на экране зафиксируется единичка. В этом случае необходимо переключить ручной переключатель на диапазон выше и провести повторный замер.

В радиолюбительской практике часто приходиться измерять номинал резисторов омметром. При этом щупы необходимо соединить с выводами радиокомпонента, номинал которого предстоит узнать. В этом примере никогда не забывайте о том, что нельзя касаться руками токоведущих частей щупов и выводов радио компонента, т.к если удерживать руками щупы и выводы, то в итоге будет измерено сопротивление резистора (R1) и сопротивления Вашего тела (R2). И итоговый результат будет составлять общее от двух параллельно соединенных резисторов, Смотри схему.

При ремонте различных электронных устройств и бытовой техники часто необходимо проверить сопротивление радиокомпонентов, например, резистора, впаянного в схему. В этом случае нужно выпаять хотя бы один вывод элемента, и уже только после этого осуществлять измерение сопротивления омметром.

Т.к впаянный в схему радиоэлемент связана с другими компонентами схемы, и общее измеряемое сопротивление будет не той величиной которая нам необходима. Для правильного измерения требуется обеспечить условия, при которых измерительная цепь состоит только из иомметра, и измеряемого элемента. На принципиальной схеме ниже это показано как цепь состоящая из резистора (R1) и омметра (PR1).

При проверке в режиме омметра многовыводных радиокомпонентов лучше их полностью выпаять. Это позволит исключить лишнии ошибки и повысит точность измерения.

Сразу скажу, что кроме платы Arduino потребуется один резистор с заранее известным номиналом. Схема омметра очень проста и основана на принципе работы делителя напряжения, в котором один резистор является известным, а номинал другого следует определить. Затем на схеме Arduino мы запустим программу, которая будет вычислять сопротивление в соответствии с законом Ома. Итак, схема простого омметра на базе Arduino и делителя напряжения выглядит так:

Код для создания простой схемы омметра на основе Ардуино вы можете посмотреть по ссылке выше, там же вы найдете сохраненки с результатами измерений.

Значение известного резистора (в омах) нужно ввести в пятой строке программного кода. В данном примере используется резистор на 1000 Ом. Программа устанавливает аналоговый вывод A0 для считывания напряжения между известным сопротивлением и неизвестным. Можно задействовать любой другой аналоговый вывод, но тогда следует переподключить и схему омметра. Открыв последовательный монитор, вы увидите значения сопротивления, выводимые один раз в секунду. Вы увидете два значения: R2 и Vout. R2: сопротивление неизвестного резистора в Ом. Vout: падение напряжения на нем.

Учтите, что для разных диапазонов измерения сопротивления потребуются различные эталонные резисторы. В целом, данный проект позволяет собрать своими руками простую схему омметра на Arduino.

Необходимые компоненты

  • плата Arduino Uno;
  • LCD дисплей 16×2;
  • потенциометр 1 кОм;
  • резисторы;
  • макетная плата;
  • перемычки.

Код проекта

Давайте теперь сосредоточимся на шаге программирования нашего омметра Ардуино. Код, который я использовал, можно скачать или скопировать ниже:

Скачать arduino-ommetr.zip #include #include #include #include #define SCREEN_WIDTH 128 // OLED display width, in pixels #define SCREEN_HEIGHT 64 // OLED display height, in pixels // Declaration for an SSD1306 display connected to I2C (SDA, SCL pins) #define OLED_RESET 4 // Reset pin # (or -1 if sharing Arduino reset pin) Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET); const unsigned char myLOGO [] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xf9, 0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0xff, 0xff, 0x00, 0x7f, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xff, 0xe0, 0x00, 0x3f, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xfc, 0x00, 0x00, 0x0f, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xe0, 0x00, 0x00, 0x03, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xfe, 0x00, 0x00, 0x01, 0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0xe0, 0x00, 0x00, 0x7f, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xfe, 0x00, 0x00, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0xe0, 0x01, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xf8, 0x01, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xfc, 0x00, 0xff, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xfc, 0x00, 0x3f, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfc, 0x00, 0x0f, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfc, 0x00, 0x01, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xc0, 0x00, 0x7f, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xfc, 0x00, 0x0f, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xff, 0xc0, 0x07, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xfc, 0x07, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xfe, 0x07, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xfe, 0x07, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xfe, 0x03, 0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xfe, 0x00, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xff, 0xe0, 0x3f, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xfe, 0x0f, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0xe7, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xff, 0xff, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xff, 0xff, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xff, 0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0xff, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; const unsigned char myBitmap [] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x60, 0x00, 0x00, 0x01, 0xf8, 0x18, 0x00, 0x00, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x07, 0x80, 0x18, 0x00, 0x00, 0x03, 0xc0, 0x06, 0x00, 0x00, 0x00, 0x01, 0xf8, 0x60, 0x00, 0x00, 0x00, 0xf8, 0x0c, 0x00, 0x00, 0x00, 0x1f, 0x07, 0x00, 0x00, 0x00, 0x0f, 0x80, 0x18, 0x00, 0x00, 0x00, 0x0f, 0x03, 0x80, 0x00, 0x00, 0x07, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x7c, 0x1c, 0x00, 0x00, 0x00, 0x03, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0xf0, 0x38, 0x00, 0x00, 0x00, 0x1e, 0x03, 0x80, 0x00, 0x00, 0x00, 0x3c, 0x60, 0x00, 0x00, 0x00, 0x0e, 0x38, 0x00, 0x00, 0x00, 0x03, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0x0f, 0x9c, 0x00, 0x00, 0x00, 0x07, 0xc6, 0x00, 0x00, 0x00, 0x00, 0x38, 0x60, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x80, 0x00, 0x00, 0x00, 0x3f, 0xc0, 0x00, 0x00, 0x00, 0x07, 0x9c, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; int R1 = 100; int R2 = 1000; int R3 = 10000; long R4 = 100000; long R5 = 1000000; long Rn; int D2 = 2; int D3 = 3; int D4 = 4; int D5 = 5; int D6 = 6; float raw = 0; float Vout = 0; float Ru = 0; int Analogohm = A0; void setup() { Serial.begin(9600); if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { Serial.println(F(“SSD1306 allocation failed”)); for(;;); } display.clearDisplay(); display.drawBitmap(0,0, myLOGO, 128, 64, WHITE); display.display(); delay(2000); } void loop() { pinMode(D2, OUTPUT); pinMode(D3, INPUT); pinMode(D4, INPUT); pinMode(D5, INPUT); pinMode(D6, INPUT); digitalWrite(D2, HIGH); raw = analogRead(Analogohm); Serial.println(raw); Serial.println(“ref 1M”); Rn = R5; if (raw < 350 || raw > 800){ digitalWrite(D2, LOW); pinMode(D2, INPUT); pinMode(D3, OUTPUT); digitalWrite(D3, HIGH); raw = analogRead(Analogohm); Serial.println(raw); Serial.println(“ref 100k”); Rn = R4; if (raw < 350 || raw > 800){ digitalWrite(D3, LOW); pinMode(D3, INPUT); pinMode(D4, OUTPUT); digitalWrite(D4, HIGH); raw = analogRead(Analogohm); Serial.println(raw); Serial.println(“ref 10k”); Rn = R3; if (raw < 350 || raw > 800){ digitalWrite(D4, LOW); pinMode(D4, INPUT); pinMode(D5, OUTPUT); digitalWrite(D5, HIGH); raw = analogRead(Analogohm); Serial.println(raw); Serial.println(“ref 1000”); Rn = R2; if (raw < 350 || raw > 800){ digitalWrite(D5, LOW); pinMode(D5, INPUT); pinMode(D6, OUTPUT); digitalWrite(D6, HIGH); raw = analogRead(Analogohm); Serial.println(raw); Serial.println(“ref 100”); Rn = R1; } } } } Vout = 5*(raw/1024); Ru = (Rn*Vout)/(5-Vout); if (Ru < 10 || Ru < 70) { Ru = 10 *round(Ru/10); } else if (Ru < 100 || Ru < 700){ Ru = 100 *round(Ru/100); } else if (Ru < 1000 || Ru < 7000){ Ru = 1000 *round(Ru/1000); } else if (Ru < 10000 || Ru < 70000){ Ru = 10000 *round(Ru/10000); } else if (Ru < 100000 || Ru < 700000){ Ru = 100000 *round(Ru/100000); } else if (Ru < 1000000 || Ru < 7000000){ Ru = 1000000 *round(Ru/1000000); } Resistance(Ru); delay(1000); } void Resistance(long Ru) { display.clearDisplay(); display.setTextSize(1); display.setTextColor(WHITE); display.setCursor(0,0); display.println(F(“Hey there, “)); display.println(F(“the Resistor value is”)); display.setCursor(20,25); display.setTextSize(2); display.setTextColor(WHITE); display.print(Ru); display.print(F(” Ohm”)); display.drawBitmap(0,0, myBitmap, 128, 64, WHITE); display.display(); delay(2000); }

Будет интересно➡  Как правильно подключить УЗО

Для экрана OLED мы используем библиотеку Adafruit. Её нужно скачать через менеджер библиотек Arduino IDE (либо в Библиотеках на нашем сайте) и скопировать нужный код. Я использовал два растровых изображения, чтобы сделать считывание более интересным. Вы можете легко добавить свое растровое изображение.

В части омметра вам нужно будет понять, как всё работает, поскольку вы сможете изменить проект в зависимости от того, сколько резисторов вы используете в качестве эталонных значений.

Как только код доходит до void loop, Arduino проверяет напряжение на выводе A0. Из уравнения делителя напряжения:

V0 = Vi * R2 / ( R1 + R2 )

Если R1 и R2 одинаковы, мы должны иметь V0, близкий к 2,5 В (т.е. 512 при нашем 10-битном чтении). Если значение далеко от этих результатов, то программа переходит к следующему значению и так далее, пока мы не получим нужный (ближайший) резистор. При выполнении условия «близкое сопротивление» значение будет напечатано на дисплее.

Примечание. В каждом операторе IF нам нужно переопределить pinMode каждого цифрового вывода, так как если вы сохраните его как выход, он будет вести себя как вывод с низким импедансом и испортит наши измерения на выводе A0.

После выбора верного резистора неизвестное значение резистора (переменная Ru внутри кода) рассчитывается с использованием уравнения делителя напряжения.

Примечание. Для этого устройства я использовал всего 5 резисторов, но, если хотите, у вас может быть гораздо больше значений для каждого цифрового контакта на плате.

Объяснение кода

Полный код программы для Arduino и демонстрационное видео к этому проекту приведены в конце статьи. Код разбит на небольшие важные фрагменты, которые объясняются ниже.

В данном фрагменте кода мы собираемся определить выводы, к которым на Arduino подключен LCD дисплей 16×2. Вывод RS LCD дисплея подключен к цифровому выводу 2 Arduino. Вывод включения LCD дисплея подключен к цифровому выводу 3 Arduino. Выводы данных (D4-D7) LCD дисплея подключены к цифровым выводам 4, 5, 6 и 7 Arduino.

Будет интересно➡  Как выбрать узип для частного дома

LiquidCrystal lcd(2,3,4,5,6,7); //rs,e,d4,d5,d6,d7

В этом фрагменте кода мы определяем некоторые переменные, которые используются в программе.

  • Vin – это напряжение, обеспечиваемое на выводе 5V Arduino;
  • Vout – это напряжение на резисторе R2 относительно земли;
  • R1 – значение известного сопротивления;
  • R2 – значение неизвестного сопротивления.

int Vin=5; // напряжение на выводе 5V arduino float Vout=0; // напряжение на выводе A0 arduino float R1=3300; // значение известного сопротивления float R2=0; // значение неизвестного сопротивления

В этом фрагменте кода мы собираемся инициализировать LCD дисплей 16×2. На LCD дисплей передаются команды таких настроек, как очистка дисплея, отображение и мигание курсора и так далее.

lcd.begin(16,2);

В этом фрагменте кода аналоговое напряжение на резисторе R2 (вывод A0) преобразуется в цифровое значение (от 0 до 1023) и сохраняется в переменной.

a2d_data = analogRead(A0);

В этом фрагменте кода цифровое значение (от 0 до 1023) преобразуется в значение напряжения для будущих расчетов.

buffer=a2d_data*Vin; Vout=(buffer)/1024.0;

В следующем фрагменте кода с помощью процедуры, объясненной ранее, рассчитывается реальное значение неизвестного сопротивления.

buffer=Vout/(Vin-Vout); R2=R1*buffer;

В следующем фрагменте значение неизвестного сопротивления выводится на LCD дисплей.

lcd.setCursor(4,0); lcd.print(“ohm meter”); lcd.setCursor(0,1); lcd.print(“R (ohm) = “); lcd.print(R2);

Так легко с помощью Arduino мы рассчитали сопротивление неизвестного резистора.

Создание корпуса

Для реального применения нашего омметра Ардуино нам нужно будет создать какой-то корпус с выводами к которым мы сможем подключать неизвестные нам резисторы, а результат будет показан на экране. Аналогичный, сделанный мною корпус, можно легко распечатать на 3D-принтере, а все детали можно закрепить клеевым пистолетом. Конечно, потребовалась некоторая пайка “известных” резисторов, чтобы всё уместилось в небольшом объеме.

Осталось одно: вставить резистор неизвестного сопротивления в небольшие отверстия и наконец-то отсортировать кучу неизвестных резисторов.

Будет интересно➡  Монтаж кабель-канала своими руками
Предыдущая
РазноеДля чего и в каких случаях измеряют сопротивление изоляции. Измерение сопротивления изоляции мегаомметром
Следующая
РазноеСистемы заземления TN-C, TN-S, TN-C-S, TT, IT со схемами (ПУЭ). Системы заземлений - преимущества и недостатки
Понравилась статья? Поделиться с друзьями:
Electroinfo.net  онлайн журнал
Мы используем cookie-файлы для наилучшего представления нашего сайта. Продолжая использовать этот сайт, вы соглашаетесь с использованием cookie-файлов.
Принять