- Необходимые компоненты:
- Принципиальная электрическая схема:
- Arduino Uno:
- ЖК-дисплей 16x2:
- Концепция цветового кода сопротивления:
- Расчет сопротивления с помощью измерителя сопротивления Arduino:
- Объяснение кода:
Нам сложно прочитать цветовую кодировку резисторов, чтобы определить их сопротивление. Чтобы преодолеть трудность нахождения значения сопротивления, мы собираемся построить простой измеритель сопротивления с использованием Arduino. Основным принципом этого проекта является сеть делителей напряжения. Значение неизвестного сопротивления отображается на ЖК-дисплее 16 * 2. Этот проект также служит ЖК-дисплеем 16 * 2, взаимодействующим с Arduino.
Необходимые компоненты:
- Ардуино Уно
- ЖК-дисплей 16 * 2
- Потенциометр (1 кОм)
- Резисторы
- Макетная плата
- Перемычки
Принципиальная электрическая схема:
Arduino Uno:
Arduino Uno - это плата микроконтроллера с открытым исходным кодом, основанная на микроконтроллере ATmega328p. Он имеет 14 цифровых контактов (из которых 6 контактов могут использоваться как выходы PWM), 6 аналоговых входов, встроенные регуляторы напряжения и т. Д. Arduino Uno имеет 32 КБ флэш-памяти, 2 КБ SRAM и 1 КБ EEPROM. Он работает на тактовой частоте 16 МГц. Arduino Uno поддерживает последовательную связь, I2C, SPI для связи с другими устройствами. В таблице ниже приведены технические характеристики Arduino Uno.
Микроконтроллер | ATmega328p |
Рабочее напряжение | 5В |
Входное напряжение | 7-12 В (рекомендуется) |
Контакты цифрового ввода / вывода | 14 |
Аналоговые контакты | 6 |
Флэш-память | 32 КБ |
SRAM | 2 КБ |
EEPROM | 1 КБ |
Тактовая частота |
16 МГц |
ЖК-дисплей 16x2:
ЖК-дисплей 16 * 2 широко используется для встраиваемых приложений. Вот краткое объяснение контактов и работы ЖК-дисплея 16 * 2. Внутри ЖК-дисплея есть два очень важных регистра. Это регистр данных и регистр команд. Регистр команд используется для отправки команд, таких как четкое отображение, курсор в исходном положении и т. Д., Регистр данных используется для отправки данных, которые должны отображаться на ЖК-дисплее 16 * 2. В таблице ниже показано описание контактов ЖК-дисплея 16 * 2.
Штырь |
Условное обозначение |
Ввод / вывод |
Описание |
1 |
Vss |
- |
Земля |
2 |
Vdd |
- |
+ 5В питание |
3 |
Ви |
- |
Блок питания для контроля контрастности |
4 |
RS |
я |
RS = 0 для регистра команд, RS = 1 для регистра данных |
5 |
RW |
я |
R / W = 0 для записи, R / W = 1 для чтения |
6 |
E |
Ввод / вывод |
включить |
7 |
D0 |
Ввод / вывод |
8-битная шина данных (LSB) |
8 |
D1 |
Ввод / вывод |
8-битная шина данных |
9 |
D2 |
Ввод / вывод |
8-битная шина данных |
10 |
D3 |
Ввод / вывод |
8-битная шина данных |
11 |
D4 |
Ввод / вывод |
8-битная шина данных |
12 |
D5 |
Ввод / вывод |
8-битная шина данных |
13 |
D6 |
Ввод / вывод |
8-битная шина данных |
14 |
D7 |
Ввод / вывод |
8-битная шина данных (MSB) |
15 |
А |
- |
+ 5В для подсветки |
16 |
K |
- |
Земля |
Концепция цветового кода сопротивления:
Чтобы определить значение сопротивления, мы можем использовать приведенную ниже формулу.
R = {(AB * 10 c) Ом ± T%}
где
A = значение цвета в первой полосе.
B = значение цвета во второй полосе.
C = значение цвета в третьей полосе.
T = значение цвета в четвертой полосе.
В таблице ниже показан цветовой код резисторов.
цвет |
Числовое значение цвета |
Коэффициент умножения (10 c) |
Значение допуска (Т) |
Черный |
0 |
10 0 |
- |
Коричневый |
1 |
10 1 |
± 1% |
Красный |
2 |
10 2 |
± 2% |
апельсин |
3 |
10 3 |
- |
Желтый |
4 |
10 4 |
- |
Зеленый |
5 |
10 5 |
- |
Синий |
6 |
10 6 |
- |
Виолетта |
7 |
10 7 |
- |
Серый |
8 |
10 8 |
- |
Белый |
9 |
10 9 |
- |
Золото |
- |
10 -1 |
± 5% |
Серебряный |
- |
10 -2 |
± 10% |
Нет группы |
- |
- |
± 20% |
Например, если цветовые коды Коричневый - Зеленый - Красный - Серебряный, значение сопротивления рассчитывается как, Коричневый = 1 Зеленый = 5 Красный = 2 Серебристый = ± 10%
Из первых трех полос R = AB * 10 c
R = 15 * 10 +2 R = 1500 Ом
Четвертая полоса указывает допуск ± 10%
10% от 1500 = 150 Для + 10 процентов значение 1500 + 150 = 1650 Ом Для - 10 процентов значение 1500 -150 = 1350 Ом.
Следовательно, фактическое значение сопротивления может быть в пределах от 1350 Ом до 1650 Ом.
Чтобы было удобнее, вот калькулятор цветового кода сопротивления, где вам нужно только ввести цвет колец на резисторе, и вы получите значение сопротивления.
Расчет сопротивления с помощью измерителя сопротивления Arduino:
Работа этого измерителя сопротивления очень проста и может быть объяснена с помощью простой схемы делителя напряжения, показанной ниже.
От сети делителя напряжения резисторов R1 и R2, 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 (см. Принципиальную схему) и преобразовали эти цифровые значения (0-1023) в напряжение, как описано в приведенном ниже коде.
Если значение известного сопротивления намного больше или меньше неизвестного сопротивления, ошибка будет больше. Поэтому рекомендуется держать известное значение сопротивления ближе к неизвестному сопротивлению.
Объяснение кода:
Полная Arduino программы и демо - видео для этого проекта дается в конце этого проекта. Код разбит на небольшие значимые фрагменты и объяснен ниже.
В этой части кода мы собираемся определить контакты, на которых ЖК-дисплей 16 * 2 подключен к Arduino. Вывод RS 16 * 2 ЖК-дисплея подключен к цифровому выводу 2 Arduino. Контакт включения 16 * 2 ЖК-дисплей подключен к цифровому контакту 3 Arduino. Выводы данных (D4-D7) ЖК-дисплея 16 * 2 подключены к цифровым выводам 4,5,6,7 Arduino.
ЖК-дисплей LiquidCrystal (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; // значение неизвестного сопротивления
В этой части кода мы собираемся инициализировать ЖК-дисплей 16 * 2. Команды подаются на ЖК-дисплей 16 * 2 для различных настроек, таких как очистка экрана, отображение при мигании курсора и т. Д.
lcd.begin (16,2);
В этой части кода аналоговое напряжение на резисторе R2 (вывод A0) преобразуется в цифровое значение (от 0 до 1023) и сохраняется в переменной.
a2d_data = analogRead (A0);
В этой части кода цифровое значение (от 0 до 1023) преобразуется в напряжение для дальнейших вычислений.
buffer = a2d_data * Vin; Vout = (буфер) /1024.0;
Arduino Uno АЦП является 10-битным разрешением (таким образом целые значения от 0 - 2 ^ 10 = 1024 значений). Это означает, что он преобразует входные напряжения от 0 до 5 вольт в целочисленные значения от 0 до 1023. Таким образом, если мы умножим входное anlogValue на (5/1024), мы получим цифровое значение входного напряжения. Узнайте здесь, как использовать ввод АЦП в Arduino.
В этой части кода фактическое значение неизвестного сопротивления вычисляется с использованием процедуры, описанной выше.
буфер = Vout / (Vin-Vout); R2 = R1 * буфер;
В этой части кода значение неизвестного сопротивления печатается на ЖК- дисплее размером 16 * 2.
lcd.setCursor (4,0); lcd.print («омметр»); lcd.setCursor (0,1); lcd.print ("R (ом) ="); lcd.print (R2);
Это мы можем легко рассчитать сопротивление неизвестного резистора с помощью Arduino. Также проверьте:
- Частотомер Arduino
- Измеритель емкости Arduino