首页/作品列表/IV-18荧光时钟
IV-18荧光时钟
12263 2
主要内容

背景

偶尔在同事办公桌上看见一个荧光管时钟,感觉很炫酷,询问价格后觉得太贵了,于是想做自己一个。

先看看做好的图。

查阅资料

开始查阅资料,得知管子名字叫IV-18(ИВ-18)荧光电子数码管,上世纪80-90年代前苏联的产物,冷战时期曾大量制造并用于军事设备,现如今已非常罕见。它一根管内嵌入了8个7段数字,且管身通透,字形优美。整个电子管的基板是一片透明的玻璃板,用于显示数字比划的每一段,以及连接每一个段的线路,均紧贴在玻璃板上,字体亮度均匀,并且寿命很长。于是在某宝找到该管子,还挺贵的。提供了一些参数,典型电压为50V,单片机工作电压一般为3.3V或5V,因此必须要升压电路才能驱动。升压电路之后再讲。
有两种型号22脚和19脚的,22脚的多了3个固定脚,其他都一样。
    通过表格和实物图片可以看出整个荧光管的电气特性有点类似于我们所使用的数码管,必须采用动态扫描方式来驱动,因为它的每一个段都是连接在一起的,通过依次给每一个数字位的栅极通电来选择当前显示的位,然后给7段数字线条通电,来显示一个数字,依次快速动态刷新,速度快到肉眼看不出来是每次只能亮一个,来完成8个数字的显示。就好比家里的灯,用的是220V 50Hz的交流电,实际灯是闪烁的,但是肉眼分辨不出来。
当然还需要借助驱动芯片来更好的控制荧光管,查到两种型号:MAX6921和HV5812,看了下芯片手册,两者大同小异,都有20路输出,驱动荧光管17路就够了(8个阳极,9个栅极)。某宝查了下,后者要便宜好几倍,果断用后者。虽然本人一直觉得便宜没好货,但是可以试试。
查完资料大概弄明白了,开始方案制定了。这里主要做荧光管驱动部分:升压电路和驱动电路。时钟用Mircoduino-RTC模块就行,校准时间打算用蓝牙,使用Microduino-BLE模块,核心自然采用Microduino-Core模块。

荧光管驱动电路设计

升压电路

升压电路使用的还是廉价并经典的MC34063做高压升压,外扩了MOS管IRLR024,升压效率大幅提高,而且MC34063、电感、MOS管一点也感觉不到温度;IV-18的推荐工作电压为45v-70v,典型值为50V,升压至50V即可。

荧光管封装

还是要吐槽国内网站,还是翻墙的好用。根据管脚可画出原理图。
 根据尺寸及方向可画出封装。 

驱动芯片

 HV5812驱动输出高达78V,升压电路50V满足。OUT0到OUT8控制栅极,8路灯1路圆点和横线。4根信号线控制,DIN:信号传输;CLK:时钟信号;STROBE:频闪信号(数据重新更新);BLANK:使能信号。当然这个是可以级联的,数据位超过20后,从DOUT输出,可接下一个芯片得DIN,这里一个芯片就够用。驱动阳极和栅极的OUT引脚与IV-18接线按规则来排布,这样便于PCB方便布线。 
 注意灯丝必须要有电发热才能驱动,电压5V,实测3.3V也可以,1和13引脚正负无所谓。 

PCB布线

 布线之前先不着急连线,先对照原理图,把元器件位置摆好,高压和低压隔离开。元器件位置摆好了后面布线就方便快很多。 
PCB画好之后处理成工厂加工文件,找某宝生产加工就行,样品加工是10片。尺寸小价格就便宜。一般一星期就能收到加工好的电路板了。在此期间可以买各种元器件了,同步进行。 

荧光管驱动电路调试

 焊接升压部分电路。 
 升压电路是否成功是驱动的前提,焊接完毕接上电源,测量升压后电压为49V,可以满足驱动电压。 
 升压部分没问题,就可以焊接其他部分,包括HV5812驱动芯片及IV-18萤光管。 
 为了与Microduino模块连接,得做个底座了,将4路信号及电源、地接入。焊接了Upin27底座和MicroUSB接口,通过MicroUSB供电。 
 因为Microduino-RTC、Microduino-BT模块都是3.3V供电,所以还需要加上5V转3.3V芯片。 
 至此硬件就制作调试完毕了,开始软件调试了。 

软件开发

逻辑分析

软件的重点在于HV5812驱动芯片程序控制。通过手册3张图分析出数据如何传输来决定程序编写。 
从时序图中可以分析出先发送数据信号,间隔一段时间发送时钟信号,时间最小值为75ns,基本数据发送之后就可发送时钟信号了。数据结束后Strobe信号高低变化一次。Blank信号为低时输出信号(HVout)为数据信号,为高时输出低。因此可通过Blank直接关闭萤光管。 
 方块图可以分析出,数据内部先通过20位移位寄存器传输数据,再通过Strobe信号和20位锁存寄存器输出数据,同时Blank信号通过非门与上输出数据,当Blank信号为低时直接输出(使能打开,可以点亮萤光管),为高时输出信号为低(使能关闭,关闭萤光管)。输出数据最后经过运放与Vpp(高电压)输出。 
 功能表更明显了,首先控制数据(高或低),接着控制时钟信号由低变高,数据就会放入第一个移位寄存器中。如果Strobe信号为高将数据锁存,为低时可以恢复之前状态,重新传输数据。如果Blanking信号为低,保持锁存的数据,如果为高,则关闭输出。 

程序实现

 原理图中OUT0-OUT8是控制荧光管栅极,因此需要传输9次数据,才能控制OUT0-OUT8的电压是高还是低。 
同理,控制A至Dp阳极方法也一样。
数据传输写完就可以写控制方法了。控制一个荧光管,先移动阳极数据,再移动栅极数据,这样17个引脚的信号都传输完毕,就可以控制一个荧光管。第一个参数num是控制哪个荧光管,第二个参数控制显示什么值。
控制8个荧光管需要采用动态扫描的方式,如下图,动态扫描每次只点亮一路,当G1设置为高G2-G9设置为低时,允许第一个被点亮,这时候再设置A-Dp全为高,第一个就能显示8了,如果G和Dp设置为低其他为高,就显示0了。然后循环再设置7次,只要速度够快达到肉眼分不出来的速度,这样就能看到8个一起亮。
RTC获取时间及蓝牙设置时间代码这里就不讲了。

结构设计

长上面那样是没法接受的,所以还需要设计一个外壳,简单方便快速便宜的方案就是用亚克力板激光切割出来。用一块亚克力拼接起来,比较费亚克力。
由模型再拆成切割文件。

结构制作

结构材料采用亚克力,用了透明亚克力和咖色亚克力。
将电路底座安装在底座上,通过4个m2螺丝固定。
把剩余亚克力板组装起来,用螺丝固定。IV-18模块直接从上端插入底座即可。


所需硬件
暂无数据!
代码展示
暂无数据!
附件下载
暂无数据!
3

韬钤深处

很详细, 不错

回复0

jane回复韬钤深处

嗯,棒棒哒

回复0查看对话

大牛,别默默的看了,快登录帮我点评一下吧!

立即注册