使用 PWM Arduino 上传的代码从一侧到另一侧进行伺服运动
Servo movement from side to side with PWM Arduino uploaded code
我正在使用带有 Adafruit 伺服扩展板的 Arduino-Uno 微控制器。要以所需的角度快速移动 0.07 sec/60° 微型数字伺服电机,例如来自 C# 应用程序:
myport.WriteLine(val.ToString());
我使用 PWM library:
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);
这样电机在没有return的情况下不完成运动甚至单向运动。在上传的代码中进行此类移动的正确方法应该是什么。
任何建议、指南或示例都会非常有帮助
你不能。
普通舵机不提供任何位置反馈。仅靠软件是不可能的,除非你添加足够长的延迟以确保它即使在负载下也能完成移动。
您要么需要不同的伺服系统,要么需要额外的传感器。
有关 Arduino Stack Exchange 的更多信息:How long does it take for a servo to change rotation?
我正在使用带有 Adafruit 伺服扩展板的 Arduino-Uno 微控制器。要以所需的角度快速移动 0.07 sec/60° 微型数字伺服电机,例如来自 C# 应用程序:
myport.WriteLine(val.ToString());
我使用 PWM library:
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);
这样电机在没有return的情况下不完成运动甚至单向运动。在上传的代码中进行此类移动的正确方法应该是什么。
任何建议、指南或示例都会非常有帮助
你不能。
普通舵机不提供任何位置反馈。仅靠软件是不可能的,除非你添加足够长的延迟以确保它即使在负载下也能完成移动。
您要么需要不同的伺服系统,要么需要额外的传感器。
有关 Arduino Stack Exchange 的更多信息:How long does it take for a servo to change rotation?