从一师兄那拿来的,东西是师兄自己做的,觉得特有才一人,只是进了互联网公司,感觉做嵌入式更适合他~~~
Powered by lihui & Liusheng @2012, Shenyang
太过技术了,写给自己留着看的,不懂的可绕行,确实有些头大。^_^在对最陌生的模电部分进行完仿真测试之后,8X8X8光立方的软硬件方案终于最终定了下来,开始进行下一阶段的工作了:焊接调试以及最后的软件编写: 硬件部分的工作仅占整个工作量的20%,大量的工作主要集中在软件部分。
该方案是在国外一牛人基础上改进得来的,网址是:http://www.instructables.com/id/Led-Cube-8x8x8/ ,文档非常长,pdf版的需要注册付费(一年几十美元貌似),我就一页页的带图全给整理了下来,改进主要集中在一下几个方面:首先是LED IO驱动上,该网站上的作法是采用574锁存器、AVR灌电流直接驱动LED,最大电流只有400mA,而我全部改为AVR控制三极管驱动,最大电流可以达到1200mA,亮度会大大提高;其次是硬件上有所改进,比如采用PVC板材代替木板底座,最后封装起来乱七八糟的线路,最后做出来的是一个简洁、漂亮的艺术品,而不仅仅是一件布满导线的电子怪物,还比如我使用了雾面代替了草帽型的LED灯珠,前者光线更柔和,散光性更好,自然也更漂亮;
![图片](https://i-blog.csdnimg.cn/blog_migrate/ef3229e2e7485daf1fc490225c3377ce.jpeg)
还有就是增加 音乐立方 这一功能,就是将电脑或者MP3播放器播放的音乐频谱给显示出来,类似于千千静听的音频显示:
![图片](https://i-blog.csdnimg.cn/blog_migrate/816c9ad8a58c5b798e5add47f1d12dd8.jpeg)
如下为光立方的整体框架图:
![图片](https://i-blog.csdnimg.cn/blog_migrate/f10cde1ddf588a2eec390f4868833a3b.jpeg)
光立方硬件部分分为基础单元和扩展单元,当前主要工作集中在基础单元,包括ATmega16以及ATmega128可插拔MCU最小系统控制板、音频输入放大部分、光立方驱动电路板和LED光立方主体。在基础单元上留出串口和相应的IO口,可以通过电脑或者adruino直接控制光立方显示,因为如果想显示出更绚丽的图案,需要浮点计算神马的,AVR单片机无法胜任而且空间也有限,只有借助PC机的强大威力了。
在功能上,光立方应至少有以下四种模式:夜灯、图像播放、音乐立方、PC机外接控制模式;在接口及按键上,遵循简洁实用的原则,一个电源按钮(小红帽)、一个模式选择按键,若干个插槽:USB、音频、AVR SPI编程、电源口。
NO1 8X8X8光立方LED主体
![图片](https://i-blog.csdnimg.cn/blog_migrate/d339ab5ee5e78695cc49ea9a35b8d4f2.jpeg)
共512个LED灯珠,加上支撑钢丝共约有1500个焊点,绝对是个挑战,好在刘博的鼎力支持,为我减少不少负担,在此表示感谢。最后差不多用完了大半卷焊锡,花了将近一天多的时间。
NO2 IO驱动单元
基本元件是电阻、三极管、74HC574锁存器、74HC138三八译码器,通过锁存、译码实现多路复用实现8个IO口控制64个输出端口。
电路图入下:
![图片](https://i-blog.csdnimg.cn/blog_migrate/3e39359092b145f0726d4be85793f483.jpeg)
考虑到焊点太多以及散热性要求,准备在下面这块硕大的洞洞板上完成IO驱动板的焊接。
![图片](https://i-blog.csdnimg.cn/blog_migrate/f10cde1ddf588a2eec390f4868833a3b.jpeg)
光立方硬件部分分为基础单元和扩展单元,当前主要工作集中在基础单元,包括ATmega16以及ATmega128可插拔MCU最小系统控制板、音频输入放大部分、光立方驱动电路板和LED光立方主体。在基础单元上留出串口和相应的IO口,可以通过电脑或者adruino直接控制光立方显示,因为如果想显示出更绚丽的图案,需要浮点计算神马的,AVR单片机无法胜任而且空间也有限,只有借助PC机的强大威力了。
在功能上,光立方应至少有以下四种模式:夜灯、图像播放、音乐立方、PC机外接控制模式;在接口及按键上,遵循简洁实用的原则,一个电源按钮(小红帽)、一个模式选择按键,若干个插槽:USB、音频、AVR SPI编程、电源口。
NO1 8X8X8光立方LED主体
![图片](https://i-blog.csdnimg.cn/blog_migrate/d339ab5ee5e78695cc49ea9a35b8d4f2.jpeg)
共512个LED灯珠,加上支撑钢丝共约有1500个焊点,绝对是个挑战,好在刘博的鼎力支持,为我减少不少负担,在此表示感谢。最后差不多用完了大半卷焊锡,花了将近一天多的时间。
NO2 IO驱动单元
基本元件是电阻、三极管、74HC574锁存器、74HC138三八译码器,通过锁存、译码实现多路复用实现8个IO口控制64个输出端口。
电路图入下:
![图片](https://i-blog.csdnimg.cn/blog_migrate/3e39359092b145f0726d4be85793f483.jpeg)
考虑到焊点太多以及散热性要求,准备在下面这块硕大的洞洞板上完成IO驱动板的焊接。
![图片](https://i-blog.csdnimg.cn/blog_migrate/0dc0f1cdaa012e8d31cb3ebd6aadbe37.jpeg)
NO3 MCU单元
为提高整个系统的可扩展性,计划单独做一个AVR单片机的最小系统,分为ATmega16和ATmega128两个版本的,两者的差别就在于内存大小分别是16K和128K,另外128版的是贴片的64引脚,这一部分不采用洞洞板,而是热转印自制电路板,这一部分工作主要有刘博完成,也跟着刘博学习下热转印法自制电路板^_^,这里顺带记录一下详细步骤,备以后参考。
1.用Altium Designer软件绘制出PCB板
![图片](https://i-blog.csdnimg.cn/blog_migrate/866443eeef211f32dcd7d2fd1b3e59b2.jpeg)
2.将电路图用激光打印机打印到热转印纸上
![图片](https://i-blog.csdnimg.cn/blog_migrate/6fd036000dfbb4277a4381fadecf514d.jpeg)
3.准备好电熨斗(刘博30块钱包邮的电熨斗很给力啊^_^)
![图片](https://i-blog.csdnimg.cn/blog_migrate/f9e260f15559cc6134011fd30fc64fb3.jpeg)
4.将打印出的电路图放置于覆铜板上,用电烙铁反复烫熨,直至油墨全部转移到铜板上
![图片](https://i-blog.csdnimg.cn/blog_migrate/3b518ee9d2e027c1bcda962a08f29030.jpeg)
5.15分钟烫好后,撕掉转印纸:油墨全部被烫到了铜板上!
![图片](https://i-blog.csdnimg.cn/blog_migrate/27c6d79544a3313dc5212ec4aad44868.jpeg)
6.将某些断线用油性笔补齐
![图片](https://i-blog.csdnimg.cn/blog_migrate/23e2dd9fdc2761418b4b565012713fc1.jpeg)
7.准备好饭盒、开水、腐蚀剂,开始腐蚀电路板
![图片](https://i-blog.csdnimg.cn/blog_migrate/8f18284bebff349348253ce84690ce22.jpeg)
8.腐蚀完毕,取出,看,多漂亮!
![图片](https://i-blog.csdnimg.cn/blog_migrate/6b277f8f39fa79b7c5c4a0bf7579dde6.jpeg)
9.再来一张,awesome ^_^!
![图片](https://i-blog.csdnimg.cn/blog_migrate/0377a7c4062c068579cdb6f161f2e90c.jpeg)
10.除去附着在铜上的油墨
![图片](https://i-blog.csdnimg.cn/blog_migrate/ea159c37160499df0db7781cca1efbb7.jpeg)
11.最后一块DIY的电路板终于完成了,感谢刘博的辛勤努力,这里有掌声^_^
![图片](https://i-blog.csdnimg.cn/blog_migrate/1ee8860db58438f1ef4c8aeee5f3bb1f.jpeg)
NO4 音乐立方的实现
如何将音乐的频谱给提取出来然后在光立方上显示出来,这个问题我想了很久,也在网上搜了不少资料,最终得到两套可行的方案:
我们都知道,人的声音频率范围是20HZ-20KHZ,因此第一种可以使用放大器配合电阻电容组合而成的带通滤波器将音频各个频段的电压信号给分离出来送MCU处理控制光立方的显示,缺点是涉及模电的知识较多,而我模电那点儿东西早还给老师了,而且需要的器件较多(若是64路则需要16个LM324放大器),故对此法不是最优。
![图片](https://i-blog.csdnimg.cn/blog_migrate/5fe560e896a3f320ceacf72850463094.jpeg)
第二种是先将声音放大(音频输出的电压信号通常只有0~0.5V左右),送入AVR进行AD转换,转换后的若干个数据再在AVR单片机中用软件进行FFT快速傅里叶变换以实现波形的时域表示到频域表示的变换,得到期望的各个频段的值输出显示,主要难点是快速傅里叶变换需要大量浮点计算,AVR恐难以胜任,不过还是有解决方案的,就是将频繁用到的sin和cos的值作为数组存入内存,使用时只需按下标查找即可,这个我在国外开源网站http://sourceforge.net/网站上找到了AVR可用的相关源码,所以软件部分应该不是问题。
声音除杂、滤波这块工作设计模电的知识,没办法,还是躲不过,只好把本科模电学过的集成运放的知识又给温习了下,准备把0.5V的音频输出放大到5V,即放大10倍,使用LM324,配合电阻电容组成闭环反向放大器,如下图,只需选取Rf=10K, Rin=1K,即可实现10倍放大目标。
![图片](https://i-blog.csdnimg.cn/blog_migrate/a0255510de525264f6224c2879663137.jpeg)
运放的反相闭环基本放大电路
模电的东西心里总是没谱,手边没有示波器,只好硬着头皮临时学了下Multisim,使用Multisim仿真了下看自己规划的电路能否实现除杂、放大的功能,毕竟一旦焊到电路板上可就不好改了:
![图片](https://i-blog.csdnimg.cn/blog_migrate/78ddc87cc1456abbe22eeb0fe10caade.jpeg)
仿真结果:当输入20MHZ的高频(模拟高频噪声)正弦波信号时,输出衰减了很多倍(图中中线附近很平的细红线),符合预期
![图片](https://i-blog.csdnimg.cn/blog_migrate/ffa972582fa416078febd855010c43ae.jpeg)
仿真结果:当输入200HZ低频(模拟正常声音),输出信号被放大了10倍(图中高幅度的为输出信号,有90度的相移),That’s what I want!
OMG,好长啊。
不管怎样,现在总算万事俱备只欠东风了,是时候行动了。
不管怎样,现在总算万事俱备只欠东风了,是时候行动了。