使用pwm控制一个舵机摆动的速度
控制舵机摆动速度的关键在于利用PWM间接调节。由于舵机角速度固定且与角度差成正比,可通过以下方法实现速度控制:1)初始化PWM与舵机角度同步;2)按指定速度定时计算角度增量并更新PWM值(如每0.02秒更新);3)加入启动时间补偿。具体实现时,根据设定速度计算角度增量,进行边界检测和方向反转,最终转换为目标PWM值输出。示例代码展示了如何通过计算deltaAngle实现舵机匀速摆动,其中涉及角度到
·
首先是控制速度,不是角度。
使用pwm去控制舵机,是控制角度来的,但是有的时候,我们想控制舵机的摆动速度。这个时候怎么怎么办?
考虑以下条件:
1. 舵机的转动速度的最大值是固定的,
2. 去掉启动的时间,一般来说舵机的角速度是固定的
3. 我们无法令到舵机超过它的最大速度
4. 舵机工作时,目标角度和当前角度相差越大,它的角速度就越大, 反之越小
因此我们可以这样做:
1. 先给出一个pwm, 等待一个比较长的时间,如90度需要的最大时间。这样,pwm和舵机角度就对准了。
2. 根据指定速度,定时去计算出增量, 去更新pwm的值,如每0.02秒计算一去更新pwm, 输出给舵机。
3. 考虑启动的时间,做一定的补偿算法。
效果:
python写的舵机模拟控制来回摆动的速度
下面是控制舵机的来回摆动的速度的代码:
def do_swing(self, delta_time):
deltaAngle = self.auto_speed * delta_time * self.direction
new_angle = self.swing_angle + deltaAngle
# 边界检测和方向反转
if new_angle >= 25 or new_angle <= -25:
self.direction *= -1
# 更新当前角度并设置目标PWM
self.swing_angle = new_angle
target_pwm = 1500 + (self.swing_angle / 0.09)
self.swing_arm.set_target(int(target_pwm))
更多推荐



所有评论(0)