تبلیغات
به نام خدا

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

 در این جلسه در مورد كاربرد PWM در ساخت یك ربات مسیریاب حرفه‌ای توضیح می‌دهیم.

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

یكی از مهمترین فواید استفاده از میكروكنترلر در ساخت ربات‌های مسیریاب، استفاده از قابلیت PWM برای هدایت موتور‌های ربات است. اما به چه صورت از PWM استفاده می‌كنیم؟







به شكل بالا نگاه كنید، در جلسه‌ی نوزدهم گفتیم 3 سنسور هر طرف را با همدیگر ANDمنطقی می‌كنیم و اگر هر یك از این 3 سنسور خط را تشخیص داد، موتور همان سمت را متوقف می‌كنیم تا به این ترتیب ربات خط را تعقیب كند.


اما در ربات‌های مسیریاب میكروكنترلر دار، ما می‌توانیم برای هر سنسور، به طور مجزا دستوری به موتور بدهیم. برای درك این موضوع مجدد به شكل بالا نگاه كنید، این نمای كلی یك ربات از زیر است. سنسور‌های آن را به ترتیب از چپ به راست، از 7 تا 1 شماره گذاری می‌كنیم.
همانطور كه به خاط دارید در ربات‌های بدون میكروكنترلر، تفاوتی نداشت كه سنسور 1 یا 2 یا 3 كدامیك خط را بیابند، هر كدام خط را تشخیص می‌داد، موتور سمت چپ خاموش می‌شد. اما در ربات‌های میكروكنترلر دار، ما می‌توانیم تعیین كنیم كه مثلاً اگر سنسور شماره‌ی 3 خط را دید، موتور سمت چپ به طور كامل متوقف نشود، بلكه سرعت آن به نصف كاهش پیدا كند. این كار به نظر هم منطقی می‌رسد، زیرا سنسور شماره‌ی 3 و 5 تا خط فاصله‌ی كمی دارند و نیاز نیست وقتی خط را تشخیص می‌دهند به طور كامل موتور متوقف شود، بلكه فقط كافیست سرعت موتور كمی كاهش پیدا كند تا ربات به تدریج به روی خط باز گردد. این عمل باعث می‌شود حركت ربات نرم‌تر و دقیق‌تر بشود و در مجموع سرعت ربات بالاتر برود.
حال اگر سنسور شماره‌ی 2 خط را ببیند، یعنی شرایط كمی خطرناك‌تر شده و ربات ممكن است از خط خارج شود، پس می‌توانیم در اینجا به موتور دستور توقف كامل را بدهیم تا ربات با سرعت بیشتری به مسیر مسابقه بازگردد. و در نهایت اگر سنسور شماره‌ی 1 خط را ببیند، یعنی ربات در آستانه‌ی خروج از مسیر مسابقه قرار گرفته است و باید با حداكثر توان ربات را به مسیر مسابقه بازگرداند. برای این كار به موتور سمت چپ دستور باز گشت به عقب را می‌دهیم. این كار بیشترین سرعت ممكن برای چرخش ربات را فراهم می‌سازد و ربات با سرعت زیادی به زمینه مسابقه باز می‌گردد.

در زیر بخشی از برنامه‌ی یك ربات مسیریاب پیشرفته، كه فقط برای سنسور‌های سمت چپ و طبق توضیحات بالا نوشته شده است را می‌بینید. همانطور كه می‌دانید ما نیاز به 3 پایه به عنوان ورودی برای دریافت وضعیت سنسورهای سمت چپ، و یك پایه‌ی خروجی و یك PWM برای كنترل موتور سمت چپ داریم كه به ترتیب زیر هستند:
PA.0 برای سنسور شماره‌ی 1
PA.1 برای سنسور شماره‌ی 2
PA.2 برای سنسور شماره‌ی 3
PD.6 و OCR2 برای كنترل موتور چپ
PD.3 و OCR1BL برای كنترل موتور راست

حالا به برنامه دقت كنید:




(if (PINA.0==0
}
; PORTD.6=0
; OCR2=127

; PORTD.3=0
; OCR1BL=255
{


(if (PINA.1==0
}
; PORTD.6=0
; OCR2=0

; PORTD.3=0
; OCR1BL=255
{


(if (PINA.2==0
}
; PORTD.6=1
; OCR2=0

; PORTD.3=0
; OCR1BL=255
{





به همین منوال باید برای سنسور‌های سمت راست هم برنامه را ادامه دهید. دقت كنید كه باید حتماً قبل از نوشتن برنامه، از داخل CodeWizard، تنظیمات اولیه را انجام دهید.

در مورد سنسور وسط هم در جلسه‌ی بیستم توضیحاتی داده شد، اگر این سنسور خط را تشخیص دهد، بیانگر این است كه ربات در وضعیت مناسبی نسبت به خط قرار دارد و هر 2 موتور با تمام توان به سمت جلو حركت می‌كنند. اگر پایه‌ی PA.3 را نیز به سنسور وسط اختصاص دهیم، برای این سنسور نیز داریم:


(if (PINA.3==0
}
;PORTD.6=0
; OCR2=255

; PORTD.3=0
; OCR1BL=255
{

منتظر سوالات و نظرات دوستان خوبم هستم
تا جلسه‌ی آینده خدا نگه دار