Jarvis's Blog

白帽子、全栈、IoT安全专家、嵌入式系统专家

【百年阿里673期】(全开源)搞事情之电子工程师的百阿之旅——玩转电子设计之手把手教你制作水平旋转LED显示屏

开始之前,先看看最后做出来的成品视频吧:

  作为一个做了6年硬件的电子工程师,离开学校后,选择了阿里作为了我人生当中的第一站。感觉非常有幸加入了这个大家庭。正值参加百阿673期活动,认识了很多志同道合的朋友。在这样有意思的一次活动中,我一直在想,作为一个硬件背景的阿里人,怎样才能通过一个最适合自己的方式来纪念这次活动?当然,如果大家看到标题上打着全开源旗号以为我要开始写代码了,当然不仅仅如此,在这样一家高手如云的公司里,作为一个应届生写代码就不怕班门弄斧弄巧成拙(夸张了点。。)?那不写代码作为一个标准阿里码农又能做点什么呢?

想了许久,记得我刚开始学电子设计的时候看到过一个大牛做过一个十字旋转的LED旋转屏,激发了我学习硬件设计的理想,也正是那次经历让我决心本科的时候学了电气工程专业,做了6年的硬件。不过,当时水平不济根本想都不敢想做出那样的东西,6年后的今天,趁着这次活动的好时机,不忘初心,这次我能否圆自己这个梦想呢?说干就干吧。

首先,为什么我要选择平面旋转而不是十字旋转呢?首先,水平旋转的难度比十字旋转要大(因为转子和定子处于2个平面,供电问题就是首先要面对的难题),其次水平旋转平虽然汉字显示没有十字旋转屏那么好看,但是可以做成模拟时钟(有时针、分针、秒针)那种,这是十字旋转所做不到的,可谓优点多于缺点,废话不多说,那就开始干吧。

一、首先,旋转显示屏看似容易,但实际会用到不止一个领域的知识,包括控制理论、电力电子和单片机技术,以及电机学中电机驱动调速相关的知识。我们一个一个问题来解决。首先,要转起来,我们需要一个电机:

淘宝几块钱买的有刷直流电机,转速快,5V供电下转速大概能到2500~3100rpm,转速快的好处就是可以让网格的刷新率更高,亮度更明亮(单点的光平均功率更高),这样一个转速已经可以满足我们的要求。

二、 转子和定子的供电,问题,由于电机旋转功率较大,因此需要至少4节5号电池或者直接使用5V适配器进行供电,例如这种:

那么转子供电问题怎么解决呢?转子是旋转的,显然我们无法通过导线直接将电机的电源和旋转部分相连,这个问题其实对于熟知电机学的同学并不难,这里有3种选择:

1. 旋转部分单独供电

这个是最容易想到的方式,其他的电池比如锂电池或者5号/7号电池体积都太大,如果放在旋转部分,会大大增加旋转部分的重量,使转速变慢,影响显示效果。

那能不能使用3V纽扣电池呢?我们来算一笔账,显示屏若要达到最佳效果,LED数量至少在16个以上,而每个LED的电流大概需要至少2mA左右才能达到理想的亮度,这样看来,电池的输出能力至少应该在32mA,而纽扣电池的输出能力多在10mA以下,显然不符合要求。所以,第1种选择绝非合适方案。

2.电刷

直流电机必备,可行方案之一,但是电刷制作起来较复杂,如果正负极都使用电刷,有换向的问题存在,如果固定其中某一极则需要将该电极做在转轴上,对动手能力要求很高,且电刷用久了会发生磨损引起接触不良,机械性能差,也容易减慢旋转速度,而且会引起较大噪音。这是方案暂时作为一个可行方案,但不是最佳方案。

3.无线供电

没有比这个更完美的了,旋转部分和电机可以完全不存在电气连接,对旋转的阻力是最小的,而且可以通过自耦的方式来实现,简直完美,唯一缺点就是线圈的制作。然而万能的淘宝已经帮我们解决了这个问题,再次感谢我厂,在淘宝上可以很容易找到各种已经匹配好的初、次级无线供电线圈,而且还配有铁氧体磁芯,增加磁导率。

配好磁芯的无线供电线圈。

三、电子部分设计

1. 电源部分

前面提到了,这里我打算采用无线供电,原理就是在初级线圈中通入高频正弦波,在次级线圈中产生感应电动势,铁氧体磁芯可以增加磁导率,提高能量传输效率。那么现在问题来了,我们打算使用5V直流电来为整个板子供电,那如何产生交流电呢,这个其实也不难,可以使用自激震荡电路,如下图:

学过模电的都知道,这是一个自激振荡器,产生三角波,其频率是$f = \frac{1}{2 \pi \sqrt{LC}}$,实际情况下,线圈的等效电感大约在1-10mH之前,内阻1-10Ω左右,我们可以用PSpice对电路进行仿真看看效果:

输出的电压大约是1kHz,实际情况下根据线圈具体的差异,频率大约是1k~30kHz之间,但频率不宜太低,因为这样的线圈每周期能搬运的能量很小,所以只有提高频率才能满足我们的供电要求,我这里还加了8050三极管放大,所以初级线圈中的电压峰峰值一般会在7V左右,初、次级线圈的匝数比取1:1就可以了。

仿真通过之后,我们就可以绘制电源板的电路图了:

由于供电功率比较大,这里要用中功率三极管B772,其他常用元件即可,另外还有一点很重要,电源板上还增加了一个红外LED,这个LED的作用是发出红外光,相应的在我们旋转部分上会设计一个红外接收管,这样一个对管用来做一个反馈,当旋转到发射管位置时,作为旋转显示刷新的零点,同时,通过测量两次接收到红外光的时间,可以测出转速,简化我们的控制。

电源部分的PCB图:

2. 旋转部分

这部分相对来说原理就轻松多了,用51单片机来控制显示,用了33个LED,其中最外面一颗作为圆形边界,实际用作显示的只有32颗,其他的32个颜色不一样。我这里用了32个红色LED,1个蓝色LED。

这么多的LED难道要用每个独立控制信号去控制这33个LED吗?显然有点太浪费了,而且如果这33路信号都用单片机去控制,单片机能否接受那么大的灌电流还是个问题,于是就采用了3片8位串入/并出芯片74HC595,完整的原理图如下:(看不清没关系,工程文件在最后会附上)

其中电源部分使用了4只二极管全桥整流,然后经电容滤波之后用5.1V稳压管来把输出电压稳定在5.1V给电路供电,另外如果要做旋转模拟时钟,可以加入DS1302时钟芯片、加上DS18B20温度传感器可以显示温度,以及一体化和遥控接收头,当然还有就是前面提到过的红外接收管不能少。说到遥控,在万能的淘宝就可以买到,我这里就随便找了一个,只要针对遥控器每个按键进行红外解码即可:

最后画好旋转部分的PCB图:

四、生产

设计完成之后,就可以送出去工厂制版了,我在这里把两块板子的生产工艺和技术指标也一并给出:

旋转主板:

这部分由于要减少重量,希望板子尽可能轻,但又需要有一定强度,所以选择0.6板厚,其他指标如下图:

电源板:

这部分要求不高,按正常的1.6板厚生产即可:

交给工厂生产之后,接下来,就耐心等待1周左右时间等板子到手吧。

五、PCB焊接

盼星星盼月亮,板子终于到手了,这里上张图:

上面长的是旋转部分,下面这个是电源板,那么接下来就是焊接了,由于为了节省面积,设计时使用的基本都是贴片器件,LED和电阻都用的是0603封装的,比较小,需要一定焊接技巧,刀型烙铁头适合有一定经验的人使用,新手还是建议使用特尖型的烙铁头。废话不多说,开始把元件都焊上吧:

焊接完成之后的旋转部分主板:

由于DS18B20一时没有囤货了,所以就我这里就不装了。

焊接完成之后建议用万用表测一测33个LED是否都能正常点量,以免后面写程序的时候碰到麻烦。

焊接完成之后的电源板:

这里我把电机、电源口、红外发射管和无线供电的初级线圈的接口用线引出来,由于一时找不到漆包线,剪了几根渣渣杜邦线,由于B772三极管工作时发热比较严重,顺便也给装上了散热片。

六、机械结构组装

由于我们需要旋转起来才能看到效果,电机首先需要固定好,我这里找了2块亚克力板,按照需求钻了一些Φ3的孔,以方便以后固定各部分

这里注意一下,亚克力板一般出厂时两边都贴有纸膜防止刮花,在钻孔的时候不要撕掉,等钻玩了孔再撕,撕的时候可以用水打湿纸膜,更容易揭下。

撕掉纸膜之后的样子: 

由于我这是以前屯的货,所以颜色不一样,大家完全可以找两块颜色一样的来做。

然后我们现在用电机配套送的螺丝把电机固定在亚克力板上的孔里:

然后把初级线圈套在转轴外侧,也不要求很精准的以转轴为圆心,但是为了好看,尽量准一点,然后怎么固定呢,我这里就直接用热熔胶固定了(虽然有点暴力,但是可靠):

初级线圈的引线正好可以穿过预留的孔,到板子另一侧链接电源板。

接下来组装旋转部分,把电机连接件(卖电机的都有卖)固定在板子上:

这里可以选择用热熔胶粘住或者像我一样用两颗M2的螺丝固定,都可以的,用螺丝固定的话更容易定位,不会歪,用热熔胶粘住的话要小心调整,不要偏离圆心太多。

然后把铁氧体磁芯和次级线圈套在连接件的转轴处,我这里为了固定磁芯和线圈,用了2层双面胶粘住,都完工之后的样子如图:

好了,接下来我们把电机转轴推入连接件的孔中,组装电机和旋转部分,这里要用点力推紧。

这样,就完成主体部分的组装了,接下来我们完成其余部分的连接。

把初级线圈穿过亚克力板的孔之后接入电源板,连接处为了稳定可靠,我用焊锡焊在一起,并且套上了热缩管。

红外LED连接(注意线的颜色,区分正负):

电源插座连接到电源板。

最后,就是电机了,这里注意,电机接的正反会改变旋转方向,这个旋转方向和我们写程序的时候有关系,所以不能乱接,接好了之后要记住,我这里红点处接的是GND:

最后,用一些塑料螺柱螺钉连接件把两块亚克力板连接在一起:

然后把红外LED固定在顶上亚克力板其中一个靠外的开孔中,大概能对的准旋转部分的红外接收管(旋转过程中接收管能扫得到红外LED的正上方)即可,依然使用热熔胶固定。

最后,电源插头用热熔胶固定在底板上:

至此,硬件部分大功告成,来看看完成效果图:

然而。。。我们离成功还远着,接下俩还有关键一步,写!代!码!

七、给单片机编程

终于到了作为一个阿里人轻车熟路的一步了,接下来还需要给51单片机写入程序才可以让这样一个神奇的机构工作起来,首先我们要取字模,我这里用的是PCtoLCD2002,软件设置如图:

有了字模以后,就可以开始写程序了,用的开发工具是keil C51:

源代码我最后会附上,大家别急,我们先完成最后一步,下载程序,51下载程序还是比较方便的,可以直接使用串口下载,下载程序的接口一开始我已经引出,可以使用PC2303/CH340/FT232之类的USBtoTTL小板来连接电脑下载程序:

我的PL2303小板:

接线方法:

使用STC-ISP软件下载程序:

下载完成之后,接上电源:

电机加速过程:

转速稳定后就可以显示出我们想要的文字了:

甚至,如果你想的话还可以做出一个模拟时钟:

至此,本制作就完成了,耗时接近2周,旋转起来之后没事还能当个风扇用,不知道大家觉得有没有点意思。

文末附上本设计所有资料:

电源板原理图和PCB的Altium Desinger工程文件:PowerBoard.rar

旋转主板原理图和PCB的Altium Desinger工程文件:SpinBoard.rar

程序源码:xuanzhuan.rar

所有芯片的datasheet:datasheets

Setup Factory 7.0 绕过安装密码解包方法

上一篇

STM32之option bytes踩坑记录

下一篇
评论
发表评论 说点什么
2519
1

    浙公网安备 33011002014706号