آردوینو آموزش آردوینو درایور موتور پروژه های آردوینو

آموزش راه اندازی استپر موتور Stepper با روتاری انکودر آردوینو بخش دوم

Stepper-motor-ans-rotary-encoder-with-arduino-digispark
نوشته شده توسط پریسا پوربلورچیان

در آموزش بخش اول توسط استپر موتور ۴ فاز ۵ ولت و درایور موتور ULN2003، استپر موتور در یک جهت با سرعت ۵ دور بر دقیقه و در جهت دیگر با سرعت ۱۰ دور بر دقیقه، ۲۰۳۸ استپ انجام می‌داد. در آموزش بخش دوم از این آموزش، توسط ماژول روتاری انکودر Rotary Encoder، استپر موتور در دو جهت ساعتگرد و پادساعتگرد به حرکت درخواهد آمد. در ادامه این آموزش با مرجع تخصصی آردوینو به زبان فارسی، دیجی اسپارک همراه باشید.

 

استپر موتور Stepper Motor

استپر موتور Stepper Motor یک دستگاه الکترومکانیکی است که پالس های الکتریکی را به حرکت های مکانیکی مجزا تبدیل می‌کند. یک شافت بر روی استپر موتور قرار گرفته است. سرعت شافت موتور به فرکانس پالس ورودی بستگی دارد. از ویژگی اصلی استپر موتور می‌توان به توانایی کنترل دقیق در یک سیستم حلقه باز Open Loop اشاره کرد. در سیستم حلقه باز Open Loop خروجی تاثیری بر عملکرد مدار نخواهد داشت. در این حالت خروجی با ورودی مقایسه نشده و در طول مدار خروجی اندازه گیری نمی‌شود. در استپر موتور حرکت شافت مستقیما به پالس ورودی بستگی دارد. از اینرو دقت اندازه گیری و کالیبراسیون در ورودی بسیار تاثیرگذار است. ولتاژ مورد نیاز برای راه اندازی استپر موتور ۵ ولت DC است. استپر موتور ۲۸BYJ-48 دارای ۴ فاز است. استپر موتور Stepper Motor در حالت تعلیق دارای گشتاور کامل بین ۶۰۰ تا ۱۲۰۰ gf.cm است. نسبت سرعت در استپر موتور ۱ به ۶۴ است. فرکانس کاری آن ۱۰۰ هرتز می‌باشد. استپر از واکنش فوق العاده ای در تغییر وضعیت و حالت مانند شروع، ثابت ( Stop ) و معکوس دارد. استپر موتور Stepper Motor از ۵ پایه به ترتیب آبی، صورتی، زرد، نارنجی و قرمز تشکیل شده است. درجه عایق این مدل A می‌باشد.  نویز آن کمتر از ۳۵ DB است.  زاویه چرخش شافت استپر موتور ۳۶۰ درجه است. طول کابل استپر موتور حدود ۲۵ سانتی متر می‌باشد.

 

 

نکته مهم

همانطور که در آموزش بخش اول گفته شد، برای راه اندازی استپرموتور به درایور راه انداز نیاز داریم. در این آموزش همانند بخش اول از درایور استپرموتور ULN2003 استفاده خواهیم کرد. یک سوکت برای اتصال استپر موتور به داریور بر روی فیبر قرار گرفته شده است. دو پایه GND , VCC برای تغذیه دایور و اتصال به میکروکنترلر بر روی برذ قرار دارد. برای مطالعه اطلاعات بیشتر در خصوص این درایور موتور بخش اول آموزش استپرموتور Stepper Motor را مطالعه کنید.

 

راه اندازی استپر موتور با آردوینو Mega2560 - دیجی اسپارک

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

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

 

 

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

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

  •  کتابخانه Stepper

در این آموزش برای فعال شدن استپر موتور نیاز به فراخوانی کتابخانه استپرموتور خواهیم داشتم. کتابخانه استپرموتور به صورت پیش فرض در لیست کتابخانه آردوینو قرار دارد. همچنین لینک دانلود آن در صفحه محصول استپر موتور Stepper Moto قرار گرفته شده است. آن را دانلود و سپس در کد برنامه فراخوانی کنید. نکته، در صورتیکه نحوه ی فراخوانی کتابخانه را نمی‌دانید، آموزش فراخوانی کتابخانه در نرم افزار آردوینو Arduino را مطالعه نمایید.

 

اتصالات آردوینو

  • پایه IN1 درایور موتور ULN2003 را به پایه ۸ دیجیتال آردوینو Arduino اتصال دهید.
  • پایه IN2 درایور موتور ULN2003 را به پایه ۹ دیجیتال آردوینو Arduino اتصال دهید.
  • پایه IN3 درایور موتور ULN2003 را به پایه ۱۰ دیجیتال آردوینو Arduino اتصال دهید.
  • پایه IN4 درایور موتور ULN2003 را به پایه ۱۱ دیجیتال آردوینو Arduino اتصال دهید.
  • پایه GND درایور موتور ULN2003 را به پایه GND آردوینو Arduino اتصال دهید.
  • پایه VCC درایور موتور ULN2003 را به پایه ۵ ولت آردوینو Arduino اتصال دهید.
  • پایه CLK ماژول روتاری انکودر Rotary Encoder را به پایه ۲ دیجیتال آردوینو Arduino اتصال دهید.
  • پایه Data ماژول روتاری انکودر Rotary Encoder را به پایه ۳ دیجیتال آردوینو Arduino اتصال دهید.
  • پایه SW (سوییچ) ماژول روتاری انکودر Rotary Encoder را به پایه ۴ دیجیتال آردوینو Arduino اتصال دهید.
  • پایه GND ماژول روتاری انکودر Rotary Encoder را به پایه GND آردوینو Arduino اتصال دهید.
  • پایه VCC ماژول روتاری انکودر  Rotary Encoder را به پایه ۵ ولت آردوینو Arduino اتصال دهید.

کنترل استپر موتور با آردوینو و روتاری انکودر - دیجی اسپارک

 

کد آردوینو Arduino استپر موتور

 

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

 

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

 

انتخاب بورد Board

در این آموزش از آردوینو Mega2560 استفاده شده است. انتخاب برد اختیاری است. تنها به این نکته دقت داشته باشید که هنگام آپلود برنامه تنظیمات بورد را به درستی انجام دهید.

 

تحلیل کد آردوینو Arduino

 

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

 

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

 

 

ماژول روتاری انکودر و استپر موتور - دیجی اسپارک

 

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

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

استپر موتور ۵ ولت مدل ۲۸BYJ48 

درایور موتور ULN2003

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

کابل فلت نری به مادگی

 

 

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

 

پروژه

طی چند قسمت قبلی که طرح پروژه را پیاده سازی کردیم، با استقبال شما کاربران مواجه شدیم. در این سری برای اینکه گستره بیشتری از افراد بتوانند فرصت استفاده از بن خرید را داشته باشند؛ روال دیگری را در پیش گرفتیم. در این روش تصمیم گرفته‌ایم به ۱۰ نفر از کاربران بن خرید ارایه شود. برای دریافت بن خرید از دانشجو کیت، کاربران بایستی با استفاده از وسایل این آموزش، پروژه را اجرا کرده و بسته به خلاقیت، مدار جدیدی ایجاد کنید. سپس از اجرای کار فیلم گرفته و در شبکه‌های اجتماعی از جمله آپارات و اینستگرام، با هشتگ «#دیجی_اسپارک» و «#دانشجوکیت» و «#digispark» و «#daneshjookit» منتشر کنند. سپس از طریق بخش نظرات در ادامه همین آموزش، جهت دریافت بن خرید ارسال رایگان به ارزش ۱۰۳۰۰ تومان از دانشجو کیت، لینک را زیر همین پست ارسال کنید.

 

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

 

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

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

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

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

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

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

۲۴ دیدگاه

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

  • با درود وسلام
    من می خواهم با اردوینو واستپر موتور یک قطب نما بسازم ولی مشکلی دارم اینست که نیاز دارم در ابتدا راه اندازی قطب نما روی یک جهت بایستد و سپس از رایانه فرمان گرفته و جهت مورد نظر را نشان دهد مثلا تا مدار را روشن کردم همیشه روی شمال قرار بگیرد بعد فرمان از مدار گرفته جهت را نشان دهد ایا با مدار بالا میتوان این کار را انجام داد؟ با سپاس فراوان

    • سلام
      بسیار ایده جالبی است. در خصوص قطب نما میتوانید از ماژول آن استفاده کنید. ولی الباقی موارد را که میفرمایید، بنده متوجه نشدم و در حقیقت به این آموزش هم ربطی ندارد. توضیحات کامل‌تری ارایه کنید تا بتوانم بررسی کنم.

  • با سلام و تشکر بابت به اشتراک گذاشتن مطالبتون و همچنین ایده ی جذاب تعریف پروژه.
    بنده تمام مطالبی رو که راجع به کنترل موتور گذاشتین بررسی کردم ولی الان تو انتخاب نوع موتور و برد آردینو به شک افتادم. ضمنا رشتم مکانیکه واسه همین یه ذره مانوس شدن با توضیحات برام کمی طول میکشه. قراره با برد آردینو یه پنل خورشیدی۶۰ وات رو کنترل کنم(کنترل حلقه باز و نیز حلقه بسته). برای انتخاب موتور(در طول روز تقریبا هر ۱۰ دقیقه دو درجه حرکت میکنه و شب برمیگرده جای اولش) و انتخاب برد مناسب آردینو اگه پیشنهادی دارین ممنون میشم.

    • سلام
      از توجه و دقت نظر شما ممنونم.
      با توجه به توضیحاتی که ارائه کردید، برد آردونیو Mega2560 و یا Arduino UNO برای اجرای پروژه به شما پیشنهاد می‌دهم.
      در خصوص موتور انواع بسیار زیادی در سایت موجود است که باید با توجه به نیاز پروژه، قدرت موتور، ولتاژ و وزن موتور را انتخاب نمایید. در سایت دانشجوکیت اطلاعات و ویژگی های تمامی موتور ها درج شده است. وارد لینک زیر شده و با توجه به اطلاعات گفته شده، موتور را انتخاب نمایید. همچنین در صورت داشتن هرگونه سوال در قسمت نظرات صفحه محصول کالاها با تیم فنی در ارتباط باشید.

      خرید موتور
      خرید درایور موتور

    • سلام
      boolean یک داده شرطی است که برای درستی و نادرستی شرط ها در کد برنامه تعریف می‌شود و می‌توان به آن مقدار true و false نسبت داد.

  • سلام اگه امکانش هست برنامه اردونیو با سنسور sth11 وموتور راکر رو هم بذارید واسه کنترلر دستگاه جوجه کشی ممنون

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

  • با سلام من یک لید دستی دارم و یک استپر موتور مدل PHB42S40 و یک درایور مدل TB6600 و یک آردینو مدل Aruino Mega 2560 میخواستم ببینم چه طور میتونم اینها رو به هم متصل و برنامه ریزی کنم، که با زدن کلید استپر موتور مثلا ۵ دور بزند بعد بایستد ما اندازه گیری ها رو انجام بدیم بعد دوباره همین عمل تکرار شه تا بیست بار . در دفعه بیست و یکم پس از زدن کلید استپر موتور عکس بچرخد و به سر جای اول برگردد ، ممنون میشم کمکم کنید.

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

  • سلام سپاس از مطالب مفیدتون
    من یک است موتور مدل nema34 دارم و یک درایور bt6600 و برد اردوینو مدل uno میخواستم ببینم ایا میشه با این قطعات موتور رو طوری برنامه ریزی کرد که موتور در مدت زمانی کاربر وارد میکنه با سرعتی که کاربر وارد میکنه حرکت کند؟
    به چه شکل باید این کار انجام بشه

    • با سلام
      سوال شما نامهفوم است. توضیحات بیشتری ارائه دهید تا راهنمایی صورت گیرد.

  • سلام من از شما بسیار تشکر می نماییم ایا می شود استپ موتور را با انکودر کنترول کرد.

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

  • سلام
    اگر ممکن است در یک ایمیل جهت کانکنت شدن با شما، برای اجرای یک پروژه ، از شما راهنمایی و کمک بگیریم.