ویژگی های ماژول PCF8591
PCF8591 تراشه ی مبدل 8 بیتی آنالوگ به دیجیتال و دیجیتال به آنالوگ است. این تراشه دارای 4 کانال ورودی آنالوگ ، یک کانال خروجی آنالوگ و ارتباط I2C است . ماژولی که این تراشه بر روی آن قرار گرفته دارای 4 پین در سمت چپ می باشد، که شامل پین های تغذیه و پین های ارتباط I2C است. 8 پین سمت راست که 4 جامپر بر روی آن ها قرار گرفته نیز کار با سیگنال ها را برعهده دارند:
- AOUT : پورت خروجی DAC ماژول
- AIN3 : رابط آنالوگ سیگنال ورودی
- AIN2 : رابط آنالوگ سیگنال ورودی
- AIN1 : رابط آنالوگ سیگنال ورودی
- AIN0 : رابط آنالوگ سیگنال ورودی
- INPUT2 : پورت وروی سیگنال ترمیستور به آن متصل است
- INPUT1 : پورت ورودی سیگنال فوتورزیستور به آن متصل است
- INPUT0 : پورت ورودی سیگنال پتانسیومتر به آن متصل است
جهت دریافت دیتاشیت ماژول مبدل آنالوگ به دیجیتال و دیجیتال به آنالوگ PCF8591 اینجا کلیک کنید.
PCF8591 AD/DA Module Datasheet
معرفی پایه ها (Pinout) ماژول PCF8591
ماژول PCF8591 دارای 4 پایه به شرح زیر است:
- VIN: تغذیه ماژول – 5 ولت
- GND: زمین
- SLC: همزمان سازی برای پروتکل I2C
- SDA: اطلاعات برای پروتکل I2C
پین اوت (Pinout) این ماژول را می توانید در تصویر زیر مشاهده کنید.
لوازمی که به آن احتیاج دارید
قطعات مورد نیاز
نرم افزارهای مورد نیاز
راه اندازی ماژول PCF8591 با آردوینو
گام اول: سیم بندی
گام دوم: کد
ابتدا کتابخانه زیر را بر آردوینوی خود نصب کنید.
توجه
اگر نیاز به راهنمایی بیشتر برای نصب کتابخانه بر روی آردوینو دارید، می توانید به آموزش نصب کتابخانه بر آردوینو مراجعه کنید.
/*
modified on Sep 23, 2020
Modified by MohammedDamirchi from https://github.com/adafruit/Adafruit_PCF8591
Home
*/
#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);
}
پس از آپلود کد، چیزی شبیه به تصویر زیر را در سریال مانیتور مشاهده می کنید.