Як підключити сервопривід до "Ардуїнов"

8 0 Новини високих технологій

Сервоприводи є основою для радіоаматорів, які працюють з Arduino. Вони використовуються скрізь: автоматичне відкривання дверей, рух робота, кран підйомника і багато в чому іншому. В даній статті розповідається про те, який саме сервопривід для "Ардуїнов" вибрати, як його підключати і як ним керувати.

Про сервоприводах

Як підключити сервопривід до "Ардуїнов"
Це свого роду мотор, але відрізняється він тим, що йому можна задавати певний кут повороту вала за допомогою програмного коду. Бувають вони різні: дешеві і слабкі, дорогі і точні. Не варто гнатися за найдорожчим і кращим сервоприводом, так як цілком імовірно, що для вашого проекту підійде і дешевий. На ринку можна зустріти досить великий вибір.

Сервопривід SG92R

Як підключити сервопривід до "Ардуїнов"
Самим знаменитим дешевим сервоприводом є модель Tower Pro SG92R. Цей сервопривід для "Ардуїнов" можна зустріти практично у всіх початкових наборах радіоаматора. Обумовлено це тим, що ціна його складає всього лише якихось сто рублів, а при оптових покупках (наприклад, від десяти штук) - і то дешевше виходить. Важить SG92R всього 9 грамів, може приймати на вал 1.6 кг. Так пишеться тільки в характеристиках в інтернет-магазинах.


Як підключити сервопривід до "Ардуїнов"
Насправді ж, ці сервоприводи слабкі і використовувати їх, наприклад, для відкривання великий двері недоцільно, так як вони повністю пластмасові і часто ламаються. Краще витратити більше грошей, купить більш потужний, наприклад, MG995. Але для вивчення дрібних проектів сервопривід SG92R підходить відмінно.

Підключення

Як підключити сервопривід до "Ардуїнов"
Підключення сервоприводу до "Ардуїнов" не займає багато часу. Для цього використовується всього три контакту: земля, харчування, логіка. Працює сервопривід з "Ардуїнов" за допомогою цифрових контактів. Це смуга Digital на платі. На жаль, на самому сервоприводі не позначені, які дроти за що відповідають.
  • Червоний відповідає за харчування. До речі, сервопривід може працювати від 5 і 6V. Звичайно ж, від 6V він працює спритніше.
  • Чорний (іноді навіть буває коричневий) провід - земля. Підключайте його до GND на платі Arduino.
  • Жовтий (в деяких випадках буває білий) відповідає за логіку. Підключайте його до будь-якого ШІМ (широтно-імпульсна модуляція) контакту. Наприклад, дев'ятий контакт плати Arduino.
  • От і все. Таким простим способом можна підключити сервопривід до "Ардуїнов". До речі, всі вони підключаються і працюють з "Ардуїнов" однаково. Слід лише розібратися з тим, як ними управляти.


    Управління

    Для керування сервоприводом з "Ардуїнов" використовується бібліотека Servo. Вона вже йде в комплекті Arduino IDE і її не потрібно додатково завантажувати. Працювати з бібліотекою досить легко. Нижче представлений приклад коду для обертання вала сервоприводу.

    #include
    Servo myservo;

    void setup() {
    //встановлюємо пін як висновок управління сервой
    myservo.attach(9);
    }

    void loop() {
    //встановлюємо кут 0°
    myservo.write(0);
    delay(2000);
    //встановлюємо кут 90°
    myservo.write(90);
    delay(2000);
    //встановлюємо кут 180°
    myservo.write(180);
    delay(2000);
    }

    Пояснення коду таке. Першим ділом підключається бібліотека для роботи з сервоприводом. Після цього створюється змінна типу Servo. Імена можна давати абсолютно різні - все обмежується лише вашою фантазією. Потім слід вказати, до якого контакту підключений ваш сервопривід в "Ардуїнов". Потім ви повинні встановити кут повороту на нуль градусів, після чого встановити очікування на дві секунди. Це потрібно для того, щоб сервопривід встиг повернути вал і працював стабільніше.


    <script type="text/javascript">
    var blockSettings2 = {blockId:"R-A-271049-5",renderTo:"yandex_rtb_R-A-70350-39",async:!0};
    if(document.cookie.indexOf("abmatch=") >= 0) blockSettings2.statId = 70350;
    !function(a,b,c,d,e){a[c]=a[c]||[],a[c].push(function(){Ya.Context.AdvManager.render(blockSettings2)}),e=b.getElementsByTagName("script")[0],d=b.createElement("script"),d.type="text/javascript",d.src="//an.yandex.ru/system/context.js",d.async=!0e.parentNode.insertBefore(d,e)}(this,this.document,"yandexContextAsyncCallbacks");

    Після цього слід поставити кут на дев'яносто і сто вісімдесят градусів. Так як функція Loop - цикл, після компіляції ви отримаєте те, що ваш сервопривід буде постійно повертати свій вал. Це все при підключенні одного сервоприводу до Arduino. Справа в тому, що він хоч і маленький, але при активізації повороту вала він витрачає 0.4 мА, що досить багато. І при підключенні декількох серво станеться якийсь стрибок електрики, що може призвести до нестабільної роботи датчиків, які підключені до Arduino.

    Ця проблема вирішується наступним чином: потрібно взяти який-небудь інший джерело живлення 5V - відмінно підійде перероблене зарядний пристрій телефону. Виходить так, що сервоприводи живляться від окремого джерела живлення, а до "Ардуїнов" звертаються тільки за сигналами. Деякі вважають, що навіть один сервопривід не варто підключати безпосередньо до Arduino.

    Як підключити сервопривід до "Ардуїнов"

    Приклад проекту

    Нижче представлений проект з сервоприводом на "Ардуїнов". Уявіть ситуацію, що потрібно створити автоматичне відкривання кватирок в теплиці при досягненні певної температури. Для цього використовується датчик DHT-11 і сервопривід SG92R. Програмний код виглядає наступним чином:


    <script type="text/javascript">
    var blockSettings3 = {blockId:"R-A-271049-6",renderTo:"yandex_rtb_R-A-70350-44",async:!0};
    if(document.cookie.indexOf("abmatch=") >= 0) blockSettings3.statId = 70350;
    !function(a,b,c,d,e){a[c]=a[c]||[],a[c].push(function(){Ya.Context.AdvManager.render(blockSettings3)}),e=b.getElementsByTagName("script")[0],d=b.createElement("script"),d.type="text/javascript",d.src="//an.yandex.ru/system/context.js",d.async=!0e.parentNode.insertBefore(d,e)}(this,this.document,"yandexContextAsyncCallbacks");
      #include "DHT.h" 
    #include

    #define DHTPIN 2 //номер піна, до якого підключений датчик
    Servo myservo; //змінна Servo

    //Ініціюємо датчик

    DHT dht(DHTPIN, DHT11);

    void setup() {

    Serial.begin(9600);
    myservo.attach(9);

    dht.begin();

    }

    void loop() {

    //Затримка 2 секунди між вимірами

    delay(2000);

    //Зчитуємо температуру

    float t = dht.readTemperature();
    if (t>30) {

    myservo.write(90);

    }

    }


    Для початку підключаються бібліотеки для роботи з датчиком DHT-11 і сервоприводом. Слідом позначаються змінні і до яких контактів вони підключені. Після чого кожні дві секунди датчик дізнається температуру, і якщо вона вище тридцяти градусів, то спрацьовує сервопривід, тим самим відкриваючи кватирку. Це приклад його роботи з "Ардуїнов" і датчиком DHT-11.

    Плюси і мінуси SG92R

    SG92R - досить хороший сервопривід, і зі своїми завданнями він справляється відмінно. Які ж переваги і недоліки він має? Серед переваг варто відзначити наступні:
  • Доступність. Цей сервопривід продається за дуже низькою ціною, що дозволяє абсолютно кожному придбати його і використовувати для своїх проектів.
  • Розміри. Завдяки своєму маленькому розміру його можна використовувати при конструюванні якихось невеликих проектів.
  • Серед недоліків найсуттєвішими є наступні:
  • Слабкий. Досить навіть невеликих навантажень, і він зламається. Звичайно, це обумовлено його низькою ціною, але все ж варто переплатити всього в два рази більше і вже можна купити сервопривід потужніше, який зроблений з металу, і здатний працювати з великими навантаженнями.
  • Шумить. Варто тільки включити його, він починає видавати звуки. Не те щоб вони сильні, але вічне "дзижчання" дуже заважає.
  • Число плюсів і мінусів однаково. Як би це ні було, але SG92R є відмінним сервоприводом, принаймні для вивчення та поняття їх роботи.