توجه :
 
 چنانچه مفاهیم یا عبارت ها و اصطلاحات به کار رفته در این صفحه را متوجه نمی شوید، می توانید مطالعه خود را از اولین جلسه آموزشی رباتیک شروع نمایید. بدین منظور روی لینک زیر کلیک فرمایید:
 
 
همچنین چنانچه بخشی از مطالب را قبلا خوانده اید، برای مشاهده فهرست موضوعات جلسات آموزشی رباتیک، لطفا روی لینک زیر کلیک فرمایید:
 
 
در این بخش از سایت رشد، مطالب آموزشی در زمینه رباتیک با زبان بسیار ساده و بر مبنای مطالبی که در سنین راهنمایی آموخته اید ارائه شده و در هر جلسه مطالب جدیدی آموزش داده شده اند.
 آخرین مطالب
 جلسه سي و هفتم
جلسه سي و هفتم
در اين جلسه، با توضيح در مورد نحوه‌ي انجام تنظيمات اوليه در CodeWizard، مطلب راه اندازي موتورهاي ربات به كمك PWM را تكميل خواهيم كرد...

به نام خدا
با عرض سلام خدمت دوستان عزيزم
در اين جلسه، با توضيح در مورد نحوه‌ي انجام تنظيمات اوليه در CodeWizard، مطلب راه اندازي موتورهاي ربات به كمك PWM را تكميل خواهيم كرد.
همانطور كه در جلسه‌ي پيش هم متذكر شديم، در اينجا مجال نيست تا تمام مباحث مربوط به PWM و تايمرها را باز كنيم و مفصل به آن‌ها بپردازيم، به همين خاطر در اين جلسه قسمتي از تنظيمات در CodeWizard را بدون توضيح آموزش مي‌دهيم.
براي انجام تنظيمات به كمك CodeWizard، ابتدا بايد طبق روندي كه در جلسه‌ي 26 توضيح داده شد، يك پروژه‌ي جديد در CodeVision بسازيد.
پس از انجام تنظيمات ساير لبه‌ها (مانند Ports، Chip و .... ) در CodeWizard، لبه‌ي Timers را باز كنيد.
 همانطور كه مي‌بينيد ميكروكنترلر ATmega16 داراي 3 تايمر مجزا است و ما براي توليد PWM بايد از اين تايمرها استفاده كنيم. تايمر‌ها كاربرد‌ها‌ي متعددي دارند، و يكي از مهم‌ترين مباحث در ميكروكنترلر هستند، ما هم  در مورد تايمر‌ها در جلسات آينده مفصل توضيح خواهيم داد. اما در اين جلسه فقط استفاده از تايمر‌ها را براي ايجاد PWM براي كنترل موتور‌هاي ربات استفاده مي‌كنيم.


Timer0
 



Timer0 مربوط به رجيستر OCR0 است و بايد به شكل زير تنظيم شود.

نكته‌اي كه در مورد تنظيم هر 3 تايمر بايد رعايت شود، اين است كه در بخش "Clock Value" بايد پايين‌ترين فركانس را انتخاب كنيد. در اين مورد توضيح مختصري مي‌دهم، ولي اگر عزيزان اين بند را متوجه نشوند اهميت زيادي ندارد: اندازه‌ي فركانسي  كه انتخاب مي‌كنيد در اين بخش، در حكم اندازه‌ي همان Delayهايي است كه براي توليد PWM به صورت عادي (كه در ابتداي جلسه‌ي قبل توضيح داديم) استفاده مي‌كنيم. يعني در حقيقت طول موج را در نمودار ولتاژ بر زمان تعيين مي‌كند. هر چه فركانس بالاتري را انتخاب كنيد، طول موج كمتر مي‌شود. در عمل ديده شده كه هر چه فركانس پايين‌تر باشد و در نتيجه طول موج بيشتر باشد، موتور‌ها بهتر هدايت مي‌شوند. به همين خاطر در بالا گفته شد كه دوستان پايين‌ترين فركانس را براي "Clock Value" انتخاب كنند.


Timer1
 



تايمر1 بايد به شكل زير تنظيم شود. دقت كنيد كه ممكن است در بخش Clock Value شما فركانسي كه در شكل زير نمايش داده شده است را در گزينه‌ها نداشته باشيد، ولي همانطور كه گفته شد فقط مهم اين است كه شما پايين‌ترين فركانس را انتخاب كنيد.


همانطور كه مي‌بينيد، تايمر1 داراي دو خروجي مجزا است كه رجيستر‌هاي مربوط به آن‌ها OCR1AL و OCR1BL هستند.


Timer2
 



تايمر2 ميز به شكل زير تنظيم مي‌شود و مانند تايمر0 فقط يك خروجي دارد.


Watchdog
 



 يا سگ نگهبان نيز يكي از مباحث مربوط به تايمر‌هاست كه در جلسات آينده به آن خواهيم پرداخت.

حال كه همه‌ي تنظيمات لازم را در CodeWizard انجام داده‌ايد، "Generate, Save and Exit" انتخاب كنيد و وارد فضاي برنامه نويسي شويد.

نكته‌ي بسيار مهم:
براي كنترل هر موتور، علاوه بر يك پايه‌ي
PWM، يك خروجي معمولي نيز لازم داريم تا بتوانيم به وسيله‌ي اين دو پايه و به كمك درايور موتور، اختلاف پتانسيل مورد نظر را بر روي دو پايه‌ي موتور برقرار كنيم. اين 2 پايه را به دو پايه‌ي ورودي L298 متصل مي‌كنيم و دو پايه‌ي موتور را نيز، به دو پايه‌ي خروجي  L298 متصل مي‌كنيم. حال مي‌توانيم موتور را به وسيله‌ي ميكروكنترلر با سرعت دلخواه كنترل كنيم. به عنوان مثال اگر بخواهيم موتور ما تقريباً با سرعت نصف بچرخد، و پايه‌هاي PD.6 و PD.7 (مربوط به رجيستر OCR2) را به L298
متصل كرده باشيم،برنامه‌ي زير را بايد بنويسيم:

OCR2=127;
PORTD.6=0;


و اگر بخواهيم موتور ما با همين سرعت و در جهت معكوس بچرخد، مي‌نويسيم:

OCR2=127;
PORTD.6=1;




براي درك اين موضوع دقت كنيد كه در اين حالت چه ولتاژي توسط L298 بر روي موتورها قرار داده مي‌شود. همانطور كه مي‌دانيد، سرعت و جهت چرخش موتور وابسته به اختلاف ولتاژي است كه بر روي پايه‌هاي موتور قرار داده مي‌شود.


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

مجدداً از دوستان عزيزي كه مخاطب اين بخش هستند و مطالب را با ما دنبال مي‌كنند، تقاضا مي‌شود هر پيشنهاد و انتقادي براي ارتقا سطح كيفي اين بخش دارند، با ما در ميان بگذارند.

تا جلسه‌ي آينده خدا نگه‌دار.
دوست شما، فراز اميرغياثوند


1388/2/27 لينک مستقيم

فرستنده :
lotus HyperLink HyperLink 1388/4/4
مـتـن : اين قسمت و قسمت هاي قبلي خيلي به من در ساخت ربات كمك كرد واقعا
از شما تشكر مي كنم.
من در زمينه برنامه نويسي هر چه تلاش مي كنم به نتيجه درستي نمي رسم.ممكنه به من بگين تا بايد دقيقا از كجا شروع كنم.
هر چي مي گردم يه منبع درست در زمينه برنامه نويسي پيدا نميكنم..
لطفا كمكم كنيد...
پاسـخ : سلام دوست عزيز
خواهش مي‌كنم، اميد وارم در كارتون موفق باشيد.
يكي از بهترين كتاب‌هاي موجود برا آموزش زبان C و ++C كتاب مهندس جعفرنژاد قمي هستش. اين كتاب خود آموز هست و شما در اون مي‌تونيد برنامه نويسي را به صورت كاملاً حرفه‌اي دنبال كنيد.
موفق باشي دوست عزيز

فرستنده :
محسن HyperLink HyperLink 1388/3/3
مـتـن : سلام
آقا من شدید دنبال این بحث ربات بودم که دیروز موفق شدم که سایت مورد علاقمو که سایت پر محتوای شماست پیدا کنم.رشته ی کامپیوتر گرایش نرم افزار هستم.بازبان ++c ودلفی هم آشنا هستم .میتونم کارمو برای ساخت ربات مسیر یاب پیشرفته شروع کنم.؟ممنون میشم از راهنماییتون.یا علی
پاسـخ : سلام محسن جان
خوشحالم كه به جمع ما پيوستي. بله، شما مي‌تونيد كارتون رو شروع كنيد و هرجا هم مشكلي داشتيد ميتونيد از بنده بپرسيد.
موفق باشي دوست عزيز

فرستنده :
اکبر HyperLink HyperLink 1388/3/3
مـتـن : سلام استاد من می خوام با atmega16 درصدpwmرو کنترل کنم یعنی اینکه دوکلید high و low داشته باشم که خودم بتونم پهنای پالسهای PWM رو کنترل کنم اگه ممکنه تو برنامه نویسی و مدارش منو راهنماییم کنین مرسی.
پاسـخ : سلام اكبر جان
پروژه‌ي خوبيه. شما بايد ابتدا 2 پايه از ورودي‌هاي ميكروكنترلر را Pullup كنيد. به اين شكل ميكروكنترلر در حالت عادي از آن پايه ورودي 1 دريافت مي‌كند. حال توسط 2 كليد معمولي، اين 2 پايه را به GND يا همان - منبع تغذيه متصل كنيد. حالا با فشار داده شدن اين كليد‌ها، پايه مربوطه، 0 مي‌شود و ميكروكنترلر از آن پايه 0 دريافت مي‌كند.
حالا براي قسمت برنامه نويسي:
ابتدا بايد متغيري از جنس int تعريف كنيد تا مقدار Pwm مورد نظر را در آن ذخيره كنيد. اين متغير را "a" مي‌ناميم. سپس وضعيت هر يك از كليد‌ها را توسط يك ساختار if كنترل مي كنيم . اگر كليد low فشار داده شد، بايد مثلاً 20 واحد از اندازه‌ي pwm كه در متغير a نگه داري مي‌شود كم كنيم. پس مي‌نويسيم: a=a-20
و براي كليد High مي‌نويسيم:a=a+20
موفق باشي دوست عزيز

نظر شما پس از تاييد در سايت قرار داده خواهد شد
نام :
پست الکترونيکي :
صفحه شخصي :
نظر:
تایید انصراف
 

 

 فعاليت هاي علمي
 تماس با ما