找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 67063|回复: 15
打印 上一主题 下一主题
收起左侧

自己动手制作 “POV LED” 旋转LED显示屏

  [复制链接]
跳转到指定楼层
楼主
ID:60076 发表于 2014-4-26 02:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
2012年5月1日11:46:09

所有制作所需的零部件都已收集齐,开始改装这个散热风扇。打算用它做底座。由于这个无线供电传输效率就目前来说不是特别高,暂时打算用双电源供电,原来绕制的线圈暂时作保留。




2012年5月1日23:26:54
基础电路焊接完成。
主电路使用我爸N年前的废旧手机电池供电(电池还很耐用的,就是机子严重不行了),电池用普通胶布包在电路板上,并且做了引线方便以后使用万能充充电。
随后用万能表和烧写一个循环点亮LED灯的程序来检查,现象是CPU不立即发热;每个LED灯都像程序写的那样按顺序发光,无偏色、偏亮、偏暗;万能表测得每个IO口的电流不超过40mA。结果表明电路焊接正确,芯片没问题,电池功率足够。
主芯片仍是AVR单片机——ATmega16L。我的最爱,呵呵。由于对时钟频率要求不高,继续使用片内8MHz晶振,得以简化电路。


2012年5月2日13:53:24
完成旋转检测电路的焊接。这里采用44E霍尔传感器和磁钢配合检测是否已经转过一圈。


2012年5月5日12:20:46
想了下,并且也实践了下,双电源供电方案我个人觉得效果不理想。
原因是这个风扇是用无刷电机驱动的,加上原来别人只是为了最求大转速而牺牲了电机力矩,别人是考虑到散热风扇并不需要太大的力,只需要能把扇叶带动就行。正是因为这样,而且我上面还加了塑料板和电池,也是加重了扇叶的重量,而电机的力矩不够大。起初我加大了电源功率,使用12V1A,也就是12W的电源,最多是可以转动,但转速并不能达到要求,而且这样下去会加重电机负担,可能会造成线圈过热烧断。
为了追求无噪音,看来最好的办法是得考虑无线供电方案了。




2012年5月6日下午前,我将电池卸去,接通风扇电源。发现转速仍是不理想,用手掂量下,或许是这增高的硬塑料板太重了。

2012年5月6日下午,决定用氢氧化钠溶液去除塑料板与风扇之间用于粘合的卡夫特AB胶。但家里没有烧碱,于是打算用电解食盐水制取。

往塑料盆里加入五六勺我家的食盐,差不多饱和了。

用12V直流电电解,万能表有示数,电流为6.6mA。反应发生了。负电极处的铜片有气泡生成。因为有氢气和有毒的氯气生成,我放在阳台上做,拍完照后我关门撤了。


但是啊!第一次做的事总有错误。
看完新水浒传第三集后,回来一看。不对劲,原来想漏了一点,我用的是铜片做电极,辛辛苦苦制取得到的烧碱又发生反应了,这铜片
把我的氢氧根吃了,出来像是氢氧化亚铜沉淀,真不该用铜片做电极。没关系,想想下一步用什么做电极好。






2012年5月17日22:44:03
完成整体组装。电源用7.5V1A的开关电源供电。而电路板上仍旧使用原来的3.7V手机电池供电。电机采用有刷减速电机。这电机是我以前推土机玩具里的一个电机,它带有减速齿轮,所以扭矩足够,而且转速还可以。就是噪音大了点,这个对于我后面将要实现的功能稍微有点影响。
相机暂时不在我这,过几天再补上照片。

对于上次那个问题,制取量小点的可以用石墨做电极。后来我同学给了我点NaOH,我直接溶解后放进去泡了。泡了几天,外层多出来的胶水已经变软可以撕去,但里面可能胶水多,溶液进不去,还是很难分离开来,用钢锯也难锯开。

另外,上次意外制取得到的氢氧化亚铜,我让妈妈拿去实验室过滤,得到一杯沉淀。敞口放置在空气中,过了几天,外层的氢氧化亚铜氧化为氢氧化铜,内层被保护着,没氧化。透过玻璃杯的外壁看里面,颜色内外不同,也比较好看。






2012年5月18日23:29:51
AVR单片机的程序编写完成。可显示任意字符和文字的组合,一圈可以显示8个全角字符左右。


2012年5月19日21:29:26
用程序测出转速为5r/s 。感觉还是有点低,转速太低会导致显示闪烁,字符难识别。如果能有更合适的电机改进就好了。




因为人眼感觉不到闪烁的相隔时间是0.1秒以下,即一秒至少要转10圈,人眼才不会感觉到闪烁。那么电机就要求至少有10*60=600rpm的转速了。这个电机不仅有噪音,而且转速经程序测得只有300rpm。所以看上去会有闪烁,而且用相机拍也不会拍得好。

努力寻求合适的电机和无线供电的解决方案……



2012年10月22日23:31:20
时隔半年,考进了钦州二中 ,在这第一学期,碰上广西新课程改革,多出了一个活动“研究性学习”。于是我打算以此作为研究对象。并拉上两位同学组了个队(其实我自己也能独立完成此项目,因为我已经找到了所有问题的解决方案,但为了拉合同学关系、完成这个学分任务,才去组队,而且报告要求也最好3-5人一队)。
我此次定的课题是“飘浮在空中的文字” 。组员赖可钟、黄高松,还有我。当然指导老师非属王伟名啦!感觉好有缘呢。从初二到现在高一,从开始的单片机新手到现在,玩这些电子技术的时候都有碰到与初二时教我们物理电学入门的陆丽莉老师(当然教我电学入门的还有我老爸,但他是小时候学前班一二年级就教我了,尽管从我出生到初二他就只在一年级还是二年级或是三年级?时抛下一句话“电源正负极不能短接”就溜走了....其他什么也没说过,我也没想过还会有什么。好郁闷的说,不过我并不觉得很难,因为我每一次尝试都是新的效果、新的发现,不拘泥于后人得出的计算公式、规律。至于焊接技术、冲击钻之类的工具也都是我小时老是跑去别人施工地上、当我爸在修电器时,默默地看学来的。剩下的全是我自己在外婆家玩电器摸索。扯远了,回来!)有着各种关系的人,此次也不例外,王伟名老师在开学的第一节物理课上,说的第八句话“所以说,我们物理课是这样的喔!”我马上看到了陆老师的影子。因为他的讲课方式和带了我两年的陆老师几乎一致。我想:咦,不会是同一个师傅领出门的吧?事实证明,问了这两人,两人回答一致。听说现在陆老师还当他弟弟的班主任?关系越来越紧密了……


前面我也说过,我所做的东西没有充分准备,没有先前做过实验测试某部分的功能是否成功时,我是不会继续发展它的。现在既然已经打算作为研究性学习报告和二中这个学期的科技周的作品了,就说明我已经有信心、条件去完成它。

经过半年,我想我最终决定要使用无线供电技术,因为我实在不愿意听电刷的声音。我在五一电子网站上,买到了一种无刷电机。声称卡死不烧坏,而且扭力、转速都较大(在POVLED上算是较平衡的性能参数)。买回来后事实也如此。还有无线供电,无线供电我还没有进行彻底的研究 ,但我找到了解决它的方案,总不能一直搁置着吧。我用淘宝上较受欢迎的无线供电模块。做的还真保密,接收端的芯片被打磨掉型号等信息,发射端灌满黑胶来封装,只露出四个引脚。
好吧!总有一天我会彻底研究,不止是知道它是电磁感应现象,还是要能自己焊接出它的等效电路,并为各电子元件取最合适的参数值达到最大效率。因为这种技术应用很广。

这是加入了无刷电机后的效果,无线供电明天中午我再继续装。高中搞得我业余时间大大缩减了,真是的,但我不会甘心的。所谓“不到黄河心不死”




2012年10月23日23:29:40
中午完成了无线供电模块的安装,还有重新调整旋转部分的重心以及去掉原来那种绿色的IC卡座,换成更轻更小的卡座。但我不太愿意会不要卡座直接焊上去的。我怕发光二极管的引脚可能会意外刮开漆包线的绝缘层,于是用了电工胶布垫底,外用简单的透明胶布固定在板上。不过我也有点愁,下面的电机用什么固定好呢?就现在这一个小长方体盒子,一转起来是放不稳的。因为我发现这个圆盘的中心轴的里面就不是平的,这个除了找到第二个可替代品外,很难处理,转起来圆盘有点不是很完美的圆,稍微向下方斜一点。这个也无法通过改变重心使它们相互牵制来平衡了。希望影响不大。
我原来还想弄个双色的,但是手头的74HC573不够,只有两块,四块效果就好了。还有很多电路没有焊接完成,一步步来! 只要整个制作的计划完善,一切都是充满信心和乐趣的。



2012年10月24日13:32:28
电路焊接完成。实验性编程测试表明电路没有问题,LED发光二极管也没问题,无线供电的功率也跟得上。而且较安静,但是要做到绝对安静,需要再来个大一点的底座,这次实验表明我昨天所做的重心调整很成功,虽然转的时候有点晃(晃的时候底座微微撞击桌面发出声音),但是底座的位置始终不改变,不会造成转着转着就全部倒下的这种危险现象。Good!程序将继续改进。




2012年10月27日20:40:45
测试了两天,终于解决字符显示的延时问题了。但是我觉得这延时写死不好,因为这样的话,一旦转速不稳定(达不到8r/s或9r/s) 时,可能会出现字符重复的BUG。因为在第一次外部中断后的显示的延时的时间内,外部中断信号再次到来,两个中断函数穿插着执行,会出现两个相连着的字符的BUG现象。听说网上有流传一种算法,叫做自适应算法。最初由“匠人”提出的,它可以动态调节这个延时时间,使它与电机转速相平衡。有空我会去研究下看看。另外因为内外圈的半径不同,还造成显示的字的边向圆心压缩。这个我想应该可以通过延时来弥补。
另外在发现这个BUG的时候,意外的出现了一幅好看的画面。由“金”字排成一圈造成的。








2012年10月28日16:09:37
昨晚的重复字符的问题得到解决。
今天我意外的发现,昨晚问题判断错误了!
今天我断开电机电源,用手动慢慢转它,想看看那个延时时间和字符显示的关系。但我意外地发现,每当我转过磁铁时,这排LED灯总共闪了两次。一般经过一次LED灯只闪一次(人眼可辨认出的转速情况下),而我发现它闪了两次,两次的间隔大约0.5秒左右。于是我开始怀疑,问题不出在那个延时的数值上面!
后来我再次调整程序,让其中一组LED灯(8个)显示一个变量的数值,这个变量是每一次外部中断函数发生(下降沿信号过来时)时自加一,然后输出显示。
结果我发现,每当我转过一次,LED灯从最初的“00000000”(全亮)
变成“0000010”(从右到左数第二个不亮,其余全亮)LED灯显示的二进制。
即证明这个变量从0经过两次自加一,成了2 。
也就是说外部中断函数产生了两次以上。

既然如此,那我就改写程序,只让这两次外部中断的其中一次处理LED灯,另一次抛弃。
具体如下:
在外部中断函数中
SIGNAL(INT0_vect)
{
static char flag=0x01;//声明一个静态变量flag,并赋予初值0x01
flag=~flag;//每次外部中断产生时,静态变量自身反转
if(flag==0x01)//当反转后为0xFE时,下面的函数自然不能执行,然后第二次中断到来时,又会反转为0x01,然后就可以执行了
        {
…………在此处为处理LED灯的数据,每两次下降沿过来时,此处仅执行一次。
        }
}
现在无论转速如何,若不是我特意设置的,就完全不会出现重复字符的问题啦!~~~
然后高兴的我让它一上电,显示的第一句话!接着是我们班的口号“金鹰十四,威武之师,艰苦训练,奋勇争先”,然后“杨宇庆制作”


问题虽解决了,但这是治标不治本。到底怎么会有两次下降沿过来呢?
是不是无线供电的线圈磁场对霍尔传感器有影响呢?我移掉磁铁,发现并没有任何中断产生。

我慢慢地手动转它,发现是在靠近磁铁和离开磁铁后都产生了一次中断(有时十几个中断。。。我是从8个LED中的每个的亮灭来看出来的)。但是这不太可能啊。
按理说:
中断引脚一上电就被拉高了,外部中断的控制寄存器(MCUCR)里,我设置为0x02。即“INT0 的下降沿产生异步中断请求 ”。而且根据霍尔传感器的设计,每当靠近磁铁时,信号输出引脚会被拉低,离开磁铁后,引脚复原为高电平。
这样时序图就应该是
————\_________/————
这样的。由图可知,整个只有一个下降沿、一个上升沿。并没有两个下降沿到达单片机。

但确实是有两个下降沿到了。我以前做的自行车安全行驶监控器时,没有出现过这样的情况。我又换了一个霍尔传感器,发现问题依旧。

难道是磁铁和无线供电线圈共同作用的结果?此问题有待研究。



2012年12月3日12:04:42
决定重写代码,特别是显示部分。
原先的代码是以一个字一个字的字模输出的 ,如下:
for (;t<delay;t++)//最大延时142ms
{
_delay_ms(2);//旋转幅度
}
if (delay == 71)//调整旋转速度(延时显示)最好令幅度*速度=142
delay=0;
else
delay++;
while(ShowID[cycle][0]!=0xFF && flag==0x01)
{

if (ShowID[cycle][1]==1)
{
//汉字
for (i=0;i<32;i+=2)
{
//PORTB=pgm_read_byte(&Font16_16[ShowID[cycle][0]*32+i]);
PORTA=pgm_read_byte(&Font16_16[ShowID[cycle][0]*32+i+1]);

PORTB=pgm_read_byte(&Font16_16[ShowID[cycle][0]*32+i]);
_delay_us(900);
PORTA=0xFF;
PORTB=0xFF;
}

}

else if (ShowID[cycle][1]==0)
{
//字符
for (i=0;i<16;i+=2)
{
PORTB=pgm_read_byte(&Font8_16[ShowID[cycle][0]*16+i]);
PORTA=pgm_read_byte(&Font8_16[ShowID[cycle][0]*16+i+1]);

_delay_us(900);

PORTB=0xFF;
PORTA=0xFF;
}
}
cycle++;
}
这种显示方式有较大的局限性,不够灵活,很难显示图案。我改进的方向就是把文字图形化,设置一个缓冲区,就直接显示缓冲区的内容,而不去关注缓冲区里到底是什么东西。至于缓冲区则有另外的函数管理。

本作品,我打算将它放到学校的科技节上展示,那我得想下我要显示什么内容好。嗯,校园文化节嘛…………


2012年12月6日23:10:49
这真是令我极其兴奋的时刻!  今天中午我写好了新的代码,并且实验成功。但是我觉得上次那个重复中断的问题我的解决方案不好,我是屏蔽掉一次中断的。这么一屏蔽的话,就会使显示的频率降低一半,导致画面闪烁加剧。
于是我睡觉在想,睡梦在想,吃饭在想,搭车都在想……到底是什么原因啊!为什么会时不时有多次中断出现,而且霍尔传感器还没到指定位置就发出中断了。

今晚,我上网查有无类似的问题,以前我也查过,但没发现结果,搜索到的内容千篇一律,没有讲到细节的问题。既然对于POVLED这个项目来说,没有人提到过,于是我怀疑是不是单片机问题了。我再翻开三百多页的ATmega16单片机官方数据手册。着重看了下外部中断,发现有一句话这么说道:(我用红色线标注的部分)

突然发现,下降沿触发中断涉及到系统IO时钟 ,我在想在高速旋转和底部的供电线圈作用下,如果IO时钟出现错乱,那么外部中断的错误也会出现的。
我先不管它是否是这个问题,我先尝试着使用为低电平时触发的触发方式,不使用下降沿触发,避开IO时钟错乱的因素。
同时,因为低电平触发的话,只要一出现低电平,就会不断地触发中断,触发速度很快,直到出现高电平为止。对于这点,我在触发开始的第一句代码就是关闭外部中断使能,避免再次触发,然后把显示函数执行完,然后再把外部中断使能。
SIGNAL(INT0_vect)
{
char i;
GICR&=~(1<<INT0);//外部中断关闭
for(i=0;i<Size;)//取模方式:阳码,逐列式,逆向,字模高16
{

PORTB=BufferFirst;//显示第一缓冲区
PORTA=BufferFirst[++i];
i++;
_delay_us(700);
PORTB=0xFF;//背景设为黑,即无灯光背景
PORTA=0xFF;
}
GICR|=(1<<INT0);//外部中断0使能
}
经我计算,显示函数(扫描显示112列)执行完总共需要156.8ms。而据上次测得转速最大为9圈每秒,则1/9=0.1111111111约为111.1ms每圈。理论上这点时间的相差,会导致显示内容的偏移和偶尔丢掉一次显示机会。但是9圈每秒是最大速度,一般情况下为七八圈每秒,丢掉一次显示机会的频率较低,基本上看不出一次闪烁。

实际运行情况表明,我的猜想正确!这么设置后,画面几乎不闪烁了,显示得很顺畅,字迹清晰。耶哈哈!~~~~
此次解决结果遗留有一个小疑惑,如果是IO时钟因某种外界影响出现错乱 的话,而且官方数据手册里说到这个时钟也接到IO端口模块里,为什么控制16个LED灯的端口数据不发生错乱呢?我继续查阅手册得知,读取IO口数据时会用协议来读取,协议中的时序就必须要有时钟的参与。但写的时候是靠寄存器写,是否也关联到IO时钟呢,这个今晚暂不追究,因为我要睡觉啦!~~~~



2012年12月7日13:31:14
新加入一个显示效果:横向逐列扫描显示。就是从左到右把文字慢慢显示出来。每隔0.1秒显示出新的一列。因为底层所有显示的算法代码的我昨天已经重写过,现在加入各种特效都很方便。程序代码将在我完成所有功能后公布。
关闭最外层和最内层的两个蓝色LED灯。让更多的电流流过16个LED灯,使显示的内容更加清晰明显,原来的两个做边界的LED灯太亮了,我长期调试看多了对眼睛不好。


2012年12月8日17:12:44
去学校为同学们田径赛跑加油后,回来继续写代码。话说我真佩服跑1500米的人,不为能否拿冠,有勇气参与就是一大胜利!而且在跑的过程中,我们观战的人时不时轮流陪跑,送去葡萄糖饮料。场面实在动人……

这次我写完了图片的显示代码。最令我感受深刻的是,一旦核心代码和程序架构做完了,剩余的部分就是自由发挥,最轻松,最爽的过程了。这就叫掌握核心技术的魅力!~~~~就像现在这样,我想让它显示什么就显示什么,灵活、自由得很。别嫉妒,程序代码我做完会公布的。
如果前几天我没重写整个程序的代码的话,现在我不会这么轻松了,好的开始是好的。
我刚才写的代码,目前是让一男一女站在桥的两边,然后会怎样呢?敬请期待下次更新。嘻嘻。
不过取模累死我。。。用鼠标一个个点,以点阵的形式画出男女图像,还有动态的图像。多亏了Photoshop的图层复制和移动这些功能的辅助。




2012年12月9日10:24:16
哦也!所有代码编写完成。程序也正常 。
显示的内容为:
"高一十四",
"杨宇庆制作",
"鹊桥仙 秦观",
"纤云弄巧",
"飞星传恨",
"银汉迢迢暗度",
"金风玉露一相逢",
"便胜却人间无数",
"柔情似水","佳期如梦",
"忍顾鹊桥归路",
"两情若是久长时",
"又岂在朝朝暮暮" ,
然后画出一道桥,桥的两边一男孩一女孩
然后慢慢走近。走得很近很近的时候,画面就静止2秒。
然后回到开头,重新显示“高一十四” ……
拍录像不好拍,因为帧数的问题,看不到不连续的画面。但人眼是可以看到的。



程序源代码预览:

下载:



2013年1月27日
我把它作为学校的课题研究报告,然后出乎我意料的是,居然被认为是年级的代表作。
然后让我设计一个展板去展示它。然后花了几天时间设计。
前几天,学校把这个展板喷出来了。。。



下面是设计原图:(展板很大,2.4米*1.2米,像素一万多乘五千多,我缩小10%上传到QQ空间。可能在这里看字不太清晰,但实际看展板时是很清晰的)


程序源代码预览:

下载:



评分

参与人数 4威望 +55 黑币 +77 收起 理由
彬Lsl + 12 很给力!厉害!厉害!
暗光 + 35 很给力!
Elect_DIYer + 5 真是有志不在年少啊!顶一个!
admin + 50 + 30

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏7 分享淘帖 顶3 踩
回复

使用道具 举报

沙发
ID:63906 发表于 2014-7-20 17:19 | 只看该作者
学习学习,嘿嘿,51黑有你更精彩!!!
回复

使用道具 举报

板凳
ID:72995 发表于 2015-1-31 12:41 | 只看该作者
楼主好赞好赞好赞好赞
回复

使用道具 举报

地板
ID:59839 发表于 2015-3-15 11:49 | 只看该作者
楼主好厉害,向你学习!!!
回复

使用道具 举报

5#
ID:138082 发表于 2016-8-31 19:26 | 只看该作者
是否提供原理图
回复

使用道具 举报

6#
ID:150476 发表于 2016-11-27 10:09 来自手机 | 只看该作者
你好,可以给我个联系方式吗
回复

使用道具 举报

7#
ID:153732 发表于 2016-12-10 17:52 | 只看该作者
楼主你好,我也是二中人,我高中的物理老师也是王伟名,所以应该称你为师兄了。我现在对单片机很感兴趣,可以给我你的联系方式吗?希望可以和你交流一下。
回复

使用道具 举报

8#
ID:169087 发表于 2017-3-10 21:49 | 只看该作者
有电路图
回复

使用道具 举报

9#
ID:232386 发表于 2017-9-12 18:40 | 只看该作者
楼主可以把电路图给我么
回复

使用道具 举报

10#
ID:357667 发表于 2018-6-24 11:18 | 只看该作者
高中生能有这般动手能力真的是奇才,楼主现在哪里上大学呢?
回复

使用道具 举报

11#
ID:401257 发表于 2019-6-1 16:25 | 只看该作者
真的很难得,望你大学更出色
回复

使用道具 举报

12#
ID:405102 发表于 2019-8-1 22:27 | 只看该作者
学习学习,51黑有你我们才有希望,祝51黑越办越强好。
回复

使用道具 举报

13#
ID:382145 发表于 2019-8-6 15:13 | 只看该作者
楼主真优秀,路漫漫其修远兮,共勉!
回复

使用道具 举报

14#
ID:554793 发表于 2019-8-8 11:46 | 只看该作者
程序有问题,楼主
回复

使用道具 举报

15#
ID:484435 发表于 2019-8-8 19:16 | 只看该作者
很有用处,谢谢分享
回复

使用道具 举报

16#
ID:282095 发表于 2019-8-9 08:56 | 只看该作者
中学生有如此水平的确蛮厉害的
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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