ساخت ربات در ادامه مطلب
RufBOT از سیستم TWS434RF استفاده می کند
استفاده از RF در طرحهایتان راه حل مناسبی است. ولی اگر شما نیز مانند من مبتدی باشید , ساختن موفقیت آمیز یک فرستنده-گیرنده Solid RF سخت است.
وقتی که من شروع به کار کردم ,نمی دانستم فلز برد بورد[1] مانند خازنهای کوچکی عمل نموده و باعث اعوجاج سیگنال فراوانی شده ,که در نتیجه عملکرد و پویایی مدار تغییر میکند.
پس از تحقیق زیاد جفت فرستنده-گیرنده TWS 434 و RWS 434 از Reynolds Electronics را پیدا کردم.البته من تولیدات مشابهی از MING Microsystems و Radioshack را نیز امتحان کردم, اما محصول Reynolds Electronics از لحاظ قابلیت , قیمت و راحتی کار با آن بهتر از بقیه بود.بنابراین به کمک آن و نیز دو میکروکنترلر PIC16F84 [2] کار کردن روی رابط سریال RF خود که واسط بین کنترل گر(جوی استیک[3]) و روبوت بود را شروع کردم.شما می توانید این قطعات را در www.rentron.com/rf_remote_control.htm بیابید.
نمای بالای ساختمان روبوت که روی یک برد بورد کوچک قرار دارد
شماتیک مدار
من متوجه شدم جفت مدار فرستنده-گیرنده و ارتباط سریال تعبیه شده در زبان برنامه نویسی PICBasic موجود در PIC های من,با یکدیگر به خوبی کار می کنند.من مطمئن نبودم , مدار با تبادل سریال غیرهمزمان و با نرخ[4] (باود) 9600 خوب کار کند چون در سرعتهای بالا انتظار یک سری مشکلات را داشتم, اما در عمل به اشکالات اندکی برخورد کردم.من به سادگی موقعیت پتانسیومتر موجود در جوی استیک را با استفاده از دستور POT که از دستورات PICBasic است, خواندم و نتیجه را در موقعیت B0 قرار دادم. و از آنجا با دستور SEROUT محتوای B0 حافظه را به پایه 6 فرستنده TWS 434 ارسال نمودم تا داده دریافتی از پین 3 , RWS 434 را خوانده و حاصل را در B0 قرار دهدم.
مقادیر موجود در B0 با موقعیت جوی استیک رابطه مستقیم دارد.ورودی بالاتر از 150 نشانگر "راست" است , پایین تر از 106 علامت چرخش به "چپ" بوده و میان این دو , نشان دهنده "مرکز" است.با استفاده از این اعداد می توان یک محدوده تعریف کرد.
PIC اطلاعات دسته بازی(جوی استیک) را خوانده و ارسال می نماید
شماتیک مدار فرستنده
در این نقاط اشارات(جهت حرکت دسته بازی) به سادگی قابل مشاهده است.از طریق اعداد فرستاده شده می توانیم مسیر(راست ,چپ و غیره) و همچنین میزان انحراف به چپ و راست را تعریف کنیم. با این داده ها امکان تعریف "کنترل سرعت" وجود دارد.برای اعداد دورتر از 128 (مرکز) سرعت بیشتری اعمال شده است[5].در مورد این مدار , من از پایه های PORTA از PIC برای کنترل مسیر موتور استفاده کردم ولی کنترل سرعت نکردم.از آنجا که داده سریال ده بیتی است(یک بیت شروع ,هشت بیت داده و یک بیت پایانی) می توانیم در عرض یک ثانیه , 960 دستور را به PIC گیرنده بفرستیم که برای قطعات زیر 20 دلار بد نیست.با استفاده از آنتن هایی که برای تلفن های بیسیم 900 MHz ساخته شده است , توانستم در فضای آزاد به برد 350 فوت[6] برسم و هنگامی که تغذیه گیرنده را کمی از 12 ولت بیشتر کردم به بورد 500 فوت[7] نیز رسیدم(این کار توصیه نمی شود).
توجه:من از خروجی خطی برای گیرنده ام استفاده کردم چون می خواستم ببینم حداکثر نویزی که با وجود آن(که تولید اعوجاج در سیگنال می کند) مدار کار می کند چقدراست.در موردی که توان سیگنال به بورد 500 فوت رسید هر نوع نویز در فرکانس باعث بروز اشکال می شود.
قطعه کد زیر نشان می دهد که قطعات موجود در سیستم شما چقدر ساده کار می کنند.
TX CODE:
symbol trisb = 134
symbol trisa = 133
symbol portb = 6
symbol porta = 5
poke trisa, 1
low 1 'use this line if enable pin on 245 is not grounded.
input 0
start:
B0 = 0
pot 0,25,B0
serout 1,n9600,(B0)
goto start
left:
serout 1,n2400,(255)
goto start
right:
serout 1,n2400,(1)
goto start
end
RX CODE:
symbol trisb = 134
symbol trisa = 133
symbol portb = 6
symbol porta = 5
poke trisa ,0
poke porta ,0
low 0
input 1
start:
B0 = 0
serin 1,n9600,B0
if B0 > 150 then right
if B0 < 106 then left
goto stop
right:
poke porta, 6
goto start
left:
poke porta, 9
goto start
stop:
poke porta, 0
goto start
end