اصطلاحات ADC در میکروکنترلرهای STM32F1

توسط | 19 اسفند, 1398 | STM32, میکروکنترلر, وبلاگ | 6 دیدگاه ها

اصطلاحات-adc-stm32

آموزش STM32 یوبرد

شروع بازی ST

آموزش های رایگان STM32

فیلم های آموزش STM32

آموزش خصوصی STM32

اخبار جدید یوبرد در اینستاگرام

ADC در میکروکنترلرهای STM32F1 یک واحد مهم است که در کنار واحدهای دیگر در داخل میکروکنترلر قرار گرفته است. ADC مخفف Analog to Digital Converter به معنی مبدل آنالوگ به دیجیتال است. مبدل آنالوگ به دیجیتال STM32F1 دوازده بیتی است. در ادامه با بخشی از آموزش ADC در STM32 با موضوع اصطلاحات ADC در میکروکنترلرهای STM32F1 با ما همراه باشید.

زمانی که بخواهیم یک سیگنال آنالوگ را به عنوان ورودی به میکروکنترلر STM32 بدهیم، باید از پایه های ADC استفاده کنیم. همۀ آی سی های دیجیتال از جمله میکروکنترلرها تنها قابلیت فهم و تحلیل سیگنال های دیجیتال را دارد. بنابراین در صورت ورود یک سیگنال آنالوگ، به بلوکی به نام ADC جهت تبدیل سیگنال آنالوگ به دیجیتال نیاز است. بلوک ADC سیگنال آنالوگ ورودی یک میکروکنترلر را به عنوان ورودی از پایه های مخصوص خود دریافت می کند و در نهایت، خروجی را در یک رجیستر قرار می دهد. به این معنی که ورودی بلوک ADC، آنالوگ و خروجی این بلوک دیجیتال است. برای آشنایی با واحد ADC میکروکنترلرهای AVR به نوشتۀ «آموزش مبدل آنالوگ به دیجیتال ADC میکروکنترلرهای AVR» مراجعه فرمایید.

راه اندازی ADC در AVR               (فیلم آموزش AVR مقدماتیفیلم آموزش ADC در میکروکنترلرهای AVR)

راه اندازی ADC در STM32         (فیلم آموزش ARM STM32 مقدماتیفیلم آموزش ADC در STM32)

راه اندازی ADC در آردوینو           (فیلم آموزش آردوینو مقدماتیفیلم آموزش ADC در آردوینو)

رزولوشن و فرکانس نمونه برداری در ADC

در ADC دو موضوع مهم دارد. به این معنی که اگر بخواهید ADC دو میکروکنترلر را بررسی کنید، باید به این دو موضوع توجه کرده و آن ها را با یکدیگر مقایسه کنید. آموزش این دو موضوع از ارکان مهم آموزش ADC STM32 است.

دقت ADC یا رزولوشن ADC

دقت یا رزولوشن ADC به تعداد حالاتی می گوییم که ولتاژ مرجع ADC بر آن تقسیم می شود. رزولوشن ADC بر اساس بیت بیان می شود. مثلاً می گوییم ADC میکروکنترلر STM32F1 برابر 12 بیت است. بنابراین ولتاژ مرجع بر 2 به توان 12 تقسیم می شود. هر چه رزولوشن ADC بیشتر باشد، دقت ADC بالاتر خواهد بود. یک مثال دیگر این است که اگر ADC میکروکنترلر مورد نظر ما 8 بیتی باشد و ولتاژ مرجع میکروکنترلر 3.3 ولت باشد، برای محاسبۀ دقت این بلوک ADC لازم است تا مقدار 3.3 ولت را بر 2 به توان 8 تقسیم کنید. یعنی دقت اندازه گیری این بلوک ADC در این میکروکنترلر حدوداً 0.0129 ولت خواهد بود. پس اگر ورودی بلوک ADC، 0.001 ولت باشد، بلوک ADC مقدار 0 (از 255) را در خروجی قرار می دهد و اگر ولتاژ ورودی 0.013 ولت باشد، بلوک ADC مقدار 1 (از 255) را در خروجی قرار می دهد. اگر مقدار ولتاژ ورودی برابر 3.3 ولت باشد، خروجی ADC برابر 255 خواهد بود. با توجه به این توضیح می توان گفت اگر ورودی آنالوگ بین صفر تا Vref تغییر کند، خروجی دیجیتال بین صفر تا 2n – 1 تغییر می کند. برای مشاهدۀ فرمول محاسبۀ خروجی ADC نسبت به ورودی آنالوگ، به نوشتۀ آموزش ADC میکروکنترلرهای AVR مراجعه کنید.

فرکانس نمونه برداری ADC

به عنوان مثال، بلوک ADC یک میکروکنترلر دارای فرکانس نمونه برداری 100 کیلوهرتز است. این فرکانس اهمیت بسیار زیادی دارد. چون اگر فرکانس کاری سیگنال ورودی 200 باشد، این یعنی فرکانس نمونه برداری میکروکنترلر، نصف فرکانس سیگنال مورد نظر است. در نتیجه در هر دو سیکل از سیگنال، تنها یک نمونه از سیگنال خواهیم داشت در صورتی که بنابر نیاز گاهی لازم است از سیگنال ورودی در هر سیکل ده الی بیست بار نمونه برداری شود پس باید فرکانس نمونه برداری بلوک ADC میکروکنترلر ده الی بیست برابر فرکانس سیگنال ورودی مورد نظر باشد.

فرکانس نمونه برداری ADC، در برخی کاربردها بسیار اهمیت دارد و در برخی از کاربردهای دیگر اهمیت به سزایی ندارد. برای مثال زمانی که دما اندازه گیری می شود در هر دقیقه و هر ساعت دما تغییر زیادی نخواهد داشت، در نتیجه نمونه برداری های زیادی نیز در هر ساعت لازم نیست.

 

تقسیم بندی ADC بر اساس عملکرد و ساختار داخلی

ADC ها را بر اساس نحوۀ عملکرد و ساختار داخلی به چهار روش اصلی تقسیم می کنند:

  • روش Flash ADC یا روش آنی یا همزمان؛
  • روش Sigma ADC ؛
  • روش Successive Approximation ADC یا ADC تقریب متوالی؛
  • روش ADC Comparison .

هر کدام از روش ها، دارای معماری داخلی متفاوتی هستند و هر کدام با استفاده از روشی به خصوص سیگنال آنالوگ را به سیگنال دیجیتال تبدیل می کنند. اما این تبدیل در هر چهار روش به دو مرحلۀ ثابت Sample and Hold و Quantizer تقسیم می شود.

 

بررسی چند اصطلاح در واحد ADC در میکروکنترلرهای STM32F1

اکنون می خواهیم چند اصطلاح معروف و کاربردی مربوط به  واحد ADC در میکروکنترلرهای STM32F1 را بررسی کنیم.

مد Dual در ADC و مد Independent در ADC

میکروکنترلرهای STM32F1 دارای چند واحد ADC است. اگر از هر کدام از این واحدهای ADC به صورت جداگانه و مستقل استفاده شود، به آن مد Independent گفته می شود و اگر از دو واحد ADC به صورت همزمان استفاده شود، به آن، مد Dual  گفته می شود. به عنوان مثال اگر ما از ADC1 و ADC2 به طور همزمان استفاده کنیم، می توان دو مقدار را به صورت همزمان تبدیل کرده و دریافت کرد. مثلاً زمانی که بخواهید مقدار دما و رطوبت را در هر لحظه داشته باشید، می توانید از مد Dual استفاده کنید. در این مد تنها می توان از دو واحد ADC به صورت همزمان استفاده کرد و اگر میکروکنترلر ما دارای سه واحد ADC باشد، ADC سوم باید به صورت مستقل و جدا مورد استفاده قرار می گیرد.

مد Single Channel در ADC  و مد Multi Channel در ADC

می دانیم واحد ADC در میکروکنترلرهای STM32F1 دارای چندین پایه است. اگر تنها یک پایه را به عنوان ورودی ADC بخوانیم، یعنی از مد Single Channel در ADC استفاده کرده ایم و اگر چند پایه را به عنوان ورودی قرائت کنیم، یعنی از مد Multi Channel در ADC استفاده کرده ایم. به عنوان مثال فرض کنید بخواهید از پورت A1  که دارای قابلیت ADC است استفاده کنید و از پایه های دیگر پورت A نیز به عنوان GPIO بهره ببرید. در این حالت لازم است تا ADC را بر روی کانال Single تنظیم کنید.

مد تبدیل Single در ADC و مد تبدیل Continuous در ADC

اگر در هنگام وقوع یک واقعه، عمل نمونه برداری از سیگنال ورودی  آنالوگ و تبدیل آن به سیگنال دیجیتال صورت گیرد، می گوییم مد تبدیلSingle  است و اگر ورودی آنالوگ به صورت مداوم به میکروکنترلر وارد شود و تبدیل آنالوگ به دیجیتال به صورت مداوم انجام شود، به این حالت مد تبدیل Continuous  می گویند.

مد تبدیل Regular در ADC و مد تبدیل Injected در ADC

زمانی که از سیگنال آنالوگ ورودی، نمونه برداری انجام می شود، مقادیر نمونه برداری شده جهت تبدیل می تواند وارد مد تبدیلRegular  و یا مد تبدیل Injected شود. تفاوت میان این دو مد در اولویت آن هاست. مد تبدیل Injected دارای اولویت بالاتری نسبت به مد تبدیل Regular است. به این معنی که اگر یک تبدیل در مد تبدیل Regular در حال انجام باشد و در همان زمان یک تبدیل جدید بخواهد در مد تبدیل Injected شروع شود، عملیات تبدیل در مد تبدیل Regular متوقف شده، تبدیل با مد تبدیل Injected شروع می شود و به طور کامل انجام می شود و در نهایت پس از اتمام عملیات تبدیل در مد تبدیل Injected، مد تبدیل Regular که کار خود را نیمه کاره رها کرده بود، از ابتدا دوباره شروع به کار می کند و تبدیل خود را کامل می کند.

داشتن دو واحد برای انجام تبدیل آنالوگ به دیجیتال در میکروکنترلرهای STM32F1، باعث می شود که مدهای عملیاتی مختلفی وجود داشته باشد و کار با واحد ADC در میکروکنترلرهای STM32F1 دارای انعطاف بیشتری باشد.

 

کاربرد ADC در میکروکنترلرهای STM32F1

از کاربردهای ADC در میکروکنترلرهای STM32 می توان به تبدیل خروجی سنسورهای آنالوگ دما به دیجیتال، تبدیل سیگنال صوت به دیجیتال، تبدیل سیگنال سنسور وزن، تبدیل سیگنال سنسور اکسیژن، تبدیل سیگنال سنسور دود (سنسورهای دود اکثراً به صورت آنالوگ هستند اما به تازگی سنسورهای دیجیتال دود نیز روانۀ بازار شده است)، آمپرمتر، ولت متر، اسیلوسکوپ، فتوسل (مقاومت متغیر با نور) و … اشاره کرد. به صورت کلی هر عنصری که خروجی اش آنالوگ باشد و بخواهیم به عنوان ورودی به میکروکنترلر دهیم، به بلوک ADC نیاز دارد.

1-کاربرد-adc-فتوسل

تصویر 1 – تصویر یک فتوسل

2-کاربرد-adc-سنسور-دود

تصویر 2 – تصویر یک  سنسور دود

3-کاربرد-adc-سنسور-وزن

تصویر 3 – تصویر یک  سنسور وزن

4-کاربرد-adc-میکروکنترلرهای-stm32f1-اسیلوسکوپ

تصویر 4 – تصویر اسیلوسکوپ

از بررسی اصطلاحات ADC در میکروکنترلرهای STM32F1 نتیجه می گیریم:

  1. جهت پردازش هر سیگنال آنالوگ با میکروکنترلرها باید از واحد ADCآنها استفاده شود.
  2. رزولوشن ADC یک ملاک بسیار مهم است که به معنی مقدار هر Stepو در نهایت دقت اندازه گیری می باشد.
  3. فرکانس نمونه برداری ADC در میکروکنترلرهای STM32F1 را باید با توجه به نیاز و کاربرد تعیین کرد.
  4. ADC در میکروکنترلرهای STM32F1 دارای رزولوشن 12 بیتی است.
  5. برای اندازه گیری خروجی بسیاری از سنسورها با میکروکنترلرها، نیاز به استفاده از واحد ADC است. عوامل محیطی مانند دما، وزن، دود، اکسیژن و … .
  6. اگر از هر واحد ADC در میکروکنترلرهای STM32F1 به صورت جدا و مستقل استفاده شود، یعنی از واحد ADC در مد Independent استفاده شده است.
  7. تفاوت میان دو مد تبدیل Regular و مد تبدیل Injected ، در اولویت آن ها در انجام تبدیل آنالوگ به دیجیتال است.

 

رضا اسدی

رضا اسدی

مدیر یوبرد، خالق و توسعه دهندۀ پلتفرم یوبرد، مجری پروژه های الکترونیکی، فعال در صنعت آسانسور، سابقه فعالیت در صنعت خودرو و همکاری در صنعت پزشکی و صنایع دیگر، آموزگار آموزش های یوبرد

سفارش پروژه میکروکنترلر یوبرد

زیرساخت مطمئن صنعت

جدیدترین تاپیک های STM32

میکروکنترلر ARM

میکروکنترلر ARM چیست؟ پردازندۀ ARM

میکروکنترلر ARM ، میکروکنترلرهایی هستند که پردازندۀ آنها ساخت شرکت ARM است. شرکت ARM سازندۀ میکروکنترلر نیست. سازندۀ پردازنده (CPU) است. امروزه به میکروکنترلرهایی که پردازندۀ آنها طراحی شدۀ شرکت ARM باشد، میکروکنترلر ARM گفته می شود.

راه-اندازی-dac-stm32

راه اندازی DAC در STM32

راه اندازی DAC در STM32، ویژگی های DAC در میکروکنترلرهای STM32F1، بلوک دیاگرام DAC در STM32، اتصالات راه اندازی DAC در میکروکنترلر STM32F107VC، نمونه کد رجیستری راه اندازی واحد DAC در میکروکنترلرهای STM32F1، ساخت موج سینوسی با STM32، راه اندازی مبدل دیجیتال به آنالوگ STM32 با توابع HAL

راه-اندازی-usart-stm32

راه اندازی UART در STM32، رجیستری و HAL

راه اندازی UART در STM32، اتصالات و نرم افزار مورد نیاز، نمونه کد USART در STM32 به صورت رجیستری، نمونه کد رجیستری USART با وقفۀ دریافت، نمونه کد HAL برای راه اندازی USART در STM32، نمونه کد HAL با وقفۀ دریافت، نحوه محاسبه Baud rate در USART میکروکنترلرهای STM32F1

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

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

نصب VisualGDB روی ویژوال استودیو، ساخت پروژه برای برنامه نویسی میکروکنترلرها با ویژوال استودیو، ساخت پروژه برای STM32 در ویژوال استودیو، کدنویسی STM32 در ویژوال استودیو، ساخت پروژه برای AVR در ویژوال استودیو، ساخت پروژه برای LPC در ویژوال استودیو، ساخت پروژۀ آردوینو در ویژوال استودیو

6 دیدگاه ها

  1. سلام آقای اسدی. لطفا توی یک چند جمله می فرمایید که ADC توی میکروکنترلرهای STM32 چه تفاوت هایی با ADC توی AVR داره؟

    پاسخ
    • سلام. من تفاوت های ADC میکروکنترلرهای سری STM32F1 و میکروکنترلرهای AVR ATmega128 رو به طور کلی میگم. توی ATmega128 ما یه واحد ADC داریم که 8 بیتیه. توی STM32F1 دو واحد ADC با رزولوشن 12 بیت داریم. ADC توی STM32F1 دارای سنسور دمای داخلیه همچنین یه Analog Watchdog در میکروکنترلرهای STM32 هست که میتونیم برای ورودی آنالوگ محدوده تعیین کنیم که در صورت خروج مقدار ورودی از اون محدوده، یه وقفه اتفاق میفته. به خاطر این که دو واحد ADC توی میکروکنترلرهای STM32F1 وجود داره، مفاهیمی مثل Dual Mode و Independent Mode به وجود میاد که توی متن توضیح داده شده. همچنین ADC توی میکروکنترلرهای STM32F1 تعداد وقفه های بیشتری نسبت به ADC میکروکنترلرهای ATmega128 وجود داره. برای آشنایی بیشتر با ADC در میکروکنترلرهای AVR به نوشتۀ آموزش ADC میکروکنترلرهای AVR مراجعه کنید.

      پاسخ
  2. سلام مطالب بسیار ساده ورروان بیان شده که نشان درک درست و عمیق شما از مباحث دارد و ممنون از اشتراک دانشتون. امیدوارم توضیحات بیشتری از بخش" تقسیم بندی ADC بر اساس عملکرد و ساختار داخلی" ارائه بدید .

    پاسخ
    • سلام دوست عزیز. ممنون از نظرتون . ان شاءالله در آینده این موضوع  رو مورد بحث قرار میدیم

      پاسخ
  3. با سلام و عرض ادب. من تو یک سایت دیدم که نوشته کنترل سطح اب با میکرو کنترل بدون نیاز به سنسور. ایا این امکان پذیر است؟
    بدین صورت که از adc استفاده میشه. یک پراب با مقاومت ۴۷ کیلو اهم و یک طرف سیم نیز به vcc وصل میشه.

    آیا این امکان پذیر است؟

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

      پاسخ

یک دیدگاه بنویسید

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

دیگر آموزش های یوبرد

آموزش TFT LCD با TouchGFX و STM32 یوبرد

گرافیک کاربرپسند با میکروکنترلر ST

آموزش FreeRTOS یوبرد

زمان واقعی در میکروکنترلر و پردازنده های کوچک با FreeRTOS

آموزش طراحی PCB و نویز یوبرد

تجسم دنیای الکترونیک

آموزش زبان C و MISRA-C یوبرد

گام نخست دنیای میکروکنترلر

آموزش لحیم کاری و IPC-A-610 یوبرد

ساخت دنیای الکترونیک

آموزش آردوینو یوبرد

جادۀ آسفالت میکروکنترلر

آموزش ماژول های SIM800 یوبرد

تلفن همراه صنعت

آموزش زبان ++C و ++MISRA-C یوبرد

لمس شی گرایی در میکروکنترلرها

آموزش میکروکنترلرهای AVR یوبرد

شاهکار 8 بیتی Atmel

آموزش میکروکنترلرهای LPC یوبرد

یادگار فیلیپس

آموزش های شاخص

دانلود

لطفا برای دریافت لینک دانلود اطلاعات خواسته شده را وارد نمایید
ضبط پیام صوتی

زمان هر پیام صوتی 4 دقیقه است