PWM(补光灯)
前言
PWM(脉冲宽度调制)就是一个特定信号输出,主要用于输出不同频率、占空比(一个周期内高电平出现时间占总时间比例)的方波。以实现固定频率或平均电压输出。

实验目的
通过输出特定频率和不同占空比的PWM信号,控制灯光明暗变化。
实验讲解
PWM输出不同的占空比相当于输出不同的电压,从而实现补光灯的明暗变化。通过gpio pins命令可以查看CyberCAM K230的PWM引脚信息和状态。

提示
CyberCAM K230芯片内部有2路PWM,每路有3个通道。PWM0、PWM1、PWM2为第1路PWM,PWM3、PWM4、PWM5为第2路PWM。每路PWM的频率输出是相同的,占空比可以单独设置。
也就是说当屏幕背光PWM5使用时(系统默认开启),PWM3蜂鸣器无法使用硬件PWM,可以使用软件PWM模拟输出。
- IO60 PWM0
- IO61 PWM1
- IO46 PWM2 (补光灯)
- IO47 PWM3 (蜂鸣器)
- IO25 PWM5 (屏幕背光)
我们这里使用periphery的PWM库实现。这个封装好的Python PWM API非常简单易用。
PWM对象
构造函数
pwm = periphery.PWM(chip, channerl)
构建PWM对象
chip:PWM芯片编号,CyberCAM K230有2路,取值0~1。0: PWM0、PWM1、PWM21: PWM3、PWM4、PWM5
channel:通道编号,取值0~2;0: PWM0(chip=0); PWM3(chip=1)。1: PWM1(chip=0); PWM4(chip=1)。2: PWM2(chip=0); PWM5(chip=1)。
使用方法
pwm.frequency = value
设置pwm频率。
pwm.duty_cycle = value
设置占空比。范围[0-1]表示占空比0%~100%,如0.5表示50%。
pwm.enable()
使能PWM。
pwm.disable()
禁用PWM。
pwm.close()
关闭PWM。
更多用法请阅读官方文档:
https://python-periphery.readthedocs.io/en/latest/pwm.html
参考代码
'''
'''
实验名称:PWM(补光灯)
实验平台:CyberCAM
作者:01Studio
说明:通过调节PWM占空比来控制补光灯的亮度
'''
from periphery import PWM
import time
pwm = PWM(0,2) #第0路2通道表示 PMW2,即补光灯
pwm.frequency = 1000 #频率1KHz
pwm.enable() #使能PWM
#占空比0.1,亮度10%
pwm.duty_cycle = 0.1
time.sleep(2)
#占空比0.5,亮度50%
pwm.duty_cycle = 0.5
time.sleep(2)
#占空比0.9,亮度90%
pwm.duty_cycle = 0.9
time.sleep(2)
pwm.disable() #禁用PWM
pwm.close() #关闭PWM
实验结果
运行代码,可以看到补光灯的亮度依次变化。
