Сервопривод из стороны в сторону с загруженным кодом PWM Arduino - PullRequest
0 голосов
/ 06 января 2019

Я использую микроконтроллер Arduino-Uno с сервоэкраном Adafruit. Чтобы переместить довольно быстрый 0,07 с / 60 ° мини-цифровой серводвигатель с нужным углом, например, из приложения C #:

myport.WriteLine(val.ToString());

Я использую ШИМ-библиотеку :

pwm.setPWM(1, 0, Serial.parseInt());

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

Итак, если максимальный и минимальный диапазон:

#define SERVOMIN  160
#define SERVOMAX  500   

А серводвигатель выполняет от 210 до 450, вот моя попытка:

pwm.setPWM(1, 0, 210); 
delay(12); 
pwm.setPWM(1, 0, 450);  
delay(12);
pwm.setPWM(1, 0, 210);  

Таким образом, двигатель не завершает движение и даже не движется в одном направлении без возврата. Что должно быть правильным способом, чтобы сделать такое движение в загруженном коде.

Любой совет, руководство или пример был бы очень полезен

1 Ответ

0 голосов
/ 06 января 2019

Вы не можете.

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

Подробнее об обмене стеками Arduino: Сколько времени требуется сервоприводу для изменения вращения?

...