میکروکنترلر ESP32, مقاله های سیسوگ, میکروکنترلر

راه اندازی ADS1115 ماژول مبدل آنالوگ به دیجیتال ۱۶ بیتی با ESP32

راه اندازی ADS1115 ماژول مبدل آنالوگ به دیجیتال ۱۶ بیتی با ESP32

در این مطلب، فرایند راه اندازی ADS1115 ارتباط ماژول مبدل آنالوگ به دیجیتال (ADC) ۱۶بیتی ADS1115 با ESP32 را بررسی خواهیم کرد. برد بریک اوت (Breakout Board) ADS1115 یک مبدل آنالوگ به دیجیتال (ADC) با رزولوشن بالا است که می‌توان از آن همراه با میکروکنترلرهای مختلف از جمله آردوینو، STM32 و ESP8266/32 استفاده کرد. به طور خاص، ESP32 یک میکروکنترلر قدرتمند با قابلیت‌های Wi-Fi داخلی و بلوتوث است که آن را به یک گزینه ایده‌آل برای کاربردهای حوزه IoT تبدیل کرده است.

میکروکنترلر ESP32 دارای یک ADC ۱۲ بیتی داخلی است که رزولوشن بالاتری نسبت به ADC ۱۰ بیتی موجود در بردهای آردوینو دارد. با این حال، ADS1115 دارای رزولوشن حتی بالاتری از 16 بیت است که عملکرد بهتری از نظر اندازه‌گیری ولتاژ دارد. کوچکترین ولتاژی که ESP32 می‌تواند اندازه‌گیری کند، 3.3V / 4096 = 0.0008V = 0.8mV است، در حالی که ADS1115 می تواند تا 5V / 65536 = 0.000076V = 76uV اندازه‌گیری کند.

این امر باعث می‌شود ADS1115 در مواقعی که اندازه‌گیری ولتاژ دقیق مورد نیاز است، انتخابی عالی باشد. اگر دقت بیشتری تا 0.3uV مورد نیاز باشد، می‌توان ماژول آنالوگ به دیجیتال ۲۴بیتی ADS1220 را به عنوان یک گزینه در نظر گرفت.

راه اندازی ADS1115 با ESP32

در ادامه این مطلب، روش گام‌به‌گام اتصال ADS1115 به ESP32، پیکربندی ارتباط I2C و نوشتن کد برای خواندن و پردازش سیگنال‌های آنالوگ با استفاده از Arduino IDE را ارائه خواهیم کرد. در پایان این مطلب، درک کاملی از نحوه ارتباط ماژول ۱۶ بیتی ADC به نام ADS1115 با ESP32 و نحوه استفاده کامل از قابلیت‌های آن برای پروژه‌های خود خواهید داشت.

فهرست قطعات

برای درک کامل ماژول ADC ADS1115 هنگام کار با ESP32، به قطعات زیر نیاز داریم:

  • ۱ عدد برد ESP32
  • ۱ عدد ماژول مبدل آنالوگ به دیجیتال ADS1115
  • ۱ عدد نمایشگر LCD 16×2 I2C
  • ۲ عدد پتانسیومتر 10kΩ
  • ۱ عدد برد بورد
  • سیم

پین‌های ESP32 ADC و دقت آن

ESP32 یک میکروکنترلر قدرتمند با قابلیت‌های Wi-Fi و بلوتوث یکپارچه است. این میکروکنترلر چندین پین ADC دارد که می‌توان از آن‌ها برای اندازه‌گیری سیگنال‌های آنالوگ و تبدیل آن‌ها به مقادیر دیجیتال استفاده کرد. ESP32 دارای دو مبدل آنالوگ به دیجیتال ADC1 و ADC2 است که در مجموع 18 کانال ADC دارد.

  • ADC1 دارای 8 کانال (GPIO32 تاGPIO39 ) است.
  • ADC2 دارای 10 کانال (GPIO0  GPIO2 ،GPIO4 ،GPIO12 تا GPIO15، و GPIO25 تاGPIO27) است.

پین‌های ESP32 ADC و دقت آن

مبدل‌های آنالوگ‌ به دیجیتال ESP32 دارای رزولوشن 12 بیت هستند، به این معنی که می‌توانند یک سیگنال آنالوگ را با استفاده از 4096 سطح گسسته نمایش دهند. بااین‌حال، به دلیل نویز داخلی و ویژگی‌های غیرخطی، رزولوشن مؤثر معمولاً در حدود 10 یا 11 بیت است.

نمدار ولتاژ ورودی ADC

برای بهبود دقت قرائت‌های ADC در ESP32، می‌توان کارهای زیر را انجام داد:

  • استفاده از سنسور هال داخلی برای کالیبراسیون
  • اجرای بیش‌نمونه‌برداری (Oversampling) و میانگین‌گیری برای کاهش نویز
  • استفاده از یک مرجع ولتاژ خارجی برای پایداری بهتر
  • استفاده از یک ماژول ADC خارجی مانند ADS1115 در صورت نیاز به دقت بالاتر

به‌خاطر داشته باشید که کانال‌های ADC2 با قابلیت‌های Wi-Fi به اشتراک گذاشته می‌شوند، بنابراین اگر از Wi-Fi استفاده می‌کنید، بهتر است از کانال‌های ADC1 استفاده کنید تا از تداخل احتمالی یا تداخل با خواندن ADC جلوگیری کنید.

تراشه ADS1115

ADS1115 یک IC مبدل آنالوگ به دیجیتال با دقت بالا، کم‌مصرف، 16بیتی و سازگار با I2C است.

تراشه ADS1115

ویژگی‌های ADS1115

ویژگی‌های ADS1115 عبارت است از:

  • وضوح 16 بیتی
  • ورودی‌های تک‌سر 4 کاناله یا تفاضلی ۲ کاناله
  • رابط پروتکل I2C
  • مقایسه‌کننده برنامه‌پذیر
  • محدوده تغذیه وسیع
  • مصرف جریان کم
  • حالت تبدیل مداوم
  • نرخ داده قابل‌برنامه‌ریزی
  • نتیجه دهی تک‌چرخه (Single-Cycle Settling)
  • مرجع ولتاژ کم انحراف داخلی (Internal Low-Drift Voltage Reference)
  • نوسان‌ساز داخلی
  • محدوده دمای کاری گسترده
  • موجود در بسته‌بندی فوق کوچک X2QFN

پیکربندی پین ADS1115

تصویر زیر پیکربندی پین تراشه ADS1115 را نشان می‌دهد.

پیکربندی پین ADS1115

  • پین 1 پین ADDR است که آدرس I2C را برای تراشه انتخاب می‌کند.
  • پین 2 پین Alert/Ready است که به عنوان سیگنال Ready و Alert عمل می‌کند.
  • پین 3 ترمینال GND است.
  • پین‌های 4، 5، 6 و 7 چهار پین ورودی ADC هستند. می‌توانیم از این پین‌ها به عنوان ۴ ورودی تک‌سر یا ۲ ورودی تفاضلی استفاده کنیم.
  • پین 8 مربوط به منبع تغذیه مثبت است که 2 ولت تا 5 ولت به آن وصل می‌شود.
  • پین‌های 9 و 10 به ترتیب ترمینال‌های رابط I2C، SDA و SCL هستند.

بلوک دیاگرام عملکردی ADS1115

تصویر زیر، بلوک دیاگرام عملکردی تراشه ADS1115 را نشان می‌دهد.

بلوک دیاگرام عملکردی ADS1115

ابتدا یک مالتی‌پلکسر سیگنال ورودی را انتخاب می‌کند. سپس، این سیگنال انتخاب‌شده وارد یک تقویت‌کننده بهره قابل‌برنامه‌ریزی (PGA) می‌شود که می‌توان آن را برای تقویت سیگنال‌های کوچک‌تر، قبل از انجام تبدیل برنامه‌ریزی کرد.

سپس، یک مبدل دلتا سیگمای 16 بیتی ورودی را پردازش می‌کند. این مبدل از مرجع ولتاژ یکپارچه و اسیلاتور خود برای اندازه‌گیری سیگنال ورودی استفاده می‌کند. پس از انجام تبدیل، داده‌های حاصل به رابط I2C ارسال می‌شود. علاوه بر این، یک مقایسه‌کننده سیگنالی را برای رابط خارجی تولید می‌کند که نشان می دهد نتیجه تبدیل‌شده برای بازیابی در دسترس است.

اتصالات ADS1115

اتصالات اولیه I2C برای ADS1115 در تصویر زیر قابل‌مشاهده است.

اتصالات ADS1115

اتصالات ADS1115

ADS1115 با کنترلرهای I2C حالت استاندارد، حالت سریع و حالت بسیار سریع سازگار است و می‌تواند مستقیماً با آن‌ها ارتباط برقرار کند. ADS1115 با هر میکروکنترلر I2C جانبی که شامل تجهیزات جانبی I2C نوع master-only و single-master است، کار می‌کند. برای اطلاعات بیشتر به دیتاشیت ADS1115 مراجعه کنید.

ماژول یا بریک‌اوت برد ADS1115

ADS1115 در بسته‌های X2QFN و VSSOP موجود است که برای نمونه‌سازی مناسب نیستند. در نتیجه، یک ماژول ADS1115 یا بریک‌اوت برد (Breakout Board) برای استفاده با ESP32 یا هر میکروکنترلر دیگری ضروری است.

ماژول یا بریک‌اوت برد ADS1115

این ماژول‌ها را می‌توان از تولیدکنندگان مختلف با قیمت‌های مقرون‌به‌صرفه پیدا کرد. طراحی مناسب برد بورد آن‌ها را برای نمونه‌سازی و تست کاربردهای عملی ایده‌آل می‌کند و امکان یکپارچه‌سازی آسان را فراهم می‌کند.

پین‌های ماژول ADS1115

ماژول ADS1115 در مجموع دارای 10 پین است که در جدول زیر آورده شده‌اند.

شماره پین

نام پین

شرح پین

۱VDDمنبع تغذیه: 2V تا 5.5V
۲GNDزمین
۳SCLورودی ساعت سریال: داده‌ ساعت در SDA (برای ارتباط I2C استفاده می‌شود)
۴SDAداده‌های سریال: داده‌ها را ارسال و دریافت می‌کند (برای ارتباط I2C استفاده می‌شود)
۵ADDRانتخاب آدرس I2C (Slave)
۶ALERT/RDYخروجی مقایسه‌کننده دیجیتال یا ready‌ تبدیل
۷AIN0کانال تفاضلی 1: ورودی کانال 1 تک‌سر یا ورودی منفی
۸AIN1کانال تفاضلی ۱: ورودی کانال ۲ تک‌سر یا ورودی منفی
۹AIN2کانال تفاضلی ۲: ورودی کانال ۳ تک‌سر یا ورودی مثبت
۱۰AIN3کانال تفاضلی ۲: ورودی کانال ۴ تک‌سر یا ورودی منفی

شماتیک ماژول ADS1115

تصویر قبلی، انطباق Adafruit ماژول ADS1115 را نشان می‌دهد.

شماتیک ماژول ADS1115

این شماتیک بر اساس پروتکل اتصال استاندارد برای تراشه ADS1115 است. مدار دارای مقاومت‌های pull-up با مقدار ۱۰ کیلواهم در هر دوپایه I2C و Alert و همچنین یک خازن ۱ میکروفارادی است که بین پایه‌های VDD و GND قرار دارد و به‌عنوان یک خازن جداکننده عمل می‌کند.

رابط ماژول ADS1115 با ESP32

اتصالات مدار ESP32 برای رابط ماژول ADC ADS1115 ساده و سرراست است.

رابط ماژول ADS1115 با ESP32

ابتدا، پین VDD و GND ماژول را به ترتیب به پین 3.3 ولت وGND میکروکنترلر ESP32 وصل کنید. سپس، پین‌های I2C ماژول ADS1115 (SDA و SCL) را به پین‌های I2C (SDA=GPIO21 و SCL=GPIO22) میکروکنترلر ESP32 متصل کنید. بسته به اینکه از کدام‌یک از آدرس‌های 0x49، 0x4A یا 0x4B می‌خواهید استفاده کنید، پین ADDR تراشه باید به VDD، SDA یا SCL متصل شود. توجه داشته باشید که پین ADDR به طور پیش فرض توسط یک مقاومت 10 کیلواهمی به زمینpulled down شده است.

اگر می‌خواهید از پین ALERT/READY ماژول ADS1115 استفاده کنید، باید آن را به پین دیجیتال ESP32 وصل کنید. این پین دو کاربرد دارد. اول اینکه می‌توان از آن برای تبدیل مبتنی بر وقفه استفاده کرد که به‌عنوان سیگنال READY داده عمل می‌کند. دوم اینکه می‌توان از آن با مقایسه‌کننده خروجی قابل‌برنامه‌ریزی برای تشخیص آستانه تبدیل استفاده کرد. در این مورد، به‌عنوان یک سیگنال ALERT عمل می‌کند.

ADS1115 دارای چهار خروجی مبدل آنالوگ به دیجیتال A0، A1، A2 و A3 است که به این معنی است که می‌توان حداکثر چهار سنسور آنالوگ را به این ماژول متصل کرد. به‌عنوان‌مثال، برای آزمایش خواندن ماژول، می‌توان از یک پتانسیومتر استفاده کرد که باید آن را مطابق مدار شکل قبل وصل کرد.

نصب کتابخانه ADS1115

چندین کتابخانه برای ماژول ADS1115 موجود است. با جست‌وجو در Library Manager، می‌توان کتابخانه را از یک توسعه‌دهنده دیگر دریافت کرد.

نصب کتابخانه ADS1115

از بین تمام کتابخانه‌های موجود، می‌توانیم از یکی از کتابخانه‌های پایدار برای برنامه خود استفاده کنیم. کتابخانه‌ای که استفاده می‌کنیم، از Adafruit است. می‌توانید کتابخانه را از لینک زیر دانلود کنید.

این کتابخانه قابلیت تنظیم سرعت ساعت I2C، تنظیم بهره قابل‌برنامه‌ریزی، حالت عملیاتی و نرخ داده را دارد. با استفاده از این کتابخانه می‌توانیم داده‌های ADC سنسور را در حالت Single mode Differential Mode و Continuous Mode بخوانیم.

کد برنامه

با استفاده از کد نمونه اولیه از پوشه نمونه Adafruit ADS1115، می‌توانیم عملکرد سنسور را آزمایش کنیم.

کد زیر را کپی کرده و در برد ESP32 آپلود کنید.

پس از آپلود کد، Serial Monitor را باز کنید. Serial Monitor مقدار ADC را برای هر 4 خروجی AIN0، AIN1، AIN2، AIN3 همراه با ولتاژ خروجی نشان می‌دهد.

راه اندازی ADS1115 ماژول مبدل آنالوگ به دیجیتال ۱۶ بیتی با ESP32

ازآنجاکه فقط از دو پتانسیومتر برای AIN0 و AIN1 استفاده کرده‌ایم، این مقادیر در حین چرخش پتانسیومتر تغییر می‌کنند.

تست دقت ماژول ADS1115

اکنون، دقت ماژول ADC ADS1115 را ارزیابی خواهیم کرد. برای ارزیابی دقت آن، می‌توانیم از یک نمایشگر LCD برای نمایش مقدار ADC و ولتاژهای اندازه‌گیری‌شده استفاده کنیم. پس از آن، می‌توانیم از یک مولتی‌متر برای اندازه‌گیری ولتاژ شناسایی‌شده و مقایسه آن با ولتاژ نمایش‌داده‌شده در Serial Monitor استفاده کنیم.

اتصالات ADS1115 ،ESP32 و LCD

LCD را مطابق شکل زیر به مدار قبلی وصل کنید.

اتصالات ADS1115 ،ESP32 و LCD

پین SDA و SCL مربوط به LCD را به GPIO21 و GPIO22 از ESP32 وصل کنید. با استفاده از پین‌های Vin وGND تراشه ESP32، اتصال 5 ولت VCC و GND را به نمایشگر LCD برقرار کنید.

اتصال پین SDA و SCL مربوط به LCD به GPIO21 و GPIO22 از ESP32

کد برنامه

کد برای کامپایل کردن به کتابخانه LCD I2C نیاز دارد. می‌توانید کد زیر را کپی کرده و در بورد ESP32 آپلود کنید.

بررسی نهایی

با آپلود کد، ماژول برای آزمایش آماده می‌شود. برای این منظور، به یک مولتی‌متر نیاز است. LCD مقدار ADC و ولتاژ اندازه‌گیری‌شده را نمایش می‌دهد.

بررسی نتایج تست پروژه

از دو پتانسیومتر برای وارد کردن ولتاژ ADC و نمایش هر دوی آن‌ها در صفحه نمایش LCD استفاده می‌کنیم. یکی از ولتاژهای اندازه‌گیری‌شده با مولتی‌متر 3.28V است که در LCD ولتاژ 3.31V را نشان می‌دهد.

بررسی نتایج تست پروژه

حداکثر ولتاژ خروجی ADC از ماژول 3.3V و حداقل آن 0V است. هنگام اندازه‌گیری ولتاژ پایین‌تر، وقت LCD مقدار 0.84V را نشان می‌دهد، مقدار 0.827V در مولتی‌متر اندازه‌گیری می‌شود.

بررسی نتایج تست پروژه

بنابراین، می‌توان نتیجه گرفت که ماژول مبدل آنالوگ به دیجیتال ۱۶بیتی ADS1115 دقت خوبی دارد و می‌توان از آن برای کاربردهای چندمنظوره استفاده کرد.

طبق تست‌های دیگر، این دستگاه دارای دقت معمولی 0.01% است، اما حداکثر دقت آن 0.15% است. این دقت شامل تمام منابع خطا مانند مرجع ولتاژ، خطای بهره، افست و نویز می‌شود.

منبع:

how2electronics

انتشار مطالب با ذکر نام و آدرس وب سایت سیسوگ، بلامانع است.

شما نیز میتوانید یکی از نویسندگان سیسوگ باشید.   همکاری با سیسوگ

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *