Две сервы

Тема в разделе "Моторы, сервоприводы, робототехника", создана пользователем Spell, 8 июн 2015.

  1. Spell

    Spell Нерд

    Добрый день.
    Пытаюсь подключить две сервы FS90 к Iskra Neo.
    По одному они работают, а вместе никак. Они начинают вести себя неадекватно.
    Подключил напрямую к контактам платы.
    Правильно ли я подозреваю, что микроконтроллер их не тянет по току и нужно их запускать через транзисторные ключи?
    Что-то не нашел данных по потреблению тока этими устройствами.
    Подключать внешний БП пробовал. Результат тот же.
     
  2. Unixon

    Unixon Оракул Модератор

    Питание у сервоприводов откуда?
     
  3. Vad33

    Vad33 Капитан-оригинал

    Судя по всему, их не вытягивает стабилизатор на плате микроконтроллера.
    Поэтому питание к сервам нужно подключать не через контакты микроконтроллера, а внешнее
    а управляющий провод можно напрямую от микроконтроллера, он много не потребляет.
     
  4. Spell

    Spell Нерд

    Да, питание от платы, но с отдельного контакта +5В.
    В описании Iskra Neo написано, что этот пин должен держать до 1А (понятно, что от внешнего питания через плату).
    Не уже ли эти две микросервы жрут больше?
    Ладно USB, но я же подключал отдельный БП к плате. БП на 2А. вряд ли они его так просадили.
    Вот что еще удивило. Я подключил к управляющим линиям по светодиоду.
    С одной сервой они светятся, без серв тоже. С двумя гаснут.
    Эта же картина наблюдается и с внешним БП.
    Одна серва у меня какая-то странная. Первая позиционируется четко, и после позиционирования не издает никаких звуков, а вторая после установки угла не перестает жужжать, как будто в ней что-то крутится. Хотя угол, вроде, держит.
    Может в ней что-то не так?
     
  5. Vad33

    Vad33 Капитан-оригинал

    Видать эта серва и есть корень проблем, она видимо и садит стабилизатор.
    Можно подключить поочередно сервы со светодиодами, сначала одну потом вторую
    если будет заметная разница в свечении, то точто проблема в одной серве.
    Если есть тестер, то проверить это пару секунд.
     
  6. Spell

    Spell Нерд

    Я это уже пробовал.
    Любопытно, что одна она, вроде, работает.
    Хотя появились подозрения, что на моей макетке что-то с контактами. Попробую все переделать.
    Вчера попробовал работающую серву запитать от отдельной батареи 9В через 5В стабилизатор (КРЕН).
    Серва металась как ужаленная, при том, что управляющие импульсы шли без изменений (Проверял на осциллографе). Т.е. почему-то у нее значительно изменилась скорость перемещения, хотя питание было 5В.
    Возвращаю питание от платы - скорость уменьшается. Питание проверял и мультиметром и осциллографом.
    Это как такое может быть?
    Первый раз в жизни схватился за эти вещи, сюрпризы на каждом шагу.
     
  7. Vad33

    Vad33 Капитан-оригинал

    Может она (серва) так радовалась отдельному питанию, поэтому и металась? :)

    От чего сама плата запитана, т.е. какое напряжение на входе?
    Это к тому, что может сервы переключить на контакт Vin а не на +5.
     
  8. Spell

    Spell Нерд

    Плата запитана от USB.
    На Искре есть подписанный пин +5В. Вот от него и питаю серву.
    Я пытался питать их от кроны через КРЕНку (вчера писал).
    Вчера она действительно металась и, видимо, по ходу подсадила крону.
    Сегодня она просаживает крону аж до 1В. Т.е. стабильно работает только от USB.
     
  9. Vad33

    Vad33 Капитан-оригинал

    Если от USB, то можно попробовать питать сервы от VIN, вместо +5V.
     
  10. Spell

    Spell Нерд

    Запустил таки.
    1. Сделал отдельное питание через внешний БП и кренку.
    2. Видимо, у макеток есть проблемы с контактами. После нескольких пересборок оно заработало, но очень аккуратно нужно провода трогать. Чуть-что сразу где-то контакт пропадает. А ведь все новенькое купил.
    3. Две микросервы жрут как бегемоты. Кренка за пару минут нагревается так, что вонять начинает. Правда, радиатор я не ставил. Как же будут жрать сервы посерьезнее? Эти я покупал для тестов побаловаться.
    4. Обнаружил, что серва дает сильную помеху по питанию. +- 0.2В. Причем это четкий импульс с определенной частотой. У меня осциллограф паршивенький, четко засинхронизировать не получается, поэтому не уверен, но похоже, что частота этих импульсов совпадает с частотой управляющей, но по форме они не совпадают. При этом верхняя часть - пик и его ширина не изменяется. Хорошо, что помеха на ардуину не переходит, а сидит только на сервах. Кто-нибудь в курсе, как с этим бороться? На выходе с кренки стоит контер 100мкф.
    5. Кроме питания, возможно, есть проблема в коде. Похоже, я там что-то перемудрил.
     
  11. Spell

    Spell Нерд

    Вот программа для серв.
    Не понимаю, почему при подключении сразу двух, они ведут себя крайне нестабильно. Дергаются обе, то замирают, то мечутся.
    Если по одной включать, то все вроде хорошо.
    Импульсы выходят нормальные.
    Может я чего-то не понимаю в методах программирования ардуин?
    Я здесь несколько поменял код. В предыдущем варианте в обе сервы записывалось одно и то же значение внутри одного цикла. Здесь циклы разные.

    #include <Servo.h>

    Servo myServo1;
    Servo myServo2;

    const int SERVO1 = 8;
    const int SERVO2 = 9;
    int pos1 = 0;
    int pos2 = 0;

    void setup() {
    digitalWrite(SERVO1, LOW);
    digitalWrite(SERVO2, LOW);
    myServo1.attach(SERVO1);
    myServo2.attach(SERVO2);
    Serial.begin(9600);

    }

    void loop() {
    SetServoPos(myServo1, 180);
    SetServoPos(myServo2, 180);
    SetServoPos(myServo2, 0);
    SetServoPos(myServo1, 0);
    }

    void SetServoPos(Servo dServo, int pos)
    {
    int curpos = dServo.read();
    if (curpos > pos )
    {
    for(pos1 = curpos; pos1>=pos; pos1-=5) // goes from 180 degrees to 0 degrees
    {
    dServo.write(pos1); // tell servo to go to position in variable 'pos'
    delay(20); // waits 15ms for the servo to reach the position
    }
    }
    if (curpos < pos )
    {
    for(pos1 = curpos; pos1<=pos; pos1+=5) // goes from 180 degrees to 0 degrees
    {
    dServo.write(pos1); // tell servo to go to position in variable 'pos'
    delay(20); // waits 15ms for the servo to reach the position
    }
    }
    }
     
  12. Spell

    Spell Нерд

    ВСЕ!
    Я ее победил.
    1. Запитал каждую серву от отдельной кренки. Не греются.
    2. На выходе каждой кренки поставил конденсатор 1000 мкФ.
    Работают стабильно и без рывков. Отрабатывает код из поста выше. Помехи по питанию нет.
    Получается одна кренка держит нормально только одну серву.
     
  13. ANV

    ANV Гуру

    Почему именно от Кроны хочется запитать? У нее ток маленький, а кренкой вы почти половину емкости тратите в тепло
     
  14. Spell

    Spell Нерд

    Просто использовал то, что было под рукой.
    Ну и от незнания. Я сильно начинающий, а в описаниях серв на сайтах магазинов почему-то не пишут сколько они потребляют.
    Программа выше, исключительно для тестов. В дальнейшем сервы так работать не будут. Они должны будут позиционировать в двух плоскостях датчик расстояния, и держать указанную позицию. Более того, я для тестов использую аналоговые сервоприводы (из-за цены), а потом предполагаю использовать цифровые. Как пишут, они более четко позиционируются и лучше удерживают позицию.
    Работать это все должно от сетевого БП, поэтому я пока не заморачиваюсь на потери мощности и пр.
    Но если дадите толковый совет, буду признателен. Тем более, что вопросы еще появятся.
     
  15. ANV

    ANV Гуру

    Как кушает серва я давно где-то тут выкладывал. Если на словах - то внутри сервы двигатель. Он крутится когда надо спозиционировать или держать усилие на серве. Управляется он ШИМом. Коэффициент заполнения пропорционален нагрузке на серву. Соответственно потребление - меандр с высотой полки около 0,5А для микро-сервы. Отсюда и считайте какой БП нужен

    Насчет КРЕНок - лично мое мнение что это некрасиво, когда токи большие. Лучше через импульсный понижать