基于声音的动感LED灯
2023-08-04杨翠云孙玉民韦中伟王帅葛凯旋
杨翠云 孙玉民 韦中伟 王帅 葛凯旋
(横店集团得邦照明股份有限公司 浙江东阳 322118)
城市装饰对彩色灯光的需求越来越大,同时对于彩色灯光的控制和技术要求越来越高,智能一体化、架构集成化成为灯光控制技术的发展趋势。一般的彩色灯光的控制电路由数字电路组成,这一方式电路结构复杂、成本高、功耗大,并且从外观上看彩色灯光不仅模式少还形式单调,缺乏用户的实操性,影响灯光的闪烁效果,因此有必要对彩色灯光控制器进行改进[1-3]。彩色灯饰主要可以用于娱乐活动、园林装饰等场合,为环境提供不同的灯光变化效果,但是普通的灯光又无法根据节奏变化闪烁,形式单一。通过音乐将视觉和听觉结合起来在现如今越来越广泛,基于声音的动感LED 灯是音乐可以外化的一种典型的应用,目前在智能家具和照明领域也有使用[4-5]。播放音乐时LED 灯光可以实时通过音乐的改变而闪烁变化。
1 硬件系统方案设计
首先,通过电脑播放任意一首音乐,电脑端音量控制适中,这样方便采集音频信号。通过连接电脑的音频信号线采集声音信号,由于采集到的声音信号很微弱,不足以利用,所以信号要先通过LM386功率放大器将模拟量信号放大。放大后的音频信号传输到ADC0832模数转换器,通过模拟量到数字量的转换后,形成的数字量再传输到单片机中,通过判断数字量的大小来实现8个LED灯珠数目多少的亮灭[6-7]。从硬件系统总体方案中可以看到,在通过音频信号传输线传输出来的音乐需要在采集线路上增加一个小功率的喇叭来外放,以达到视听一体化的效果。该系统基于STC89C52单片机来实现对声音大小的判断,并通过P 口对外接LED灯珠进行亮灭的控制。通过音频信号线采集声音信号的方案优点在于采集的声音信号准确,没有外界因素影响或者干扰,音频信号可以准确无误地采集、放大、传输到单片机,从而控制8 个彩色LED 灯的亮灭。总体系统框图如图1所示。
图1 硬件系统总体方案图
1.1 单片机系统LM386音频信号放大电路模块
基于声音动感LED灯的主芯片使用的是STC89C52单片机。单片机P1.0 连接模数转换器的使能端,其功能是决定模数转换器的开始工作与结束工作。P1.2连接模数转换器的时钟信号端,其功能是为芯片提供时钟信号。P1.3模数转换器信号输出和输入的并联线相连接,用来传输数据。P0 口与8 个草帽形灯珠相连,P0.0控制第8个灯;P0.1控制第7个灯;P0.2控制第6个灯;P0.3控制第5个灯;P0.4控制第4个灯;P0.5控制第3 个灯;P0.6 控制第2 个灯;P0.7 控制第1 个灯。另外,为了迎合人类视觉停留这个特性,单片机内部需要有延时程序,让更多的灯光闪烁效果停留在眼睛里面,人脑中便会生成一幅连续的画面。
1.2 LM386音频信号放大电路模块
采用LM386功率放大器将功率放大。LM386功率放大器具有功耗低、工作电压范围宽泛、所需外部搭配元件少等特点,其内部由多级电路组成,拥有众多晶体管。输入部分、电压增益模块、电流驱动模块由10 个晶体管构成。增加闭环增益就需要加大电路的总交流反馈量,其方法是在芯片1脚及8脚间添加一个10 μF的电容。整体可以达到放大200 倍的效果,采集到的音频信号通过它放大以后得到适合利用的音频信号(如图2 所示)。在方案中,通过音频信号线从电脑端采集的声音没有外放出来,因此无法判断声音的节奏与LED 灯闪烁的配合程度,需要在线路中添加一个小功率外放喇叭帮助人们视听结合。
图2 放大电路仿真图
1.3 ADC0832模数转换电路模块
ADC0832 模数转换器的分辨率可达到256 级,意思就是可以将采集到的连续模拟量分为256 个级别。将整个值域分为8 段,每一段的最大值对应一个草帽型的灯珠发光的阈值,通过模拟量到数字量的转换后,形成的数字量再传输到单片机中,数字信号再由单片机判断当数字量大于规定的数字后哪些LED 灯亮起。图3为模数转换电路仿真图。
图3 模数转换电路仿真图
1.4 独立按键模块
设有3 个独立按键key0、key1、key2 分别接单片机P2.0、P2.1、P2.2,此3个按键用于切换LED 彩灯的不同闪烁情况。设有2 个独立按键key3、key4 分别接单片机P2.3 和P2.4,此2 个按键用于切换ADC0832 不同的采样速度,从而导致LED彩灯的两个不同闪烁速度。
1.5 LED灯珠显示模块
8个草帽型灯珠亮灭的个数根据收取的声音大小改变,其整体形式排成一排,但是闪烁方式可以由程序决定。总体展现为声音小则彩灯亮的个数少,声音大则彩灯亮的个数多。让LED草帽型灯亮只要让接在P口变成低电平,草帽灯灭则P 口电平变高。系统先从外拾取声音,通过前面的模数转换可以得到一定的数字量,然后将数字量进行一段一段地划分则可规定8个LED小草帽灯珠的亮灭区间来决定草帽灯珠的亮灭情况。
1.6 电源总开关与复位方式
该系统板的电源总开关在外接电源线后,由开关SW1 的闭合和打开控制整个系统是否供电,它将接通VCC,使系统电压达到5 V。复位是使整个系统回到一个确定的、最初始的状态,使相应部件从这个最伊始的状态重新开工。单片机中有一个引脚专门负责使整个系统置于最初始的状态即复位引脚RST。在时钟电路工作时,RST 接高电平即可使整个系统回到最初始的状态。
2 系统软件设计
2.1 系统开发环境
开发工具为Keil uVision4.Keil 编程软件在功能技术、架构本身以及可读性等方面有极大的优势,且多个窗口的呈现提供了简洁、高效的环境。
2.2 ADC0832的初始化及驱动
想要让模数转换器工作就必须进行初始化,对ADC0832 模数转换器的连接位置进行定义,然后初始化ADC0832模数转换器。
ADC0832 模数转换器有4 个连载单片机上的端口,有控制其启停的使能端、时钟输入端、信号输入端口以及信号输出端口,因为输出端口与输入端口不是同时起作用而且跟单片机的连接是双向的,所以此芯片的输入端口和输出端口可以并联在一起使用。
当ADC0832不工作时使能端处于高电平,这时候芯片不能用,时钟信号和输入、输出端口的电平可高可低。芯片工作时使能端一直处于低电平。起始信号必须在第1 个时钟下降之前信号输入端置于高电平状态,而第2、3个时钟信号来选择通道,即两位数据来决定。选用的CH0单通道转换则是“1、0”。选择CH0单通道后,ADC0832则开始工作,通过将传入模数转换器CH0 端的连续模拟电压量大小转化为0~255 的数字量。具体转化过程为:1次A/D转换从开始转换的第1个脉冲输出数据最高位DATA7,直到发出最低位数据DATA0,此时一个字节数据完成。此时,可输出下一个相反字节的数据。当所有的模数转换完毕后,将使能端置于高电平,此时芯片不再工作。
2.3 平均值滤波
众所周知,在进行数据统计时,每当有大量数据来临时,观察点阵图发现会有密密麻麻、“上蹿下跳”的点数据呈现在眼前,因此需要平滑整个数据值。通过采集得到的音频信号样点通常比较密集,信号过于密集会导致单片机响应很快,这样一来就不能直观地凸显音频信号的特点。将所有采集到的音频信号采取一种简单的平均值滤波算法进行数据处理,这样即可得到正常的采集速率。首先,多次采集信号滤波后的数据算出平均值,得到的最后值即为所需数据。平均值滤波算法与很多程序中运用到的求平均值差不多。其次,把一系列采集到的众多单次信号进行相加,然后将这些数字量之和除以采集次数,这样算出来的数字量为一段适合时间内的平均数字量,这样处理出来的数据平滑、稳健。需要注意的是,此平均滤波算法中,会根据采集次数的多少影响整个算法的速率和准确度,次数过多会导致系统呆滞、反应缓慢,次数太少又会影响准确度,导致节奏的判断错误。因此,通过实验采取准确的算法是非常重要的一环。
2.4 独立按键的初始化及驱动
需要通过程序对独立按键进行初始化。为了防止按键抖动有两种分别为硬件消抖和软件消抖,因为硬件消抖延时较大,因此此次设计采用软件消抖。key3键和key4键分别控制低速率和高速率,当按动key3键时,P2.3接低电平,此时高速率采样,彩灯闪烁频率高。当按动key44键,P2.4接低电平,此时低速率采样,彩灯闪烁频率低。
高速率:负责控制闪烁速度的第一个按键所采样的速率是原本模数转换器ADC0832 原始的转换时间为32 μs,用时越少,响应越快。低速率:第二个按键是采样速率是原速率的5倍,转换时间为160 μs,用时越多,响应越慢。可以分别在播放快节奏、慢节奏音乐时运用不同的采样速率,使彩灯闪烁频率更加合理。
2.5 单片机控制LED彩灯的闪烁
由于人眼的视觉停留效果和单片机产生的指令时间相当短,因此为了可以很好地观察彩灯效果,需要将指令延时一段时间,以留有充足的时间产生视觉停留效果。该系统采用for循环进行延时。
ADC0832 的优点在于将采集到的连续模拟电压量很好地转换为单片机可识别的数字量,此数字量达到256 级别,因此可以利用这个特点用来按需编辑想要达到的彩灯显示模式和情况。
根据调试与编排,LED 彩灯闪烁效果具有多重展现方式。只需要按照需求将定义好的P 口所连接的LED灯置1就会亮,置0则LED灯灭。LED灯原本外接电源与限流电阻。在程序中,LED 灯的值为1,对应的P 口置低电平,LED 灯亮起;LED 灯的值为0,对应的P口置高电平,LED 灯不亮。图4 为软件执行流程图,图5为彩灯闪烁效果图。
图4 软件执行流程图
图5 彩灯闪烁效果图
具体方案:通过ADC0832模数转换器转换后的数字量进行大小的判断,若数字量大于30,则P 0.7 输出的值为“1”,否则为“0”;若数字量大于70,则P 0.6输出的值为“1”,否则为“0”;若数字量大于100,则P 0.5 输出的值为“1”,否则为“0”;若数字量大于130,则P 0.4输出的值为“1”,否则为“0”;若数字量大于160,则P 0.3 输出的值为“1”,否则为“0”;若数字量大于180,则P 0.2 输出的值为“1”,否则为“0”;若数字量大于200,则P 0.1 输出的值为“1”,否则为“0”;若数字量大于220,则P 0.0输出的值为“1”,否则为“0”。
此时观察到的效果即为一排LED 灯光随着声音大小的改变从第一个灯到最后一个LED 灯的闪烁,犹如波浪一波又一波,一波未平一波又起,极其酷炫。
3 实物调试
准备好STC89C52 单片机、LM386 功率放大器、ADC0832 模数转换器、8 个LED 彩灯、驻极式麦克风、音频接口底座、总开关、可调式电位器、电容、电阻若干。只需预先留好各个部件的位置,可以防止出现部件重叠,没地方焊接的情况。根据预留位置先将各个芯片的底座焊接好,按照原理图顺序焊接会比较规整、一一对应、方便查错,防止焊接后找不到错误原因。从采集声音的音频信号输入和驻极式麦克风和电源焊接,到放大电路、模数转换电路以及单片机核心和LED彩灯电路的焊接。需要注意的是,将实物从头到尾焊好之后需要检查是否与原理图相符。之后再焊接整个电路的电源与地线部分。
4 结语
该设计基本实现了预期设置的功能,即可以通过驻极式麦克风或者音频信号传输线采集音频,信号通过适当放大和模数转换后再通过单片机控制LED灯珠闪烁,实现了基于声音的动感LED灯的基本功能;使用了较少的电子元件,整体结构比较简单并且很易于操作;选用的是STC89C52单片机,可选用集成程度更高、可靠性更好的芯片。