Не могу остановить вращение 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 оборот и остановился?
@ESP_AGENT, 👍2
2 ответа
Лучший ответ:
TL;DR: Ничего не поделаешь.
На сервоприводе, модифицированном для непрерывного вращения, посылаемый вами сигнал задает направление и скорость, а не угол поворота. Вы можете остановить это, но вы не можете установить угол.
Пример развертки повернет сервопривод непрерывного вращения в обоих направлениях, но я сомневаюсь, что он попадет под углы, которые вы его посылаете; он просто отрегулирует скорость и направление.
Без внешнего оборудования и обратной связи, такого как концевой выключатель или поворотный энкодер, невозможно узнать, под каким углом находится сервопривод, и невозможно повернуть его точно на 360 °, кроме как экспериментировать и "угадывать" время и скорость вращения.
Затем вы можете остановить его, установив значение ШИМ для 90 ° или центрального положения, которое должно установить скорость вращения на 0.
На сервоприводе вы не можете иметь как непрерывное вращение с заданной скоростью, так и заданный угол поворота без дополнительного оборудования.
Возможно, шаговый двигатель был бы лучшим выбором для вашего применения, или "нормальный" сервопривод с шестерней, которая дает вам необходимый диапазон вращения.
Значение, близкое к 90, заставит ваш вращающийся сервопривод остановиться. Попробуйте 89, 91 и так далее, пока не найдете его.
Если вы используете шнек, используйте микропереключатель, который пульсирует один раз за оборот. Начиная с точки соприкосновения переключателя, запускайте сервопривод до тех пор, пока переключатель не откроется и не закроется снова, а затем остановитесь. Вы совершили одну революцию.
- Wemos mini pro переключатель питания от сервопривода с mosfet bs170
- NodeMCU V3 ПЕРЕГРЕВАЛСЯ И УМЕР
- Попытка связаться с ESP8266
- Сервопривод начинает вращаться на 360 градусов через несколько минут
- Вопрос для новичка: когда что-то происходит, устанавливать сервопривод на определенные градусы.
- Как читать и записывать EEPROM в ESP8266
- Как сделать выводы Tx и Rx на ESP-8266-01 в выводах GPIO?
- Как навсегда изменить скорость передачи данных ESP8266 (12e)?
Двигатель постоянного тока может быть лучше. Мне просто нужно один раз повернуть шнек. Я могу добавить концевой выключатель, но не знаю, как бы я это реализовал, чтобы остановить сервопривод?, @ESP_AGENT
Вам понадобится штифт на оси, который ударит по выключателю. Может быть неловко. Вы также можете использовать обычный сервопривод (не непрерывный, 0 °-180 °) с шестерней на нем, чтобы получить 360 °, или посмотреть на сервоприводы парусной лебедки. Не забудьте принять ответ (если вы его принимаете)., @ocrdu