راه اندازی سنسور دمای میکروکنترلر STM32

 


مشاهده ی فیلم های اموزشی بیشتر درباره ی مبدل انالوگ دیجیتال


هدف از مثال زیر این است که شما با مبدل آنالوگ به دیجیتال ADC)) و طریقه­ ی راه­اندازی آن در میکروکنترلرهای ARM   آشنا شوید.

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

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


سخت افزار

برای تست این برنامه می­توانید دست خود روی میکروکنترلر قرار دهید یا از طریق هیتر و یا سشوار مقدار درجه حرارت محیط میکرو را تغییر دهید تا تغییرات به وجود آمده را مشاهده نمائید.

 

 

 

 

 

 

 


آشنایی و کار با برنامه

مقدار آنالوگ متصل شده به کانال 16 (ADC1) (خروجی سنسور)  در یک حلقه­ ی بی نهایت به دیجیتال تبدیل می­شود و مقادیر خوانده شده از طریق مبدل USB به سریال یا  RS232(USART1 and USART2)  به کامپیوتر ارسال می­شود.

ابتدا برنامه را با نرم افزار Keil باز کنید.

 

 

 

 

 

 

 

 

تغذیه 5 ولت را به برد آموزشی متصل کنید و بعد از اینکه پروگرامر ST-LINK را به برد متصل نمودید؛ برنامه را با استفاده از دکمه ­ی Download    پروگرم نمائید.

 

 


توضیحات مربوط به برنامه

ابتدا کتابخانه­ های مربوطه فراخوانی شده­ اند.

#include "stm32f10x_usart.h"
#include <stdio.h>
#include "bsp.h"
#include "delay.h"

دستوراتی که در زیر آورده شده است، مربوط به ارسال داده از طریق سریال است که این تنظیمات برای ارسال داده­ها  استفاده می­شوند تا امکان استفاده از printf وجود داشته باشد.

//printf init
struct__FILE { inthandle;} ;

FILE__stdout;
FILE__stdin;
FILE__stderr;

intfputc(intch, FILE*f) 
{
    while(!USART_GetFlagStatus(COM1,USART_FLAG_TXE));   
                                                         
    USART_SendData(COM1,ch);   

    while(!USART_GetFlagStatus(COM2,USART_FLAG_TXE));   
                                                         
    USART_SendData(COM2,ch);   
       
    returnch; 
}

در تابع اصلی (main) ابتدا کلاک مربوط به GPIO  ، Usart و ADC  روشن می­شود و سپس پیکربندی مربوط به هر یک از این پریفرالها انجام می گیرد. در داخل حلقه­یwhile  از طریق تابع t_get_temp  مقدار آنالوگ تبدیل به دیجیتال شده و از طریق فرمولی که به رنگ آبی نشان داده شده است، مقدار دما محاسبه می­شود ؛ سپس از طریق USAR1 , USART2  ارسال می­شود.

intmain(void)
{
  RCC_Configuration();
  GPIO_Configuration();
  Com1_Intial();  //usb to serial
  Com2_Intial();  //COM PORT

 T_Adc_Init();
 delay_intial();
    
  printf("Naminic STM32 evaluation board");
    
    while(1)
    {
        AD_value=T_Get_Temp();
            TemperatureC = (uint16_t)((V25-AD_value)/Avg_Slope+25);
        printf(" ADC value: %d ", AD_value);
                printf("Temperature: %d%cC", TemperatureC, 176);
        delayMs(1000);
    }
    return0;
   }
}

 

دانلود مثال ها و pdf این مقاله



 

Tags: , , , ,