السن

راه اندازی فاصله سنج التراسونیک SR-04 با STM32

آشنایی با چگونگی کارکرد سنسور دوری سنج التراسونیک HC-SR04 ( حسگر دوری سنج فراسدا ) 

حسگر دوری سنج فراسدا (التراسونیک) HC-SR04 ، برای اندازه گیری دوری از 2 تا 400 سانتی متر بکار میره. این حسگر چهار پایه داره :

  • پایه ی VCC = 5v
  • پایه زمین
  • پایه ی اکو
  • پایه ی تریگر

 

بسامد نمونه برداری این حسگر هم 60ms هست ، هر 60 میلی ثانیه میتونیم دوری رو اندازه بگیریم .

 

چگونگی کارکرد

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

 

بارگیری برنامه و راه اندازی حسگر دوری سنج SR04 با میکروکنترلر STM32

ویژگی های برنامه ای که نوشتم :

  • فرستادن و دریافت پالس بدون دست اندرکاری CPU و به شکل سخت افزاری با کانال های تایمر انجام میشود .
  • این برنامه بدون بکارگیری کتابخونه ی HAL هست ولی شما میتونید در هر برنامه ای چه با HAL چه بدون آن، این کتابخونه رو بکاربگیرید.
  • این برنامه TIM1 و پایه های PA8 و PA10 رو بکارمیگیره ، در برنامه ی خودتون هیچ کاری درباره ی این بخش ها نکنید .

 

بارگیری برنامه راه اندازی سنسور فاصله سنج التراسونیک از github

 

گام به گام راه اندازی :

  1. فایل SR04.c را در پوشه ی src و فایل sr04.h را در پوشه ی header بگذارید.
  2. فایل sr04.h را بر فایل main.c افزون کنید (include کنید) . 
  3. کارنوشت ( تابع ) sr04_init را در کارنوشت main فراخوانی کنید.
  4. دوری چیز از حسگر ، در یک پویای جهانی ( متغیر گلوبال ) به نام 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 رو ببینید .

  • التراسونیک = فراسدا .
  • فاصله سنج = دوری سنج .
  • جهند = پالس .
  • پیرارونگ = رونگ پیرامونی = مدار جانبی = پریفرال 
  • کارگون = حالت کاری

دیدگاه‌ خود را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

پیمایش به بالا