Движение сервопривода из стороны в сторону с загруженным кодом PWM Arduino

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

myport.WriteLine(val.ToString());

Я использую библиотеку PWM :

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);  

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

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


person Ai_ve    schedule 06.01.2019    source источник


Ответы (1)


Вы не можете.

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

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

person gre_gor    schedule 06.01.2019