09120786892
atrinelectronic@gmail.com تهران پاساژ امجد طبقه1 واحد 16
دوره آموزشی میکرو کنترلرهای STM32 _ راه اندازی واحد ADC(بخش دوم)

دوره آموزشی میکرو کنترلرهای STM32 _ راه اندازی واحد ADC(بخش دوم)

2018-11-20 15:58:00

جلسه یازدهم _ نحوه راه اندازی واحد ADC و برنامه نویسی و راه اندازی این واحد در محیط keil

در جلسه قبل با واحد ADC و نحوه راه اندازی و تنظیمات آن در نرم افزار STM32CubeMX آشنا شدیم و با هم پروژه مربوط به آن را ایجاد نمودیم در این جلسه قصد داریم تا در محیط Keil برنامه ای را بنویسیم تا با کمک آن ولتاژی که به ورودی ADC اعمال می شود را بخوانیم و مقدار آن را روی ال سی دی نمایش دهیم.

با باز کردن پروژه ایجاد شده و در فایل main.c  به تابع MX_ADC1_Init مراجعه می کنیم در این تابع تنظیمات مربوط به واحد ADC1 و ورودی های فعال آن وجود دارد و شما می توانید آنها را تغییر دهید.

برای مشاهده توابع مربوط به کتابخانه ADC می توانید از پنجره Project و در قسمت Driver/STM32f1xx_HAL_Driver به کتابخانه stm32f1xx_hal_adc.c مراجعه نمایید.

 

با باز نمودن این کتابخانه می توانید به توابع موجود در آن دسترسی پیدا کنید. در زیر به معرفی توابع مهم و کاربردی آن می پردازیم:

(HAL_StatusTypeDef HAL_ADC_Init(ADC_HandleTypeDef* hadc

از این تابع برای پیکربندی و تنظیمات اولیه واحد ADC استفاده می شود و قبل از شروع بکار این واحد این تابع باید صدا زده شود. این تابع تنها یک آرگومان دارد که استراکچر hadc1 یا hacd2 یا hadc3 باید در آن قرار گیرد که بستگی دارد ما قصد استفاده از کدام واحد ADC  را داریم.

 

(HAL_StatusTypeDef HAL_ADC_Start(ADC_HandleTypeDef* hadc

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

 

(HAL_StatusTypeDef HAL_ADC_PollForConversion(ADC_HandleTypeDef* hadc, uint32_t Timeout

از این تابع برای بررسی اتمام تبدیل سیگنال آنالوگ به دیجیتال استفاده می شود. در زمانیکه واحد ADC شروع به تبدیل سیگنال آنالوگ به دیجیتال می کند مدتی زمان نیاز دارد با استفاده از این تابع می توانیم از اتمام این پروسه مطلع شویم. این تابع دارای دو آرگومان می باشد که آرگومان اول استراکچر واحد ADC مورد نظر می باشد و آرگومان دوم مربوط به زمان Time Out می باشد که بر حسب میلی ثانیه مقدار دهی می شود.

 

(uint32_t HAL_ADC_GetValue(ADC_HandleTypeDef* hadc

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

 

(HAL_StatusTypeDef HAL_ADC_Stop(ADC_HandleTypeDef* hadc

از این تابع برای متوقف نمودن واحد ADC استفاده می شود که برای اینکار باید استراکچر واحد ADC مورد نظر در آرگومان این تابع قرار گیرد.

 

در ادامه به توضیح خطوط برنامه می پردازیم.

در این بخش متغیرهای مورد نظر را می توانید مشاهده نمایید. متغیر hadc1 استراکچر مربوط به تنظیمات واحد ADC1 می باشد که توسط خود برنامه STM32CubeMX ایجاد شده است.

متغیر LCD_Data یک آرایه 16 عضوی است که برای نمایش اطلاعات بر روی ال سی دی از آن استفاده می شود.

متغییر Pot_Voltage متغیری از نوع long می باشد و برای خواندن و نمایش اطلاعات ولتاژ مربوط به پتانسیومتر از آن استفاده می شود.

در ابتدا برای راه اندازی و پیکربندی واحد ADC از این تابع استفاده می نمایید و با توجه به اینکه ما از واحد ADC1 استفاده می کنیم در آرگومان این تابع استراکچر مربوط به ADC1 را قرار می دهیم.

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

پس از شروع عملیات تبدیل تابع فوق بررسی می کند که آیا عملیات تبدیل خاتمه پیدا کرده است یا خیر. در صورت اتمام پروسه مقدار بازگشتی این تابع برابر HAL_OK می باشد که درون شرط هم اگر این مقدار بازگشت داده شده بود به درون شرط می رود.

با وارد شدن به شرط و اطیمنان از اتمام پروسه تبدیل با استفاده از دستور بالا مقدار تبدیل را می خوانیم و در متغیر Pot_Voltage می ریزیم.

در این خط با توجه به اینکه واحد ADC ما 12 بیتی می باشد و ولتاژ مرجع ما نیز 3.3 ولت می باشد ولتاژ ورودی به اعداد بین 0  تا 4095 تبدیل می شود. این خط ابتدا مقدار خوانده شده از واحد ADC را بر 4095 تقسیم می کند و نتیجه تبدیل را در عدد 3.3 ضرب می کند با این کار ولتاژ معادل بر ورودی واحد ADC بدست می آید.

با استفاده از این دستور مقدار متغیر Pot_Voltage به یک رشته در مبنای float با دو رقم اعشار تبدیل می شود.

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

این مراحل بصورت مرتب تکرار می شود و در صورتیکه که پتانسیومتر را تغییر دهیم می توانیم تغییرات ولتاژ آن را روی ال سی دی مشاهده نماییم.

در انتها می توانید شماتیک مربوط به این جلسه و برنامه (keil , STM32CubeMX)  آنرا دانلود نمایید.

 ADC_Sample_Code

 ADC_Schematic

                                                                                                                                                                    دلتون شاد و لبتون پرخنده

                                                                                                                                                                             محمد هادی دشتی

دیگر آموزش ها مرتبط با STM32:

برای مشاهده آموزش جلسه اول(معرفی هسته آرم و میکروکنترلرهای 32 بیتی شرکت ST  ) کلیک کنید.

برای مشاهده آموزش جلسه دوم( معرفی نرم افزارهای مورد نیازجهت برنامه نویسی و پروگرام  ) کلیک کنید.

برای مشاهده آموزش جلسه سوم( نحوه دانلود آخرین نسخه از نرم افزار STM32CubeMX   ) کلیک کنید.

برای مشاهده آموزش جلسه چهارم(نحوه انجام تنظیمات در نرم افزار STM32CubeMX  ) کلیک کنید.

برای مشاهده آموزش جلسه پنجم(نحوه برنامه نویسی پروژه چشمک زن با نرم افزار Keil ) کلیک کنید.

برای مشاهده آموزش جلسه ششم(نحوه تولید کد و تنظیمات در محیط STM32CubeMX و برنامه نویسی در محیط Keil برای راه اندازی کلید) کلیک کنید.

برای مشاهده آموزش جلسه هفتم(معرفی نرم افزار STM32 Flash Loader Demonstrator و نحوه دانلود برنامه و پروگرام کردن میکرو) کلیک کنید.

برای مشاهده آموزش جلسه هشتم( نحوه راه اندازی ال سی دی کاراکتری-قسمت اول) کلیک کنید.

برای مشاهده آموزش جلسه نهم( نحوه راه اندازی ال سی دی کاراکتری و آشنایی با دستورات کاربردی کتابخانه ال سی دی کاراکتری ) کلیک کنید.

برای مشاهده آموزش جلسه دهم(دوره آموزشی میکرو کنترلرهای STM32 _ راه اندازی واحد ADC(بخش اول)  ) کلیک کنید.

به سبد خرید اضافه شد.
سبد خرید
Item removed. بازگرداندن