У цьому посібнику ми представляємо концепцію ADC (аналого-цифрового перетворення) в ARDUINO UNO. Плата Arduino має шість каналів АЦП, як показано на малюнку нижче. Серед них будь-який один або всі з них можуть бути використані як входи для аналогової напруги. Arduino Uno АЦП має дозвіл 10 біт (так що цілі значення від (0- (2 ^ 10) 1023)). Це означає, що він буде відображати вхідні напруги від 0 до 5 вольт у цілі значення від 0 до 1023. Отже, для кожного (5/1024 = 4,9 мВ) на одиницю.
У всьому цьому ми збираємося підключити потенціометр або каструлю до каналу 'A0', і ми покажемо результат АЦП на простому дисплеї. Прості дисплеї - це дисплеї 16x1 та 16x2. Відображувач 16x1 матиме 16 символів і знаходиться в одному рядку. 16x2 матиме 32 символи в цілому 16 в 1- му рядку та ще 16 у 2- му рядку. Тут потрібно розуміти, що в кожному символі є 5x10 = 50 пікселів, тому для відображення одного символу всі 50 пікселів повинні працювати разом, але нам не потрібно турбуватися про це, оскільки в блоці дисплея є інший контролер (HD44780), який робить робота з управління пікселями (ви можете побачити це на РК-дисплеї, це чорне око ззаду).
Потрібні компоненти
Апаратне забезпечення: ARDUINO UNO, блок живлення (5 в), JHD_162ALCD (16x2LCD), конденсатор 100 мкФ, 100 кОм бачок або потенціометр, конденсатор 100 нФ.
Програмне забезпечення: Arduino IDE (Arduino nightly)
Принципова схема та пояснення
У РК-дисплеї 16x2 є 16 штифтів, якщо є підсвічування, якщо немає підсвічування, буде 14 штифтів. Можна підключити або залишити шпильки підсвічування. Тепер у 14 контактах є 8 контактів даних (7-14 або D0-D7), 2 контакти джерела живлення (1 & 2 або VSS & VDD або GND & + 5v), 3- й контакт для контролю контрасту (VEE - контролює, наскільки товстими повинні бути символи показано) та 3 керуючі штифти (RS & RW & E).
У ланцюзі ви можете помітити, що я взяв лише два керуючі штифти, контрастний біт і READ / WRITE не часто використовуються, тому їх можна закоротити на землю. Це дає РК-дисплею найвищий контраст і режим читання. Нам просто потрібно контролювати ENABLE та RS-шпильки, щоб відповідно надсилати символи та дані.
Підключення, які виконуються для РК-дисплея, наведені нижче:
PIN1 або VSS на землю
PIN2 або VDD або VCC до + 5 В потужності
PIN3 або VEE на землю (забезпечує максимальний контраст найкращий для початківця)
PIN4 або RS (Вибір реєстру) до PIN8 ARDUINO UNO
PIN5 або RW (читання / запис) на землю (переведення РК в режим читання полегшує зв'язок для користувача)
PIN6 або E (увімкнути) до PIN9 ARDUINO UNO
PIN11 або D4 до PIN10 ARDUINO UNO
PIN12 або D5 до PIN11 ARDUINO UNO
PIN13 або D6 до PIN12 ARDUINO UNO
PIN14 або D7 до PIN13 ARDUINO UNO
ARDUINO IDE дозволяє користувачеві використовувати РК-дисплей у 4-бітному режимі. Цей тип зв'язку дозволяє користувачеві зменшити використання виводу на ARDUINO, на відміну від інших, ARDUINO не потрібно програмувати окремо для використання в режимі 4 it, оскільки за замовчуванням ARDUINO налаштований для зв'язку в 4-бітному режимі. У схемі ви можете бачити, що ми використовували 4-бітний зв'язок (D4-D7).
Отже, завдяки простому спостереженню у верхній таблиці ми підключаємо 6 висновків РК-дисплея до контролера, в якому 4 висновки - це виводи даних та 2 висновки для управління.
На наведеному малюнку показана схема підключення АЦП ARDUINO UNO.
Працює
Для взаємодії РК-дисплея з ARDUINO UNO ми повинні знати кілька речей.
|
Перш за все, канали АЦП UNO мають стандартне опорне значення 5 В. Це означає, що ми можемо дати максимальну вхідну напругу 5 В для перетворення АЦП на будь-якому вхідному каналі. Оскільки деякі датчики забезпечують напругу від 0-2,5 В, при еталонному напрузі 5 В ми отримуємо меншу точність, тому ми маємо інструкцію, яка дозволяє нам змінювати це контрольне значення. Отже, для зміни опорного значення ми маємо (“analogReference ();”)
За замовчуванням ми отримуємо максимальну роздільну здатність АЦП на платі, яка становить 10 біт, цю роздільну здатність можна змінити за допомогою інструкції (“analogReadResolution (біти);”). Ця зміна дозволу може стати в нагоді в деяких випадках.
Тепер, якщо вищевказані умови встановлені за замовчуванням, ми можемо зчитувати значення з АЦП каналу '0', безпосередньо викликаючи функцію "analogRead (pin);", тут "pin" представляє pin, куди ми підключили аналоговий сигнал, в цьому випадку це буде бути “A0”. Значення з АЦП можна взяти у ціле число як “int ADCVALUE = analogRead (A0); ”, За цією інструкцією значення після ADC зберігається у цілому числі„ ADCVALUE ”.
ЗАРАЗ давайте поговоримо трохи про РК-дисплей 16x2. Спочатку нам потрібно увімкнути файл заголовка ('#include
По-друге, нам слід повідомити платі, який тип РК ми використовуємо тут. Оскільки у нас так багато різних типів РК-дисплеїв (наприклад, 20x4, 16x2, 16x1 тощо). Тут ми збираємось підключити РК-дисплей 16x2 до UNO, щоб отримати 'lcd.begin (16, 2);'. Для 16x1 отримуємо 'lcd.begin (16, 1);'.
У цій інструкції ми будемо повідомляти дошці, де ми з'єднали висновки. Підключені висновки повинні бути представлені в порядку "RS, En, D4, D5, D6, D7". Ці шпильки повинні бути представлені правильно. Оскільки ми підключили RS до PIN0 і так далі, як показано на схемі, ми представляємо номер контакту на платі як “LiquidCrystal lcd (0, 1, 8, 9, 10, 11);”.
Після цього залишається лише надіслати дані, дані, які потрібно відобразити на РК-дисплеї, повинні бути записані як “cd.print (“ привіт, світ! ”);”. За допомогою цієї команди на РК-дисплеї відображається "привіт, світе!".
Як бачите, нам не потрібно турбуватися ні про що інше, нам просто потрібно ініціалізувати, і ООН буде готова до відображення даних. Нам не потрібно писати цикл програми для передачі даних BYTE by BYTE сюди.
Використання АЦП Arduino Uno пояснюється поетапно в програмі C, поданій нижче.