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

 


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


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

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

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


سخت افزار

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

 

 

 

 

 

 

 


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

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

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

 

 

 

 

 

 

 

 

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

 

 


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

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

[pastacode lang=”cpp” manual=”%23include%20%22stm32f10x_usart.h%22%0A%23include%20%3Cstdio.h%3E%0A%23include%20%22bsp.h%22%0A%23include%20%22delay.h%22″ message=”” highlight=”” provider=”manual”/]

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

[pastacode lang=”cpp” manual=”%2F%2Fprintf%20init%0Astruct__FILE%20%7B%20inthandle%3B%7D%20%3B%0A%0AFILE__stdout%3B%0AFILE__stdin%3B%0AFILE__stderr%3B%0A%0Aintfputc(intch%2C%20FILE*f)%20%0A%7B%0A%20%20%20%20while(!USART_GetFlagStatus(COM1%2CUSART_FLAG_TXE))%3B%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20USART_SendData(COM1%2Cch)%3B%20%20%20%0A%0A%20%20%20%20while(!USART_GetFlagStatus(COM2%2CUSART_FLAG_TXE))%3B%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20USART_SendData(COM2%2Cch)%3B%20%20%20%0A%20%20%20%20%20%20%20%0A%20%20%20%20returnch%3B%20%0A%7D” message=”” highlight=”” provider=”manual”/]

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

[pastacode lang=”cpp” manual=”intmain(void)%0A%7B%0A%20%20RCC_Configuration()%3B%0A%20%20GPIO_Configuration()%3B%0A%20%20Com1_Intial()%3B%20%20%2F%2Fusb%20to%20serial%0A%20%20Com2_Intial()%3B%20%20%2F%2FCOM%20PORT%0A%0A%20T_Adc_Init()%3B%0A%20delay_intial()%3B%0A%20%20%20%20%0A%20%20printf(%22Naminic%20STM32%20evaluation%20board%22)%3B%0A%20%20%20%20%0A%20%20%20%20while(1)%0A%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20AD_value%3DT_Get_Temp()%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20TemperatureC%20%3D%20(uint16_t)((V25-AD_value)%2FAvg_Slope%2B25)%3B%0A%20%20%20%20%20%20%20%20printf(%22%20ADC%20value%3A%20%25d%20%22%2C%20AD_value)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20printf(%22Temperature%3A%20%25d%25cC%22%2C%20TemperatureC%2C%20176)%3B%0A%20%20%20%20%20%20%20%20delayMs(1000)%3B%0A%20%20%20%20%7D%0A%20%20%20%20return0%3B%0A%20%20%20%7D%0A%7D” message=”” highlight=”” provider=”manual”/]

 

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



 

Tags: , , , ,