Омметр (измеритель сопротивления) на Arduino Uno

В этой статье мы рассмотрим создание омметра (измерителя сопротивления) на основе платы Arduino Uno. Принцип действия нашего омметра будет основываться на использовании делителя напряжения. Измеренное значение сопротивления будет выводиться на экран ЖК дисплея 16х2.

Внешний вид омметра на Arduino Uno

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

Плата Arduino Uno
ЖК дисплей 16х2
Потенциометр 1 кОм
Резисторы
Макетная плата
Соединительные провода

Работа схемы

Схема омметра на основе платы Arduino Uno представлена на следующем рисунке.

Схема омметра на основе платы Arduino UnoВ составе используемого делителя напряжения у нас один известный резистор, а второй неизвестный – сопротивление которого мы будем измерять. Напряжение с выхода делителя напряжения подается на аналоговый вход A0 платы Arduino. ЖК дисплей подключен к плате Arduino в 4-битном режиме.

Плата 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-12V (рекомендовано)
Количество цифровых контактов ввода/вывода 14
Количество аналоговых контактов 6
Flash memory (память программ) 32 Кб
SRAM (оперативная память) 2 Кб
EEPROM (энергонезависимая память) 1 Кб
Рабочая частота микроконтроллера 16 МГц

ЖК дисплей 16×2

ЖК дисплей 16×2 является одним из самых распространённых дисплеев для приложений встраиваемой электроники. У этого дисплея есть 2 важных регистра – регистр команд и регистр данных. Регистр команд используется для передачи команд, таких, к примеру, как очистить экран, вернуть курсор в исходное положение и т.п. Регистр данных используется для передачи данных которые будут отображаться на экране дисплея. В следующей таблице представлено назначение контактов (распиновка) ЖК дисплея 16×2.

Контакт Символ I/O (ввод/вывод) Описание
1 Vss земля
2 Vdd +5V (питающее напряжение)
3 Vee питание для управления контрастностью
4 RS I RS=0 — регистр команд, RS=1 -регистр данных
5 RW I R/W=0 — запись , R/W=1 — чтение
6 E I/O Enable (доступен)
7 D0 I/O 8-битная шина данных
8 D1 I/O 8-битная шина данных
9 D2 I/O 8-битная шина данных
10 D3 I/O 8-битная шина данных
11 D4 I/O 8-битная шина данных
12 D5 I/O 8-битная шина данных
13 D6 I/O 8-битная шина данных
14 D7 I/O 8-битная шина данных
15 A +5V для подсветки дисплея
16 K земля

Основы цветовой маркировки резисторов

Для определения сопротивления резисторов используется следующая формула:

R= { (AB*10c)Ω ± T% }

где
A – значение цвета в первой полоске,
B – значение цвета во второй полоске,
C – значение цвета в третьей полоске,
T – значение цвета в четвертой полоске.

В следующей таблице представлены цветовые коды резисторов.

Цвет Числовое значение цвета Множитель (10c) Допуск
черный 0 100
коричневый 1 101 ± 1%
красный 2 102 ± 2%
оранжевый 3 103
желтый 4 104
зеленый 5 105
синий 6 106
фиолетовый 7 107
серый 8 108
белый 9 109
золотой 10-1 ± 5%
серебряный 10-2 ± 10%
нет полоски ± 20%

К примеру, если цветовые коды на резисторе Brown – Green – Red – Silver (коричневый – зеленый – красный – серебро), сопротивление резистора рассчитывается следующим образом:

Brown = 1
Green = 5
Red = 2
Silver = ± 10%

Исходя из приведенной формулы для расчета сопротивления резистора R = AB*10c получаем:

R = 15 * 10+2
R = 1500 Ω

Четвертая полоска показывает допуск резистора, в нашем случае это ± 10%.

10% of 1500 = 150
For + 10 percent, the value is 1500 + 150 = 1650Ω
For - 10 percent, the value is 1500 -150 = 1350Ω

То есть актуальное сопротивление данного резистора будет лежать в диапазоне от 1350 до 1650 Ом.

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

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

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

Vout = Vin * R2 / (R1 + R2 )

Из этой формулы мы можем выразить значение сопротивления R2:

R2 = Vout * R1 / (Vin – Vout)

где R1 – известный резистор,
R2 – неизвестный резистор,
Vin – напряжение на выходе 5V платы Arduino,
Vout – падение напряжения на резисторе R2 по отношению к земле.

Мы в нашем проекте выбрали значение сопротивления R1 равное 3,3 кОм, но вы можете выбрать другое значение этого сопротивления.

Тестирование работы омметра

То есть если мы будем знать падение напряжения на неизвестном резисторе (Vout), то мы можем сравнительно просто определить значение сопротивления неизвестного резистора R2. Мы будем считывать значение этого напряжения (Vout) с помощью аналогового контакта A0 платы Arduino и конвертировать значение с выхода АЦП (аналогового-цифрового преобразователя) данного контакта (0-1023) в цифровое значение напряжения.

Исходный код программы

Полный код программы приведен в конце статьи, здесь же сначала рассмотрим его наиболее важные фрагменты.

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

Затем в программе мы должны инициализировать необходимые нам переменные.

Далее в программе мы должны инициализировать наш ЖК дисплей.

Затем мы должны считать значение на выходе АЦП контакта A0.

Далее значение с выхода АЦП (оно в диапазоне от 0 до 1023) конвертируется в значение напряжения.

Плата Arduino Uno имеет АЦП на своих аналоговых контактах с разрешением 10 бит. Соответственно входное напряжение в диапазоне от 0 до 5 В преобразуется в значение на выходе АЦП от 0 до 1023. То есть если мы умножим значение с выхода АЦП на (5/1024), то мы получим цифровое значение входного напряжения. Более подробно об АЦП в Arduino можно прочитать в этой статье.

Далее в коде программе исходя из найденного значения напряжения мы рассчитываем значение сопротивления R2.

Далее найденное значение сопротивления резистора R2 выводится на экран ЖК дисплея.

Если вас заинтересовал данный проект, то вы можете следующие похожие проекты на нашем сайте:
цифровой вольтметр на Arduino;
цифровой амперметр на Arduino;
частотомер на Arduino;
измеритель емкости на Arduino.

Далее приведен полный код программы.

Видео, демонстрирующее работу омметра

(Проголосуй первым!)
Загрузка...
10 просмотров


Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *