当前位置:首页 > 单片机 > 单片机
[导读]前段时间使用STM8S003F3实现了一个三基色灯的各种效果,故写一篇文章作为一个记录。1 综述我们知道,要是的LED灯亮直接通电即可。而要改变灯的亮度,我们有两种方法:改变电流和PWM调光。我们首先想到的就是改变它的

前段时间使用STM8S003F3实现了一个三基色灯的各种效果,故写一篇文章作为一个记录。

1 综述

我们知道,要是的LED灯亮直接通电即可。而要改变灯的亮度,我们有两种方法:改变电流和PWM调光。

我们首先想到的就是改变它的驱动电流,因为LED的亮度是几乎和它的电流直接成正比关系。然而用调正向电流的方法来调节亮度会产生一个问题:在调亮度的同时也会改变它的光谱和色温,这样就会会产生色偏。因为目前白光LED都是用蓝光LED加黄色荧光粉而产生,当正向电流减小时,蓝光LED亮度增加而黄色荧光粉的厚度并没有按比例减薄,从而使其光谱的主波长增长。这个问题对于一般的照明是没有问题的,因为色温的变化量毕竟不是很大。但是对电源来说当电流过小时会产生闪烁,除非电源的恒流范围很宽,完全可以从0到最大。这样才没有问题。简而言之,电流调光有色温变化和电源电流过小产生闪烁的问题。曾经做过一个项目,用于某设备上需要非常非常平稳的调光,显然电流调光是无法实现。同时像本文介绍的三基色调光有颜色要求的显然也不行。因此我们使用PWM调光。
既然PWM调光可以避免上面的两个问题,为什么不直接都用PWM调光呢?因为我们毕竟是做产品,要考虑成本问题。使用PWM调光至少需要一颗能支持PWM的芯片(当然还有外围电路,但是电流调光也是有电路的。我们也应该知道PWM信号也可以由脉冲发生器提供),另外它需要编写程序。所以只有在需要的场合才使用PWM调光(使用PWM调光需要注意的问题是频率不能太低或者太高,推荐150-400Hz之间。)。PWM的优点如下:

●PWM调光就不会产生色偏,因为它总是工作在0或者最大两种状态。
●PWM的占空比很好控制,而且精度高
●对电源没有影响,因为不会改变电源的工作条件,只是给电源开或者关。

2 PWM波调光的原理

脉宽调制(PWM)是利用微处理器的数字输出来对模拟电路进行控制的的技术,广泛应用在从测量、通信到功率控制与变换及LED照明等许多领域中。通过以数字方式控制模拟电路,可以大幅度降低系统的成本和功耗。此外,许多微控制器和DSP已经在芯片上包含了PWM控制器,这使数字控制的实现变得更加容易了。简言之,PWM是一种对模拟信号电平进行数字编码的方法。通过高分辨率计数器的使用,方波的占空比被调制用来对一个具体模拟信号的电平进行编码。PWM信号仍然是数字的,因为在给定的任何时刻,满幅值的直流供电要么完全有(ON),要么完全无(OFF)。电压或电流源是以一种通(ON)或断(OFF)的重复脉冲序列被加到模拟负载上去的。通的时候即是直流供电被加到负载上的时候,断的时候即是供电被断开的时候。只要带宽足够,任何模拟值都可以使用PWM进行编码。

2.1 占空比(Duty Cycle or Duty Ratio)

首先我们需要了解占空比,占空比的解释可以归纳为如下几种:
●在一串理想的脉冲序列中(如方波),正脉冲的持续时间与脉冲总周期的比值。例如:脉冲宽度1μs,信号周期4μs的脉冲序列占空比为0.25。
●在一段连续工作时间内脉冲占用的时间与总时间的比值。
●在周期型的现象中,现象发生的时间与总时间的比。
通俗一点讲就是电路释放能量的有效时间与总释放时间的比。

2.2 调光比


然后我们需要了解调光比,调光比则是按下面的方法计算(Foper:工作频率;Fpwm:调光频率;):
调光比率 = Foper / Fpwm,(其实也就是调光的最低有效占空比)
比如Foper=100KHZ;Fpwm=200Hz,则调光比为:100K/200=500;这个指标在很多驱动芯片的规格书里会说明的。

2.3 PWM调光2.3.1 PWM调光原理


● 若一个占空比为10%的PWM输出,即10%的时间通,90%的时间断;
● 若一个占空比为50%的PWM输出,即50%的时间通,50%的时间断;
● 若一个占空比为90%的PWM输出,即90%的时间通,10%的时间断;

我们知道,人眼是有视觉暂留的,打个比方,人眼只能识别1us((这个比方没有任何科学依据,仅仅为了便于理解)内光子的数量从而判断亮暗,如果1us接收了1000个光子,那么我们就会认为是一个亮度,至于这1000个光子是在1us什么时候收到,是没有任何影响的,也就是说,在0.1us的时候收到和0.2us的时候收到是没有区别的,我们需要关心的只是数量。这就是为什么我们进行PWM调光的时候不能太慢(视觉暂留可以分辨)也不能太快(太快就没有区别了,就一直是最亮的)。这样就好理解了,占空比是10%,就相当于给它加了一个0.9V的电压(因为10%通电时间里电流产生的效果和0.9V加在周内的时候是一样的)。所以我们就可以通过占空比来条件亮度。

如果在50ms中,LED在这段时间中得到9V供电。如果在下一个50ms中将开关断开,灯泡得到的供电将为0V。如果在1秒钟内将此过程重复10次,灯泡将会点亮并象连接到了一个4.5V电池(9V的50%)上一样。这种情况下,占空比为50%,调制频率为10Hz(T=1/f = 1/10 = 0.1S )。大多数负载(无论是电感性负载还是电容性负载)需要的调制频率高于10Hz。设想一下如果灯泡先接通5秒再断开5秒,然后再接通、再断开……。占空比仍然是50%,但灯泡在头5秒钟内将点亮,在下一个5秒钟内将熄灭。要让灯泡取得4.5V电压的供电效果,通断循环周期与负载对开关状态变化的响应时间相比必须足够短。要想取得调光灯(但保持点亮)的效果,必须提高调制频率。在其他PWM应用场合也有同样的要求。通常调制频率为1kHz到200kHz之间。

通过上面的介绍,我们就知道了PWM调光的原理,那么我们来看看我们这个项目的原理。

2.3.2 三基色呼吸灯原理

需求说明:我们需要设置一个灯,它具有常亮、长暗、快闪、慢闪、呼吸5钟效果,并且要求这几种状态是可以变化的。灯的颜色可以变化。

需求分析:灯的颜色可以变化——确定使用三基色灯。状态可以切换,我们使用串口调节灯的状态和灯的颜色(通过串口给单片机发送数据,然后将参数传给灯控制函数)。我们使用PWM调节灯的亮度,通过改变捕获/比较寄存器的值来改变占空比从而改变亮度。

数学建模:三个灯和一个灯的控制是一样的,由于我们使用的是PWM波调光所以灯只有两种状态:断和通。我们分析5种状态可以抽象成数学模型:暗、上升、亮、下降4钟状态(长暗就是一直暗,常亮就是一直亮,快闪就是100%占空比而且频率比较快,慢闪就是100%占空比而且频率比较慢、呼吸就是占空比最低为10%然后以10%逐渐上升)。然后我们确定需要输入的变量:Value_LED_Red(红色灯的亮度)、Value_LED_Green(绿色灯的亮度)、Value_LED_Blue(蓝灯的亮度)、Value_ChangeOnce(上升或下降的速度)、HoldTime_Min(在低电平状态的持续时间)、HoldTime_Max(在高电平状态的持续时间)。

3 实现过程

下面是TSSOP20封装的管脚图。

首先,我们要确定硬件管脚,但是事实上,因为我用的最多的就是TIM2和TIM4,因此我选用的TIM2_1(PC5,Red)、TIM2_2(PD3,Green)、TIM2_3(PD2,Blue),但是发现除了绿色以外都无法用PWM波控制,但是能用IO控制亮暗,后来查资料发现TIM2_1和TIM2_3早使用的时候必须给存储器地址分布重映射,也就是我们需要使用管脚的复用功能!我们通过看《数据手册》发现,使用TIM2只有一个管脚是复用功能,因此选择TIM2。但是我因为电路限制,所以还是用的上面所说的管脚(注意,TIM2_3有复用和不复用两种,我用的是复用)。这也没有什么影响,我们可以学习一下管脚的复用功能。

3.1 使用复用功能

我们首先看《数据手册》中关于管脚的描述(第一行是TSSOP20封装的管脚编号,第二行是UFQFPN20封装的管脚b)



从上面的图中我们可以看到,需要使用15、19管脚复用功能就需要设置AFR0和AFR1——使用复用功能就是设置AFR(Alternate function remapping bits,候补功能映射位)——我们继续看芯片资料


其中OPT2【选项字节(Option byte)编程 】和NOPT2需要是相反的(可能是出于校验考虑),我们从《数据手册》中可以知道: 应用程序可直接向目标地址进行写操作。所以我们直接对这两个地址进行写操作,那么数值是多少呢?我们继续看《数据手册》,如下图所示


从上图中我们可以看到,我们将AFR1设置为1,将AFR0设置成1。代码如下:


/***************************************************************

*Function:FLASH_Init

*Calls:void

*CalledBy:All_Config.c

*Input:void

*OUTPUT:void

*Return:void

*DESCRIPTION:1.设置管脚复用功能(AFR0要设置为1AFR1要设置为1)

2.eeprom每一次只能操作一个字节

*Others:nothing

***************************************************************/

volatile unsigned char flash_OPT2 @0x4803;

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭