ايران ويج

نسخه‌ی کامل: کمک (تولید پالس برای سروو موتور با بسکام)
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
دوستان واساتيد عزيز راهنمايي مي خواهم:
برا کار روي يه پروژه نياز به يک سروو موتور پيدا کردم (9805mg) ولي هر کاري که مي کنم نمي تونم با بسکام اون پالس لازم را تهيه کنم که بر حسب درجه خاص(بين 0 تا 180) متوقف بشود اگه کسي در اين باره اطلاعاتي داره لطفا کمک کنه من تو این زمینه تازه کارم.ConfusedShy
اين سروو 0.2sec/60degree و باند مرده 5ميکرو ثانيه است
سلام.
تو بسکام یک دستور بخصوص هس واسه راه اندازی سروو که زاویه رو بهش میدی و اون خودش پالسهارو میفرسته.
اینم دستور:
کد:
Config Servos = 3 , Servo1 = Porte.3 , Servo2 = Porte.4 , Servo3 = Porte.2 , Reload = 10
Config Porte = Output
Enable Interrupts    
Servo(1) = 87
Servo(2) = 77
Waitms 300
Servo(3) = 85
موفق باشید....
(۲۸-دى-۱۳۹۱, ۱۴:۱۶:۱۸)h.unique نوشته است: [ -> ]سلام.
تو بسکام یک دستور بخصوص هس واسه راه اندازی سروو که زاویه رو بهش میدی و اون خودش پالسهارو میفرسته.
اینم دستور:
کد:
Config Servos = 3 , Servo1 = Porte.3 , Servo2 = Porte.4 , Servo3 = Porte.2 , Reload = 10
Config Porte = Output
Enable Interrupts
Servo(1) = 87
Servo(2) = 77
Waitms 300
Servo(3) = 85
موفق باشید....


ممنون ولی این کد را هم امتحان کردم با میکرو با کلاک چند مگ؟ عدد reload اینجا چیه و چند باید بزارم؟
به به دوباره پست زیر خاکیBiggrin
----
این بنده خدا(Condif servo) میاد و تایمر 0 رو به کار می گیره
با استفاده از این خودش پالس متاسب برای سرو ایجاد می کنه
وقتی شما reload رو برابر 10 میزاری میاد تایمر 0 رو طوری تنظیم می کنه که هر 10 میکرو ثانیه یک بار ریست بشه(تقریبا)
حالا وقتی اول پالس برای سرو بشه پین سرو یک میشه وتازمانی که به عدد سرو برسه یک می مونه مثلا وقتی servo1=100 هست و reload =10 طول یک بودن میشه 100*10=1000 میکرو ثانیه پس پهنای باند شما یک میلی ثانیه هست
هرچی شما ریلود رو کم کنی دقت میره بالا ولی فشار روی میکرو بالا میره
وبلعکس
حالا مثلا معمولا سرو ها با پالس 1.5 میلی ثانیه ای وسط وایمیسند(درست میگم؟)
پس باید مقدار servo1=150باشه تا 1.5 میلی ثانیه پهنای باند داشته باشیم
چیزی که مهم هست اینه که فراموش نکنیم وقفه سراسری رو فعال کنیم
وقتی از کد زیر استفاده می کنیم
کد:
Config Servos = 1 , Servo1 = Portd.0 , Reload = 10
همون طوری که گفتم عمل می کنه اما حالات دیگه ای هم هست
مثلا وقتی اینو می نویسید
کد:
Config Servos = 2 , Servo1 = Portd.7 , Servo2 = Portb.1 , Reload = 100 , Interval = 100
این اینتروال میاد و طول پالس رو تغییر میده همونی که قبلا خودش نزدیک 20 میلی نگه میداشت و دوره پاس شما میشه reload*interval در میکرو ثانیه
توجه کنید که همه ی اعداد بین 0 تا 255 باشن
البته این روش رو توصیه نمی کنم چون تو بعضی عدد ها قاط می زنه این مال وقتی هست که می خواید PWM درست کنید به درد می خوده
---
چیزی که مهم هست اینه که این ها همه تقریبی هستن پس باید تجربی هی مقدار سرو رو کم و زیاد کنید تا بالاخره راه بیوفته
و البته به نظر من مشکل شما این بوده که با توجه به سرعت بالای میکرو باید مقداری زمان ریلود رو زیاد می کردید