ايران ويج

نسخه‌ی کامل: servo motor
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
برای تولید پالس pwm برای سروو با شرایطی که سروو لازم داره چه جوری باید ساخت
با چی نرم افزاری می خواین کار کنین !

اینو ببینین :
http://forum.iranled.com/showthread.php?tid=7833
از کتاب آقای یه نفر :

سروو موتور:


سروو ها نوعی موتور بسیار پرقدرت است که میتواند حول یک زاویه خاص با دقت بالا بچرخند ، از سروو ها برای بازوی ربات و باز و بسته کردن درب و دریچه و ... استفاده میشود .

سروو ها دارای سه سیم میباشند که دوتای انها تغذیه و دیگری برای کنترل درجه چرخش مورد استفاده قرار میگیرد ( در صورتی که سررو شما دارای 5 سیم است ، دو تا از انها برای تغذیه مدار داخلی سروو و دوتای دیگر برای تغذیه خود سروو و سیم اخر برای کنترل میباشد .( بهتر است دیتا شیت سروو را از فروشنده دریافت کنید )

راه اندازی سروو در بسکام با دستور زیر انجام میشود:

کد php:
Config Servos Servo1 Portx.Servo2 Portx.Servon Portx.Reload Rl 

Config Servos = X : نشان دهنده تعداد سروو های استفاده شده میباشد که بیشترین تعداد میتواند 14 باشد.(به جای x تعداد گذاشته میشود مانند : Config Servos = 3 )

Servo1 = Portx.y :.پایه کنترل سروو به یکی از پین های میکرو که با Portx.y مشخص شده متصل میشود.

Reload : نشان دهنده زمانی است که میکرو دوباره اطلاعات مربوط به سرو ها را روی پین مورد نظر میفرستد(این زمان برحسب میکروثانیه است

نکته:
این دستور از تایمر صفر برای راه اندازی (تولید زمان روشن بودن سروو) استفاده میکن و هنگامی که سروو را پیکربندی کردید دیگر نمیتوانید از تایمر صفر استفاده کنید.

بعد از پیکر بندی سروو نوبت به راه اندازی ان است برای این کار از دستور زیر استفاده میشود:

کد php:
Servo(x) = 

X شماره سروو است که میتواند از 1 تا14 باشد و y ضرب در 10 زمان روشن بودن سروو را نشان میدهد، که میتواند یک متغییر یا عدد صحیح باشد.مانند

کد php:
$regfile "m16def.dat"
$crystal 12000000
Config Servos 
14 Servo1 Portd.0 Servo2 Portd.1 Servo3 Portd.2_
Servo4 Portd.3 Servo5 Portd.4 Servo6 Portd.5 Servo7 Portd.6_
 
Servo8 Portd.7 Servo9 Portc.7 Servo10 Portc.6 Servo11 Portc.5_
 
Servo12 Portc.4 Servo13 Portc.3 Servo14 Portc.2 Reload 100
Config Portd 
Output Portc Output
Enable Interrupts
Dim A 
As Word
A
=10
Do
Servo(1) = Wait 1
Servo
(2) = Wait 1
Servo
(3) = Wait 1
Servo
(4) = 15 Wait 1
Servo
(5) = 20 Wait 1
Servo
(6) = 25 Wait 1
Servo
(7) = 30 Wait 1
Servo
(8) = 35 Wait 1
Servo
(9) = 40 Wait 1
Servo
(10) = 45 Wait 1
Servo
(11) = 50 Wait 1
Servo
(12) = 55 Wait 1
Servo
(13) = 60 Wait 1
Servo
(14) = 65 Wait 1
Loop
End 

در مثال بالا تعداد 14 عدد سروو به میکرو مگا 16 متصل شده است ، مدت زمان روشن بودن سروو ها به ترتیب از سروو 1 به این شرح است:
10 و 50 و100 و150 و 200 و250 و 300 و 350 و 400 و450 و500 و550 و600 و650 میکرو ثانیه است.) یک سروو فقط در یک زاویه خاص میچرخد ، مثلا از 0 تا 270 درجه یا از 0 تا 360 درجه، زمان که در بالا گفته شد ، بیان میکند که چقدر طول میکشد تا سررو به یک زاویه خاص برسد ، برای فهمیدن این زمان باید به دیتاشیت سروو مراجعه کنید ،

مثلا نوعی سررو در هر 10 میکرو ثانیه .1 درجه حرکت میکند و زاویه چرخش ان از 0 تا 10 است، بنابراین برای رسیدن به زاویه 120 درجه باید به جای y عدد 120 را قرار دهیم، در صورتی که به جای y عدد بیشتر از 180قرار دهیم سروو روی 180 قفل میشود.بیشتر مقداری که به جای y میتوانید قرار دهید 255 است.

مدار مثال بالا:
http://forum.iranled.com/attachment.php?aid=2189
مرسی
مثال با کد ویژن ندارید
بنده كدويژن كار نيستم و دليل براي استفاده از كدويژن نديدم ولي ديدم دوستان با كدويژن و تايمرها و PWM تونستن سرو رو راه اندازي كنن !
چند تا سروو رو می خواین راه بندازین ؟ اگر یکی هست، از دستورات وقفه استفاده کنین، اگر بیشتر از یکی هست، باید کمی کار با تایمر ها رو وارد باشین
من جواب گرفتم اما ی مشکل کچیک دارم
این که وقتی دیتا به راست می دم گام به گام حرکت می کنه اما وقتی به چپ میدم تا 3 بار به راست میره بعدا بر می گرده
کسی میدونه مشکل از کجاست
موتور پله ای نیست که حرکت کنه ! شما زاویه رو می دین، سریع می ره اونجا بایسته، احتمالا پالس ها رو اشتباه می دین