این ماژول یک هدر برد چیپ 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); }