ARM, STM, STM8, آموزش, توصیه شده, مقاله

آموزش میکروکنترلر STM8 قسمت 12: مبدل آنالوگ به دیجیتال (ADC)

ADC in STM8

آموزش میکروکنترلر STM8 – قسمت دوازدهم ;

سیسوگ در قسمت یازدهم آموزش میکروکنترلر STM8 راه اندازی LCD کاراکتری توسط میکروکنترلر STM8 را آموزش داد. در این قسمت از مجموعه مقالات آموزش میکروکنترلر STM8 سیسوگ قصد دارد مبحث مهم  و کاربردی مبدل آنالوگ به دیجیتال (ADC) را آموزش دهد. با سیسوگ همراه باشید.

 

مبدل آنالوگ به دیجیتال (ADC):

گاهی لازم است ورودی آنالوگ به میکروکنترلر داده شود  و این ورودی مورد پردازش قرار گیرد. در میکروکنترلرهای مدرن امروزی مبدل آنالوگ به دیجیتال (ADC) قابلیت مهمی به شمار می آید. برای خواندن خروجی آنالوگ از سنسورها، اندازه گیری ولتاژ و غیره از ADC استفاده می شود. برای مثال، ما می‌توانیم از یک ADC  برای خواندن سنسور دمای LM35 استفاده کنیم. ولتاژ خروجی سنسور متناسب با درجه حرارت است و ما می‌توانیم از اطلاعات ولتاژ برای محاسبه دما استفاده کنیم. میکروکنترلر STM8  دارای چندین کانال و بلوک ADC است. به عنوان مثال، STM8S3F3 دارای 5 کانال و یک بلوک ADC است. ADC میکروکنترلر STM8 نیز مانند ADC دیگر میکروکنترلرهاست. تنها چند ویژگی اضافی دارد. شکل زیر نشانگر بلوک ADC میکروکنترلر STM8 است:

 

بلوک ADC میکروکنترلر STM8

 

قبل از استفاده از ADC، باید چند نکته را که باعث افزایش عملکرد ADC می‌شود، بیان کنم:

امپدانس ورودی باید کمتر از 10kΩ باشد.
بهتر است کلاک ADC را در حدود 4 مگاهرتز یا کمتر قرار دهید.
اشیمیت تریگر باید غیرفعال شود.
در صورت امکان، از بافر ورودی و مدار فیلتر استفاده کنید.
اگر ADC دارای پین رفرنس باشد، این پین باید به یک رفرنس دقیق مانند LM336 متصل شود. توصیه می‌شود از یک تراشه رگولاتور  LDO مناسب استفاده کنید.
پین‌های ADC که مورد استفاده قرار نمی‌گیرند باید غیرفعال یا پیکربندی شوند. این کار باعث کاهش مصرف برق خواهد شد.
خواندن ADC باید در فواصل زمانی منظم و ثابت باشد تا از نوسانات زمانی در خواندن ADC جلوگیری شود.
برای افزایش پایداری بهتر است از بیت‌های سمت راست (بیت های پرارزش ADC) استفاده کنید تا تأثیرات نویز را حذف نمایید.
فاصله ترک‌های PCB / سیم‌ها به کانال های ADC باید کوتاه باشد تا نویز را کاهش دهند.

 

اتصالات سخت افزاری

 

اتصالات سخت افزاری میکروکنترلر STM8

کد نمونه

 

توضیحات

در ابتدا، باید کلاک ماژول ADC را فعال کنیم:

 

در مرحله دوم، باید پین ADC را به عنوان یک GPIO شناور بدون وقفه تنظیم کنیم.

 

برای راه اندازی ADC  به اطلاعاتی در مورد کانال ADC مورد نظر نیاز است:

 

خط دوم تابع فوق بیان می کند که ما قصد داریم از کانال ADC 4 (PD3) بدون هیچ اشمیت تریگری استفاده کنیم. همچنین نمی خواهیم از تریگرهای خارجی ماژول GPIO استفاده کنیم. از آنجا که کلاک اصلی در 8 مگاهرتز در حال اجرا است، ADC با تقسیم کلاک اصلی / کلاک ADC فرکانس نمونه برداری 444 کیلوهرتز را دریافت می کند.همچنین می خواهیم از حالت تبدیل مستمر استفاده کنیم زیرا می خواهیم به طور مداوم ورودی ADC را بخوانیم و نمی خواهیم آن را در فواصل خاص اندازه گیری کنیم. در نهایت استفاده از بیت های سمت راست ADC باعث می شود مقدار پایدارتری داشته باشیم.

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

 

بقیه کد مربوط به چاپ داده های ADC بر روی LCD است.

 

مبدل ADC بر روی STM8

 

 

سیسوگ در قسمت سیزدهم قصد دارد تایمر نگهبان آنالوگ (AWD) را آموزش دهد. در ادامه آموزش های میکروکنترلر STM32 سیسوگ را همراهی کنید.

 

منبع

نوشته های مشابه

8 دیدگاه در “آموزش میکروکنترلر STM8 قسمت 12: مبدل آنالوگ به دیجیتال (ADC)

  1. سروش گفت:

    با عرض سلام و خسته نباشید
    در آموزش فوق عنوان کرده بودید از فیلتر استفاده بشه ، می خواستم ببینم چطور می شه این کارو کرد و البته از چه فیلتری ؟یعنی انقدر نویز روی سنسورهای حرارتی زیاده؟
    با تشکر از وقتی که برای آموزش بدون چشم داشت می گذارید.
    موفق باشید!

    1. زئوس Zeus زئوس Zeus گفت:

      سلام
      شاید مدار بدون فیلتر هم تا حدودی زیادی خوب کار کنه و با چند فیلتر نرم افزاری بشه کلا بی خیال مدارات فیلتر خارجی شد ؛ اما چیزی که مشخصه نویز همیشه توی همه شرایطی وجود داره و برای حصول نتیجه دلخواه لازمه که نویز های غیر ضرروری رو حذف کنید در واقع نتیجه ایده آل اینه ممکنه نویز تا حدود مشخصی نتیجه رو اینقدری روی نتیجه تاثیر گذار نباشه و بشه ازش چشم پوشی کرد
      به صورت میشه فیلتر رو پیاده سازی کرد ، یه شکل یک نرم افزار و با پردازش سینگال این کار رو انجام داد یا با استفاده از یک مدار خارجی !
      مدار فیلتر میتونه اکتیو یا پسیو باشه که نوع المان های مورد استفاده متفاوته و نوع فیلتر با نوع استفاده مشخص میشه
      اینجا منظور فیلتر پایین گذر مدنظر هست که در ساده ترین حالت ممکن با مقاومت و خازن میشه ساختش

    2. سروش گفت:

      دوست بزرگوار خیلی لطف کردی امیدوارم همواره موفق باشید .
      در نمونه برنامه ای فیلتر های FIR استفاده کرده بود . با متلب ضرایب فیلترو محاسبه کرده بود و بعد یه کد C++ واسش نوشته بود .
      خیلی متوجه نشدم چطور حساب کرده ولی امیدوارم خیلی زود بفهمم. 🙂
      در پناه خدا باشید.

      1. زئوس Zeus زئوس Zeus گفت:

        خواهش میکنم دوست عزیز
        نرم افزاری زیادی برای محاسبه فیلتر های دیجیتال و حتی آنالوگ وجود داره حتی برخی از این نرم افزار های کد برنامه رو هم تولید میکنند
        به عنوان نمونه میتونید نرم افزار filter solution رو سرچ کنید.

        1. سروش گفت:

          خیلی ممنون.
          خیلی لطف کردید.
          موفق و موید باشید!

          1. زئوس Zeus زئوس Zeus گفت:

            خواهش میکنم
            سلامت باشید

  2. Amir گفت:

    سلام
    کارتون عالیه
    کمتر کسیه که با STM8 کار کنه …
    ممنون از آموزش خوبتون

    1. N H N H گفت:

      سلام
      خواهش میکنم دوست عزیز… خوشحال میشیم اگه کمکی به یادگیری همراهان سیسوگ کرده باشیم

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

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