این ماژول یک هدر برد چیپ PCF8591 می باشد که تمامی پین های PCF8591 به صورت پین هدر هایی در دسترس می باشند . PCF8591 یک مبدل ADC و DAC هشت بیتی می باشد . در واقع این ماژول قابلیت تبدیل سیگنال های آنالگ به دیجیتال و برعکس را دارد . همچنین PCF8591 دارای چهار کانل ورودی است که امکان اتصال چهار ورودی آنالوگ را دارد . بر روی برد این ماژول یک NTC ، فوتوسل و یک پتانسیومتر قرار دارد که می توانید آن ها را از طریق جامپر هایی به PCF8591 متصل کنید . از این ماژول می توانید در کنار MCU هایی که فاقد ADC یا DAC می باشند استفاده کنید . مبدل های DAC امکان ساخت هر مدل سیگنال آنالوگ را به شما می دهند که می توانید از طریق آن سیگنال صدا و… بسازید . همچنین از واحد ADC این ماژول می توانید برای اندازه گیری خروجی سنسور های مختلف استفاده کنید .
در تصویر زیر خروجی های ماژول PCF8591 نشان داده شده است :
1-VCC و GND پین های تغذیه و زمین ماژول می باشند .
2-SCL و SDA پین های ارتباط I2C هستند .
3-پین های AIN ورودی های آنالوگ می باشند همچنین AOUT خروجی آنالوگ DAC ماژول است .
راه اندازی ماژول PCF8591 با آردوینو :
برای راه اندازی این مازول از ارتباط I2C استفاده می شود . همچنین با اتصال جامپر های برد می توانید هر یک از NTC ، فوتوسل یا پتانسیومتر را به ورودی های آنالوگ متصل کنید .
#include <Adafruit_PCF8591.h>
// Make sure that this is set to the value in volts of VCC
#define ADC_REFERENCE_VOLTAGE 5.0
Adafruit_PCF8591 pcf = Adafruit_PCF8591();
void setup() {
Serial.begin(115200);
while (!Serial)
delay(10);
Serial.println("# Adafruit PCF8591 demo");
if (!pcf.begin()) {
Serial.println("# Adafruit PCF8591 not found!");
while (1)
delay(10);
}
Serial.println("# Adafruit PCF8591 found");
pcf.enableDAC(true);
}
uint8_t dac_counter = 0;
void loop() {
// Make a triangle wave on the DAC output
pcf.analogWrite(dac_counter);
dac_counter = dac_counter + 10;
Serial.print("AIN0: ");
Serial.print(int_to_volts(pcf.analogRead(0), 8, ADC_REFERENCE_VOLTAGE));
Serial.print("\t AIN1: ");
Serial.print(int_to_volts(pcf.analogRead(1), 8, ADC_REFERENCE_VOLTAGE));
Serial.print("\t AIN2: ");
Serial.print(int_to_volts(pcf.analogRead(2), 8, ADC_REFERENCE_VOLTAGE));
Serial.print("\t AIN3: ");
Serial.print(int_to_volts(pcf.analogRead(3), 8, ADC_REFERENCE_VOLTAGE));
Serial.println("");
delay(3);
}
float int_to_volts(uint16_t dac_value, uint8_t bits, float logic_level) {
return (((float)dac_value / ((1 << bits) - 1)) * logic_level);
}



