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

 

Tags:
About Author: USER_4