Аналого-цифровое преобразование является очень важной задачей во встраиваемой электронике, поскольку большинство датчиков обеспечивают вывод в виде аналоговых значений и для подачи их в микроконтроллер, который понимает только двоичные значения, и мы должны преобразовать их в цифровые значения. Поэтому для обработки аналоговых данных микроконтроллерам необходим аналого-цифровой преобразователь.

Некоторые микроконтроллеры имеют встроенные АЦП, среди них Arduino, MSP430, PIC16F877A, но некоторые микроконтроллеры не имеют таких возможностей, например, 8051, Raspberry Pi и т. д., и мы должны использовать некоторые внешние микросхемы аналого-цифрового преобразователя, такие как ADC0804, ADC0808. В этом уроке в учебных целях мы собираемся проверить, как сопрягать модуль АЦП / ЦАП PCF8591 с Arduino.
PCF8591 – это модуль 8-битного аналого-цифрового или 8-битного цифро-аналогового преобразователя, означающий, что каждый вывод может считывать аналоговые значения до 256. Он также имеет схему LDR и термистор, установленные на плате. Этот модуль имеет четыре аналоговых входа и один аналоговый выход. Он работает с интерфейсом I2C, поэтому на нем есть контакты 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 очень проста. В этом примере сопряжения мы будем считывать аналоговые значения с любого из аналоговых выводов и изменять эти значения с помощью потенциометра 100К. Во-первых, подключите VCC и GND к 5V и GND Arduino. Затем подключите SDA и SCL к A4 и A5 Arduino. Теперь подключите потенциометр 100K к AIN0, как показано на рисунке. Для LCD контакты данных (D4-D7) подключены к цифровым контактам D5-D2 Arduino, а контакты RS и EN подключены к D12 и D11 Arduino. V0 ЖК-дисплея подключен к потнциометру, который используется для управления яркостью ЖК-дисплея.


Код взаимодействия Arduino с АЦП модуля PCF8591 следующий:
#include <LiquidCrystal.h>
#include<Wire.h>
#define PCF8591 (0x90 >> 1)
#define AIN0 0x00
const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
int Value = 0;
void setup()
{
Wire.begin();
lcd.begin(16,2);
}
void loop()
{
Wire.beginTransmission(PCF8591);
Wire.write(AIN0);
Wire.endTransmission();
Wire.requestFrom(PCF8591, 1);
Value = Wire.read();
lcd.print("ADC Value=");
lcd.print(Value);
delay(500);
lcd.clear();
}
© digitrode.ru