راه اندازی سروو موتور با آردوینو

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

سروو موتورها چه موتورهایی هستن؟

این موتورها بیشتر برای چرخش های دقیق به کار میرن.کاربردهاشون هم بیشتر توی بازو های مکانیکی هست که نیازه تا یه درجه خاصی بازو حرکت کنه.دو تا شرکت بزرگ هم که این نوع موتورها رو تولید میکنن شرکت های Hitec و Futaba هستن.

قطعات مورد نیاز برای اتصال سروو موتور به آردوینو:

  1. برد arduino (ما از مدل uno استفاده کردیم)
  2. یک عدد موتور سروو
  3. سیم های Jumper

 

نحوه اتصال سروو موتور به آردوینو:

شکل زیر گویای همه چیز هست:

نحوه اتصال سروو موتور به آردوینو

موتور سروو سه تا سیم مادگی داره که باید به آردوینو وصل کنیم.سیم اول VCC هست که باید وصل بشه به 5 ولت.(سیم قرمز رنگ در شکل بالا) سیم دوم سیم زمین موتور سروو هست که باید به پایه GND آردوینو وصل بشه(سیم مشکی رنگ) و در نهایت سیم سوم دیتا هست هم که باید وصل بشه به یکی از پایه های دیجیتال آردوینو که ما اینجا از پایه شماره 3 آردوینو استفاده کردیم(سیم زرد رنگ در شکل بالا)

کد راه اندازی موتور سروو:

خدایی اینقدر این کد ساده است که من دیگه تیکه تیکه اش نکردم.یه جا توضیحش میدم.

توضیح کد:

در ابتدای کار کتابخونه موتور سروو به برنامهاضافه میشه.در خط بعد پایه دیجیتالی که موتور بهش وصل میشه رو به صورت یه متغیر integer تعریف میکنیم.در خط بعدی یه object به نام Servo1 تعریف میکنیم.(اگه نمیدونید object چی هست به این لینک مراجعه کنید).در تابع Setup هم تنها کاری که نیاز هست انجام بدیم اینه که موتورمون رو به پایه 3 دیجیتال attach کنیم.در نهایت هم در تابع loop با استفاده از دستورات ()Servo1.write و آرگومان ورودیش به موتور میگیم که چند درجه بچرخه.در اینجا ما ابتدا به موتور گفتیم توی زاویه 0 درجه وایسا بعد یه ثانیه صبر کن و بعد از اون برو توی زاویه 90 درجه بچرخ ، دوباره یه ثانیه صبر میکنه و در نهایت هم بهش میگیم برو توی زاویه 180 درجه.دوباره یه ثانیه صبر میکنه و برمیگرده اول تابع loop و در نهایت میاد برمیگرده به حالت اولش و توی زاویه صفر قرار میگیره.

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

 

تا جلسه آینده خدانگهدار

شاید دوست داشته باشید مطالب زیر را نیز بخوانید:

12 نظر

  • علی

    سلام.
    بله ببخشید.
    الان درست شد؟

    [php]
    include <servo.h>

    int swPin = 13; // input
    int servoPin = 12; // output

    Servo Servo1;
    void setup{

    servo1.attach(servopin);

    }
    {
    pinMode(servoPin, OUTPUT); // sets the digital pin as output
    }

    void loop() // run over and over again
    {
    if(digitalRead(swPin)) Servo1.write(60);
    else
    Servo1.write(0);
    }

    }

    • حامد قاسمی

      با سلام مجدد.
      نکته ی دیگر در این کد این است که باید پایه مربوط به swpin هم به صورت ورودی کانفیگ شود که این کار در کد انجام نگرفته. نکته دیگر این که بفرمایید نوع سروو مورد استفاده شما ، 180 می باشد یا 360 ?
      با تشکر.

  • علی

    سلام.
    ببخید زیاد میپرسم.
    درست شد الان؟

    [php]
    include <servo.h>

    int swPin = 13; // input
    int servoPin = 12; // output

    Servo Servo1;
    void setup() // run once, when the sketch starts
    {
    pinMode(servoPin, OUTPUT); // sets the digital pin as output
    }

    Servo1.write(60);

    void loop() // run over and over again
    {
    else (digitalRead(swPin)) {
    digitalWrite(servoPin, HIGH);
    delay(0);
    }

    }

    • حامد قاسمی

      با سلام مجدد.
      منظور بنده این است که هم باید if باشد و هم else . در اینجا شما فقط از else استفاده کرده اید. ضمن این که بنده دستور چرخش موتور رو در حلقه If و else مشاهده نمیکنم.

  • علی

    سلام.
    این کد رو کم و زیاد تونستم تغییر بدم.
    درسته؟

    [php]
    include <servo.h>

    int swPin = 13; // input
    int servoPin = 12; // output

    Servo Servo1;
    void setup() // run once, when the sketch starts
    {
    pinMode(servoPin, OUTPUT); // sets the digital pin as output
    }

    void loop() // run over and over again
    {
    if (digitalRead(swPin)) {
    digitalWrite(servoPin, HIGH);
    delay(0);
    }

    }

    فقط 60 درجه رو بلد نبودم.

    • حامد قاسمی

      با سلام مجدد. ما در مثال مربوطه ، نحوه تغییر درجه رو آوردیم. این دستور مطابق زیر هست :
      Servo1.write(90);
      فقط باید به جای 90 از 60 استفاده کنید.
      در ضمن علاوه بر If باید از else هم برای حالت دیگر استفاده کنید تا وقتی که اپتوکانتر خروجی نداشت ، موتور سروو به حالت اول خود برگردد.
      موفق باشید.

  • علی

    سلام وقتتون بخیر.
    ببخشید میخواستم از اپتوکانتر استفاده کنم.
    وقتی اپتوکانتر خروجی میده سروو 60 درجه گردش کنه و وقتی اپتو کانتر خروجی نداره به حالت اولش برگرده.
    برنامه ی اردینو تغییر خاصی نیاز داره؟
    اپتوکانترم fc33 هست
    و آردینو ی خودم هم mega 2560 r3 هست.
    کدش چه تغییری باید بکنه؟

    • حامد قاسمی

      با سلام خدمت شما. برنامه ای که در این مثال قرار داده شده ، صرفا یک برنامه ساده برای تست یک موتور سروو با استفاده از برد arduino UNO می باشد و برای راه اندازی این اپتوکانتر باید یک کد جدید ساخت. نمونه ای از این کد در لینک زیر اورده شده است :
      لینک
      تنها نکته ای که وجود دارد این است که در کد بالا به جای روشن شده LED باید کدهای مربوط به سروو موتور را قرار دهید ، تنها تفاوت این است که باید از پایه های مربوط به برد mega2560 استفاده کنید.
      این مراحل رو انجام بدید و هر جا که به مشکل برخوردید ، همینجا مطرح بفرمایید تا پاسخ داده بشه.
      موفق باشید.

  • سید حیدر میرزاده

    خيلي آلی بود از لطف شما بسیار سپاسگزارم از اینکه معلومات خودتون رو به اشتراک گذاشتید خیلی ممنون
    تو نیکی کن و در دجله انداز
    که ایزد در بیابانت دهد باز

    • حامد قاسمی

      ممنون از لطف شما.
      با ما همراه باشید برنامه های ویژه ای خواهیم داشت.

  • محمد

    با سلام
    خیلی متشکرم از مطالب مفیدتون

    • حامد قاسمی

      خواهش میکنم.
      موفق باشید.

  • نوشتن نظر

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

    اضافه کردن تصویر ( فقط فرمت jpg)