Сервомотор не возвращается в исходное положение.

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

  1. Ember

    Ember Нерд

    Имеются сервомоторы типа MG995, на них собран манипулятор типа роборука. Запрограммирован при включении на возврат в определенное положение, а потом на набор действий. Питание отдельное, по земле соединены, ампер источника питания хватает, все резво двигается и точно поворачивается, но до тех пор, пока я не выключу питание и не включу все снова. Сервоприводы не возвращаются в исходное положение и начинают работку как будто из другого положения, соотвественно манипулятор начинает работу из другого положения.
    Я полагал, что если сервоприводу дать команду скажем в блоке Setup установиться в положение 90 градусов и подождать, а потом в loop запускать программу движения из этого исходного положения, то такой проблемы не будет, однако после выключения питания как-то сдвигается начальная позиция и программа уже не точно выполняется.
    Код примерно такой:
    Servo myservo; создаю объект серво
    myservo.attach(9); подключаю к пину
    myservo.write(90); устанавливаю в setup в начальное положение
    и дальше в loop начинается программа, набор myservo.write и delay относительно этих 90 градусов, но после выключения сбивается все, вот почему, и что-то может я упустил, инициализацию какую нибудь? Могу я быть уверен что если пишу myservo.write(90); серва отработает этот угол?

    https://vk.com/video118736477_456239257
     
  2. Igor68

    Igor68 Гуру

    А может и правильно?
    ... А в каком месте храниться положение каждой серврмашины. Вас этот манипулятор имеет 5-6 степеней свободы? Тогда правильно, что он не отрабатывает так просто. Иначе возможна поломка. В промышленности везде манипулятор помнит в энергонезависимой памяти последнее положение всех поворотных устройств. Если вдруг не будет этого, то выдаётся ошибка и надо в режиме калибровки (ручном) выводить все плечи в исходное состояние по маркерам (рискам) и указывать "0". После чего он снова готов. Вы только представьте что такое ему вернуться в какое-то положение не зная последнего. Поломка, повреждение рядом стоящих объектов. И программа дрлжна быть завершена исходя из последнего положения.
     
    parovoZZ нравится это.
  3. Ember

    Ember Нерд

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

    Igor68 Гуру

    А что это означает?
    Что именно Вы выключаете?
     
  5. parovoZZ

    parovoZZ Гуру

    В данном случае абсолютно без разницы, т.к. управление сервой происходит с помощью ШИМ в абсолютных координатах.
     
    Igor68 нравится это.
  6. Igor68

    Igor68 Гуру

    Так где данные для шима после восстановления питания?
    И что выключали?
    Сервомашины? Плату управления? Вообще Всё?
    Что именно?
     
  7. Ember

    Ember Нерд

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

    Igor68 Гуру

    Так и будут с текущего (не начального места). А как Вы хотели? Пусть при включении программа гонит в начало, ожидает этого начала. А потом работает по заданию
     
    parovoZZ нравится это.