Автор Instructables под ником CreativeStuff рассказывает, как реализовать на Arduino простейший омметр. Для этого он берёт макетную плату типа breadboard:

Собственно Arduino:

Дисплей на HD44780 (КБ1013ВГ6):

Перемычки «дюпон» или самодельные:

Переменный резистор на 10 кОм с напаянными тонкими жёсткими выводами (для регулировки констрастности изображения на дисплее):

Ничего не напоминает? Правильно, всё новое — хорошо забытое старое. Знатоки вспомнят, что это и где:

Постоянный резистор на 470 Ом:

И всё это соединяет по такой схеме:

Поскольку схемы, составленные в программе Fritzing, не очень информативны, мастер составляет расшифровку:

Вывод дисплея 1 — общий провод

Вывод дисплея 2 — плюс питания

Вывод дисплея 3 — подвижный контакт переменного резистора

Вывод дисплея 4 — вывод D12 Arduino

Вывод дисплея 5 — общий провод

Вывод дисплея 6 —вывод D11 Arduino

Выводы дисплея 7, 8, 9, 10 ни с чем не соединены

Вывод диспеля 11 — вывод D5 Arduino

Вывод дисплея 12 — вывод D4 Arduino

Вывод дисплея 13 — вывод D3 Arduino

Вывод дисплея 14 — вывод D2 Arduino

Вывод дисплея 15 — плюс питания

Вывод дисплея 16 — общий провод

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

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

#include <LiquidCrystal.h>

//LiquidCrystal(rs, sc, d4, d5, d6, d7)
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

const int analogPin = 0;

int analogval = 0;
int vin = 5;

float buff = 0;
float vout = 0;
float R1 = 0;
float R2 = 470;

void setup() {
lcd.begin(16, 2);
}

void loop() {

analogval = analogRead(analogPin);
if (analogval) {
buff = analogval * vin;
vout = (buff) / 1024.0;

if (vout > 0.9) {
buff = (vin / vout) — 1;
R1 = R2 * buff;
lcd.setCursor(0, 0);
lcd.print(" -Resistance-");
lcd.setCursor(0, 1);

if ((R1) > 999) {
lcd.print(" ");
lcd.print(R1 / 1000);
lcd.print("K ohm");
}
else {
lcd.print(" ");
lcd.print(round(R1));
lcd.print(" ohm");
}

delay(1000);
lcd.clear();

}
else {
lcd.setCursor(0, 0);
lcd.print("Insert resistor");
lcd.setCursor(0, 1);

}
}
}

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

R2 = Vout * R1 / (Vin – Vout),

выведенной из формулы:

Vout = Vin * R2 / (R1 + R2),

где R1 — образцовое сопротивление, R2 — измеряемое, Vin — напряжение питания, Vout — напряжение на средней точке делителя.

Остаётся удалить breadboard, выполнить все соединения пайкой и перенести самоделку в корпус. Но в таком виде она малопрактична, так как дублирует функцию омметра, имеющуюся в мультиметре. Переделав скетч и применив прецизионные источник питания и образцовый резистор, можно применить конструкцию, например, для сортировки резисторов по точности на их производстве. Чтобы при подключении резистора на экране дисплея сразу появлялась информация о том, к какой из пяти групп отнести компонент: 1, 2, 5, 10 или 20%.

Источник (Source)

Становитесь автором сайта, публикуйте собственные статьи, описания самоделок с оплатой за текст. Подробнее здесь.

Источник: usamodelkina.ru