基于单片机PMW的LED呼吸灯控制
扫描二维码
随时随地手机看文章
PWM是Pulse Width Modulation的缩写,它的中文名字是脉冲宽度调制,一种说法是它利用微处理器的数字输出来对模拟电路进行控制的一种有效的技术,其实就是使用数字信号达到一个模拟信号的效果。这是个什么概念呢?我们一步步来介绍。
首先从它的名字来看,脉冲宽度调制,就是改变脉冲宽度来实现不同的效果。我们先来看三组不同的脉冲信号,如下图所示:
单片机PWM(脉宽调制)控制的基本原理,简而言之,就是通过改变脉冲信号的宽度(占空比)来控制模拟电路。这涉及到单片机生成一系列脉冲信号,每个脉冲信号的高电平持续时间和整个周期的比值(即占空比)决定了模拟电路的输出。在开始前我有一些资料,是我根据网友给的问题精心整理了一份「单片机的资料从专业入门到高级教程」,
点个关注在评论区回复“888”之后私信回复“888”,全部无偿共享给大家!!!
具体来说,单片机可以通过其内部的定时器和计数器功能来生成这些脉冲信号。定时器用于设定脉冲信号的周期,而计数器则用于控制每个周期内高电平的时间,从而调整占空比。当占空比改变时,模拟电路的输出也会相应变化。
在PWM控制中,单片机输出的脉冲信号被送到功率驱动电路,驱动电路再将这些脉冲信号转化为能够控制电机、LED等设备实际工作的电压或电流信号。通过精确控制占空比,可以实现对这些设备的精确控制,比如调节电机的转速、LED的亮度等。
此外,PWM控制还具有许多优点,比如响应速度快、控制精度高、功耗低等。因此,在单片机应用中,PWM控制技术被广泛应用于电机控制、电源管理、LED调光等领域。
为了深入理解单片机PWM控制的基本原理,你需要具备一定的单片机编程基础、模拟电路知识和数字电子技术基础。通过实践和学习,你可以逐步掌握这一技术,并将其应用于实际项目中。
这是一个周期是 10ms,即频率是 100Hz 的波形,但是每个周期内,高低电平脉冲宽度各不相同,这就是 PWM 的本质。在这里大家要记住一个概念,叫做“占空比”。占空比是指高电平的时间占整个周期的比例。比如,第一部分波形的占空比是 40%,第二部分波形占空比是 60%,第三部分波形占空比是 80%,这就是 PWM 的解释。
那为何它能对模拟电路进行控制呢?大家想一想,我们数字电路里,只有 0 和 1 两种状态,比如我们第 2 章学会的点亮 LED 小灯那个程序,当我们写一个 LED = 0;小灯就会长亮,当我们写一个 LED = 1;小灯就会灭掉。当我们让小灯亮和灭间隔运行的时候,小灯是闪烁。
如果我们把这个间隔不断的减小,减小到我们的肉眼分辨不出来,也就是 100Hz 以上的频率,这个时候小灯表现出来的现象就是既保持亮的状态,但亮度又没有 LED = 0;时的亮度高。
那么,我们不断改变时间参数,让 LED = 0;的时间大于或者小于 LED = 1;的时间,会发现亮度都不一样,这就是模拟电路的感觉了,不再是纯粹的 0 和 1,还有亮度不断变化。
大家会发现,如果我们用 100Hz 的信号,如图所示,假如高电平熄灭小灯,低电平点亮小灯的话,第一部分波形熄灭 4ms,点亮 6ms,亮度最高,第二部分熄灭 6ms,点亮 4ms,亮度次之,第三部分熄灭 8ms,点亮 2ms,亮度最低。
那么,用程序验证一下我们的理论,我们用定时器T0 定时改变 P0.0 的输出来实现 PWM,与纯定时不同的是,这里我们每周期内都要重载两次定时器初值,即用两个不同的初值来控制高低电平的不同持续时间。为了使亮度的变化更加明显,程序中使用的占空比差距更大。
PWM原理
以单片机为例,我们知道,单片机的IO口输出的是数字信号,IO口只能输出高电平和低电平,假设高电平为5V 低电平则为0V 那么我们要输出不同的模拟电压,就要用到PWM,通过改变IO口输出的方波的占空比从而获得使用数字信号模拟成的模拟电压信号。
我们知道,电压是以一种连接1或断开0的重复脉冲序列被夹到模拟负载上去的(例如LED灯,直流电机等),连接即是直流供电输出,断开即是直流供电断开。通过对连接和断开时间的控制,理论上来讲,可以输出任意不大于最大电压值(即0~5V之间任意大小)的模拟电压。
比方说 占空比为50% 那就是高电平时间一半,低电平时间一半,在一定的频率下,就可以得到模拟的2.5V输出电压 那么75%的占空比 得到的电压就是3.75V。
pwm的调节作用来源于对“占周期”的宽度控制,“占周期”变宽,输出的能量就会提高,通过阻容变换电路所得到的平均电压值也会上升,“占周期”变窄,输出的电压信号的电压平均值就会降低,通过阻容变换电路所得到的平均电压值也会下降。
也就是,在一定的频率下,通过不同的占空比 即可得到不同的输出模拟电压。
pwm就是通过这种原理实现D/A转换的。
总结:PWM就是在合适的信号频率下,通过一个周期里改变占空比的方式来改变输出的有效电压。
PWM频率越大,相应越快,PWM输出呼吸灯,那么,PWM信号的实际作用是什么呢?我们以经常使用的呼吸灯举例:一般人眼睛对于80Hz 以上刷新频率则完全没有闪烁感。
频率太小的话看起来就会闪烁,那么我们平时见到的LED灯,当它的频率大于50Hz的时候,人眼就会产生视觉暂留效果,基本就看不到闪烁了,而是一个常亮的LED灯,你在1秒内,高电平0.5秒,低电平0.5秒,(频率1Hz)如此反复,那么你看到的电灯就会闪烁,但是如果是10毫秒内,5毫秒打开,5毫秒关闭,(频率100Hz) 这时候灯光的亮灭速度赶不上开关速度(LED灯还没完全亮就又熄灭了),由于视觉暂留作用,人眼不感觉电灯在闪烁,而是感觉灯的亮度少了,因为高电平时间(占空比)为50%,亮度也就为之前的50% ,频率很高时,看不到闪烁,占空比越大,LED越亮;频率很低时,可看到闪烁,占空比越大,LED越亮。
所以,在频率一定下,可以用不同占空比改变LED灯的亮度。使其达到一个呼吸灯的效果。