نمایش/عدم نمایش سایدبار
رفتن به بالای صفحه
أَللّهُمَّ ارْزُقْنی شَفاعَةَ الْحُسَیْنِ یَومَ الْوُرُودِ
مهدی دمیرچیلو

پروژه و آموزش arduino ماژول روتاری انکودر rotary encoder

245

به نام خدا : تو این مطلب از سری مطالب پروژه های آردوینو ، میخوام اموزش و پروژه کار با ماژول روتاری انکودر چرخشی رو بزارم براتون ( پروژه و آموزش arduino ماژول روتاری انکودر rotary encoder )
پروژه و آموزش arduino ماژول روتاری انکودر rotary encoder

پروژه و آموزش arduino ماژول روتاری انکودر rotary encoder


داستان این مطلب(شوخی جالب^_^) : تو مسجد بودم، کسی نبود، با رفقا بودیم، رفتم بالای منبر نشستم، حوصله نداشتم و خسته بودم، یهو رفیقم اومد گفت : رسول خدا(ص) گفته که در آینده بوزینه ها از منبر میرن بالا هیچی منم معدم تعجب کرد یه لحظه از این جمله رفیقم و میخندیدم از این شوخی رفیقم(داستان دقیق این ماجرا به صورت زیر هستش، خواستید بخونید)

روزی نبی اکرم در خواب دید که بوزینه ها و میمون هایی از منبر او بالا میروند. این موضوع پیامبر را بسیار متأثر و محزون ساخت؛طوری که فردای آن روز پیامبر را دیدند وقتی میخواست بالای منبر برود منبرش را با حالت حزن عجیبی به دقت نگاه می کرد. و میگویند بعد این رویا پیامبر تا آخر عمر مبارکش صورتشان هرگز متبسم نمیشد...
و آن بوزینه ها و میمون ها همان بنی امیه ملعون و خبیث بودند که یکی پس از دیگری ادعای خلافت اسلامی را کردند.و شجره ملعونه هم اشاره دیگری به خاندان بنی امیه دارد.
این داستان در آیه 60 سوره اسرا اومده(بنا به تفسیری) که میتونید شرح کاملش رو در لینک زیر ببینید اگه علاقه داشتید یا کنجکاو!!! بودید : تفسیر آیه 60 سوره اسرا
پس نتیحه میشه گرفت که اون بوزینه هه من نبودم. laugh


مطلب مرتبط : قبلا درباره یه مدل از روتاری انکودر یه مطلب گزاشته بودم که میتونید بخونیدش(تو مطلب زیر توضیحات بیشتری دادم) :
آموزش کار با Rotary Encoder و پرژوه کنترل Step Motor


خرید این قطعه : برا خرید این قطعه میتونید به لینک زیر مراجعه کنید که خودمم از همین لینک زیر خریدم، البته انواع دیگه ای هم وجود داره در سایت های دیگه که میتونید مراجعه کنید و بررسی کنید و بخرید. crazy
ماژول سنسور چرخش FZ0534 – شافت اینکودر – Rotary Encoder


آموزش کار با روتاری انکودر چرخشی

خب این قطعه یه قطعه ساده ولی کاربری هستش(حالا کاربردش کجاس نمیدونم laugh نشستم فک کنم ببینم کجاها میشه ازش استفاده کرد pardon، ولی خب از ظاهر هر قطعه میشه میزان کاربردش رو فهمید، خب معلومه که این جمله اشتباهه bad، چرا؟ بععععععله مثلا از ظاهر خازن و مقاومت میشه میزان کاربردشون رو فهمید؟ خب معلومه که عمرا نمیشه و باید عملکرد هر قطعه رو دقیقا بدونی تا بتونی از اون قطعه در جای مناسب خودش استفاده کنی، و همین دونستن عملکرد دقیق و درست هر قطعه خیلی مهمه buba)
آموزش کار با روتاری انکودر چرخشی
خب عکس بالا گویای نحوه کار این قطعه هست، که در هر تغییر زاویه این قطعه 4 تا پالس میده.

CW = ClockWise = در جهت چرخش عقربه های ساعت

CCW = Counter ClockWise = خلاف جهت چرخش عقربه های ساعت

در جهت عقربه های ساعت : خب اون خطوط قرمز یعنی 1درجه و اگه از خط قرمز اولی بریم به سمت دومی 1درجه انگار روتاری انکودر ما چرخیده در جهت چرخش عقربه های ساعت.
در خلاف جهت عقربه های ساعت : اون خطوط سبز هم مربوط به تغییر زاویه در خلاف جهت چرخش عقربه های ساعت هستش.
 
پایه های روتاری انکودر چرخشی : این قطعه 5تا پایه به صورت زیر داره : VCC،GND،S1،S2،KEY
که پایه های VCC و GND کارشون که معلومه.
پایه KEY برا کلید هستش، همون طور که میدونید این قطعه روتاری انکودر علاوه بر روتاری انکودر بودن، مثل یه کلید هم هستش که با فشار دادن اهرمش به سمت پایین کلیدش قطع میشه(کلیدش در حالت عادی مقدار VCC داره و وقتی کلید رو فشار بدید مقدار پایه KEY برابر GND میشه)
پایه هایS1 و S2 هم همون پایه هایی هستن که پالس روشون اعمال میشه و ما مقدار این پایه ها رو میخونیم(البته این پایه ها در شکل بالا با نام های A و B ذکر شده که زیاد چیز مهمی نیست.  rtfm )
 

سوال1 : چطور میشه فهمید که روتاری انکودر یه درجه چرخیده؟
جواب1 : خب در بالا گفتم و اون عکسه هم بازم گویای مسئله هستش ولی باز بیشتر توضیح میدم.
در جهت عقربه های ساعت : خب در این حالت با توجه به عکس بالا در یه درجه روتاری انکودر پالس هایی به صورت زیر ارسال میکنه(جدول زیر، قسمت "Coding for clockwise rotation")، یعنی وقتی روتاری انکودر یه درجه چرخید این قطعه 4 پالس به صورت جدول زیر ارسال میکنه.(یعنی پایه های S1 و S2(یا همون A و B) به صورت جدول زیر مقادرشون تغییر میکنه با 1 درجه چرخش روتاری انکودر.)
در خلاف جهت عقربه های ساعت : اینم مثل حالت بالا هستش فقط نحوه تغییر پایه ها فرق داره که در جدول زیر(Coding for counter-clockwise rotation) مشاهده میکنید.

Coding for clockwise rotation

 B A Phase
0 0 1
1 0 2
0 1 3
1 1 4

Coding for counter-clockwise rotation

B A Phase
0 1 1
1 1 2
1 0 3
0 0 4
 
سوال2 : حالا تو کد نویسی چیکار کنیم تا راحت متوجه چرخش یه درجه ای روتاری در جهت چرخش عقربه های ساعت بشیم؟
جواب2 : خب بازم با توجه به عکس بالا :
در جهت عقربه های ساعت : وقتی پایه های A و B (همون S1 و S2) مقدار جفتشون برابر HIGH (همون 1 منطقی) شد یعنی روتاری انکودر 1 درجه در جهت عقربه های ساعت چرخیده.
در خلاف جهت عقربه های ساعت : وقتی پایه های A و B (همون S1 و S2) مقدار جفتشون برابر LOW(همون 0 منطقی) شد یعنی روتاری انکودر 1 درجه در خلاف جهت عقربه های ساعت چرخیده.
 
سوال3 : طبق گفته خودتون و اون جدولی که قرار دادید و او عکس، هم در چرخش در جهت چرخش عقربه های ساعت و هم خلافش ما حالت HIGH شدن هر دو پایه و LOW شدن هر دو پایه رو داریم، خب حالا مثلا هر پایه LOW شد(یا HIGH شد)، حالا چطور میشه فهمید که این مربوطه به چرخش در جهت عقربه های ساعت یا خلافش؟
جواب3 : خب سوال خوبی بود، در زیر توضیح میدم.
از وقفه استفاده میکنیم : خب اگه بیایم یکی از پایه های S1 یا S2 رو به یه پایه وقفه وصل کنیم(مثلا وقفه روی پایه S1 رو فعال میکنیم) و حالت وقفه رو میزاریم روی حالت RISING، حالا این وقفه کی رخ میده؟ بعله وقتی مقدار پایه S1 از 0 به 1 منطقی تغییر پیدا کنه، حالا این داخل تابع وقفه میایم بررسی میکنیم اگه مقدار پایه S1 با S2 برابر بود که یعنی روتاری 1 درجه در جهت عقربه های ساعت چرخیده و مقدار پایه های S1 و S2 عکس هم بود که یعنی روتاری 1 درجه در خلاف جهت چرخیده.(این هم جواب سوال 3 بود و هم توضیح کدهای پروژه2 که در ادامه قرارش دادم)
از وقفه استفاده نمیکنیم : خب تو این حالت هم به سری شرط و شروط تعیین میکنیم تا حالت RISING شدن پایه S1 رو متوجه بشیم و بعد میایم پایه های S1 و S2 رو با هم بررسی میکنیم و بعد اگه هر دو 1 بودن که یعنی در جهت و اگه هر دو 0 بودن یعنی در خلاف جهت روتاری 1 درجه چرخیده.(اینم جواب سوال3 و توضیح پروژه 1 laugh )
 
سوال 4 : خب حالا اگه وقفه پایه S2 رو فعال کنیم و پایه S1 وقفه نداشته باشه فرقی میکنه؟
تست کنید و نتیجه رو ببینید، چون من بگم هم بد توضیح میدم و هنگ میکنید، همینو به عنوان تمرین تستش کنید.

پروژه آردوینو روتاری انکودر چرخشی

شماتیک این پروژه آردوینو به صورت زیر هستش :
توجه 1 : در زیر 2-3 تا پروژه قرار میدم که شماتیک همشون همین عکس بالا هستش.
توجه 2 : در دو پروژه زیر از پایه KEY استفاده نکردم چون ربطی به مطلب نداره و یه کلید معمولی هستش که وقتی روش کلیک بشه مقدارش 0 میشه و در حالت عادی مقدار این پایه 1 هستش، اگه خواستید هم میتونید از این پایه استفاده کنید و ربطی به فهمیدن چرخش روتاری انکودر نداره و فقط یه کلید هستش(دو بار گفتم حالا باز بیاید سوال کنید.  laugh )
پروژه آردوینو
 
پیشنیاز هایی برای فهم بهتر کدهای چند تا پروژه زیر : برای این که در فهم کدهای این چند تا پروژه به مشکل بر نخورید باس مطالب مربوط به جلسات 1،4،5،6،10 از سری مطالب آموزش آردوینو رو بخونید.
 
کد های پروژه1

 
کدهای پروژه 2(از وقفه استفاده شده)

 


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


منبع این مطلب لینک مقابل از سایت آردوینو هستش : Reading Rotary Encoders
البته به نظرم خیلی چیزای اون لینک بالا اضافه هستش و بعضی پروژه ها رو هم تغییراتی توش دادم چون به نظرم مشکلاتی داشت.
اگه این مطلب مفید بود براتون 3تا صلوات برا شادی روح شهدا و امام شهدا بفرستید.
در ضمن سوالی بود بگید جان داش، حالا اگه بلد بودیم جواب میدیم و گرنه میگم بلد نیستم دیگه، غیر از این نیستش که، آخه بعضی دوستان خجالت میکشن سوال بپسرن، جان داش منو تو هر انجمنی ببینی بیش از این که به سوالات دیگران جواب داده باشم بیشتر تو اون انجمن ها سوال پرسیدم. laugh
راستی در مطالب بعدی پروژه MP3 PLAYER با آردوینو با قابلیت کنترل از طریق نرم افزار نوشته شده تحت ویندوز و پروژه MP3 PLAYER با صفحه لمسی و نمایشگر رنگی و بعد پروژه ضبط صدا رو قرار میخوام بدم تو سایت. diablo
فعلا یا علی.

تعداد مطالب : 367 تا
جنگ ما فتح قدس را به همراه خواهد داشت. [ امام خمینی (ره) ]
بقیه جلسات :
این مطلب هیچ طبقه بندی یی ندارد!
ارسال دیدگاه
36
نظرات این مطلب بسته شده است.
  1. مرتضی

    مهمان

    مرتضی

    شبیه ساز انکودر چه طوری تو پروئوس بیاریم؟

  2. مرتضی

    مهمان

    مرتضی

    سلام انجمن سایت جای رفع اشکال برنامه نویسی و شبیه سازیه این چه سیایتی که نمی تونیم کد بزاریم قالب بهم میریزه!
    قالب رو عوض کنید
    البته نظارت هم کنین
    من تازه واردم جای اعتراض بدهید
    امام علی گفته
    اِضرِبُوا بعضَ الرأيِ ببعضٍ يَتَوَلَّدْ مِنهُ الصَّوابُ.
    رایزنی كنید تا اندیشه درست متولّد شود.

  3. مرتضی

    مهمان

    مرتضی

    سلام انجمن سایت جای رفع اشکال برنامه نویسی و شبیه سازیه این چه سیایتی که نمی تونیم کد بزاریم قالب بهم میریزه!
    قالب رو عوض کنید
    البته نظارت هم کنین

  4. امیرهوتن طوسی

    مهمان

    امیرهوتن طوسی

    سلام برادر
    خدا قوت
    بابت سایت خوبت و زحمتی که میکشی بینهایت سپاسگذار
    سوال داشتم میخواستم ببینم میشه دوتا کلید به پروژه اضافه کرد که درجه های تنظیم شده رو سیو کنه و با زدن این کلید ها به اون درجه سیو شده برسه و اینکه ایا میشه زمانی که درجه تنظیمه یا سیو هستش با زدن کلید روی روتاری حالت ریست یا بازگشت به صفر درجه فعال بشه
    خیلی به این حالت نیاز دارم
    سپاسگذار دوست عزیز
    ومن ال..توفیق

  5. N CH

    مهمان

    N CH

    سلام وقت بخیر خسته نباشین بابت اطلاعات خوبی که میزارید
    آقا من اومدم سوال 3 رو هرچی بررسی کردم به نتیجه نرسیدم اگه A رو S1 درنظر بگیریم اگه حالت RISING واسه اون اتفاق بیافته تو cw و ccw هیچ کدوم مقدار S1 , S2 باهم برابر نمیشه. میشه یه توضیحی راجع بعش بدین؟
    یا علی

  6. سعید

    مهمان

    سعید

    سلام برادر
    اولا دمت گرم واسه مطالب جالبت
    بعدش من یه اینکودر با اتمگا 32 اجرا کردم و مشکلی هم توی خوانش ندارم هم در جهت ساعت گرد هم پاد ساعت گرد
    فقط مشکلم توی سرعت چرخشه
    مثلا وقتی که اینکودر رو توی یه فاصله ی مشخص با سرعت زیاد میچرخونمش اعداد به سرعت میره بالا مثلا فرض کن میره تا 100
    و وقتی که همون مقدار فاصله رو با سرعت کم میچرخونم اعداد کمی مثلا 30 تا بهم نشون میده
    شما چه راه حلی پشنهاد میکنی ؟؟؟؟؟؟

  7. سید محمد

    مهمان

    سید محمد

    سلام با کد های بالا میشه مدل HW_040 رو راه اندازی کرد؟
    یا کد هاش فرق میکنه؟
    ممنون.

    مشاهده پاسخ ها (1)
    • مهدی دمیرچیلو

      نویسنده این مطلب

      مهدی دمیرچیلو

      سلام – یه لینکی چیزی از این مدلی که گفتی میدادی حداقل

  8. ابراهیم زاده

    مهمان

    ابراهیم زاده

    سلام عالی هروقت میام سایت شما انرژی میگیرم
    مطالب علمی ناب،انقلابی ،اسلامی ،همه چیز تمام

  9. محسن

    مهمان

    محسن

    من میخوام با استفاده از اردوینو حرکات انکودر رو تو یه بازه مثلا 60 ثانیه دریافت کنم بعد با یه استپر ازش تقلید کنم!
    به نظرتون با خروجی pwm میشه؟🤔

  10. محسن

    مهمان

    محسن

    این همون خروجی pwm هست که اکثر انکودر ها دارن؟

  11. حاج علی

    مهمان

    حاج علی

    سلام عیدتونم مبارک
    یه پروژه دارم فعلا نمیخوام از اینکودر صنعتی سافتاده کنم
    اگر بخام از همین انکودر استفاده کنم ایا میتونه پارامتر هی زیرو بهم بده یا ن؟
    1_سرعت چرخش؟ 2_مسافت طی شده؟(یعنی اگر وصل شه به یک چرخ میتونه از روی میزان چرخش مسافت طی شده بده؟اگر تعداد چرخش رو بده میشه توی فرمول گذاشت و مسافتو حساب کرد بحث اینه که تعداد دور رو میده یا ن)

    مشاهده پاسخ ها (4)
    • مهدی دمیرچیلو

      نویسنده این مطلب

      مهدی دمیرچیلو

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

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

      اما مسافت طی شده!!!
      اومدیم موتور چرخید ولی دستگاه حرکت نکرد…از این جور مشکلا بگذریم.با یه تست بشه فهمید که مثلا به ازای هر 10 پالس.موتور یک دور کامل.در نتیجه لاستیک یک دور کامل ( فرضم بر اینه که میخوای مسافت طی شده ماشین کنترلی! رو حساب کنی ) میزنه و میری حساب میکنی که لاستیک وقتی یه دور کامل میزنه چقدر دستگاه جابجا میشه.مثلا 10 سانت.
      فلذا به ازای هر 10 پالس روتاری فوق.دستگاه 10 سانت جابجا میشه….

      • حاج علی

        مهمان

        حاج علی

        سلام دمت گرم بابت پاسخ جامعت
        در خصوص تایمر دقیقا چجور؟
        ینی یه تایمر خارجی به اردیونو وصل کنم؟چجور کانفیگ رو انجام بدم اونوخ
        راستی جهت چرخش اینکودرم میشه بدست اورد درسته؟

        • مهدی دمیرچیلو

          نویسنده این مطلب

          مهدی دمیرچیلو

          میکرو خودش واحد تایمر داره

          • حاج علی

            مهمان

            حاج علی

            ممنون
            تازه کارم laugh خیال کردم باس تایمر خارجی وصل کنم
            تابعشو میدونی بنویسی برام unknw

  12. امیرحسین

    مهمان

    امیرحسین

    سلام و وقت یخیر
    من یه موتور گیربکس انکودر دارم میخوام مثلا 2 دور به راست و 3 دور به چپ بجرخونمش میخوام بدونم چطور باید از روتاری استفاده کنم یا سیم بندیم باید چطور باشه یا اصلا میشه
    ممنون از شما

  13. zeinali,p

    مهمان

    zeinali,p

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

  14. بهرام

    مهمان

    بهرام

    سلام وقت بخیر
    بعضی از شاسی های ربات مسیریاب که توبازارهستن خودشون موتور دارن که بعضی هاشون انکودر دارن بعضی هاشون هم نه
    کدهای راه اندازی موتور با انکودر و بدون انکودر در آردوینو باهم متفاوته؟؟
    من فقط راه اندازی موتور بدون انکودرشو بلدم
    اگر تفاوت داره لطفا راهنماییم کنین

    مشاهده پاسخ ها (1)
    • مهدی دمرچیلو

      نویسنده این مطلب

      مهدی دمرچیلو

      سلام
      نمیدونم چه مدل انکودری میگی.

  15. مسعود

    مهمان

    مسعود

    سلام ممنون از مطالب مفیدتون
    من میخواستم یک روتاری اینکودر افزایشی که در واقع به عنوان متر عمل میکنه رو از طریق پورت سریال به کامپیوتر وصل کنم که اندازه ی متر رو نمایش بده
    اگر ممکنه راهنمایی کنید ممنون

  16. سینا

    مهمان

    سینا

    گفتی نظر بده منم دارم میدم yes
    این روتاری انکودر همون روتاری روی ضبط خودرو نیست؟؟ pardon
    و اینکه اگه برا تنظیم دما تو اردوینو استفاده کنم پایداری داره(یعنی عمرش خوبه؟؟)
    و هیچی دیگه ناراحت نشی سوالا چرند و پرنده blush

    مشاهده پاسخ ها (1)
    • مهدی دمرچیلو

      نویسنده این مطلب

      مهدی دمرچیلو

      ضبط خودرو؟ بعید میدونم تو ضبط خودرو از همچین قطعه ای استفاده کرده باشن – نمیدونم دقیقا.
      برا تنظیم دما بخوای از آردوینو استفاده کنی؟ نباید مشکلی رخ بده – ترجیها از بردش استفاده نکن – خودت یه برد برای مدارت بزن.

  17. آرمان درخشانی

    مهمان

    آرمان درخشانی

    سلام
    ممنون از توضیحات ارزنده ات
    اجرت با سید الشهدا

  18. سارا

    مهمان

    سارا

    سلام ببخشید نمیشه این ماژول رو با avr راه اندازیش کنیم؟

    مشاهده پاسخ ها (1)
    • مهدی دمرچیلو

      نویسنده این مطلب

      مهدی دمرچیلو

      سلام-میشه

  19. بهرام

    مهمان

    بهرام

    سلام مطالبتون خیلی جالبه فقط یه سوال داشتم اونم اینه که این انکدرو میشه به یه چرخ وصل کرد ؟
    که با چرخ بجرخه؟
    blum

    مشاهده پاسخ ها (2)
    • مهدی دمرچیلو

      نویسنده این مطلب

      مهدی دمرچیلو

      سلام – موتورو به چرخ وصل کنی و به روتاری؟ موتورت باید دو شافته باشه – فک کنم بهش همینو میگن

      • zeinali,p

        مهمان

        zeinali,p

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

  20. tohid

    مهمان

    tohid

    عالی بود داداش تو سایتت مطالب اموزنده ای گذاشتی دمت گرم موفق باشی.

  21. ابی

    مهمان

    ابی

    مطلب جالب و به درد بخوری بود.تشکر

  22. مریم

    مهمان

    مریم

    سلام وخسته نباشید. یه سوال اینکه در جاهای پر سر و صدا هم میشه از این سیستم آردوینو استفاده کرد؟

    مشاهده پاسخ ها (1)
    • مهدی دمرچیلو

      نویسنده این مطلب

      مهدی دمرچیلو

      سلام
      بیشتر بحث نویز مطرح هستش تا آلودگی صوتی

  23. alies

    مهمان

    alies

    سلام اقا مهدی
    امیدورام خوب باشی
    میخواستم بدونم آردینو تو صنعت کاربرد داره؟

    مشاهده پاسخ ها (1)
    • مهدی دمرچیلو

      نویسنده این مطلب

      مهدی دمرچیلو

      سلام
      تا صنعت رو چی تعریف کنی
      خب آردوینو همون avr هستش – Avr هم که هر جا بری نوشته نویز میگیره و البته راه حل هایی هم ارائه دادن، باید بسته به محیط استفاده پروژه، میزان امکانات مورد نیاز، حداکثر هزینه تمام شده پروژه و… بهترین میکرو رو انتخاب کنی – ممکنه یه جا همین آردوینو کافی باشه – ممکنه یه جا آرم هم جواب نده.

  24. امین

    مهمان

    امین

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