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