مقدمه
ماژول های مبدل آنالوگ به دیجیتال برای تبدیل دیتای آنالوگ به دیجیتال مورد استفاده قرار می گیرند. ماژول ADS1110 نیز با همین هدف ساخته شده است. این ماژول 16 بیتی دقت قابل قبولی را برای اندازه گیری داده های آنالوگ توسط میکروکنترلر ارائه می دهد.
در این آموزش قصد داریم تا بوسیله برد پردازشی آردوینو، ماژول ADS1110 را راه اندازی کنیم. ارتباط بین ماژول و آردوینو نیز از طریق پروتکل ارتباطی I2C می باشد.
ما در این پروژه از خروجی یک پتانسیومتر—بین 2 تا 10 کیلو اهم—به عنوان دیتای ورودی به ماژول ADS1110 استفاده می کنیم. همچنین برای راه اندازی ماژول ADS1110 به مقاومت های PULL UP در بازه 1 تا 10 کیلو اهم نیاز داریم.
ADS1110 Datasheet
معرفی پایه های (Pinout) ماژول ADS1110
ماژول ASD1110 دارای 6 پایه به شرح زیر است:
• VIN: تغذیه ماژول
• GND: زمین
• SDA: برای پروتکل ارتباطی I2C
• SCL: برای پروتکل ارتباطی I2C
• VIN-: پایه ورودی منفی منبع ولتاژ
• VIN+: پایه ورودی مثبت منبع ولتاژ
لوازمی که به آن احتیاج دارید
قطعات مورد نیاز
نرم افزارهای مورد نیاز
راه اندازی ماژول ADS1110 با استفاده از آردوینو
گام اول: سیم بندی
مطابق با مدار زیر، قطعات را وصل کنید.
گام دوم: نرم افزار آردوینو
در محیط نرم افزار آردوینو، مطابق با تصویر، ابتدا نوع بورد خود را مشخص کرده و سپس Port مناسب را انتخاب کنید.
گام سوم: کد
کد زیر را بر روی آردوینوی خود آپلود کنید.
#include "Wire.h"
#define ads1110 0x48
float voltage, data;
byte highbyte, lowbyte, configRegister;
void setup()
{
Serial.begin(9600);
Wire.begin();
}
void loop()
{
Wire.requestFrom(ads1110, 3);
while(Wire.available()) // ensure all the data comes in
{
highbyte = Wire.read(); // high byte * B11111111
lowbyte = Wire.read(); // low byte
configRegister = Wire.read();
}
data = highbyte * 256;
data = data + lowbyte;
Serial.print("Data >> ");
Serial.println(data, DEC);
Serial.print("Voltage >> ");
voltage = data * 2.048 ;
voltage = voltage / 32768.0;
Serial.print(voltage, DEC);
Serial.println(" V");
delay(1000);
}
توضیحات کد آردوینو
#include "Wire.h"
#define ads1110 0x48
float voltage, data;
byte highbyte, lowbyte, configRegister;
در کد نویسی، ابتدا کتابخانه مربوط به I2C را فراخوانی کرده و سپس آدرس I2C ماژول را پیدا می کنیم. برای مشخص کردن آدرس I2C می توانیم در نرم افزار آردوینو از قسمت Examples <– Wire <– File، مثال I2C_scanner را اجرا کنیم. حال در پنجره Serial Monitor آدرس قابل مشاهده خواهد بود. پس از آن متغیر های مورد نیاز را تعریف می کنیم.
Wire.requestFrom(ads1110, 3);
while(Wire.available()) // ensure all the data comes in
{
highbyte = Wire.read(); // high byte * B11111111
lowbyte = Wire.read(); // low byte
configRegister = Wire.read();
}
در این بخش، اطلاعات ارسالی ماژول در سه متغیر ذخیره می شود.
data = highbyte * 256;
data = data + lowbyte;
Serial.print("Data >> ");
Serial.println(data, DEC);
Serial.print("Voltage >> ");
voltage = data * 2.048 ;
voltage = voltage / 32768.0;
Serial.print(voltage, DEC);
Serial.println(" V");
delay(1000);
در این قسمت از کد محاسبات ریاضی لازم را برای تبدیل داده های دریافتی از ماژول به داده مورد نظر انجام می دهیم. این محاسبات طبق دیتاشیت ماژول انجام شده است. پس از اجرای کد می توانید از طریق پنجره Serial Monitor خروجی مورد نظر را به شکل دیتای 16 بیتی و مقدار ولتاژ مشاهده کنید.
نکات مهم در عیب یابی
• اتصالات مدار را چک کنید.
• آدرس I2C را بررسی کنید.
• مقدار مقاومت های استفاده شده را مطابق مقادیر ذکر شده انتخاب کنید.