پروژه راه اندازی ربات تشخیص مانع با استفاده از سنسور مادون قرمز

پروژه راه اندازی ربات تشخیص مانع با استفاده از سنسور مادون قرمز
0

راهنما راه اندازی ربات تشخیص مانع با استفاده از سنسور مادون قرمز

هدف از انجام این پروژه راه اندازی یک ربات تشخیص مانع توسط سنسورهای مادون قرمز (IR) می باشد.

شما در این پروژه موارد زیر را فرا خواهید گرفت:

  • تنظیم تایمرها و تولید موج PWM دلخواه برای کنترل سروو موتور توسط میکروکنترلر ARM ST
  • برقراری ارتباط با سنسورهای مادون قرمز (IR) از طریق درگاه‌های ADC میکروکنترل ARM ST
  • کار با درایور موتور L298
  • کار با GPIO های مختلف میکروکنترلر ARM ST

این پروژه توسط میکروکنترلرهای شرکت ST سری STM32F303 که مبتنی بر معماری ARM هستند، در محیط‌های CubeMX و Keil انجام خواهد شد.

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

  1. برد 2 wheels controller
  2. پروگرمر ST-Link
  3. منبع تغذیه
  4. شاسی ربات 4 چرخ
  5. ماژول GP2Y0A21YK0F

IR-Sensor

فایل برنامه در پیوست ارائه و توضیحات مربوطه به صورت کامنت ارائه شده‌است.

توضیحات برنامه:

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

سربرگ اصلی
سربرگ

سنسور IR استفاده شده در این پروژه بر روی یک سروو موتور بسته شده‌است. سروو موتور قادر است تا در زاویه‌ای مشخص شده قرار گیرد. کنترل سروو موتور به این صورت است که یک پالس PWM با دوره 20 میلی ثانیه (50 هرتز) و Duty cycle متغیر بین 1 تا 2 میلی ثانیه به آن اعمال می‌شود و بسته به duty cycle، شفت سروو در زاویه‌ای مشخص قرار می‌گیرد.

برای تولید موج PWM از تایمرها استفاده می‌کنیم. با توجه به شماتیک که قبلا نشان داده شد، سروو موتور به پایه PB.15 متصل است که همان CH3N در تایمر 1 است.

timer1

برای تولید موج مد نظر سه پارامتر باید در تایمر تنظیم شود:

  1. Prescaler
  2. Counter period
  3. Pulse (16 bit value)

فرمول محاسبه فرکانس تایمر به صورت زیر است:

f=F_clk⁄((prescaler-1)(period-1))

که در آن Fclk فرکانس کلاک تایمر است.

فرکانس کلاک تایمر

با تنظیم مقادیر prescaler و period فرکانس سیگنال تنظیم می‌شود و با تنظیم pulse، duty cycle سیگنال مشخص می‌شود.

ابتدا تایمرها را فعال می‌کنیم:

فعال کردن تایمرها

از تایمر 6 برای کاهش نرخ نمونه برداری ADC استفاده کرده‌ایم. درگاه ADC را برای خواندن مقادیر سنسورها نیز فعال می‌کنیم.

فعال کردن درگاه ADC

برای تست موتورها، ربات یک ثانیه به راست و یک ثانیه به چپ می‌چرخد:

برای تست سروو، ربات زاویه صفر تا 180 درجه را پیمایش می‌کند:

سپس سروو در موقعیت وسط خود قرار می‌گیرد:

قرار گیری سروو در موقعیت

الگوریتم ربات به این گونه است که اگر مانعی در 10 سانتی متری ربات نباشد، ربات رو به جلو حرکت خواهد کرد. در صورت تشخیص مانع در فاصله‌ی کمتر از 10 سانتی متر، ربات متوقف شده و چشم IR شروع به اسکن می‌کند. در صورتی که مسیر بدون مانع پیدا شد، ربات به آن سمت خواهد چرخید. اگر ربات نتوانست مسیری برای خود پیدا کند، کمی به عقب برخواهد گشت و به سمت چپ تغییر مسیر خواهد داد.

تست سروو 2

نکته:

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

طبق نکته بالا، از دو کانال ADC برای تشخیص مانع استفاده شده‌است. یک کانال دیتای GP2Y0A21YK0F را دریافت می‌کند و دیگری دیتای زوج فرستنده-گیرنده معمولی را.

تشخیص مانع

حضور موانع در فاصله کمتر از 10 سانتی‌متر باعث کاهش خروجی زوج سنسور مادون قرمز به کمتر از 2.6 ولت می‌شود.

نکته: فرمول تبدیل داده ADC به ولتاژ عبارت است از:

Vout=((Raw_data)/(2^n-1))*Vref

که n تعداد بیت‌های ADC (12 بیت)و Vref ولتاژ مرجع (3.3 ولت)است.

Choose your Reaction!
دیدگاه خود را بنویسید

آدرس ایمیل شما منتشر نخواهد شد.

redronic.com
رفتن به نوار ابزار