پروژه‌ی خواندن داده‌های سنسور گاز (MQ-2) با استفاده از میکروکنترلر STM32 از طریق ADC

0

در این مقاله نحوه‌ی استفاده از STM32CubeMX برای پیکربندی لوازم جانبی STM32L431RCT6، خواندن داده‌های سنسور گاز MQ-2 و ارسال آن از طریق پورت سریال با جزئیات کامل بیان شده است.

1. آماده‌سازی

آماده‌سازی سخت‌افزار

  • برد توسعه

در گام اول باید یک برد توسعه را آماده کرد:

• ماژول MQ-2

سنسور گاز MQ-2، به طور کلی در دستگاه‌های کنترل نشت گاز در خانه‌ها و کارخانه‌ها کاربرد دارد و برای تشخیص گاز مایع، بوتان، پروپان، متان، الکل، هیدروژن، دخانیت و غیره استفاده می‌شود.

نمودار شماتیک MQ-2:

آماده‌سازی نرم‌افزار

برای کامپایل و دانلود کد تولید شده، باید Keil-MDK و پکیج مربوط به تراشه را نصب کنید.

تولید پروژه‌ی MDK

انتخاب مدل تراشه

STM32CubeMX را باز کنید‌، سپس انتخابگر MCU را باز کنید:

تراشه STM32L431RCT6 را جستجو و انتخاب کنید:

منبع کلاک را پیکربندی کنید.

  • اگر می‌خواهید از کلاک پر سرعت خارجی (HSE) استفاده کنید، باید RCC را در System Core پیکربندی کنید.
  • اگر از کلاک داخلی پیش فرض (HSI) استفاده می‌کنید، می‌توانید از این مرحله صرف نظر کنید.
  •  

در اینجا از یک کلاک خارجی استفاده می‌کنیم:

پیکربندی درگاه سریال

برد توسعه Xiongpai دارای ST-Link به صورت on-board و یک درگاه سریال مجازی است.

نمودار شماتیک Xiongpai:

در این مقاله برای وصل کردن پورت سریال PC و USART1 سوئیچ را برروی AT-MCUMode تنظیم می‌کنیم. سپس، پیکربندی USART1 را شروع می‌کنیم.

پیکربندی ADC

مبدلAnalog-to-Digital  (ADC)، یک مبدل آنالوگ به دیجیتال بوده که می‌تواند سیگنال‌های آنالوگ را که به طور مداوم در حال تغییرند به سیگنال‌های دیجیتال گسسته تبدیل کند و سپس برای پردازش آنها از مدارهای دیجیتال استفاده می‌کند.

 

سری STM32L431xx دارای یک ADC با حداکثر رزولوشن 12 بیت بوده و هر ADC حداکثر 20 کانال سنجش دارد، تبدیل A/D این کانال‌ها را می‌توان در حالت تکی، پیوسته، sweep یا ناپیوسته اجرا کرد.

 نتایج ADC را می‌توان در حالت left-aligned یا right-justified در رجیستر داده 16 بیتی ذخیره کرد.

حداکثر نرخ تبدیل STM32L431 ADC مقدار 5.33 مگاهرتز می‌باشد، به این معنی که زمان تبدیل آن 0.188us  (با رزولوشن 12 بیتی) است. لازم به ذکر است که زمان تبدیل ADC هیچ ارتباطی با فرکانس کلاک درگاه AHB ندارد.

تعیین کانال ADC

پیکربندی ADC (حالت تبدیل تکی)

ابتدا ADC1 را انتخاب کنید و کانال 3 را باز کنید:

گام بعد، تنظیم کردن ADC است، در اینجا می‌توانیم تنظیمات را برروی حالت پیش‌فرض بگذاریم:

در نهایت، قواعد تبدیل ADC را تنظیم کنید:

 

مابقی تنظیمات را برروی حالت پیش فرض بگذارید.

پیکربندی درخت کلاک

بالاترین فرکانس STM32L4 مقدار 80M است، بنابراین PLL را پیکربندی کنید، و در نهایت از HCLK=80MHZ استفاده کنید:

ایجاد تنظیمات پروژه

تنظیمات تولید کد

درنهایت، تنظیمات ایجاد یک فایل اولیه‌ را به صورت جداگانه تنظیم کنید:

ایجاد کد

برای ایجاد پروژه‌ی MDK-V5 برروی GENERATE CODE کلیک کنید.

3. نوشتن، کامپایل و دانلود کد کاربر در MDK

بازخوانی تابع ()printf :

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

مطابق شکل زیر تابع main را اصلاح کنید:

int main(void);
{
    uint16_t smoke_value =0;
        
    HAL_Init();
        
    SystemClock_Config();
        
        
    MX_GPIO_Init();
    MX_ADC1_Init();
    MX_USART1_UART_Init();
        
while (1);
    {
    
    HAL_ADC_Start(&hadc1);                //start ADC single conversion
    HAL_ADC_PollForConversion(&hadc1, 50);//wait for ADC conversion to compleate
    smoke_value= HAL_ADC_GetValue(&hadc1); // Read ADC Conversion data
    printf("smoke_value = %d\n" , smoke_value);
    HAL_dELAY(500);
          
    }
}

        
             
        
        
 
Choose your Reaction!
دیدگاه خود را بنویسید

آدرس ایمیل شما منتشر نخواهد شد.

آخرین پست ها

redronic.com