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

پیوند های این نوشته :
- آموزش نماوایی ( ویدئویی ) راه اندازی تند کتابخانه ی SR04 در یوتوب
- آموزش نماوایی ( ویدئویی ) به زبان انگلیسی : نوشتن کتابخانه راه اندازی SR04 با STM32 بدون تابع تاخیر و تنها با 3 کانال تایمر در یوتوب
- آموزش فارسی راه اندازی SR04 در دوره آموزش پیشرفته ی STM32F1
- بارگیری برنامه SR04 با STM32f103 از گیت هاب
آشنایی با چگونگی کارکرد سنسور دوری سنج التراسونیک HC-SR04 ( حسگر دوری سنج فراسدا )
حسگر دوری سنج فراسدا (التراسونیک) HC-SR04 ، برای اندازه گیری دوری از 2 تا 400 سانتی متر بکار میره. این حسگر چهار پایه داره :
- پایه ی VCC = 5v
- پایه زمین
- پایه ی اکو
- پایه ی تریگر

بسامد نمونه برداری این حسگر هم 60ms هست ، هر 60 میلی ثانیه میتونیم دوری رو اندازه بگیریم .
چگونگی کارکرد
- برای آغاز هر اندازه گیری باید به اندازه 10us پایه ی trig رو یک کنیم. تا حسگر فرستادن موج های فراسدا رو آغاز کنه .
- حسگر موج های فراسدا میفرسته و همزمان با آغاز فرستادن موجهای فراسدا ، پایه ی echo رو یک میکنه.
- این موجها به چیزها میخورند و به سوی حسگر برمیگردند و حسگر موج ها رو دریافت میکنه ، هنگامی که حسگر موج ها رو دریافت کرد ، پایه ی echo رو هیچا ( صفر ) میکنه .
- از روی زمان یک بودن پایه ی echo که همان زمان سپری شده برای رفتن و برگشتن موج هاست ، دوری چیزها از حسگر رو بدست میاریم.
- چون تندی سدا در هوا 340m/s است ، با فرمول زیر میتوان دوری چیز از حسگر را بدست آورد .

بارگیری برنامه و راه اندازی حسگر دوری سنج SR04 با میکروکنترلر STM32
ویژگی های برنامه ای که نوشتم :
- فرستادن و دریافت پالس بدون دست اندرکاری CPU و به شکل سخت افزاری با کانال های تایمر انجام میشود .
- این برنامه بدون بکارگیری کتابخونه ی HAL هست ولی شما میتونید در هر برنامه ای چه با HAL چه بدون آن، این کتابخونه رو بکاربگیرید.
- این برنامه TIM1 و پایه های PA8 و PA10 رو بکارمیگیره ، در برنامه ی خودتون هیچ کاری درباره ی این بخش ها نکنید .
بارگیری برنامه راه اندازی سنسور فاصله سنج التراسونیک از github
گام به گام راه اندازی :
- فایل SR04.c را در پوشه ی src و فایل sr04.h را در پوشه ی header بگذارید.
- فایل sr04.h را بر فایل main.c افزون کنید (include کنید) .
- کارنوشت ( تابع ) sr04_init را در کارنوشت main فراخوانی کنید.
- دوری چیز از حسگر ، در یک پویای جهانی ( متغیر گلوبال ) به نام dis نوشته میشود .
اگر میخواهید یادبگیرید که از پایه چجوری باید این کتابخونه رو بنویسید ، دوره ی آموزش پیشرفته ی STM32F103 رو ببینید .
چگونگی کارکرد تایمر برای فرستادن و دریافت جهند ( پالس ) به سنسور دوری سنج HC-SR04
- در این پروژه ، SR04 را با STM32 با روشی راه اندازی میکنیم که AVR نمیتونه ، چون تایمر های AVR توانایی تایمر های STM32 رو ندارند .
- هنگامی که تنها یک قطعه رو با میکروکنترلر راه اندازی میکنید، وجود کارنوشت دیرکرد ( تابع تاخیر یا delay ) در برنامه مشکل ساز نیست . ولی وقتی پروژه شلوغ میشه ، هزار تا مشکل درست میکنه . قدرت STM32 هم به همینه که میتونی delay بکار نبری.
- اگر بلد باشی چجوری از امکانات پیرارونگ ها ( پریفرال ها ) استفاده کنی ، میشه در پروژه delay بکار نبرد .
در راه اندازی حسگر دوری سنج فراسدای HC-sr04 با میکروکنترلر STM32 ، به پایه های GPIO نیاز نداریم و نیازی نیست که خود CPU بخواهد پایه های تریگ را 0 و 1 کند یا زمان یک بودن پایه ی echo را اندازه بگیرد . بلکه همه ی این کارها را پیرارونگ ( پریفرال ) تایمر انجام میدهد .

کانال 3 تایمر یک در کارگون PWM ( حالت کاری ) رو برای ساخت پالس تریگ هر 100ms بکار میبرم . تا این کانال هر 100 میلی ثانیه یک جهند ( پالس ) 10us روی پایه ی تریگ بیندازد.

کانال 1 و 2 تایمر یک رو در کارگون IC input capture برای اندازه گیری زمان یک بودن جهند ( پالس ) روی پایه ی echo بکار میگیرم .

کانال 3 تایمر ، جهند ( پالس ) تریگر رو میفرسته و کانال های 1 و 2 هم هنگامی که لبه روی پایه ی اکو رخ میده ، اندازه ی شمارنده ( رجیستر CNT ) رو برمیدارند ، در اینتراپ ( بازداری ) کانال 2 تایمر ، با کم کردن اندازه ی CCR1 از CCR2 زمان یک بودن جهند اکو بدست میاد .
- در راه اندازی SR04 با AVR ، بخش CPU میکروکنترلر از آغاز تا پایان نمونه برداری درگیر کار هست.
- در راه اندازی SR04 با STM32 ، بخش CPU میکروکنترلر تنها در پایان نمونه برداری باید یک عملیات تفریق انجام بده .
اگر میخواهید یادبگیرید که از پایه چجوری باید این کتابخونه رو بنویسید ، دوره ی آموزش پیشرفته ی STM32F103 رو ببینید .
- التراسونیک = فراسدا .
- فاصله سنج = دوری سنج .
- جهند = پالس .
- پیرارونگ = رونگ پیرامونی = مدار جانبی = پریفرال
- کارگون = حالت کاری

