محاسبه دقیق زمان، فرکانس برای اندازه گیری دمای داخلی میکروکنترلر

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

این آموزش به دو نیمه تقسیم می شود. ما با استفاده از دیتا شیت نحوه انجام این محاسبات را نشان خواهیم داد. نیمه اول آموزش شامل کنترلر STM32F103C8 و نیمه دوم STM32F767IIT خواهد بود.

اما این مختص این دو میکروکنترلر نیست. اگر همه موارد را با دقت بخوانید ، می توانید برای هر سری از میکروکنترلرهایی که دارید ، همان منطق را پیاده کنید.

 

با استفاده از میکروکنترلر  STM32F103

برخی از ویژگی های مهم ADC سری STM32 F1 ، از نظر محاسبه ، در زیر ذکر شده است:

  • در رزولیشن ۱۲ بیت، ثابت است و قابل تغییر نیست.
  • کلاک ADC از کلاک APB2 گرفته شده است و با استفاده از prescalar می توانیم کلاک ADC را بیشتر کنترل کنیم.
  • ماکزیمم کلاک ADC می تواند ۱۴ مگاهرتز باشد.

در تصویر زیر دیتا شیت راهنمای کنترل کننده F103 را مشاهده می کنید.

این نشان می دهد که ADC Conversion Time = Sampling Time + 12.5 Cycles است. در اینجا Sampling Time چیزی است که می توانید در هنگام نصب در CubeMX انتخاب کنید. در زیر فرمول اصلاح شده برای انجام این محاسبه آورده شده است.

می خواهم زمان تبدیل (Conversion Time) 17 میکرو ثانیه باشد. این یک زمان تصادفی نیست ، این کار لازمه سنسور دما داخلی میکروکنترلر است.

ما باید مقادیر Sampling Time و ADC Clock را به گونه ای انتخاب کنیم تا این ۱۷ میکرو ثانیه از زمان تبدیل (Conversion Time) را بدست آوریم.

برای انجام این کار امکانات زیادی وجود دارد و یکی از آنها این است که زمان نمونه برداری (Sampling Time) 71.5 سیکل را به همراه کلاک ADC 5 مگاهرتز انتخاب کنیم.

به روش مشابه ، فرکانس تبدیل را می توان با برگرداندن فرمول ذکر شده در بالا محاسبه کرد

با همان تنظیم زمان نمونه برداری (۷۱٫۵) و همان کلاک ADC 14 مگا هرتزی ، فرکانس تبدیل در حدود ۵۹ کیلوهرتز است.

 

با استفاده از میکروکنترلر  STM32F7

برخی از نکات کلیدی ADC از دیتا شیت F767IIT به شرح زیر است:

  • رزولوشن قابل تنظیم ۱۲ بیتی ، ۱۰ بیتی ، ۸ بیتی یا ۶ بیتی
  • زمان نمونه برداری ADC براساس رزولوشن انتخاب شده تغییر می کند.
  • کلاک ADC از کلاک APB2 استفاده می کند و می توان آن را با استفاده از prescalar پیکربندی کرد.

 

دیتا شیت این میکرو فرمولی را برای محاسبه تبدیل زمان دارد که مطابق شکل زیر است:

فرمول اصلاح شده برای محاسبه زمان تبدیل در زیر آورده شده است:

در اینجا ، چرخه ها به رزولوشن انتخابی شما برای ADC بستگی دارد:

 

For 12 bit Resolution CYCLES = 12

For 10 bit Resolution CYCLES = 10

For 6 bit Resolution CYCLES = 6

بقیه متغیرها مانند Sampling Time و ADC CLOCK در هنگام تنظیم قابل تنظیم هستند.

به عنوان مثال: – بگذارید بگوییم ما می خواهیم زمان تبدیل ADC  ( ADC conversion time) را روی ۱۰میکرو ثانیه ، برای سنسور دما باشد.

 

۱- کلاک APB2 را در ۵۰ مگاهرتز نگه دارید

۲- برای این منظور از وضوح ۱۲ بیتی استفاده می کنیم ، بنابراین چرخه ها = ۱۲ است

۳- از prescalar را تقسیم بر ۴ استفاده کنید. این باعث می شود ADC CLOCK به ۱۲٫۵ مگاهرتز برسد

۴- از زمان نمونه برداری ۱۱۲ چرخه استفاده کنید.

اکنون زمان تبدیل (conversion time):

مثال فوق فقط یکی از ترکیبات بسیاری است که می توانید برای همان زمان تبدیل انجام دهید.

 

همین تنظیم نیز منجر به تبدیل فرکانسی (Conversion Frequency):

می توانید همان منطق را برای میکروکنترلر های STM32 دیگری که دارید اعمال کنید. فقط به یاد داشته باشید که فرمول را در دیتاشیت آن میکرو جستجو کنید.


کاربرد بسیار مهم این پروژه:

کنترل دمای داخلی میکرو که با استفاده از یک فن می توان آن را کنترل کرد (مشابه فن CPU کامپیوتر)


جهت دانلود این آموزش به لینک زیر مراجعه کنید:

Internal Temperature in STM32