完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
在使用RPi.GPIO 库里的PWM功能时候,出现了一个问题,电机的啸叫声特别明显,低频(200以下)也是,高频(20K)更是,后来用示波器检测它的输出端,发现将占空比设置为0的时候,它还是会产生一个PWM信号。电机正反转时候,转速断断续续。
后来,查到了一个比较靠谱的库 pigpio, 可以用pip下载。这个库的PWM非常稳定。用示波器检测,比较平稳。 将一端口设置成PWM,四步走:
import pigpio pi = pigpio.pi() # 创建实例 pi.set_mode(17,pigpio.OUTPUT) # 设置17端口 pi.set_PWM_frequency(17,127) # 修改17端口的PWM频率 pi.set_PWM_range(17,100) # 设置PWM占空比的切分 pi.set_mode(27,pigpio.OUTPUT) # 设置27端口 pi.set_PWM_frequency(27,127) pi.set_PWM_range(27,100) def forward(pwm): # 向前 # pi.write(17,1) # 两个电机输入1,制动 # pi.write(27,1) pi.set_PWM_dutycycle(17,pwm) pi.set_PWM_dutycycle(27, 0) def backword(pwm): # 向后 # pi.write(17,1) # 两个电机输入1,制动 # pi.write(27,1) pi.set_PWM_dutycycle(17,0) pi.set_PWM_dutycycle(27, pwm) def stop(): # 停止 pi.write(17,1) # 两个电机输入1,制动 pi.write(27,1) pass def main(): flag = int(input("请输入前/后/停(1,0,其它):")) if(flag==1): pwm = int(input("请输入占空比:")) forward(pwm) elif(flag==0): pwm = int(input("请输入占空比:")) backword(pwm) else: stop() if __name__ == '__main__': while 1: main() |
|
|
|
只有小组成员才能发言,加入小组>>
2438 浏览 0 评论
9107 浏览 4 评论
36786 浏览 19 评论
5029 浏览 0 评论
24757 浏览 34 评论
1533浏览 2评论
1752浏览 1评论
2199浏览 1评论
1558浏览 0评论
529浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-23 19:25 , Processed in 1.046057 second(s), Total 47, Slave 41 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号