前言:
Avago(安华高)的ACPL-k30T是一款专为高压MOSFET驱动定制的光电MOSFET驱动器件。该器件包含一个AlGaAs红外LED输入级,通过光学手段耦合到输出检测电路。检测电路包含了一个光电二极管阵列与关断电路。当输入LED流过最小10mA电流时光电驱动电路就会打开。只需要0.8V或是更低的输入电压就能关断光电驱动。
本文介绍的是基于TI的3个TLC5940(16路LED驱动芯片),5V开关电源,一个PIC单片机(带USB通信功能),16个高亮度RGB LED制作而成的RGB LED音量计量器。该设计实际就是我们播放器上面显示的那个EQ条,这个表通过USB与上位机(window7 或 vista系统)连接。能用LED实时显示当前声音的电平。
音量电平表实物截图:
音量电平表电路截图:
注意:
这个电路中唯一值得留心的地方就是电路图中靠近晶振的两个大电容。当TLC5940以PWM调光的方式驱动LED时,由于高速高速开关切换,产生很多噪声,而这两个电容有助于降低噪声。如果没有它们或许你的PIC单片机会重启,或者发生其他糟糕的事。
3片TLC5940级联,因此这些LED并非以复用的方式连接,每一个LED都是直接受控制的。当然,也可以把代码加以修改移植,使其能工作在LED控制复用的状态下。
固件(Firmware):
这个固件是基于一个作者开发的软件。链接如下:
https://www.waitingforfriday.com/index.php/Open_Source_Framework_for_USB_Generic_HID_devices_based_on_the_PIC18F_and_Windows
作者在这个软件的基础之上加了两层,底层是TLC5940的驱动库,TLC5940是一个16通道的,支持4096级亮度(基于PWM方式,且各通道亮度独立)的LED驱动芯片。这个驱动库支持单片TLC5940,或者你可以将多片级联。理论上来说,你可以通过一片PIC单片机控制(PIC单片机是连接PC机与TLC5940的桥梁)20片TLC5940(意味着你总共有16*20=320个LED),作者这里级联了三片TLC5940(共计48通道,16个RGB LED)。
顶层则是RGB LED控制,这一层通过TLC5940驱动库实现。包括的功能有LED淡入淡出,颜色平衡,和一堆相当有用的用来控制LED的功能。USB控制端有两条命令,一条是上位机指定所有的LED亮度(由0~255来表示),第二条命令式用来设定所需的LED淡出时间(库文件中同样有淡入时间,但是对电平表来说没有用到)
上位机软件:
上位机软件是用Visual Studio C#2010写的,兼容Windows 7 和Vista。由于使用的音频API缘故,这个上位机软件不能使用在windows XP环境下(XP不支持这个API)
这个上位机软件由三个部分组成:
开源的C#库,USB generic HID communication(就是上文提到的作者自己开发的一个软件)。
核心的音频API,由Ray Molenkamp所写的。这个API相当强大,你可以用它来抓取音轨的信息,并展示在一个LCD,或者其他USB音频控制的设备。
VU电平表显示代码,正如你所见,这个软件可以进行一堆个性化的设置,你可以设置显示阻尼(Display damping ,它跟随音乐跳跃的速率,更大的阻尼使跳跃更缓和,但是有失精准),可以设置淡出速度(fade off ),也可以设置起始和结束时的颜色(上位机自动调节中间显示时的颜色), ,还可以设置显示方式,只单向显示左右声道的平均值,从中间向两边显示两个声道,从两边向中间显示两个声道。
自己的想法:
感觉这个不是太好弄,首先,这个PIC单片机用的人估计不太多,第二作者自己以前编了一个USB上位机,是在这个基础上开发的,虽然可以找到作者的源代码,但是估计不好搞定(我没有写过上位机软件,不太了解,随便说说的呵呵),而且上位机还只能在Windows7或者Vista下面用。
毕竟这里PIC单片更主要的功能,个人认为不过是个USB桥接芯片作用。如果是我的话,直接用一个常用的单片机(AVR,8051)来控制TLC5940,然后用串口通信,上位机软件也写成串口通信的形式,估计简单不少,而且如果电脑没有串口,可以用串口转USB芯片解决,这样的话可能硬件上面麻烦一点,但是估计软件开发简单(哈哈,这也是我个人的看法,我对上位机软件很不熟悉)。
还有就是,它的那个TLC5940芯片比较强大,但是我淘宝了一下,貌似有点贵,十多元一片,貌似ST2221C便宜一些,几块钱,功能可以替代,但是引脚不是兼容的。。。意味着要改程序(上位机和单片机)。
结果这样一整,就完全本土化了。。
1