Проблема с сервоприводом Turnigy

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

  1. SnJon

    SnJon Нерд

    Всем доброго времени суток! Прошу помощи у знающих людей или у тех, кто сталкивался с подобным. В общем прикупил для своего проекта данные сервоприводы. По описанию они цифровые, но на самом деле это оказалось не так. Так как они спокойно отключаются посредством команды detach(), с цифровым сервоприводом так не получится.
    Суть проблемы: сервопривод не отрабатывает 180 градусов при стандартной ширине импульса. Хотя механически он на это способен (вал вращается приблизительно на 190 градусов). Заснял видео, для наглядности прицепил другой сервопривод (цифровой Turnigy TGY-S901D). Использую lipo аккумулятор на 7.4V, который питает через DC преобразователь на 8-15A силовую часть (Multiservo Shield) напряжением 5.31V. Сервоприводы подключены через шилд напрямую к плате ардуино и работают через библиотеку Servo.h (при использовании Multiservo.h изменений не заметил). Сама Arduino Mega питается через USB.

    Скетч:
    Код (C++):

    #include <Servo.h>

    Servo myservo;  // create servo object to control a servo
    Servo myservo2;
    // twelve servo objects can be created on most boards

    int pos = 0;    // variable to store the servo position

    void setup() {
      myservo.attach(8);  // attaches the servo on pin 9 to the servo object
      myservo2.attach(7);
    }

    void loop() {
      for (pos = 0; pos <= 180; pos += 1) { // goes from 0 degrees to 180 degrees
        // in steps of 1 degree
        myservo.write(pos);              // tell servo to go to position in variable 'pos'
        myservo2.write(pos);
        delay(15);                       // waits 15ms for the servo to reach the position
      }
      for (pos = 180; pos >= 0; pos -= 1) { // goes from 180 degrees to 0 degrees
        myservo.write(pos);              // tell servo to go to position in variable 'pos'
        myservo2.write(pos);
        delay(15);                       // waits 15ms for the servo to reach the position
      }
    }
     
    Значения импульсов из библиотеки Servo.h:
    Код (C++):
    #define MIN_PULSE_WIDTH       544    // the shortest pulse sent to a servo
    #define MAX_PULSE_WIDTH      2400     // the longest pulse sent to a servo
    #define DEFAULT_PULSE_WIDTH  1500     // default pulse width when servo is attached
    #define REFRESH_INTERVAL    20000     // minumim time to refresh servos in microseconds


    Пробовал вручную изменять значения ширины импульсов. Максимум что получилось добиться - это 90 градусов и более нормальной работы сервопривода при данных значениях:
    Код (C++):
    #define MIN_PULSE_WIDTH       900   // the shortest pulse sent to a servo
    #define MAX_PULSE_WIDTH      2100     // the longest pulse sent to a servo
    #define DEFAULT_PULSE_WIDTH  1500     // default pulse width when servo is attached
    #define REFRESH_INTERVAL    20000     // minumim time to refresh servos in microseconds



    У кого-нибудь есть идем решения данной проблемы? Буду очень признателен за помощь!
     
  2. vvr

    vvr Инженерище

    а 180 гр так принципиально?
     
  3. SnJon

    SnJon Нерд

    Сервопривод, который слева вращается примерно на 160-165 градусов. Хотя бы так. И это да, принципиально
     
  4. vvr

    vvr Инженерище

    проблема может быть просто в потрохах сервы
     
  5. SnJon

    SnJon Нерд

    У меня таких 4 штуки, все новые и все одинаково работают. Вообще это дорогой сервопривод, с радиатором и водонепроницаемый. Механика у него на порядок лучше других. Так что думаю что с ним все нормально. Есть конечно идея поменять мозги с того же tower pro mg995, но это крайние меры. Чуть позже могу выложить внутренности сервы
     
  6. vvr

    vvr Инженерище

    я в своих проектах использую в основном mg 996
    рабочий диапазон не менее 175 гр, хотя попалось парочка с 185 гр
     
  7. SnJon

    SnJon Нерд

    mg995 заказывал с taobao. Совсем не понравились по качеству и не соответствуют заявленным характеристикам (в 2 раза слабее), поэтому решил заказывать с хоббикинга. Делаю обучаемого робота-гуманоида, поэтому большое усилие и точное позиционирование здесь к месту. Вот кстати фото серво, не знаю...может быть поможет
    [​IMG]

    [​IMG]
     
  8. vvr

    vvr Инженерище

    не знаю про 995 - покупаю 996
    по усилию ничего не скажу, для меня не критично
     
  9. Onkel

    Onkel Гуру

    "вручную" вы только уменьшили диапазон, так что 90 градусов как раз и получилось. Попробуйте просто подавать импульс известной длины, скажем от 0,1 до 3 мс - это позволит понять, сервы такие или софт.
     
  10. SnJon

    SnJon Нерд

    Попробовал поставить такой диапазон - ничего не изменилось. Кстати писал в поддержку хоббикинга, они сказали что это стандартный серво, который работает на 90 градусов =(
    Есть одно предположение...
    [​IMG]
    На фото видно, что есть два места под резистор (надеюсь я правильно его назвал, так как не силен в SMD электронике), где выделено белым. Может быть перепаивая его, можно изменить режим работы серво?
    Также попробовал переставить мозги с MG995, не совсем успешно. На максимальной скорости серво отрабатывает 180 неплохо, а вот при меньшей - сильно дергается.
     
    Последнее редактирование: 15 ноя 2015
  11. DaemonFroll

    DaemonFroll Нуб

    А вы пробовали его без преобразователя напряжения подключать,напрямую к аакумулятору?
    И вы не знаете чем это серво от этого отличается? ТТХ почти одинаковые...
     
  12. vvr

    vvr Инженерище

    вы столько времени потратили на эту проблему - уже купили бы другую серву и радовались жизни:)
     
  13. DaemonFroll

    DaemonFroll Нуб

    Вы мне?
     
  14. vvr

    vvr Инженерище

    автору темы:)
     
  15. DaemonFroll

    DaemonFroll Нуб

    Так вроде же с первого и последнего комментария автора 2 дня прошло,не так уж и долго...
     
  16. SnJon

    SnJon Нерд

    Преобразователь этот - это бортовое питание для серво от липо, с силой тока на 8А. Также можно настраивать напряжение на выходе: 5 или 6 вольт. Думаю это вполне рабочие напряжения для серво. При 6 вольт таже история.
    Но проблему я все же решил - просто продал их и заказал другие =)
     
  17. ANV

    ANV Гуру

    Надо два резистора было впаять в плечи переменного резистора.
    Тогда серва бы думала что она "недоворачивает" и крутилась бы на больший диапазон
    Так можно "разогнать" серву на все углы, что крутятся руками.
     
    SnJon нравится это.
  18. SnJon

    SnJon Нерд

    Ну где же вы раньше были...
     
  19. SnJon

    SnJon Нерд

    А можно поподробней? Я так понял впаиваем резисторы в потенциометр сервы на крайние контакты. И как подобрать номинал резисторов? У меня например есть сервы, которые механически работают на 190 градусов, а через электроннику поворачиваются на 170
     
  20. ANV

    ANV Гуру

    Все правильно поняли. В разных видео ставят разные номиналы 1-2КОм
    Надо подбирать и после модификации проверять что серва при крайних положениях не жужжит. Если жужжит, значит уперлась упором и хочет поворачиваться дальше. Так ее можно спалить.