2.5 可调亮度的LED灯

在前面的实验中,我们使用了电位器。那么,电位器的工作原理是什么?电位器在日常生活中有什么用呢?其实它很常见,在收音机上,电位器可调节音量的大小;在台灯上,电位器可调节灯光的亮暗。

灯光过亮与过暗都不利于眼睛健康,在睡觉时,我们常常希望灯光尽可能暗一些,因此,非常有必要在普通照明灯上加装可调亮度的装置。

2.5.1 实验描述

让LED灯D3、D5、D6、D9、D10、D11的亮度随电位器的旋转而变化。AU05的电路原理图、电路板图和实物图如图2.8所示。

img

图2.8 AU05的电路原理图、电路板图和实物图

2.5.2 知识要点

1.脉冲宽度调制

脉冲宽度调制(Pulse Width Modulation,PWM)是一种运用微控制器控制输出数字信号电平方式,实现输出模拟信号高低的技术。数字信号指信息参数在时间与幅度上不连续的信号,模拟信号指信息参数在时间与幅度上连续、不间断的信号。PWM技术用于控制LED灯的亮度和电机输出功率。

2.Arduino Uno开发板近似模拟输出

Arduino Uno开发板虽然没有模拟输出端口,但是可运用语句analogWrite(pin,value);设置引脚pin(特指Arduino Uno开发板上标有“~”符号的数字端口3、5、6、9、10、11)产生占空比稳定的矩形波信号,实现近似模拟输出效果。其中,数字端口3、9、10、11产生的波形频率约为490Hz,数字端口5、6产生的波形频率约为980Hz。矩形波是一种非正弦曲线的波形,理想矩形波只有“高”和“低”这两个值。高电平在一个波形周期内占有的时间比值称为占空比,即占空比=高电平时间/(高电平时间+低电平时间),一般将占空比为50%的矩形波称为方波。图2.9所示为占空比为0%、25%、50%、100%的波形图。

img

图2.9 占空比为0%、25%、50%、100%的波形图

单次高电平持续时间称为脉冲宽度,通过改变占空比调节输出电压值的方法称为脉冲宽度调制技术。在矩形波信号中,单次高电平持续时间加上单次低电平持续时间为一个周期,周期的单位是s。在1s内矩形波的高低电平变化次数称为频率,频率的单位是Hz,频率等于周期的倒数,PWM端口输出电压值=最大电压值(5V)×占空比。

2.5.3 编程要点

1.语句analogWrite(pin,value);

该语句表示引脚pin的输出值value为0~255,对应的占空比为0%~100%,对应的模拟电压值为0~5V,当输出值value=127时,对应的占空比为50%,对应的模拟电压值为2.5V。使用该语句输出模拟电压值时,不需要通过pinMode函数设置端口为输出模式。

2.Arduino Uno开发板近似模拟输出的编程方法

img

2.5.4 程序设计

(1)程序参考

img
img

(2)实验结果

组装并焊接AU05电路板,将电路板的排针插入Arduino Uno开发板对应的插槽内,调节电位器,LED灯D3、D5、D6、D9、D10、D11的亮度将随电位器的旋转而变化。上传代码,以顺时针方向调节电位器的旋钮,可见LED灯D3、D5、D6、D9、D10、D11的亮度( );以逆时针方向调节电位器的旋钮,可见LED灯D3、D5、D6、D9、D10、D11的亮度( )。(选择:A.由亮变暗,最后熄灭 B.由熄灭变亮,最后很亮 C.不变)

2.5.5 拓展和挑战

AU05电路板上,光敏电阻的一端与Arduino Uno开发板上的模拟端口A1连接,另一端与端口5V连接,将语句val=analogRead(0);中的数字0修改为1,即读出模拟端口A1的值,赋给变量val,重新编译、上传代码,挡住光敏电阻上方的光线,可见LED灯D3、D5、D6、D9、D10、D11的亮度( );当光敏电阻上方的光线变亮时,可见LED灯D3、D5、D6、D9、D10、D11的亮度( )。(选择:A.由亮变暗 B.由暗变亮 C.不变)