Серводвигатель HSR-1425R не работает непрерывно
Я пытаюсь запрограммировать серводвигатель на достижение определенных положений. У меня есть серводвигатель на 360 градусов, поэтому я не могу использовать библиотеку сервоприводов и могу только контролировать скорость. Поэтому я хочу регулировать время пульса. Настройка проста, 5 В, GND и вывод 9 от Arduino к двигателю.
int servo1 = 9;
void setup{
Serial.begin(9600);
pinMode(servo1, OUTPUT);
}
void loop{
digitalWrite(servo1, HIGH);
delay(5000);
Serial.println(digitalRead(servo1));
digitalWrite(servo1, LOW);
delay(5000);
Serial.println(digitalRead(servo1));
}
Ожидаемо: Я ожидаю, что код запустит серводвигатель на полной скорости в течение 5 секунд.
Актуально: Двигатель работает при первом импульсе и останавливается на 10 секунд.
Как я могу улучшить код, чтобы делать то, что я ожидаю?
@Ate8, 👍2
Обсуждение2 ответа
Посмотрите, как обычно управляются серводвигатели. Насколько я знаю, нет сервоприводов, которые можно было бы просто "включить для вращения", как вы, кажется, ожидаете.
Обычно положение сервопривода устанавливается путем подачи импульса определенной длины. Это означает, что вы можете подать ШИМ-сигнал с нужной частотой. Тогда рабочий цикл должен быть пропорционален положению сервоприводов. По моему опыту, время довольно важно при управлении сервоприводом, поэтому идти так, как вы делаете (синхронизировать выходное состояние gpio с delay()
s), будет не очень хорошо. Вы должны использовать аппаратные модули atmega (что уже имеет место при использовании цифровой записи ардуино), чтобы добиться адекватного синхронизации.
- Сервопривод не перестанет вращаться
- Управление скоростью вентилятора с помощью библиотеки Arduino PID
- Как устранить шум от вентилятора 12 В с ШИМ-управлением на низкой скорости
- Arduino uno + cnc Shield v3 + драйвер шагового двигателя A4988 + AccelStepper?
- Как заставить сервопривод вращаться на угол больше 180°
- Почему Adafruit motor shield не крутит моторы?
- Как управлять 6 шаговыми двигателями с помощью Arduino?
- Пропорциональный контроль расхода воды
каковы ваши аппаратные соединения и почему вы считываете выходной вывод?, @Vaibhav
Мои аппаратные соединения - это три провода от сервопривода непосредственно к Arduino. Я хотел посмотреть, какие сигналы были посланы., @Ate8
Как вы думаете, почему вы не можете использовать библиотеку Servo? С сервоприводами непрерывного вращения он обычно работает там, где 0 вращается в одну сторону, 180 вращается в другую и что-то близкое к 90 останавливает его., @Delta_G
Кроме того, чтобы управлять этим сервоприводом, вы не просто устанавливаете штифт ВЫСОКО. Вы должны послать определенную длину импульса, которая сообщает сервоприводу, как быстро и в каком направлении вращаться. Это тот же самый сигнал, который говорит обычному сервоприводу, под каким углом двигаться. Вот почему для управления ими обычно используется библиотека сервоприводов., @Delta_G