برد STM قطعات الکترونیک مدارهای الکترونیک

آموزش راه اندازی ماژول فاصله سنج التراسونیک SRF05 با میکروکنترلر STM32

نوشته شده توسط علی زاهدی

ماژول های التراسونیک کاربرد های مختلفی دارند. یکی از کاربرد های مهم آن تشخیص فاصله است. پیش از با استفاده از ماژول SRF05 که یک فاصله سنج التراسونیک است. پروژه های مختلفی انجام داده ایم که با کلیک بر روی این لینک میتوانید این آموزش هارا مطالعه کنید. در این آموزش قصد داریم تا ماژول srf05 با STM32 را راه اندازی کینم و فاصله ماژول تا موانع را تشخیص داده و روی LCD نمایش دهیم. در ادامه با مرجع تخصصی بردهای امبدد به زبان فارسی، دیجی اسپارک همراه باشید.

 


ماژول آلتراسونیک فاصله سنج SRF05


ماژول فاصله سنج SRF، اجسام قرار گرفته شده در مسیر سنسور را تشخیص داده و سپس فاصله شی تا سنسور را اندازه گیری میکند. ولتاژ کاری ماژول فاصله سنج SRF بین ۴٫۵ تا ۵٫۵ ولت DC است. فرکانس کاری ماژول SRF در حدود ۴۰ کیلوهرتز است. این ماژول از ۵ پایه Trigger, Echo, Out, Vcc, Gnd تشکیل شده است.

SRF05

پایه Trigger و Echo در خروجی پالس دیجیتال ۱۰uS ایجاد میکند. خروجی پایه Echo بین ۰ تا Vcc متغیر است. دراین حالت پالس ۱۰uS به پایه تریگر Trigger ارسال شده و سپس سنسور به صورت اتوماتیک در خروجی فرکانس ۴۰ کیلوهرتز را ارسال خواهد کرد. توسط پایه Echo مانیتورنیگ خروجی انجام میشود. هنگامی که خروجی Echo افزایش یابد، تابمر فعال میشود. سپس با کاهش یافتن خروجی Echo، مدت زمان سپری شده در تایمر ذخیره شده و در نهایت فاصله توسط فرمولی که برای محاسبه فاصله شی تا سنسور تعریف شده است، اندازه گیری خواهد شد.

 


اتصالات پروژه srf05 با STM32


در این پروژه از LCD کاراکتری برای نمایش فاصله استفاده شده است. برای آشنایی با نحوه راه اندازی LCD کاراکتری و نمایش اطلاعات بر روی آن آموزش راه اندازی LCD کراکتری به کمک میکروکنترلر STM32 را مطالعه کنید. همانطور که گفته شد ماژول SRF05 دارای ۵ پایه است. پایه out در این پروژه کاربردی ندارد و از آن استفاده نمی‌کنیم. اما ترتیب اتصال پایه های دیگر ماژول به صورت زیر است.

  • پایه VCC ماژول SRF05 به خروجی ۵ ولت برد BluePill متصل شود.
  • پایه GND ماژول SRF05 به GND برد BluePill متصل شود.
  • پایه Trig ماژول SRF05 به پایه PA9 برد BluePill متصل شود.
  • پایه Echo  ماژول SRF05 به پایه PA8 برد BluePill متصل شود.

 

اتصالات LCD کاراکتری به میکروکنترلر نیز به صورت زیر است.

  • پایه شماره ۱ ال سی دی به GND برد BluePill متصل شود.
  • پابه شماره ۲ ال سی دی به ۵ ولت برد BluePill متصل شود.
  • پایه شماره ۳ ال سی دی با یک مقاومت ۲٫۲ کیلو اهم به GND متصل شود.
  • پایه شماره ۴ ال سی دی به پایه PA0 برد BluePill متصل شود.
  • پایه شماره ۵ ال سی دی به پایه PA1 برد BluePill متصل شود.
  • پایه شماره ۶ ال سی دی به پایه PA2 برد BluePill متصل شود.
  • پایه شماره ۱۱ ال سی دی به پایه PA3 برد BluePill متصل شود.
  • پایه شماره ۱۲ ال سی دی به پایه PA4 برد BluePill متصل شود.
  • پایه شماره ۱۳ ال سی دی به پایه PA5 برد BluePill متصل شود.
  • پایه شماره ۱۴ ال سی دی به پایه PA9 برد BluePill متصل شود.
  • پایه شماره ۱۵ ال سی دی به GND برد BluePill متصل شود.
  • پابه شماره ۱۶ ال سی دی به ۵ ولت برد BluePill متصل شود.

 

پروژه SRF آلتراسونیک با برد STM32F103C8T6 - دیجی اسپارک

 


پیکر بندی میکروکنترلر در STM32CubeMX


میزان فاصبه ماژول SRF05 با موانع را از روش های مختلفی میتوان دریافت نمود. در این آموزش ما با استفاده از تایمر میکروکنترلر در مد Input Capture direct میزان فاصله ماژول با موانع را تشخیص می‌دهیم. پس از ساخت پروژه در نرم افزار STM32CubeMX و انجام تنظیمات مربوط به بخش های RCC و SYS، بایستی وارد بخش TIM1 شده و گزینه Channel 1 را بر روی Input Capture direct mode تنظیم کنید. پس از تنظیم گزینه مشاهده خواهید نمود که پایه PA8 میکروکنترلر به رنگ سبز درآمده و عبارت TIM1_CH1 در کنار آن نوشته شده است.

پیکر بندی میکروکنترلر در STM32CubeMX - دیجی اسپارک

 

سپس بایستی در بخش Parameter Setting مقدار Prescaler را بر روی ۷۲ قرار دهید. این کار کلاک APB را بر ۱-۷۲ تقسیم می‌کند و فرکانس تایمر بر روی ۱ مگاهرتز تنظیم می‌شود. این کار لازم است زیرا ماژول SRF05 سیگنال را در میکروثانیه ارسال می‌کند. سپس مقدار Counter Period یا همان ARR را بر روی ۱-۰xFFFF تنظیم کنید. در واقع این با این کار حداکثر میزان قابل محسابه را تعیین می‌کنیم. حداکثر مقداری که در میکروثانیه می‌توانیم محاسبه کنیم.

تنظیمات Parameter Setting در نرم افزار STM32

 

در ادامه بایستی وارد بخش NVIC تایمر شده و تیک مربوط به گزینه TIM1capture compare interrupt را بزنید.

در ادامه بایستی وارد بخش NVIC تایمر شده - دیجی اسپارک

 

تا به اینجا تنظیمات مربوط به تایمر و پایه Echo ماژول SRF05 انجام شده است. برای تنظیم پایه مربوط به پایه Trig ماژول تنها کافی است که پایه PA9 را به عنواخ خروجی تعریف کنید. برای راه اندازی LCD کاراکتری بایستی پایه های PA0 تا PA6 را به صورت خروجی تعریف کنید.

STM32 Pinout

سپس بایستی وارد بخش Clock Configuration شده و کلاک میکروکنترلر را بر روی ۷۲ مگاهرتز تنظیم کنید. در آخر در قسمت Project Manager ابتدا نام پروژه و مسیر مورد نظر برای ذخیره پروژه را مشخص کنید. سپس گزینه Toolchain را بروی MDK-ARM و ورژن آن را بر روی ۵ تنظیم کرده و بر روی گزینه GENERATE CODE در قسمت نوار بالایی کلیک کنید تا پروژه ساخته شود.

 


کدنویسی در نرم‌افزار KEIL


در پروژه srf05 با STM32 پس از ورود به نرم افزار KEIL بایستی وارد فایل main.c شوید. سپس در این فایل ابتدا بایستی کتابخانه مربوط به LCD را به برنامه اضافه کنید.

 

سپس متغییر هایی که برای محاسبه فاصله ماژول نیاز داریم را تعریف کنیم.

سپس بایستی پایه ای که برای اتصال به پایه Trig ماژول به عنوان خروجی تعریف کردیم را معرفی کنیم.

 

در ادامه برای راه اندازی ماژول نیاز است که تاخیری در واحد میکرو ثانیه ایجاد کنیم. تابع HAL_Delay تاخیری که ایجاد می‌کند در واحد میلی ثانیه است. با قرار دادن تابع زیر در کد می‌توانیم تاخیر در واحد میکرو ثانیه در کد خود داشته باشیم. این تابع از TIM1 برای ساخت تاخیر میکروثانیه استفاده می‌کند.

 

تابع زیر برای شروع برای شروع کار ماژول تعریف شده است که بایستی برای شروع محاسبه فاصله یک پالس مربعی با فرکانس ۱۰۰ کیلوهرتز به پایه Trig ماژول ارسال شود. و سپس تایمر برای تشخیص وضعیت پایه Echo فعال می‌شود.

 

کد زیر قسمت تشخیص فاصله توسط پایه Echo است. در این قسمت تابع HAL_TIM_IC_CaptureCallback قرار داده شده است. تایمر برای شروع شمارش ابتدا حساس به لبه بالا رونده است. پس از تغیر وضعیت پایه Echo از صفر به یک این تابع فراخوانی می‌شود. در ادامه حساسیت تایمر به لبه پایین رونه تغییر می‌کند. در اخر مقدار فاصله محاسبه شده در متغیر Distance ذخیره می‌شود.

 

برای شروع کار تایمر نیاز است که دستور Start تایمر را در تایع main قبل از حلقه while(1) بنویسید. دستور Start تایمر به صورت زیر است.

 

همچنین در این قسمت نیاز است که تابع راه انداز LCD نیز فراخوانی شود. در صورتی که با نحوه راه اندازی LCD کاراکتری بر روی میکروکنترلرهای STM32 آنشایی کافی را ندارید. آموزش راه اندازی LCD کراکتری به کمک میکروکنترلر STM32 را مطالعه کنید.

 

سپس داخل حلقه while(1) بایستی ابتدا تابع راه اندازی ماژول را فراخونی نموده سپس مقدار فاصله را بر روی LCD نمایش دهید. که این موارد در کد زیر قرار داده شده است.

 

در ادامه پروژه srf05 با STM32 کد هایی که بایستی به پروژه خود اضافه کنید به صورت کامل نوشته شده است. میتوانید کد زیر را با توجه به محل قرار گیری هر دستور در فایل ساخته شده توسط نرم افزار STM32CubeMX کپی کرده و داخل پروژه خود قرار دهید.

 

در آخر بایستی برنامه را کامپایل کرده و بر روی برد Bluepill پروگرام کنید. در صورتی که با نحوه پروگرام کردن میکروکنترلر های Stm32 آشنا نیستید. لطفا بخش اول آموزش های میکروکنترلر Stm32 را مطالعه نمایید. پس از دانلود کد بر روی برد BluePill بایستی یک بار کلید reset را بر روی برد فشار دهید. در صورت که اتصالات را به طور صحیح متصل کرده باشید.

 


جمع بندی


پیش از این با نحوه راه اندازی ماژول SRF05 به کمک میکروکنترلرهای دیگر مثل انواع برد های آردوینو آشنا شده بودیم اما در این آموزش با نحوه راه اندازی ماژول SRF05 با کمک میکروکنترلر STM32 آشنا شدیم. ماژول فاصله سنج التراسونیک یا همان SRF05 غیر از اندازه گیری فاصله ماژول تا مانع و نمایش آن میتواند کاربرد های دیگری نیز داشته باشد. از جمله این کاربرد ها میتوان به ساخت ربات حل ماز ، ساخت مایع ریز برای جلوگیری از انتقال ویروس کرونا و یا خیلی از کاربرد های دیگر اشاره نمود.

 


لوازم مورد نیاز


 

چنانچه در مراحل راه اندازی و انجام این پروژه با مشکل مواجه شدید، بدون هیچ نگرانی در انتهای همین پست، به صورت ثبت نظر سوالتان را مطرح کنید. من در سریع‌ترین زمان ممکن پاسخ رفع مشکل شما را خواهم داد. همچنین اگر ایرادی در کدها و یا مراحل اجرایی وجود دارند می‌توانید از همین طریق اطلاع رسانی کنید.

 

در پایان نظرات و پیشنهادات خود را با ما درمیان بگذارید و با اشتراک گذاری این آموزش در شبکه های اجتماعی از وبسایت دیجی اسپارک حمایت کنید.

 

درباره نویسنده

علی زاهدی

برنامه نویس و طراح سیستم های مبتنی بر میکروکنترلر

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

تبادل نظر و رفع عیب با ثبت دیدگاه

۲ دیدگاه

    • با سلام
      در عملکرد و نحوه راه اندازی تفاوت خاصی ندارند. تنها پایه out بر روی SRF05 اضافه شده است که در این آموزش از این پایه استفاده نمی‌کنیم.