Сервопривод FS90, не хочет работать

Тема в разделе "Моторы, сервоприводы, робототехника", создана пользователем Vectorman, 9 окт 2016.

  1. Vectorman

    Vectorman Нуб

    Имеется:
    • сервоприводы FS90, 5 штук
    • Iskra Mini, 1 штука
    Сервы подключены к ногам 3, 5, 6, 9, 10.
    Питание контроллера и серв - раздельное (от разных портов USB).
    В контроллер залит код:
    Код (C++):
    #include <Servo.h>

    Servo serv1, serv2, serv3, serv4, serv5;

    void setup() {
      // put your setup code here, to run once:
      // инициализируем сервы
      serv1.attach(3);
      serv2.attach(5);
      serv3.attach(6);
      serv4.attach(9);
      serv5.attach(10);
    }

    void loop() {
      serv1.write(45);
      delay(100);
      serv2.write(45);
      delay(100);
      serv3.write(45);
      delay(100);
      serv4.write(45);
      delay(100);
      serv5.write(45);
      delay(1000);
      serv1.write(90);
      delay(100);
      serv2.write(90);
      delay(100);
      serv3.write(90);
      delay(100);
      serv4.write(90);
      delay(100);
      serv5.write(90);
      delay(1000);
     
    }
    Имеем:
    • любая серва, подключенная к ногам 6 и 9 ведет себя корректно.
    • любая серва, подключенная к ногам 3, 5, 10 разворачивается в одно из крайних положений и пытается сдвинуться дальше, из-за чего нагревается и трещит.

    Вопрос: как заставить все работать как положено? Что я делаю не так?
     
  2. rkit

    rkit Гуру

    Столько серв за раз к искре мини точно не подключить напрямую.
    Библиотека использует аппаратные таймеры под свои задачи, и из-за них на некоторых ногах отключается ШИМ. Пишут, что 9 и 10 не должны работать, но может в искре мини что-то другое.
     
  3. Vectorman

    Vectorman Нуб

    На Wiki написано, что пины 3, 5, 6, 9, 10, 11 могут выдавать ШИМ-сигнал.

    Может быть, тогда стоит управлять сервами в обход библиотеки?

    :eek:
    .... а ведь мне нужно управлять всеми сервами одинаково, то есть они все должны вращаться синхронно, что означает, что можно их все подключить к одному и тому же управляющему выводу, верно?
    Вот я дурак!... Спасибо, товарищи! Буду пробовать дальше.
     
    Последнее редактирование: 9 окт 2016
  4. Onkel

    Onkel Гуру

    через диодики....
    но на самом деле управление сервомашинками - простая задача. Нужно сгенерить импульс определенной длительности, а с помощью всего одного таймера можно генерить сколько угодно (сколько есть ног) любых импульсов сравнимой (наш вариант) длительности. Надо только задействовать таймер, не задействованный в других библиотеках.
     
  5. Flyfisherman

    Flyfisherman Нерд

    У ЮСБ порта недостаточно тока чтобы крутить 5 серв одновременно.
    Я бы обратил внимание на питание сервомоторов По хорошему им нужен запас по току, ибо при одновременном старте они вообще много возьмут
     
  6. Vectorman

    Vectorman Нуб

    Я использую для питания USB-хаб, который имеет собственный блок питания. Не идеально, но лучшего варианта пока что нет.
     
  7. Vectorman

    Vectorman Нуб

    Других библиотек, кроме Servo, не использую. В принципе, можно и заморочиться с генерацией импульсов по таймеру, в обход библиотеки, но, раз уж я додумался тупо повесить все на одну ногу - так и оставлю. Пока этого достаточно.
    Благодарю за совет! :)
     
  8. Mihay

    Mihay Гик

    Попробуй при инициализации сделать такой код для всех сервов
    Код (C++):

    Num_servo.attach(Num_Pin, 544, 2900);
     
    И еще купи мощный блок питания для контроллера. У меня такая ерунда была, когда у меня был маломощный блок питания (3 сервы работали, а остальные вели себя непредсказуемо) .
     
  9. Vectorman

    Vectorman Нуб

    Спасибо, попробую!
    А можно ли использовать для питания сервоприводов и контроллера +5В линию в компьютере, снимая напряжения прямо с molex'а?
     
  10. Flyfisherman

    Flyfisherman Нерд

    Питание можно откуда угодно взять но на 5 серв, по моему скромному мнению, нужно 3А.
    И честно говоря я бы не подключал самодельную конструкцию к питанию компьютера, по моему мнению это может быть небезопасно для компьютера. Но каждый сам себе хозяин.