Не могу остановить вращение SG90

У меня есть SG90. Я просто хочу, чтобы он вращался на 360 ° и останавливался, вот и все. Это кажется невозможным.

Я попробовал следующий пример:

 by BARRAGAN <http://barraganstudio.com >
 This example code is in the public domain.

 modified 8 Nov 2013
 by Scott Fitzgerald
 http://www.arduino.cc/en/Tutorial/Sweep
*/

#include <Servo.h>

Servo myservo;  // создать объект servo для управления сервоприводом
// двенадцать сервообъектов могут быть созданы на большинстве плат

int pos = 0;    // переменная для хранения положения сервопривода

void setup() {
  myservo.attach(9);  // прикрепляет сервопривод на выводе 9 к объекту сервопривода
}

void loop() {
  for (pos = 0; pos <= 180; pos += 1) { // переходит от 0 градусов к 180 градусам
    // с шагом 1 градус
    myservo.write(pos);              // скажите сервоприводу перейти в позицию в переменной 'pos'
    delay(15);                       // ждет 15 мс, пока сервопривод достигнет нужного положения.
  }
  for (pos = 180; pos >= 0; pos -= 1) { // переходит от 180 градусов к 0 градусам
    myservo.write(pos);              // скажите сервоприводу перейти в позицию в переменной 'pos'
    delay(15);                       // ждет 15 мс, пока сервопривод достигнет нужного положения.
  }
}

Это прекрасно работает.

Я где-то читал, что для 360 двигателей переменная в myservo.write() - это просто скорость. Поэтому я попробовал:

void loop() {
    myservo.write(0);              // скажите сервоприводу перейти в позицию в переменной 'pos'
    delay(2000);                       // ждет 15 мс, пока сервопривод достигнет нужного положения.
    myservo.write(180);              // скажите сервоприводу перейти в позицию в переменной 'pos'
    delay(2000);
    myservo.write(0);              // скажите сервоприводу перейти в позицию в переменной 'pos'
}

Двигатель вращается несколько раз, затем вращается в другую сторону и повторяет это действие.

Что мне нужно сделать, чтобы он завершил 1 оборот и остановился?

, 👍2


2 ответа


Лучший ответ:

1

TL;DR: Ничего не поделаешь.

На сервоприводе, модифицированном для непрерывного вращения, посылаемый вами сигнал задает направление и скорость, а не угол поворота. Вы можете остановить это, но вы не можете установить угол.

Пример развертки повернет сервопривод непрерывного вращения в обоих направлениях, но я сомневаюсь, что он попадет под углы, которые вы его посылаете; он просто отрегулирует скорость и направление.

Без внешнего оборудования и обратной связи, такого как концевой выключатель или поворотный энкодер, невозможно узнать, под каким углом находится сервопривод, и невозможно повернуть его точно на 360 °, кроме как экспериментировать и "угадывать" время и скорость вращения.

Затем вы можете остановить его, установив значение ШИМ для 90 ° или центрального положения, которое должно установить скорость вращения на 0.

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

Возможно, шаговый двигатель был бы лучшим выбором для вашего применения, или "нормальный" сервопривод с шестерней, которая дает вам необходимый диапазон вращения.

,

Двигатель постоянного тока может быть лучше. Мне просто нужно один раз повернуть шнек. Я могу добавить концевой выключатель, но не знаю, как бы я это реализовал, чтобы остановить сервопривод?, @ESP_AGENT

Вам понадобится штифт на оси, который ударит по выключателю. Может быть неловко. Вы также можете использовать обычный сервопривод (не непрерывный, 0 °-180 °) с шестерней на нем, чтобы получить 360 °, или посмотреть на сервоприводы парусной лебедки. Не забудьте принять ответ (если вы его принимаете)., @ocrdu


0

Значение, близкое к 90, заставит ваш вращающийся сервопривод остановиться. Попробуйте 89, 91 и так далее, пока не найдете его.

Если вы используете шнек, используйте микропереключатель, который пульсирует один раз за оборот. Начиная с точки соприкосновения переключателя, запускайте сервопривод до тех пор, пока переключатель не откроется и не закроется снова, а затем остановитесь. Вы совершили одну революцию.

,