راه اندازی سنسور دمای میکروکنترلر 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”/]
نظر بدهید