运用PWM技术及MicroPython实现树莓派Pico板上LED呼吸灯视觉效果

一、PWM的概念及应用
PWM的概念:PWM是是英文Pulse Width Modulation(脉冲宽度调制)的缩写,简称脉宽调制。所谓脉宽调制就是对脉冲序列信号的占空比按照要求进行调制,而不改变脉冲信号的其他参数,即不改变幅度和周期,因此脉宽调制信号的产生和传输都是数字式的。
关于PWM的几个物理量:1)PWM的周期T:周期T是指相邻脉冲信号上升沿的时间间隔;在嵌入式系统中,微控制器(MCU)通过配置PWM的频率f(f=1/T)来设置T。2)占空比(Duty cycle):占空比是指PWM的脉冲宽度t与周期T的比值,见图1所示。
在这里插入图片描述
图1 脉冲宽度调制
在图1中, MCU向控制对象输出连续的PWM脉冲信号,可以看出MCU输出了4个脉冲,占空比为0.3。
用脉宽调制技术可以实现模拟信号:如果调制信号的频率远远大于信号接收者的分辨率,则接收者获得的是信号的平均值,不能感知数字信号的0和1,其信号大小的平均值与信号的占空比有关,信号的占空比越大,平均信号越强,其平均值与占空比成正比。只要带宽足够(频率足够高或周期足够短),任何模拟信号都能使用PWM 来实现。
借助于MCU,使用脉宽调制方法实现模拟信号是一种十分有效的技术,该技术可广泛应用于测量、通信、功率控制与变换诸多领域。在日常工作和生活中,我们可以将PWM技术应用于控制LED灯的亮度、电机的转速等场合。以电机控制为例,设MCU设置PWM的频率为500Hz,则T=1/500 s=2 ms;若占空比为1,那么电机开关将一直处于闭合状态,此时提供给电机的功率最大。选择合适的频率十分重要:如果频率很低,则电机在通电和断电时会导致电机转动时断时续,运行状态不稳;如果频率很高,即脉冲很窄,则会导致电机开关来不及正常开合。
二、运用PWM技术实现LED呼吸灯视觉效果原理
在预先设置的固定频率下,我们采用PWM技术不断改变占空比的方式实现LED亮度的变化。图2是调整三种不同占空比的PWM。调整占空比为0,LED灯不亮;调整占空比为5%,则LED较暗;调整占空比为90%,则LED灯接近最亮;调整占空比100%,则LED灯最亮。因此,将占空比从0调整到100%,再从100%调整到0不断变化,循环往复,我们就可以实现LED呼吸灯的视觉效果。
在这里插入图片描述
图2 三种不同占空比的PWM
三、运用PWM技术及MicroPython实现树莓派Pico板上LED呼吸灯程序示例
树莓派Pico开发板所采用的MCU是树莓派基金会自研RP2040芯片,树莓派Pico板上LED是与Pico开发板上的470Ω电阻R3串联后一端接地,另一端接到RP2040 MCU GPIO25引脚(RP2040芯片Pin37物理引脚),见图3所示。
在这里插入图片描述
图3 树莓派Pico板上LED与RP2040 MCU接口
运用PWM控制技术实现树莓派Pico板上LED呼吸灯MicroPython示例程序如下:

#Filename: main.py
#MicroPython实现树莓派Pico板上LED呼吸灯程序示例
import utime
from machine import Pin,PWM
PWM_PulseWidth=0
#使用树莓派Pico板上LED,构建PWM对象pwm_LED
pwm_LED=PWM(Pin(25))
#设置pwm_LED频率
pwm_LED.freq(500)
while True:
    while PWM_PulseWidth<65535:
        PWM_PulseWidth=PWM_PulseWidth+50
        utime.sleep_ms(1)   #延时1ms
        pwm_LED.duty_u16(PWM_PulseWidth)
    while PWM_PulseWidth>0:
        PWM_PulseWidth=PWM_PulseWidth-50
        utime.sleep_ms(1)
        pwm_LED.duty_u16(PWM_PulseWidth)

由程序可知,这里采用pwm_LED.duty_u16方法并通过改变PWM_PulseWidth脉冲宽度数值调整占空比来实现呼吸灯的(连续淡入和淡出) 视觉效果。
下面,使用Thonny IDE(或使用PyCharm IDE等)编辑该程序,程序文件名为main.py(见图4)。
在这里插入图片描述
图4 使用Thonny IDE编辑MicroPython程序
编辑完成后,可将程序以main.py文件存到电脑或树莓派Pico的Flash中。运行main.py程序,我们可以看到树莓派Pico板上LED灯连续淡入和淡出,这样就实现了LED呼吸灯视觉效果。
关于Thonny IDE或PyCharm IDE MicroPython树莓派Pico环境配置及应用方法,可参考博主博文:
1)Raspberry Pi Pico实践系列2-基于Thonny和MicroPython的树莓派Pico板上LED控制编程实践
2)Raspberry Pi Pico实践系列3-基于PyCharm和MicroPython的树莓派Pico扩展接口使用与控制编程实践
(Email联系:yuanzywhu@163.com)
发布日期:2021年02月17日

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

袁易学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值