آموزش رزبری پای رزبری پای میکروپایتون Micropython

آموزش میکروپایتون با رزبری پای پیکو بخش چهارم: آنالوگ به دیجیتال ADC

getting-started-with-raspberry-pi-pico-micropython-part-four-adc-digispark
نوشته شده توسط پریسا پوربلورچیان

ADC مخفف Analog to Digital Converter مبدل سیگنال های آنالوگ است. مثل کم و زیاد کردن شدت نور محیط، کم و زیاد شدن صدای یک بلندگو و هر آنچه که با سیگنال های آنالوگ در ارتباط است. شاید اولین موردی که به ذهنتان خطور کند، این است که رزبری پای در تمامی نسخه های ارائه شده اش، فاقد ADC بوده و است! بله بود! رزبری پای پیکو دارای ۴ پایه ADC است که برای سیگنال های آنالوگ و ارتباط سخت افزاری به برد جدید بنیاد رزبری پای اضافه شده است. در بخش چهارم از سری آموزش های رزبری پای پیکو به معرفی ADC در Pico خواهیم پرداخت. در ادامه با مرجع تخصصی میکروپایتون با رزبری پای به زبان فارسی، دیجی اسپارک همراه باشید.

راه اندازی آنالوگ به دیجیتال ADC رزبری پای پیکو - دیجی اسپارک

 


رابط آنالوگ به دیجیتال ADC 


در الکترونیک مبدل آنالوگ به دیجیتال برای تبدیل سیگنال های آنالوگی استفاده می‌شود. مثل کم و زیاد کردن صدای میکروفن و یا کاهش و افزایش شدت نور که از طریق سیگنال های آنالوگ قابل تغییر است. از ADC در Pico برای تبدیل سیگنال آنالوگ مانند ولتاژ به یک فرم دیجیتالی تا توسط میکروکنترلر قابل خواندن و پردازش باشد. بسیاری از میکروکنترلرها دارای ADC داخلی هستند و همچنین برای راحتی استفاده ماژول های آماده با قابلیت اتصال چندین ADC تولید و طراحی شده است.  تا اینجا متوجه شدیم مبدل ADC، یک مبدل دیتا است که با رمزگذاری سیگنال آنالوگ در کد باینری، به بردهای امبدد مثل رزبری پای، آردوینو اجازه می دهد تا با دنیای واقعی ارتباط برقرار کنند. در دنیای واقعی ، سیگنال های آنالوگ به طور مداوم مقادیری را تغییر می دهند که از منابع و سنسورهای مختلفی گرفته می شوند که می توانند صدا ، نور ، دما یا حرکت را اندازه گیری کنند و بسیاری از سیستم های دیجیتال با اندازه گیری سیگنال های آنالوگ از این مبدل ها با محیط خود در ارتباط هستند. در حالی که سیگنال های آنالوگ به صورت مداوم دیتا را تغییر میدهند و از سمتی دیگر بردهای دیجیتال با سیگنال باینری کار می کنند که فقط دارای دو حالت گسسته هستند ، منطق “۱” (HIGH) یا منطق “۰” (LOW). یا یک یا صفر اولین نکته ای که همیشه برای یادگیری از آن استفاده می‌شود. دنیای دیجیتال فقط عدد ۱ یعنی فعال و عدد صفر یعنی غیرفعال را درک می‌کند. اما در دنیای آنالوگ بین ۰ و ۱ هزاران عدد وجود دارد که توسط سیگنال های آنالوگ قابل تفکیک است.

شماتیک آنالوگ به دیجیتال یا ADC - دیجی اسپارک

 

اکثر میکروکنترلرها دارای ADC داخلی هستند و همچنین قابلیت اتصال ADC خارجی به میکروکنترلر هم از طریق پروتکل ارتباطی I2C به میکروکنترلرها فراهم شده است. معمولا مبدل های ADC بین ۱۰ تا ۱۲ بیتی هستند که بین ۱۰۲۴ تا ۴۰۹۶ سطح متفاوتی دارند.

 


پایه های ADC رزبری پای پیکو


تراشه RP2040 در مجموع دارای ۵ کانال ADC است که چهار پایه از آن ها به صورت ۱۲ بیت SAR است که به ترتیب GP26, GP27, GP28 و GP29 است. سیگنال ورودی برای ADC0,ADC1,ADC2, ADC3 به ترتیب به پایه های  GP26, GP27,GP28,GP29 وصل شده است. بر روی برد پیکو GP29 مستقیم به VSYS وصل شده است. رنج استاندارد ADC بین ۰ تا ۳٫۳ ولت است. هر ۵ کانال ADC به سنسور دمای داخلی برد متصل است و برای اندازه گیری دما هم استفاده می‌شود.  رابط ADC در RP2040 فاقد رفرنس است و به همین دلیل از تغذیه ۳٫۳ ولت داخلی تراشه استفاده می‌کند. در پیکو پایه ADC_AVDD از SMPS 3.3 ولت با استفاده از فیلتر R-C تغذیه می‌شود. ADC جریان زیادی در مدار مصرف میکند تا جایی که در صورت غیرفعال بودن حسگر دما تا حدود ۱۵۰ میلی آمپر جریان کشیده و به همین دلیل جریان ماسفت برابر ۱۵۰μA*200 = ~30mV خواهد بود. با استفاده از تغییر مقاومت بین پایه VREF و پایه ۳٫۳ ولت میتواند تا حدودی ماسفت و نویز ایجاد شده را کاهش دهد. برای استفاده از پایه های ADC کافیست از پین های GP26-GP27 و GP28 استفاده کنید.

پایه های ADC رزبری پای پیکو pico - دیجی اسپارک

 


کلاس ADC در Pico


کلاس ADC یک رابط برای تبدیل آنالوگ به دیجیتال فراهم می‌کند که ولتاژ پیوسته ای ایجاد کرده که میتوان ولتاژ را به یک مقدار از هم گسستته تبدیل کرد. روش فراخوانی کلاس به صورت زیر است. توسط دستور اول یک آبجکت ADC ساخته شده که به یک پایه نسبت داده می‌شود. سپس در دستور دوم مقدار خام آنالوگ از ورودی خوانده شده و این عدد دریافتی بین بازه ی ۰ تا ۶۵۵۳۵ خواهد بود.

 

جهت دسترسی به این بخش، اشتراک اسپارکر پلاس تهیه کنید.

 


مثال ADC در Pico پیکو


رزبری پای پیکو دارای پین های ورودی است که میتوانند سیگنال آنالوگ را دریافت کنند. این به این معنی است که علاوه بر خواندن دیتای ۰ و ۱ دیتای دریافتی بین این دو را هم میتواند بخواند. برای اجرای یک مثال و درک عمیق تر رابط ADC به یک پتانسیومتر و یا یک ولوم نیاز داریم. برای کدنویسی در ابتدا یک پایه برای ورودی آنالوگ در برنامه تعریف می‌کنیم. برای اجرای پروژه به یک ولوم و رزبری پای پیکو و THONNY PYTHON IDE نیاز داریم. همانند زیر اتصالات را انجام دهید.

  •  پایه مقاومت متغیر یعنی پایه وسط را به GP26 پایه ۱۰ از سمت راست متصل کنید. GP26= ADC0
  • پایه ی دیگر مقاومت را به پایه ۳٫۳ ولت رزبری پای پیکو یعنی ۵ پایه از سمت راست متصل کنید.
  • پایه دیگر مقاومت را به یکی از پایه های GND به دلخواه اتصال دهید.

مثال ADC در رزبری پای پیکو pico - دیجی اسپارک

 

کد ADC در Pico با میکروپایتون در THONNY PYTHON IDE به صورت زیر است:

 

کد نویسی میکروپایتون مثال ADC در رزبری پای پیکو - دیجی اسپارک

 

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

کد نویسی ADC در رزبری پای پیکو - دیجی اسپارک

 

رنج ADC در رزبری پای پیکو - دیجی اسپارک

 

به یک روش دیگر هم میتوان کد پایتون را نوشت. این کد دقیقا عملکردی مشابه با کد اول را دارد و فقط روش فراخوانی و استفاده از کلاس ها تغییر کرده است. دیتای دریافتی از ورودی آنالوگ در یک متغیر با نام analog_value ذخیره شده است. سپس دیتا توسط کلاس adc خوانده شده و در متغیری به نام reading ذخیره شده است و در نهایت پیغام ADC به همراه reading در دستور print برای جاپ در shell تعریف شده است.

 

جهت دسترسی به این بخش، اشتراک اسپارکر پلاس تهیه کنید.

 

کد نویسی میکروپایتون راه اندازی ADC رزبری پای پیکو - دیجی اسپارک

 


وسایل مورد نیاز


رزبری پای پیکو Raspberry Pi PICO

ولوم -مقاومت متغیر

برد بورد

کابل نری به نری

برنامه نویسی میکروپایتون با رزبری پای پیکو راه اندازی ADC - دیجی اسپارک

 


جمع بندی لیدی پای


اکثر میکروکنترلرهایی که این روزها با آن ها پروژه های مختلف پیاده سازی می‌کنیم از رابط ADC برای تبدیل سیگنال آنالوگ به دیجیتال استفاده می‌کنند. بسیاری از سنسورهایی که با آن ها سر و کار داریم دارای ورودی آنالوگ هستند و برای دریافت دیتا و خواندن دیتا از آن ها نیاز به ADC خواهیم داشت. ADC در میکروکنترلرها ۱۲ تا ۱۴ بیت است که رزبری پای پیکو دارای ADC به صورت ۱۲ بیتی است. تراشه RP2040 در مجموع دارای ۵ کانال ADC است که چهار پایه از آن ها به صورت ۱۲ بیت SAR است که به ترتیب GP26, GP27, GP28 و GP29 است. سیگنال ورودی برای ADC0,ADC1,ADC2, ADC3 به ترتیب به پایه های  GP26, GP27,GP28,GP29 وصل شده است که در این آموزش یک مثال برای دریافت و خواندن دیتا از پایه GP26 اجرا شده است.

 

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

 

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

پریسا پوربلورچیان

تولید کننده محتوا / کارشناس IOT

زندگی یعنی پژوهش و فهمیدن چیزی جدید

تلاشم بر این است تجربیاتم در زمینه IOT‌ را به بهترین شکل با شما در میان بگذارم.

تبادل نظر و رفع عیب با ثبت دیدگاه