У цьому проекті ми використовуємо концепцію АЦП (аналого-цифрове перетворення) в ARDUINO UNO. Ми будемо використовувати датчик ефекту Холла та Arduino uno для вимірювання напруженості поля магніту. Датчик, який ми використовували тут, - UGN3503U. Це датчик Холла, який відчуває напруженість магнітного поля і забезпечує різну напругу на виході, пропорційну напруженості поля. Цей датчик визначає напруженість поля в одиницях " GAUSS ".
Отже, з цим датчиком ми матимемо напруженість поля як різну напругу. За допомогою функції АЦП ми перетворимо цю напругу в число. Це число відображає напруженість поля і відображається на РК-дисплеї.
Arduino має шість каналів ADC. У них будь-який один або всі з них можуть бути використані як входи для аналогової напруги. АЦП 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, блок живлення (5v), JHD_162ALCD (16x2LCD), конденсатор 100 мкФ (2 шт.), UGn3503U.
Програмне забезпечення: Arduino IDE (Arduino nightly)
Принципова схема та пояснення
На наведеному малюнку представлена принципова схема для вимірювання магнітного поля за допомогою arduino uno.
У РК-дисплеї 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 ми повинні знати кілька речей.
|
Перш за все, канали АЦП 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 сюди.
Як тільки магніт підведений до датчика, датчик представляє напругу на виході, пропорційну полю, це значення приймається Uno і відображається на РК-дисплеї. Робота цього проекту вимірювання магнітного поля додатково пояснюється через наведений нижче код С.