舵机任意角度程序_02 Python代码中的占空比与角度计算

5d2487e5a026c347e10732d8bef77c63.png

上节课,我们学习了舵机控制的基础知识,探究180度舵机的图形化编程控制。今天这节课,我们将来学习占空比的计算,探究占空比与角度的函数关系,为实现180度舵机的Python代码控制打下基础。

一、关于占空比的计算

在我们Python代码控制舵机旋转中,需要用到占空比。还记得上节课我们学习过的占空比吗?接下来,我们先来复习一下占空比的计算。

1、计算占空比

使用50Hz的频率,那么它的周期为0.2s,也就是20ms。

我们以0.5ms的高电平时间为例,那么它的占空比为:

0.5ms/20ms=0.025=2.5%

2、常用高电平时间的占空比

其他高电平时间占空比的算法类似,这里不妨把上节课中我们的测试数据一起来计算一下。上节课中,我们曾经使用过0.5ms、1ms、1.5ms、2ms 、2.5ms的高电平时间,那么它们的占空比分别为多少呢?

0.5ms高电平时间所对应的占空比为2.5%

1ms高电平时间所对应的占空比为5%

1.5ms高电平时间所对应的占空比为7.5%

2ms高电平时间所对应的占空比为10%

2.5ms高电平时间所对应的占空比为12.5%

3、占空比的调节范围

上节课的学习,我们已经知道,让一个180度舵机实现180度的指针转的高电平时间范围为0.5ms--2.5ms,那么它们所对应的占空比范围就是2.5到12.5。也就是说,给定一个占空比,当然要是2.5--12.5之间的一个数字,就可以实现180度范围内的一个对应角度。

二、180度舵机占空比与角度的关系探究

1、图形化编程中控制180度舵机的原理

让180度舵机旋转180度,只需要在0.5ms--2.5ms之间指定高电平时间,我们在古德微图形化编程中可以直接指定高电平时间(将其转化为微秒),即可实现对舵机的控制。

2、Python代码编程中控制180度舵机的原理

让180度舵机旋转180度,只需要在0.5ms--2.5ms之间指定高电平时间,它们所对应的占空比范围就是2.5到12.5。在Python代码编程中,可以指定占空比(使用百分数),即可实现对舵机的控制。

3、常用高电平时间所对应的角度

如果,我们把0.5ms的高电平时间,2.5%的占空比所应的舵机位置指定为0度位置,那么2.5ms的高电平时间,12.5%的占空比所应的舵机位置就是180度位置。其他的高电平时间、占空比与旋转角度(映射后的角度)很容易确定,如下图所示:占空比与角度对应关系图。

099dde575caeb773187b9d0bfa5469ff.png

4、任意占空比与任意角度的对应关系

以上结论在实现过程中很容易观察到,但是任意一个高电平时间(占空比),它所对应的角度应为多少度呢?或者说,任意一个角度它所对应的占空比为多少呢?我们把2.5的占空比与0度作为一组数据,把12.5的占空比与180度作为第二组数据,就可以构造两个一次函数的表达式:

取2.5的占空比数据,可列出方程:

2.5 = 0*k + b

取12.5的占空比数据,可列出方程:

12.5 = 180*k + b

解二元一次方程组得:

b = 2.5

k =1/18

最后我们得到的任意占空比的计算公式为

025ce9195e309d081fcdd754df435b78.png

上面公式中的angle 是角度,dc是这个角度所对应的占空比。

5、任意角度的占空比计算

思考一下:如果你想让180度舵机转动30度,你需要的占空比应该是多少呢?

在上面的占空比计算公式中,只要代入angle(角度)即可求出它所对应的dc(占空比)。这个问题不难,下面我们不妨用代码来实现一组数据的计算。

35fc8d038da304f81f78cc82f943fbf9.png

程序运行结果:

d099a11b2b60853f2f250b1fcf62fe62.png

上面的输出结果验证了我们已经得到的特殊值的占空比,也计算出了30度,60度所对应的占空比。

7、为什么要进行任意角度的占空比计算

在实际的案例中,我们需要调节的往往是具体的角度,而在舵机的控制中,我们需要的参数是占空比,所以我们才进行了上面的详细探究。

8、函数封装

上面的计算过程,我们也可以直接封装为一个函数,在使用时直接传入角度参数,即可获取占空比,我们将在后续的课程中详细介绍。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值