آردوینو آموزش آردوینو پروژه های آردوینو پکیج سنسور آردوینو

آموزش ماژول روتاری انکودر از پکیج ۳۷ سنسور آردوینو سرو موتور و LED RGB

Arduino-Rotary-Encoder-servo-motor-led-rgb-Module-digispark
نوشته شده توسط پریسا پوربلورچیان

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

 

ماژول روتاری انکودر – Rotary Encoder

ماژول روتاری انکدر Rotary Encoder با استفاده از شافتی که بر روی ماژول قرار دارد، در دو جهت مثبت و منفی به چرخش در می‌آید. با چرخش شافت ماژول روتاری انکودر Rotary Encoder در دو جهت، فرکانس خروجی به صورت پالس تولید می‌شود. تعداد دوران شافت ماژول روتاری انکودر بی‌نهایت است. بر روی شافت ماژول روتاری یک سوییچ قرار گرفته است که با فشار میکروسوییچ، حرکت شافت ریست شده و به حالت اولیه باز می‌گردد و مجددا از دوران ۰ شروع خواهد شد. شافت روتاری انکدر دارای ۳ پایه A,B,C است. در طرف دیگر شافت دو سوییچ قرار دارد که یکی از آن ها به پین A , C  و سوییچ دیگری به پین B , C متصل است. با هر حرکت شافت انکودر، سوییچ ها باز و بسته می‌شوند. در حالت اول اگر هر دو سوییچ بسته باشند، با چرخش شافت در جهت عقربه های ساعت یا خلاف جهت عقربه های ساعت، هر دو سوییچ باز خواهد شد و برای حالت دوم نیز برعکس اتقاف خواهد افتاد. در واقع در حالت کلی خروجی به صورت پالس تولید شده و سوییچ های A , B , C به صورت باز و بسته عمل خواهند کرد. ماژول روتاری انکدر دارای ۵ پایه به ترتیب GND, VCC , SW , DT , CLK می‌باشد. هنگامی که سوییچ‌ها در حالت open یعنی باز باشند، خروجی پالس در بالاترین سطح خود و هنگامی که سوییچ‌ها در حالت close یعنی بسته باشند، خروجی پالس در پایین ترین سطح قرار می‌گیرد. در ادامه به بررسی اتصالات و راه اندازی ماژول روتاری انکودر خواهیم پرداخت.

 

هدف آموزش ماژول Rotary Encoder

با چرخش شافت ماژول روتاری انکودر در دو جهت چپ و راست، با اتصال یک سرو موتور در خروجی، سرو در زاویه ۱۸۰ درجه تغییر خواهد کرد. برای بررسی دقیق تر وضعیت ماژول روتاری و سرو موتور، در خروجی از یک ماژول LED RGB SMD استفاده می‌کنیم. با چرخش شافت روتاری انکودر در جهت عقربه های ساعت، سرو موتور ۱۸۰ درجه میچرخد و سپس ماژول ال ای دی LED RGB به رنگ قرمز تغییر رنگ خواهد داد. همچنبن با چرخش شافت در خلاف جهت عقربه های ساعت، مجددا سروو به چرخش در آمده و ماژول ال ای دی LED RGB به رنگ سبز تغییر رنگ خواهد داد. در ادامه به بررسی اتصالات خواهیم پرداخت.

 

سرو موتور SG90

سرو موتور SG90، ماژولی با ابعاد کوچک و کم وزن با توان خروجی بالایی است. شافت خروجی سرو موتور Servo motor SG90 توانایی چرخش با زاویه ۱۸۰ درجه در هر مسیر ۹۰ درجه را دارند.خروجی سرو موتور ها به صورت پالس بوده و در حالت “۰”  با پالس ۱٫۵ میلی ثانیه در حالت وسط ، در “۹۰” با پالس ۲ میلی ثانیه تنها در جهت راست، در “۹۰-” با پالس ۱ میلی ثانیه تنها در حالت چپ خواهد چرخید. ولتاژ کاری سرو موتور Servo motor SG90 بین ۴٫۸ تا ۵ ولت DC است. سرو موتور SG90 دارای سه پایه به ترتیب GND , VCC , Signal می‌باشد. سیم قهوه ای پایه GND ، سیم قرمز پایه VCC و سیم نارنجی پایه سیگنال (S) می‌باشد. در ادامه به بررسی اتصالات خواهیم پرداخت.

ماژول ال ای دی LED RGB SMD

ماژول SMD Color دارای یک ال ای دی سه رنگ RGB با چهار پایه جهت کنترل رنگ و تولید رنگ‌های متفاوت می‌باشد. ال ای دی RGB از سه رنگ RED,BLUE,GREEN تشکیل شده است که از ترکیب این سه رنگ می‌تواند بیش از ۱۶ میلیون رنگ را تولید کند. سه رنگ آبی ،قرمز، سبز ۸ بیتی می‌باشند که دارای مقادیر عدد صحیح ۰ تا ۲۵۵ هستند. به عنوان مثال با ترکیب این سه رنگ ۲۵۶*۲۵۶*۲۵۶ =۱۶۷۷۷۲۱۶ رنگ تولید خواهد شد.

 

وسایل مورد نیاز:

ماژول روتاری انکودر Rotary Encoder از پکیج ۳۷ سنسور آردوینو

برد آردوینو Arduino UNO

شیلد آردوینو پروتوتایپ Arduino Shield UNO Prototype

 

 

 اتصالات ماژول روتاری انکودر

  •  پایه CLK ماژول روتاری انکودر – Rotary Encoder را به پایه ۳ آردوینو اتصال دهید.
  • پایه DT ماژول روتاری انکودر – Rotary Encoder را به پایه ۴ آردوینو اتصال دهید.
  • پایه SW ماژول روتاری انکودر – Rotary Encoder را به پایه ۸ آردوینو اتصال دهید.
  • پایه VCC ماژول روتاری انکودر – Rotary Encoder را به پایه ۵ ولت آردوینو اتصال دهید.
  • پایه GND ماژول روتاری انکودر – Rotary Encoder را به پایه GND آردوینو اتصال دهید.
  • پایه سیگنال (S) سرو موتور SG90 را به پایه ۱۰ آردوینو اتصال دهید.
  • پایه VCC سرو موتور SG90 را به پایه ۵ ولت آردوینو اتصال دهید.
  • پایه GND سرو موتور SG90 را به پایه GND آردوینو اتصال دهید.
  • پایه RED ماژول ال ای دی RGB را به پایه ۶ آردوینو اتصال دهید.
  • پایه GREEN ماژول ال ای دی RGB را به پایه ۵ آردوینو اتصال دهید.
  • پایه GND ماژول ال ای دی RGB را به پایه GND آردوینو اتصال دهید.

فراخوانی کتابخانه

در این آموزش برای راه اندازی سرو موتور نیاز به کتابخانه Servo خواهیم داشت. کتابخانه سرو Servo به صورت پیش فرض در مسیر Sketch / Include library / Arduino Libraries قرار دارد . می‌توانید با کلیک بر روی کتابخانه Servo در مسیر گفته شده، آن را فراخوانی کنید. همچنین لینک دانلود کتابخانه در صفحه محصول سرو موتور SG90 Servo Motor در قسمت دانلود قرار دارد. با کلیک بر روی آن و دانلود کتابخانه Servo، آن در محل نصب آردوینو Arduino / Library ذخیره کنید.

 

کد ماژول روتاری انکدر

 

جهت دسترسی به این بخش، اشتراک اسپارکر پلاس تهیه کنید.

 

 

 در ابتدا کد را در نرم افزار آردوینو کپی کنید. سپس طبق اتصالات گفته شده در آموزش، اتصالات بین ماژول ها را برقرار کنید و سپس کد را کامپایل کنید. در کد از سریال مانیتور برای نمایش شروع (Start) حرکت سرو و ریست (Reset) سرو استفاده میکنیم. در ابتدا پس از کامپایل سریال مانیتور Start را نمایش میدهد. حال با چرخاندن شافت روتاری در جهت عقربه های ساعت، سرو شروع به چرخش کرده و ماژول ال ای دی LED RGB به رنگ سبز تغییر خواهد کرد. سپس با چرخش شافت در خلاف جهت عقربه های ساعت، سرو در جهت برعکس چرخیده و ماژول ال ای دی RGB به رنگ قرمز تغییر رنگ خواهد داد. با فشردن شافت همانند سوییچ، ریست – Reset شده و به حالت اولیه بازمی‌گردد.

 

چنانچه در مراحل راه اندازی و انجام این پروژه با مشکل مواجه شدید، بدون هیچ نگرانی در انتهای همین پست، به صورت ثبت نظر سوالتان را مطرح کنید. من در سریع‌ترین زمان ممکن پاسخ رفع مشکل شما را خواهم داد.

در پایان نظرات و پیشنهادات خود را با ما درمیان بگذارید و با اشتراک گذاری این آموزش در شبکه های اجتماعی , از وبسایت دیجی اسپارک حمایت کنید.

 

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

پریسا پوربلورچیان

تولید کننده محتوا / کارشناس IOT

زندگی یعنی پژوهش و فهمیدن چیزی جدید

تلاشم بر این است تجربیاتم در زمینه IOT‌ را به بهترین شکل با شما در میان بگذارم.

تبادل نظر و رفع عیب با ثبت دیدگاه

۴۳ دیدگاه

  • سلام
    واقعا جالبه یه آموزش داشتید که با جوی استیک بود و سرو حرکت میکرد ولی این خیلی جذاب تره
    تغییر رنگ ال ای دی هم جالبه

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

    • سلام
      میتوانید به شافت برای شمارش دور موتور و یا ولوم ضبط صوت استفاده کنید.

  • سلام ممنون از زحماتتون .
    آیا میشه توسط خود آردوینو و بدون ماژول روتاری و توسط ماژولی تایمرمانند ، سرو موتور را در زمانی معین به چرخش معین درآورد؟

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

  • می بخشید
    من نصبش رو بلدم میخوام از ماژول روتاری در کنترلش استفاده کنم لطفا راهنمایی کنین که چجوری پایه هاشونو وصل کنم

    • کامل توضیح دهید تا بتوانم راهنمایی کنم.
      حرکت موتور ها را با انکودر تغییر دهید؟

      • ای کاش میشد برای چند لحظه با شما تلفنی صحبت کرد یا به یه نحوی با voice یا هر چی مشکلم رو در خصوص پروژه ام عنوان کنم تا محبت کنین راهنماییم کنین

        • در حال حاضر پاسخگویی به تمامی سوالات از طریق کامنت امکان پذیر است.
          همانند قبل تمامی سوالات خود را بپرسید راهنمایی خواهم کرد.

  • سلام مجدد
    من یه ربات توانبخشی انگشتان دست دارم میسازم که یه موتور داره حرکت پایین و بالای انگشتا رو انجام میده من میخوام به موتورم بگم مثلا سه دوره به سمت راست (یا با زاویه ۴۰ درجه ) بچرخ و مثلا ۲ دور به سمت چپ (با زاویه ۳۰ درجه) برگرده.
    سپاس از راهنمایی شما

    • سلام مجدد
      همانطور که می‌دانید روتاری از ۳ پایه clk, dt, sw تشکیل شده است. باید ابتدا در کد آردوینو هر یک از پایه ها را تعریف کنید ( در کد آردوینو همین پروژه در خط ۳ تا ۵ تعریف شده است).
      حال باید برای شافت روتاری و جهت چرخش آن متغیر تعریف کرده و سپس در حلقه loop، توسط ساختار شرطی if و else شرط گذاری کنید. ( به خط های ۱۵ تا ۲۸ دقت کنید).
      پیشنهاد می‌کنم در ابتدا کد این برنامه را خط به خط تحلیل کرده و سپس به پروژه خود تعمیم دهید.
      سوالات خود را از همین طریق بپرسید.

  • خانم مهندس من موتورم سروو نیست موتورم انکودر دار هست چندین بار هم از شما این سوال رو پرسیدم ولی من به نتیجه نرسیدم خواهشا اگر امکان داره بفرمایید نحوه استفاده از این برنامه برای موتور انکودر چگونه است ممنون از شما

  • سلام خانم بلورچیان
    من دنبال مداری میگردم که بتونم تعداد دوری که موتور میزنه رو بشمارم.چنین مداری سراغ دارید ؟ ؟

  • با سلام و خسته نباشید
    می خواستم یه وسیله باشه که اندازه زاویه مثلا سلول خورشیدی رو اندازه گیری کنه و به برد اردوینو بفرسته ..
    آیا همچین دستگاهی است؟
    سپاس

    • با سلام
      ایده‌ی جالبی دارید. در این خصوص به دو روش می‌توان اجرا کرد یکی تشخیص زاویه نور و سپس اعمال آن روی سلول‌ها توسط دو عدد سرو موتور و دیگری هم استفاده از APIهایی که مختصات جغرافیایی برای زاویه خورشید ارایه می‌دهند. در هر دو حالت نیاز به تخصص بالایی می‌باشد.

      • سلام
        ببخشید یه سوال دیگه هم داشتم
        تو این پروژه شما با دست دارین انکودر رو میچرخونین
        آیا میشه بدون دخالت دست هم چرخوند
        سپاس

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

            • سلول خورشیدی به این پست نامرتبط است. همانطور که در کامنت قبل گفته شد از ترکیب دو موتور سلول به حرکت در خواهد آمد.

  • با سلام و احترام
    میخواستم بدونم این نوع ماژول انکودر در یک حرکت ۳۶۰ درجه ای چند پالس ایجاد میکند؟
    با تشکر

  • با سلام خدمت استاد گرامی من میخوام با انکودر یک cnc بسازم میخوام بدونم مستقیم میتونم سیم های انکودر را به اردوینو متصل کنم برای cnc به سه تا انکودر نیاز دارم اردوینو من هم لئوناردو هستش ممنون میشم راهنمایی کنید منو

    • با سلام
      از توجه شما ممنونم. این مورد توسط بنده تست نشده است. پیشنهاد می‌شود از نمونه ویدیوهای ساخته شده ایده بگیرید و دیتاشیت کالاها را مطالعه فرمایید.