您的位置:首页 > 其它

如何控制树莓派产生与读取pwm波——pigpio库函数使用指南:第三篇:PWM波形的产生

2019-05-14 21:18 113 查看

比起PWM波形的读取,利用pigpio库函数控制树莓派gpio口产生特定的PWM波形将会简单许多。pigpio的功能十分强大,能够实现同时控制树莓派的31个gpio口同时产生你需要的pwm波形,让我们一起来看一下吧!
在使用之前,如果你还没有安装这个库函数,请参照我的第一篇教程
首先,开机第一步,自然是启动守护程序:

sudo pigpiod

然后,新建一个python文件pwm.py,在程序开头导入必要的包

import pigpio

接下来,实例化一个对象

pi = pigpio.pi()

很好,最开始的准备工作的已经完成了,现在我们先来看几个最简单的使用示例,虽然这几个函数暂时和pwm波没有关系,但是由于其用途比较基础,还是先列出来:

pi.write(4, 0) # 将4号引脚设置为低电平
pi.write(4, 1) # 将4号引脚设置为高电平
pi.read(4)     # 获取目前4号引脚的电平

很简单吧!在这里,如果你没有读过我的上一篇文章,那你可能不清楚这个引脚编号是怎么来的,在这个库函数中,gpio脚的编号顺序依照Broadcom number顺序,请自行参照gpio引脚图里面的“BCM编码”,看这张图时,让树莓派的四个USB接口面向你。
那现在,就让我们开始产生我们想要的pwm波形,程序很简单

pi.set_PWM_frequency(14, 50)#设定14号引脚产生的pwm波形的频率为50Hz
pi.set_PWM_range(14, 2000)
#指定要把14号引脚上的一个pwm周期分成多少份,这里是分成2000份,这个数据的范围是25-40000
pi.set_PWM_dutycycle(14,150) #指定pwm波形的占空比,这里的占空比为150/2000,2000是上一个函数设定的

如果你已经比较了解pwm波形,相信你现在已经会用了,这里再给不够了解的人稍微普及一下,pwm占空比指的就是是一个脉冲周期内高电平的所整个周期占的比例,比如说,一个pwm波周期里面,高电平所占时间是总时间的一半,那它的占空比就是50%,在上面的程序中,如果你想把占空比提高到50%,那就把最后一句改成下面这句就可以了:

pi.set_PWM_dutycycle(14,1000) #1000=2000*50%

至于为什么是1000,那是因为你前面已经把一个周期分成了2000份,如果你想要让你的程序精度更高一点,比如,把一个pwm周期分成4000份,最后还是生成占空比为50%的pwm波形,那么,那两句话应该改成这样:

pi.set_PWM_range(14, 4000)
pi.set_PWM_dutycycle(14,2000)

足够清晰明了了吧!
再提一个可能需要注意的点,受树莓派的性能影响,pwm波的频率并不是可以无限提高的(幸运的是它能够使用的频率已经可以覆盖我们的绝大多数使用场景了),比如你不可能直接简单粗暴的把它提高到100000Hz,假设你这样写了,pigpio会把你这个数处理成它可以接受的最大数目,请看示例:

pi.set_PWM_frequency(4,100000)
print(pi.get_PWM_frequency(4))#这个函数用于返回特定gpio口上已经设定好的pwm波形的频率
#结果为:
8000

看到这里,相信你已经能够了解如何使用树莓派产生pwm波形了吧!

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: