旋转LED的设计与制作
2015-04-15王红超
王红超
(厦门海洋职业技术学院机电系,福建 厦门,361000)
1 旋转LED的原理
旋转LED一般只有一排(或一列)发光LED,通过电机带动这些LED旋转起来,每次转到同一个的位置时让同样的灯亮,如果旋转的速度足够快,每秒钟能重复25次以上(每个人都存在一些差异,此值会略有不同),因为人眼的“视觉暂留”作用,看起来好像整个一圈的图案都稳定的显示在空中。图1是旋转LED显示出固定的数字3的示意图[1]。如果这些发光LED每旋转n圈后有规律的变化,那么显示出来的图案也会有规律的变化。
图1 旋转LED显示原理
图2 一个旋转LED静止时的状态和转动后显示的图案(图片来源于网络)
2 设计与制作旋转LED中的难点
通常的旋转LED会包含十几至几十个发光LED,其中设计与制作的难点主要在两个部分。
2.1 如何给旋转部分供电
旋转LED的主板固定在电机的转子上,工作时是在高速旋转的,不能用通常的两根电源线给主板供电。目前常用的供电方式有:电刷供电、无线供电、改造电机等。改造电机这种方法需要制作者有较高的动手能力和比较精密的加工设备。比较适合厂家生产,不推荐个人使用。电刷供电是最简单的一种方式,手工制作容易,而且供电效率高,但存在机械磨损。对于小型的旋转LED,消耗的电能比较小,可以采用无线供电的方法。这种方法效率不高,但是外观会比较好看,也比较容易实现。无线输电的原理类似变压器,但是磁路不是通过硅钢片闭合的,而是通过空气。图3左边所示是一种无线输电的初级线圈,右图是次级线圈[2]。小型旋转LED一般是直流电供电,为了进行无线输电,必须把电源提供的直流电转换成初级线圈里的交流电,图4是其中一种简单的把直流电转换成交流电的原理图[2]。次级线圈感应出跟初级线圈同频率的交流电,为了给电路板上的单片机和LED等器件供电,需要对其进行整流、滤波和稳压,如图5所示[2]。
图3 固定在底座上的初级线圈和固定在电路板上的次级线圈
图4 无线输电小板电路图
图4所示的自激振荡电路刚上电时,三极管Q1的基极电压是低电平,Q1截止,Q2的基极电压为高电平,Q2也截止。直流电源通过R1、R3对电容C2充电,当C2两端的电压充到一定程度,使Q1基极电压为高电平,Q1饱和导通,Q2基极电压变成低电平,Q2也导通,有电流流过初级线圈L1。Q2导通后,C2通过R1、R3放电,放电到一定程度,Q1基极电压变成低电平,Q1截止,Q2基极电压变成高电平,Q2也截止,电流无法流过初级线圈L1。然后直流电源又通过R1、R3对电容C2充电,如此反复通过功率三极管Q2的导通和截止把5V直流电变换成流过初级线圈L1的交流电。
图5 一种无线输电旋转LED主板电路图
2.2 在旋转的过程中如何确定发光LED的位置
比较精确的办法是使用旋转位置编码器,适合对画面品质要求较高的场合。如果要求不高可以采用如下简单的办法:LED灯每旋转一圈确定一个起始点,后续各点采用一个固定的延时实现。确定一个起始点的简单办法如图6所示,可以在底座上固定一个磁钢,电路板上的霍尔元件在旋转到磁钢上面时会输出不同的电平值;也可以采用光电对管或干簧管等来确定起始点。
图6 确定旋转LED的起始点(图片来源于网络)
3 程序设计
单片机系统的程序代码跟硬件密切相关,采用图5所示的电路图制作的旋转LED,单片机采用普通的51单片机,给出显示一个“厦”字的简单程序,以便初学者理解及在此基础上编写更复杂的程序使用。
#include"REG51.H"
#define uchar unsigned char
#define uintunsigned int//宏定义
sbit KEY=P3^2;//红外检测起点
今年HK IWSC颁发了多个奖项给属于冷凉气候葡萄酒产区,成绩斐然,其于亚洲的受欢迎程度可见一斑。特别是来自新西兰的葡萄酒,近年来在中国内地的进口量、额和均价都在持续上涨。从今年公布的2017年进口数据可以看出,新西兰的对华出口总额增长超过30%,出口量达到十年前的10倍。
uchar code zimo[] ={0xFF,0xBF,0xFF,0xCF,
0x00,0xF0,0xFA,0x7F,0x0A,0x76,0xAA,0xB8,0xA2,0xA 2,0xAA,0xDA,0xAA,0xDA,0xAA,0xAA,0xAA,0xB2,0x0A,0x3A,0xFA,0xBF,0xFE,0xBF,0xFF,0xFF,0xFF,0xF F};//pctolcd2002取模软件设置:阳码 逐列 顺向取模/*"厦",0*/
void DelayUs(uint N)/*****延时子程序12M晶振*****/
{
uint x;
for(x=0;x<=N;x++);
}
void main(void)/*****主函数*****/
{
while(1)//主程序中只检测按键
{
if(KEY==0)//红外接收管 判断起始位
{
for(i=0;i<16;i++)//每转一圈 前进一列
{
P2=zimo[i*2] ;//送数据低位显示
P0=zimo[i*2+1] ;//送数据高位显示
DelayUs(30);//延时让LED亮起来 每列延时的时间
P2=0XFF;
P0=0XFF;
DelayUs(2);}}}}
4 结论
兴趣是最好的老师,旋转LED炫酷、好玩,非常适合单片机和电子制作初学者制作和学习使用,可以锻炼他们的动手能力,又可以通过编程训练逻辑思维能力。
[1] 张瑞春.旋转柱式显示屏的原理与设计[J] .2006,22,(13).
[2] DIY视界.十字旋转LED制作说明 [EB/OL] .[2014-12-10] .http://item.taobao.com/item.htm?spm=a230r.1.14.9.tS5URw&id=205 98783096&ns=1&abbucket=2#detail