помогите с управлением аналоговой сервы

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

  1. Rustam

    Rustam Нерд

    купил моторчик sm-s4309r. не могу заставить его крутить на определенный градус и в нужном направлении. с обычной сервой можно просто указать угол. а как быть тут?
    по информации амперки, такими приводами можно также управлять с помощью библиотеки Servo, теми же функциями. Небольшое отличие заключается в том, что функция Servo.write(angle) задаёт не угол, а скорость вращения привода. Угол 0° задаёт полный ход в одном направлении, 180° — полный ход в обратном направлении, угол 90° задаёт остановку привода.
    но у меня так не получается. крутит все время в одну сторону, а останавливает привод если задать 95, а не 90.
    если не сложно дайте примерчик скетча прокручивания на 360 в одну сторону, остановка и 360 в другую. спасибо
     
  2. geher

    geher Гуру

    Насколько я понимаю сущность таких серв, то точно сделать поворот на 360 градусов и обратно просто не получится.
    Остановка при угле 95, насколько я понимаю говорит о том, что требуется калибровка.
    Серву в этом случае (если не ошибаюсь для случая сервы постоянного вращения) надо подключать так
    servo.attach(pin, min, max);
    и подобрать значения min, max, чтобы серва работала должным образом при подаваемых значениях "угла".
    Дальше можно попробовать замерить время. за которое серва делает полный оборот, запустить в одну сторону, выждать измененное время оборота, остановить, запустить в другую сторону, выждать время оборота, остановить.
    Насколько я понимаю, иначе никак.

    Альтернатива - использование ШД с датчиком нулевой позиции. Тогда, выставив по датчику эту позицию во время инициализации, можно считать шаги и крутить ШД в нужное положение (с погрешностью в шаг двигателя), периодически при прохождении нуля сверяя, не сбились ли по какой-то причине.
     
    Mitrandir нравится это.
  3. Mitrandir

    Mitrandir Гуру

    Это мотор постоянного вращения, его нельзя установить в конкретной позиции
     
  4. Mitrandir

    Mitrandir Гуру

    А вы уверены, что с нагрузкой это время будет постоянным?
     
  5. Mitrandir

    Mitrandir Гуру

    Как вариант, на вал насадить энкодер.
     
  6. geher

    geher Гуру

    Туда-сюда лапоть величиной до 10 градусов, как мне кажется, на первой итерации обеспечить можно.
    А энкодер - это да, может быть решением.
     
  7. Rustam

    Rustam Нерд

    спасибо за советы. а если взять шаговый двигатель, то можно будет крутить его туда-сюда и останавливать в нужной позиции?
     
  8. Mitrandir

    Mitrandir Гуру

    да
    давая ему импульс, ты заставишь его повернуться в нужную сторону на градус установленный производителем.