使用pwm控制一个舵机摆动的速度

首先是控制速度,不是角度。

使用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))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值