مقالات متفرقه

آموزش کار با Rotary Encoder و پرژوه کنترل Step Motor

آموزش کار با Rotary Encoder و پرژوه کنترل Step Motor

 

روتاری انکودر چیست

 

انواع روتاری انکودر

  1. افزایشی
  2. مطلق

قیمت روتاری انکودر

من قیمت را نمی دانم زیرا هنوز آن را نخریده ام ، اما یکی از دوستان آن را خریداری کرده است ، یک رمزگذار چرخشی مطلق ، 100 پالس در هر دور ، ساخت کره (من دقیقا نمی دانم بالا است یا پایین) ، قیمت در حدود 150 هزار تومان است ، او گفت او آن را خریداری کرده است.

کاربرد روتاری انکودر

خب مثلا فرض کنید شما میخواید یه موتوری حدود 90 درجه بچرخه…حالا با دقت 1± درجه، حالا مثلا با استپ موتور میخوای کار کنی که دقت کار بهتر بشه حالا باید چیکار کنی؟ یه راه اینه که بیای با خطا و اشتباه ببیند که برا چرخش 90 درجه باید چند ثانیه پالس بدی به استپ موتور که باز معلوم نیست موتور چقدر میچرخه و نمیدونی الان تو چه وضعیتی هستش.(گفتم دانستن وضعیت موتور شاید یاد سرو موتور بیوفتید، باید خدمتتون عرض کنم که سرو موتور 360 درجه نمیتونه دور خودش بچرخه ولی استپ موتور میتونه و لذا شاید نتونیم از سرو موتور استفاده کنیم.) ولی یه راه هستش که بیای از سنسور فیدبک استفاده کنی(همون روتاری انکودر منظورم هستش که یه جورایی فیدبک محسوب میشه، البته سایت ویکی بوک چون این اسم رو انتساب داد منم انتساب دادم :-D) و بیای ببینی که موتور هر موقع به 90 درجه رسید دستور توقع موتور رو میدی، حالا چطور میفهمی موتور به زاویه 90 درجه رسیده؟ بله به کمک روتاری انکودر، روتاری انکودر در پالس های مختلفی موجود هستش که هر چی پالس های ارسالیش بیشتر باشه دقتش هم بیشتر میشه و دقت کار ما هم همین طور، ما میایم شافت موتور رو به رو روتاری انکودر میدیم.

سوال : آقا مگه موتور یه شافت نداره؟ اگه بدیش به روتاری انکودر پس چطور میتونیم از موتور در جایی که نیاز داریم استفاده کنیم؟ چون موتور دیگه شافتی برای کار مورد نیاز ما نداره؟ یکی داشت و دادیمش به روتاری انکودر.
جواب : خب حرفتون درسته ولی باس از موتور هایی استفاده کنیم که دو تا شافت داره، یه شافت از این سر موتور زده بیرون و یه شافت از اون سر موتور زده بیرون :-D، عکس زیر رو ببین

استپ موتور

خب حالا میایم یه شافتش رو میدیم به روتاری انکودر و اون یکی تافتش رو در جای مد نظرمون ازش استفاده میکنیم.(عکس زیر رو ببین)

روتاری انکودر

خب میگفتم : حالا ما میخاستیم استپ موتور 90 درجه بچرخه، برا این کار میایم و کمک میکرو استپ موتور رو روشن میکنیم(حالا از درایور استپ موتور هم استفاده میکنیم که در مطلب مربوط به خودش توضیح میدم اینو و اینجا جاش نیست) و بعد از روشن کردن موتور میایم روتاری انکودر رو بررسی میکنیم، مثلا فرض میکنیم روتاری انکودر در هر دورش 360 تا پالس میده(یه عدد رند گفتم تا کارمون ساده باشه و نریم سراغ محاسبات ریاضی و…) حالا تو 90 درجه حدودا 90 تا پالس میده به ما، حالا ما بعد از روشن کردن استپ موتور میایم و بررسی میکنیم هر موقع تعداد پالس های روتاری انکودر برابر 90 تا شد میفهمیم که موتور 90 درجه چرخیده و لذا دستور توقف موتور رو میدیم.
خب به همین راحتی ما برا موتورمون یه فیدبک گزاشتیم و …

نحوه کار روتاری انکودر

خب فیلم زیر رو هم میتونید ببنید که تو کانال آپاراتم براتون آپلود کردم، خداییش کلیپ خوبی هستش (هر چند که زبونش انگلیسی هستش ولی واضح هستش و تصویر گویای داستان هستش)

 

پایه های روتاری انکودر

خب این قطعه غیر از 2 پایه تغذیه(GND و VCC) یه 6 تا پایه دیگه هم داره، 3 تا پایه به نام های A و B و Z (و 3 تا پایه دیگه ‘A و ‘B و ‘Z هستند، معکوس سه پایه A , B ,Z هستن که خروجی منطقیشون بار عکس هستش، مثلا یه جا Z برابر 1 میشه، ‘Z برابر 0 میشه و …)
خب Z وقتی 1 میشه که موتور یه دور کامل بزنه(البته به شرطی که در حالت اولیه باشه) و AوB هم به توجه به مشخصات روتاری انکودر تغییر میکنن، مثلا بر روی! روتاری انکودر نوشته 360 پالس برای هر دور، خب حالا اگه موتور 1 درجه بچرخه، روتاری انکودر هم یه درجه میچرخه(شافت موتور داخل روتاری انکودر هستش) و AوB هم یه سری پالس به صورت زیر میدن بیرون
تا جایی که من فهمیدم اگه تمام پالس های زیر رو یه بار دریافت کنید انکار 1 پالس دریافت کردید و انگار موتور 1 درجه چرخیده(البته اگه تعداد پالس های روتاری انکودر برای هر دور کامل 360 تا باشه) و لذا برای این که بفهممی موتور چند درجه چرخیده میای این دو پایه رو به وقفه خارجی وصل میکنی و تغییراتشون رو محاسبه میکنی، وقفه های خارجی رو باید بزارید بر روی “به ازای هر تغییری” و اگه جداول زیر رو ببینید در هر سط فقط یکی از موارد A و یا B تغییر میکنه و میتونید تو توابع وقفه مربوطه(پایه های A,B رو به INT0 و INT1 وصل میکنید و هر بار تغییری رخ داد و وقفه مربوط به اینا رخ داد میاید یه شمارنده رو افزایش میدید، حالا برای این که بفهمید موتور یه دور کامل زده یا نه باید 4 برابر عدد 360 رو در نظر بگیرید، چون من گفتم به ازای هر 4 تغییر زیر ما 1 پالس دریافت کردیم/هر 4 تغییر زیر میشه 1 پالس و پون ما در هر بار یه شمارنده رو مقدارش رو 1 واحد زیاد کردیم، و لذا…. کد زیر رو ببینید و خودتون رو راحت کنید)

 

توضیح پایه های درایور استپ موتور A4988

توضیح پایه های درایور استپ موتور A4988
ENABLE : اگه 0 ولت بدی به این پایه ماژول فعال میشه و موتور آماده حرکت و اگه 1 بدی ماژول غیر فعال شده و موتور دیگه جریان نمیکشه و غیر فعال میشه
VMOT و GND : تغزیه استپ موتور – بین 8-35 ولت و جریان ماکزمم این ماژول هم فک کنم 3 آمپر باشه(فک کنم باید دیتاشیتش رو نگاه کنید باز خودتون)
2A-2B-1A-1B : استپ موتور به این پایه ها وصل میشه، نحوه اتصال در لینک های بالا اومده.
VDD-GND : تغزینه ماژول (5 ولت)
توجه : تا جایی که میدونم باید تموم GND های مدار به هم وصل باشه(حالا شما تو حالت عادی تست کنید و اگه جواب نداد GND ها رو مشترک کنید یعنی به هم وصل کنید)
DIR : تعیین جهت چرخش موتور هستش، اگه 0 بدی در چهت عقربه و اگه 1 بدی در خلاف جهت عقربه ساعت استپ موتور میچرخه.
RESET , SLEEP : معلومه کارشون(نمیخواد کارشون داشته باشید)
STEP : یه موچ PWM میدید به این پایه ها و موتور رو کنترل میکنید.(پروژه ای که براتون گزاشتم رو ببینید متوجه میشید کاملا)
MS1 – MS2 – MS3 : با این 3 تا پایه میتونید تعداد گام های استپ موتور رو تعیین کنید.(تو جدول زیر ستون آخر رو من متوجه نشدم، اگه کسی میدونه به ما هم لطفا بگه) روتاری

Excitation Mode Microstep Resolution MS3 MS2 MS1
2 Phase Full Step L L L
1-2 Phase Half Step L L H
W1-2 Phase Quarter Step L H L
2W1-2 Phase Eighth Step L H H
4W1-2 Phase Sixteenth Step H H H

 

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا