- Необхідні компоненти:
- Кругова діаграма:
- Arduino Uno:
- РК-дисплей 16x2:
- Концепція колірного коду опору:
- Розрахунок опору за допомогою вимірювача Ом Arduino:
- Пояснення коду:
Нам важко читати кольорові коди на резисторах, щоб знайти його опір. Для того, щоб подолати труднощі пошуку значення опору, ми збираємося створити простий вимірювач Ом за допомогою Arduino. Основним принципом цього проекту є мережа дільника напруги. Значення невідомого опору відображається на РК-дисплеї 16 * 2. Цей проект також служить 16 * 2 РК-дисплеєм для взаємодії з Arduino.
Необхідні компоненти:
- Arduino Uno
- 16 * 2 РК-дисплей
- Потенціометр (1 кіло Ом)
- Резистори
- Макет
- Провід перемички
Кругова діаграма:
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-12 В (рекомендується) |
Цифрові штифти вводу-виводу | 14 |
Аналогові шпильки | 6 |
Флеш-пам'ять | 32 КБ |
SRAM | 2 КБ |
EEPROM | 1 КБ |
Тактова частота |
16 МГц |
РК-дисплей 16x2:
16 * 2 РК - широко використовуваний дисплей для вбудованих програм. Ось коротке пояснення щодо контактів та роботи РК-дисплея 16 * 2. Усередині РК є два дуже важливі регістри. Це регістр даних та регістр команд. Реєстр команд використовується для надсилання таких команд, як чітке відображення, курсор вдома тощо, регістр даних використовується для надсилання даних, які мають відображатися на РК-дисплеї 16 * 2. Нижче в таблиці наведено опис контактів 16 * 2 рідкокристалічних дисплеїв.
PIN-код |
Символ |
I / O |
Опис |
1 |
Vss |
- |
Земля |
2 |
Vdd |
- |
+ 5В живлення |
3 |
Ві |
- |
Блок живлення для контролю контрасту |
4 |
RS |
Я |
RS = 0 для реєстру команд, RS = 1 для реєстру даних |
5 |
RW |
Я |
R / W = 0 для запису, R / W = 1 для читання |
6 |
Е |
I / O |
Увімкнути |
7 |
D0 |
I / O |
8-бітна шина даних (LSB) |
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-бітна шина даних (MSB) |
15 |
A |
- |
+ 5 В для підсвічування |
16 |
К |
- |
Земля |
Концепція колірного коду опору:
Щоб визначити значення опору, ми можемо скористатися наведеною нижче формулою.
R = {(AB * 10 c) Ω ± T%}
Де
A = Значення кольору в першій смузі.
B = значення кольору у другій смузі.
C = значення кольору в третій смузі.
T = значення кольору в четвертій смузі.
У таблиці нижче наведено кольоровий код резисторів.
Колір |
Числове значення кольору |
Коефіцієнт множення (10 с) |
Значення допуску (Т) |
Чорний |
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 = напруга, що виробляється на 5 В висновку 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; // напруга на штифті 5 В плаваючого Arduino Vout = 0; // напруга на штифті A0 поплавця arduino R1 = 3300; // значення відомого опору float R2 = 0; // значення невідомого опору
У цій частині коду ми збираємося ініціалізувати 16 * 2 рідкокристалічний дисплей. Команди даються на 16 * 2 рідкокристалічний дисплей для різних налаштувань, таких як очищення екрана, відображення на миганні курсора тощо
lcd.begin (16,2);
У цій частині коду аналогова напруга на резисторі R2 (контакт A0) перетворюється в цифрове значення (від 0 до 1023) і зберігається у змінній.
a2d_data = analogRead (A0);
У цій частині коду цифрове значення (від 0 до 1023) перетворюється у напругу для подальших розрахунків.
буфер = 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