Аналого-цифрове перетворення є дуже важливим завданням у вбудованій електроніці, оскільки більшість датчиків забезпечують вихід у вигляді аналогових значень, і щоб подати їх у мікроконтролер, який розуміє лише двійкові значення, ми повинні перетворити їх у цифрові значення. Для того, щоб мати можливість обробляти аналогові дані, мікроконтролерам потрібен перетворювач аналого-цифровий.
Деякі мікроконтролери мають вбудований АЦП, такі як Arduino, MSP430, PIC16F877A, але деякі мікроконтролери не мають таких, як 8051, Raspberry Pi тощо, і ми повинні використовувати деякі зовнішні мікросхеми аналого-цифрового перетворювача, такі як ADC0804, ADC0808. Нижче ви можете знайти різні приклади АЦП з різними мікроконтролерами:
- Як використовувати АЦП в Arduino Uno?
- Підручник з ADC Raspberry Pi
- Зв'язок ADC0808 з мікроконтролером 8051
- Цифровий вольтметр 0-25 В за допомогою мікроконтролера AVR
- Як користуватися АЦП в STM32F103C8
- Як користуватися АЦП в MSP430G2
- Як використовувати АЦП в ARM7 LPC2148
- Використання модуля АЦП мікроконтролера PIC з MPLAB та XC8
У цьому підручнику ми перевіримо, як взаємодіяти модуль ADF / DAC PCF8591 з Arduino.
Необхідні компоненти
- Arduino UNO
- Модуль АЦП PCF8591
- 100к горщик
- Кабелі-перемички
Модуль АЦП / ЦАП PCF8591
PCF8591 - це 8-бітний аналого-цифровий або 8-бітовий цифро-аналоговий модуль перетворювача, що означає, що кожен штифт може зчитувати аналогові значення до 256. Він також має LDR і схему терморезистора, що передбачені на платі. Цей модуль має чотири аналогових входи і один аналоговий вихід. Він працює на зв'язку I 2 C, тому є штирі SCL та SDA для послідовного годинника та адреси послідовних даних. Це вимагає напруги живлення 2,5-6 В і має низький струм очікування. Ми також можемо маніпулювати вхідною напругою, регулюючи ручку потенціометра на модулі. На дошці також є три перемички. J4 підключений для вибору схеми доступу термістора, J5 підключений для вибору схеми доступу LDR / фоторезистора і J6 підключений для вибору схеми доступу з регульованою напругою. Для доступу до цих схем потрібно використовувати адреси цих перемичок: 0x50 для J6, 0x60 для J5 і 0x70 для J4. На борту D1 та D2-D1 є два світлодіоди, індикація напруги вихідної напруги, а D2 інтенсивність напруги живлення. Чим вище вихідна або напруга живлення, тим вища інтенсивність світлодіодів D1 або D2. Ви також можете перевірити ці світлодіоди, використовуючи потенціометр на VCC або на штифті AOUT.
Модуль АЦП / ЦАП PCF8591 з Arduino
Повна програма і робота відео наводиться в кінці цього посібника.
По-перше, нам потрібно визначити бібліотеку для зв’язку I 2 C та РК-дисплея.
#включати
Потім визначте деякі макроси. Перший макрос призначений для визначення адреси шини даних для мікросхеми, а другий макрос - для визначення адреси першого вхідного штифта модуля, де дається вхід від pot.
#define PCF8591 (0x90 >> 1) #define AIn0 0x00
Далі визначте контактні з'єднання РК-дисплея з Arduino та ініціалізуйте значення, яке ми отримуємо на аналоговому контакті.
const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2; Рідинний кристал LiquidCrystal (rs, en, d4, d5, d6, d7); int Значення = 0;
Тепер приступимо до функції налаштування . Тут, у першому рядку ми ініціалізували зв'язок I 2 C. А у другому рядку ми ініціалізували РК-дисплей, на якому друкуємо аналогові значення. Дізнайтеся більше про взаємодію РК-дисплея 16x2 з Arduino тут.
void setup () { Wire.begin (); lcd.begin (16,2); }
У функції циклу перший рядок повинен розпочати передачу, тобто він запускає PCF8591. Другий рядок повідомляє мікросхему про аналогове вимірювання на першому аналоговому вхідному штифті. Третя лінія закінчує передачу, а четверта лінія отримує виміряні дані з аналогового виводу.
порожній цикл () { Wire.beginTransmission (PCF8591); Wire.write (AIn0); Wire.endTransmission (); Wire.requestFrom (PCF8591, 1);
У наступній частині помістіть значення, прочитане з аналогового штифта, до змінної Значення, визначеної раніше. А в наступних рядках надрукуйте це значення на РК-дисплеї.
Значення = Wire.read (); lcd.print ("Значення ADC ="); lcd.print (значення); затримка (500); lcd.clear ();}
Нарешті завантажте код в Arduino і запустіть його. Аналогові значення почнуть відображатися на РК-дисплеї. Відрегулюйте ручку горщика, і ви побачите поступову зміну значень.