找回密码
 注册
关于网站域名变更的通知
查看: 418|回复: 1
打印 上一主题 下一主题

灵动微电子MM32L0系列芯片做呼吸灯功能

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2021-2-1 15:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
呼吸灯就是指电子产品上的LED灯的亮度随着时间由暗到亮逐渐增强,再由亮到暗逐渐衰减,有节奏感地一起一伏,就像是在呼吸一样,因而被广泛应用于手机、电脑等电子设备的指示灯中。在使用mcu开发相关的应用产品中也可以加入呼吸灯功能,增强用户的体验感,本篇文章灵动微电子一级代理英尚微将介绍如何使用MM32L0系列产品芯片做呼吸灯功能。
6 I5 G5 N) n) E4 C/ }   w; I9 S# P! ]. e
在平时应用中可以知道,MCU的GPIO输出高低电平变化可以实现LED灯的亮、灭两个过程,如果GPIO的电平一直维持高电平或者低电平,LED灯就处于长亮或长灭的状态,呼吸灯就是通过较高频率的电平变化来实现亮灭的切换,由于人的视觉暂留效应,肉眼无法迅速捕捉快速亮灭变化的过程,所以在视觉中一直出现一直亮或者灭的状态,通过调整占空比可以控制LED灯的亮度,给人视觉上一种灯光由暗到亮逐渐增强,然后又由亮到暗逐渐衰减。
  B3 D2 V; ^) { 3 v( C, E6 L" V% v2 u
正常的成年人的吸气呼气时间整个过程持续大约3秒时间,即吸气时间(LED灯亮度逐渐变亮)时间为1.5S,吸、呼气时间(LED灯亮度逐渐变暗)时间为1.5S。8 M' ?. q4 M. R6 l* @1 i, ~8 `) k7 q

3 r, R$ e( {- Q: @亮度随着时间逐渐变强再衰减,可以用两种算数方式实现:半周期的正弦函数曲线和指数上升曲线及对称的下降沿曲线。
% ~8 `2 u6 s+ \. x7 {
6 h9 J, n& F9 b" B
指数方式曲线图

5 ?" v* }9 j# k& B: v( H* }" `2 y0 d- d
要控制LED灯达到呼吸灯的效果,实际上就是要控制LED灯的亮度拟合呼吸特性曲线,在本次实验将采用指数上升曲线及对称的下降沿曲线方式,用户如果对正弦方式感兴趣也可以进行尝试。在本次实验中,我们使用MM32L0输出较高频率的PWM信号,通过调制信号的占空比,控制LED灯的亮度。
5 ~3 u; t! F( R0 R( z7 K5 U
/ F# }$ O  p( S8 I& N# t+ _+ R生成指数方式的曲线图主要因素:
& E; j* R6 X, \- P" w  I1 b0 cTIMPeriod:定时器的计数周期,它的值必须与PWM表中的极大值相等(应用中赋值需要减1),而PWM表的极大值决定了控制的分辨率。例如极大值为10时,PWM占空比只有10个等级精确到0.1,当极大值为1000时,PWM占空比1000个等级精确到0.001。在本次实验中设置定时器的计数周期值为255+1,即PWM表中的极大值也是256。! p& j9 r  `+ b- o
- s7 U0 g2 O/ w$ t( [
TIM_Prescaler:定时器时钟分频因子,它控制定时器计数器CNT计数加1所需要的时间,它的值太大会导致输出的单个PWM波周期过长,影响控制的动态特性。如控制LED灯时,该值太大会导致LED灯开关时间变长,闪烁明显。一般来说该值越小越好。在本次实验中设置定时器时钟分频因子为1757+1,即对时钟1758分频。& b9 j) R; o& d& F+ ~! V* q7 |  D
5 N5 ~8 q  c4 o- f+ f8 H8 ~- h/ R
PWM表的点数:PWM表的点数即对拟合曲线的采样点数,即把LED灯的亮度分为0-255个等级,采样点越多,能更好地还原拟合曲线,采样点太少,可能会导致失真。在本次实验中设置PWM表的点数为40。
6 {: S( M' ^& ~# c2 K6 A" Z. {
* m: n2 J* H  V- G0 E; i7 a- T' }/ Q# dPeriod_class:周期倍数,即PWM表中每个元素的循环次数,它影响拟合曲线的周期。在本次实验中设置设置周期倍数为8。  q. r: Y1 R5 ~  \. Q: V: U3 V& X
7 t% E; [+ d8 J' D0 X- B( E, e. U
本次实验程序直接从MM32L073的定时器PWM输出的例程的基础上修改得来,TIM3配置成向上计数,PWM通道输出也被配置成当计数器CNT的值小于输出比较寄存CCR1的值时,PWM通道输出低电平点亮LED灯。在函数的最后还使能了定时器中断,每当定时器的一个计数周期完成时产生中断,配合中断服务函数,即可切换CCR1比较寄存器的值。9 L7 X1 t# ^. `+ [* |# @
7 v  u3 t- X  C* G
使用MM32L0系列MCU上述两种方式都可以实现呼吸灯功能,两种方法GPIO分别是PB4和PB5,download到MiniBoard中,可以对比测试两种实现方法的差异性,选择合适的呼吸灯实现方式。
# R1 u+ c( r1 _+ X4 X: U5 ~9 Z! F4 d  {# q

: |8 v: O9 Z" {& Z MM32L0xx.pdf (2.81 MB, 下载次数: 2)
, [% h" I' v/ T1 R

该用户从未签到

2#
发表于 2021-2-1 17:20 | 只看该作者
这个下降沿曲线真好
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-7-20 19:59 , Processed in 0.109375 second(s), 26 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表