سلام .. واسه مسابقات رباتیک که اواسط این ماه برگزار میشه یه جورایی گیرم oo: 8 تا موتور دارم که 5 تاش dc موتوره که باید با pwm کنترل بشه و 2-3 تا هم سروو ..... که لازم نیست همه ی موتورها بصورت همزمان کنترل بشن یعنی مثلا برای چند لحظه( 20-30 ثانیه) باید 2-3 تا از موتور ها کنترل بشن ... اما توی نحوه راه اندازی مشکل دارم .. باید از میکرویی استفاده کنم که دارای چندین کانال pwm سخت افزاری باشه (pwm نرم افزاری زیاد جالب نمی شه )... واسه این کار میخواستم از dspic30f4011 استفاده کنم که حواسم نبود 1-2 بخرم و بازار هم تعطیل شد و الان هم که در شهرستان دستم کوتاهه :cry2: و از تهران هم نمی تونم خرید کنم .. یکی از دوستان آی سی atmega168 رو پیشنهاد کرده که 6 تا کانال pwm داره ولی حتی المکان نمی خوام از avr استفاده کنم چون خودم با pic بیشتر حال میکنم و مسئله ی نویز که البته زیاد امکان نویز گرفتن avr نیست ولی به هر حال احتیاط شرط عقله ... یک راه دیگه که به ذهنم میرسه :biggrin: اینه که واسه کنترل موتورها از آی سی 555 استفاده کنم که واسه هر موتور یه دونه 555 بذارم و کنترل تمام 555 ها هم با میکرو باشه ... .... اگر کسی پیشنهاد جالب تری داره لطفا بگه :nice: ؟ با تشکر
اطلاعیه
Collapse
No announcement yet.
کنترل 8 موتور بصورت pwm .. نظر می خوام
Collapse
X
-
پاسخ : کنترل 8 موتور بصورت pwm .. نظر می خوام
pwm نرم افزاری اگر واسه یک کانال باشه مشکلی بوجود نمیاره ولی وقتی تعداد کانال ها افزایش پیدا میکنه مشکل دار میشه .... به عنوان مثال ما 6 کانال pwm نرم افزاری می خواهیم درست کنیم ...واسه همشون که نمی تونیم از تایمر استفاده کنیم .. (معمولا 2-3 عدد تایمر داریم ) .. میمونه خط برنامه ... وقتی خط برنامه مشغوله که یک pwm روی یک پایه درست کنه .. کانال های دیگه پالس ندارن و dutycycle هاشون و فرکانسشون به هم میریزه ... این روش دقت کافیو نداره واسه بیشتر از یک کانال...دست هایی که کمک میکنند از دست هایی که دعا میکنند مقدس ترند....کوروش کبیر
دیدگاه
-
پاسخ : کنترل 8 موتور بصورت pwm .. نظر می خوام
سلام .
به نظر میرسه استفاده از pwm نرم افزاری پیشنهاد خوبی باشه ، البته که همیشه خود شرکت سازنده این مطلب رو بیان میکنه که فرمانهای نرم افزاری مرتبط با زمان دقت زیادی ندارند مثلا درمورد pause یا waitms هم شرکت میکروچیپ و هم اتمل صراحتا این به این موضوع اعتراف دارند و پیشنهادشون استفاده از تایمرها برای عملیات وابسته به زمان هست.
pwm خو یک واحد کاملا وابسته به زمانه ، اما منظور از دقت و بازه اون اعدادی در حد چند میلی ولت هست و نه بیشتر .
باید به این نکته هم اشاره بشه که اگر میکرو در حین تولید pwm مشغول اجرای تعداد زیادی از فرمانها باشه ، به هنگام انجام سایر فعالیتها مقادیر تولیدی در واحد pwm دیگر دارای مقدار صحیح نخواهد بود.
بنده دو پیشنعاد دارم یکی اینکه میکرو کنترلری که قرار هست چندین pwm نرم افزاری به صورت غیر عمزمان تولید کنه فقط باید همین نقش رو داشته باشه تا بتونه اون رو به درستی انجام بده. مقادیر و شماره پایه ای که باید pwm تولید شده رو به بیرون متصل کنه بهتره از طریق یک میکرو کنترلر دیگه تائین(کیبورد ریموت کنترل و ...) بشه و با یک پروتکل سریع مثل spi به این میکرو منتقل بشه اون هم تا حد امکان به صورت سخت افزاری تا بتونیم حد اکثر زمان رو به تولید pwm نرم افزاری کنیم و وقفه ای هم در مدار پیش نیاد.
پیشنهاد دوم دی مالتی پلکس یا دیکد کردن pwm سخت افزاری هست به طوری که فقط به کمک pwm سخت افزاری شکل موج رو تولید کنیم و برای فعال شدن هر موتور آدرس باینری یا همون معادل هگزادسیمال شماره موتور با استفاده از میکرو کنتلر روی پورت آدرس مالتی پلکسر بگذاریم 4051 برای دی مالتی پلکس و تراشه uln2803 برای راه اندازی مستقیم موتور ها (پایه مثبت همه موتورها به +vcc و پایه منفی هر کدام از موتورها به یکی از خروجیهای uln2803 متصل باشه و ورودیه 4051 هم به pwm سخت افزار ی وصل باشه تا با فراخوان شماره موتور بر روی پایه های آدرس دهی دور هر یک به تنهایی قابل کنترل باشه.
4051موفقیت یک فرایند است نه یک اتفاق...
******** استفاده از گزينه تشكر نشانه اهميت و احترام شما به پيگيري شخص نظر دهنده است ********
دیدگاه
-
پاسخ : کنترل 8 موتور بصورت pwm .. نظر می خوام
کد:Pwms: Incr Tik If Tik = 255 Then Tik = 0 Portd = 0 End If If Tik > Y(1) Then Portd.7 = 1 If Tik > Y(2) Then Portd.6 = 1 If Tik > Y(3) Then Portd.5 = 1 If Tik > Y(4) Then Portd.4 = 1 If Tik > Y(5) Then Portd.3 = 1 If Tik > Y(6) Then Portd.2 = 1 If Tik > Y(7) Then Portd.1 = 1 If Tik > Y(8) Then Portd.0 = 1 Return
ما زنده به آنیم که آرام نگیریم موجیم که آسودگی ما عدم ماست
وقتی یک ملت برای فرهنگ و نژاد و ملیت خویش ارزشی قائل نشد و حقی را که طبیعت برای نگاهداری نژاد پاکش به او ارزانی داشته بود پایمال ساخت و به بیگانگان روی آورد و تسلیم شد دیگر حق ندارد از شکست و بدبختی سیاسی که خودش باعث آن شده است شکایت کند .ادولف هیتلر
r.babazadeh@yahoo.com
دیدگاه
-
پاسخ : کنترل 8 موتور بصورت pwm .. نظر می خوام
نوشته اصلی توسط hansariiiatmega168 6 کانال pwm نداره و همچنین 30f4011 چهار کانال pwm داره، اگه از atmega2560 استفاده کنی بغیر از 8 تاموتورت 7 کانال دیگه هم داری
دست هایی که کمک میکنند از دست هایی که دعا میکنند مقدس ترند....کوروش کبیر
دیدگاه
-
پاسخ : کنترل 8 موتور بصورت pwm .. نظر می خوام
سلام
بله حق باشماست mega168 دارای 6 کاناله اگه از هر سه تایمر استفاده کنید. شما حتی با یک تایمر هم می تونید هشت پالس برای کنترل 8 سروو ایجاد کنید.و اگه موتورها dc بصورت همزمان کار نمی کنند می تونید از یک مالتی پلکسر که یک ورودی pwm داشته باشه و خروج ها به درایو موتور ها وصلند استفاده کنید یعنی در هر زمان بتونید pwm رو به یک موتور بدید.
xmega که دارای هشت تایمر دارای 24 خروجی OCT هست یعنی می تونید 24 پالس همزمان PWM
من فکر می کنم باید با اون چیزی که راحترید کار کنید مثل خود که DSPIC33 رو به XMEGA و PIC32 به ARM7(بغیر از CORTEX-M3) ترجیح می دم.
دیدگاه
دیدگاه