جستجو برای:
سبد خرید 0
  • خانه
  • وبلاگ
  • کتاب
  • محصولات
    • برنامه نویسی میکروکنترلرها با پایتون
  • تماس با ما
ورود
[suncode_otp_login_form]
گذرواژه خود را فراموش کرده اید؟
عضویت
[suncode_otp_registration_form]

داده های شخصی شما برای پشتیبانی از تجربه شما در این وب سایت، برای مدیریت دسترسی به حساب کاربری شما و برای اهداف دیگری که در privacy policy ما شرح داده می شود مورد استفاده قرار می گیرد.

آموزش تکنولوژِی با رهنوتک
  • خانه
  • وبلاگ
  • کتاب
  • محصولات
    • برنامه نویسی میکروکنترلرها با پایتون
  • تماس با ما
شروع کنید
آخرین اطلاعیه ها
لطفا برای نمایش اطلاعیه ها وارد شوید
0

وبلاگ

آموزش تکنولوژِی با رهنوتک > اخبار > میکروکنترلر > RPI pico > راه اندازی ADC رزبری پای پیکو – Raspberry Pi Pico ADC

راه اندازی ADC رزبری پای پیکو – Raspberry Pi Pico ADC

1 دی 1403
ارسال شده توسط اساتید رهنوتک
میکروکنترلر، RPI pico
rpi pico adc pot

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

ADC چیست؟

پردازنده‌ها تنها توانایی پردازش سیگنال‌های دیجیتال را دارند و برای آنکه بتوانند از اطلاعات یک سیگنال آنالوگ استفاده کنند ابتدا باید این سیگنال به فرمت دیجیتال تبدیل شود. یعنی اینکه اولا از حالت پیوسته در زمان به حالت گسسته در زمان درآیند و ثانیا دامنه سیگنال از حالت پیوسته به حالت گسسته درآید. یک سیگنال دیجیتال آرایه‌ای از اعداد است که هر عدد معرف دامنه سیگنال در آن لحظه از زمان می‌باشد. عملیات گسسته کردن سیگنال آنالوگ در زمان را نمونه برداری و عملیات گسسته کردن دامنه سیگنال آنالوگ را کوانتیزاسیون نامند.

analog vs digital

وظیفه ADC تبدیل سیگنال آنالوگ به دیجتال است تا پردازنده بتواند از آن استفاده کند. سه پارامتر مهم در ADCها عبارتند از

  • حداکثر نرخ نمونه برداری
  • رزولوشن
  • ENOB

نرخ نمونه برداری یعنی اینکه ADC با چه سرعتی می‌تواند از سیگنال آنالوگ نمونه برداری کند. به عنوان مثال یک ADC با نرخ نمونه برداری 100KSPS می‌تواند در هر ثانیه 100 هزار نمونه از سیگنال بردارد که معادل زمان هر 10 میکروثانیه یک نمونه است.

رزولوشن نمونه برداری یعنی اینکه اعداد دیجیتالی که از نمونه‌ها بدست آمده‌اند چندبیتی هستند. به بیان ساده‌تر رزولوشن نمونه برداری قدرت تفکیک بین مقدار نمونه‌ها است. رزولوشن‌های پرکاربرد عبارتند از 8bit, 10bit, 12bit, 16bit, 24bit, 32bit

ENOB معیاری برای ارزیابی کیفیت ADC است. مدارات ADC دارای نویزهایی هستند که بر کیفیت داده‌برداری اثر می‌گذارند. در یک ADC ایده‌آل عدد ENOB همان رزولوشن ADC است اما در دنیای واقعی ENOB عددی کمتر از رزولوشن است و در واقع تعداد بیت‌هایی است که در اثر تغییر در سیگنال ورودی ایجاد می‌شوند و نه نویز مدارات داخلی ADC. به عنوان مثال ENOB یک ADC با رزولوشن 16bit ممکن است به 14bitهم نرسد.

اگر فرکانس نمونه برداری یا رزولوشن کافی نباشند برخی از اطلاعات سیگنال از دست خواهند رفت. مقدار فرکانس نمونه برداری توسط رابطه نایکوییست (حداقل دو برابر بالاترین فرکانس موجود در سیگنال) و رزولوشن توسط ماهیت سیگنال و نوع استفاده‌ای که قرار است از آن بشود بدست می‌آید.

sampling rate
adc resolution

البته به جز نرخ نمونه‌برداری و رزولوشن، پارامترهای دیگری در ADCها وجود دارد که مورد بحث این مقاله نیستند مانند

  • تعداد کانال‌ها
  • میزان اثر کانال‌ها بر یکدیگر (برای چند کاناله‌ها)
  • نوع تغذیه
  • رنج ورودی
  • فرمت خروجی
  • درگاه ارتباطی
  • تحمل شرایط محیطی

واحد ADC رزبری پای پیکو

میکروکنترلر RP2040 که برد Raspberry Pi Pico بر اساس آن توسعه داده شده است دارای یک ADC پنج کاناله است که کانال پنجم به صورت داخلی به سنسور دمای چیپ RP2040 متصل شده است. چهار کانال دیگر از چیپ بیرون آورده شده‌اند و روی پایه‌های GP26, GP27, GP28, GP29 در دسترس هستند.البته کانال چهارم درون برد برای خواندن ولتاژ ورودی به برد (VSYS) مورد استفاده قرار گرفته و سه کانال دیگر برای استفاده کاربر از برد بیرون آورده شده‌اند.

GP26ADC channel 0
GP27ADC channel 1
GP28ADC channel 2
VSYSADC channel 3
Internal Temperature SensorADC channel 4

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

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

ویژگی‌های اصلی واحد ADC رزبری پای پیکو عبارتند از

  • ساختار SAR
  • ماکزیمم نرخ نمونه‌برداری 500KSPS
  • رزولوش 12bit
  • کیفیت 8.7ENOB
  • 5 کانال مالتی پلکس شده
  • درای بافر FIFO ورودی
  • مجهز به اینتراپت
  • مجهز به DMA

اگر مایل به مطالعه عمیق‌تر در مورد بخش ADC هستید می‌توانید به دیتاشیت RP2040 مراجعه کنید.

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

برای راه‌اندازی ADC رزبری پای پیکو ابتدا باید یک ولتاژ آنالوگ روی یکی از کانال‌های ADC ایجاد کنیم. راه‌های متنوعی برای این کار وجود دارد مانند تقسیم مقاومت، استفاده از سنسورهای با خروجی آنالوگ (مانند LM35) ، استفاده از مدارهای مبدل پالس به آنالوگ (مانند انتگرالگیر). ساده‌ترین راه استفاده از یک پتانسیومتر به عنوان مقسم ولتاژ است که در خروجی یک ولتاژ آنالوگ بین 0 تا VCC را ایجاد خواهد کرد. برای این کار از پایه 38 برد (به عنوان GND)، پایه 36 برد (به عنوان VCC) و پایه 34 برد (به عنوان ورودی آنالوگ) به صورت زیر استفاده می‌کنیم.

rpi pico adc pot

برای نوشتن کد در اولین قدم کلاس ADC و کلاس Pin را از ماژول machine فراخوانی می‌کنیم. کلاس ADC برای کار با واحد ADC رزبری پای پیکو استفاده می‌شود و کلاس Pin برای اختصاص دادن پین ورودی به ADC مورد نیاز است. همچنین از ماژول utime متد sleep_ms را فراخوانی می‌کنیم تا برای ایجاد تاخیر در کد از آن استفاده کنیم.

from machine import ADC, Pin
from utime import sleep_ms

در ادامه یک آبجکت با نام pot_adc از کلاس ADC ساخته و Pin(28) را به عنوان پایه ورودی ADC به آن معرفی می‌کنیم. دقت داشته باشید Pin(28) میکروکنترلر RP2040 روی برد به پایه 34 متصل است. اگر تمایل به مطالعه بیشتر در مورد کلاس Port و نحوه استفاده از آن در میکروپایتون دارید می‌توانید به مقاله راه اندازی پایه های رزبری پای پیکو مراجعه کنید.

pot_adc = ADC(Pin(28))

در نهایت با استفاده از متد read_u16 مقدار ADC را در قالب یک عدد 16bit می خوانیم. دقت داشته باشید رزولوشن ADC رزبری پای پیکو 12 بیتی است و این عدد 16 بیتی حاصل کتابخانه پایتون است که در واقع با یک عملیات ریاضی به رنج 16 بیت scale شده است. برای تبدیل این عدد 16 بیتی به مقدار واقعی ولتاژ باید ابتدا آن را به عدد 65535 تقسیم کرده و سپس در عدد 3.3 ضرب کنید.

while  True :
    pot_value_u16 = pot_adc.read_u16()
    pot_value_voltage = (pot_value_u16/65535)*3.3
    print(pot_value_voltage)
    sleep_ms(1000)

کد کامل راه‌اندازی ADC رزبری پای پیکو به صورت زیر است :

from machine import ADC, Pin
from utime import sleep_ms


pot_adc = ADC(Pin(28))


while  True :
    pot_value_u16 = pot_adc.read_u16()
    pot_value_voltage = (pot_value_u16/65535)*3.3
    print(pot_value_voltage)
    sleep_ms(1000)
    

در پایان

در این مقاله توضیحاتی راجع به این موضوع که ADC چیست بیان کردیم و در ادامه واحد ADC رزبری پای پیکو را راه‌اندازی کردیم. بسیار خوشحال خواهیم شده اگر تجربه‌ای در مورد کار با ADC رزبری پای پیکو دارید و یا راجع به مقاله نظری دارید آن را در بخش نظرات با ما و دیگر دوستانتان به اشتراک بگذارید.

برچسب ها: adcmicropythonraspberrypi picoرزبری پای پیکو
قبلی راه اندازی SPI رزبری پای پیکو - Raspberry Pi Pico SPI
بعدی PIO چیست؟

پست های مرتبط

what is micropython

5 دی 1403

میکروپایتون چیست؟ what is micropython

اساتید رهنوتک
ادامه مطلب
what is pio

3 دی 1403

PIO چیست؟

اساتید رهنوتک
ادامه مطلب
rpi-spi

4 مرداد 1403

راه اندازی SPI رزبری پای پیکو – Raspberry Pi Pico SPI

اساتید رهنوتک
ادامه مطلب
spi

4 مرداد 1403

SPI چیست؟

اساتید رهنوتک
ادامه مطلب

4 مرداد 1403

راه اندازی PWM رزبری پای پیکو – Raspberry Pi Pico PWM

اساتید رهنوتک
ادامه مطلب

دیدگاهتان را بنویسید لغو پاسخ

جستجو برای:
دسته‌ها
  • RPI pico
  • پروتکل‌های ارتباطی
  • میکروکنترلر
برچسب‌ها
adc micropython pio raspberrypi pico رزبری پای پیکو میکروپایتون
در باره ما

ما آموزشگاه آفلاین رهنوتک را راه‌اندازی کرده‌ایم تا آموزش‌های به روز در زمینه تکنولوژی را به مهندسان عرضه کنیم.

هدف ما از یک سو ایجاد پلی میان دانشجویان با بازار کار و از طرف دیگر ارتقای مهندسین شاغل در حوزه تکنولوژی است.

دسترسی سریع
  • دوره ها
  • اخبار
  • تماس با ما
© 1403 - آموزشگاه آفلاین رهنوتک