基于ESP8266的复古辉光时钟的设计与制作

2023-01-31 01:47邱桦霖
电子制作 2023年1期
关键词:辉光平行时钟

邱桦霖

(贵阳学院 电子与通信工程学院,贵州贵阳,550002)

0 引言

随着单片机的价格不断降低,单片机变得十分普及,功能越来越强大,运行也越来越稳定,它具有体积小,面向控制,高性价比等优点。当今世界,单片机已经无处不在,本次设计采用ESP8266作为时钟的主控,它的价格低廉,集成了常用的WiFi功能,且能够提供稳定高效的连接,当网络通畅时可以与调配好的服务器进行通信,当失去网络连接时,可以搭配DS1302模块可以继续走时,当网络恢复时便能自动校时。在开发时,使用Arduino的IDE便可对其进行编程,代码转化效率高,便于后期的开发升级。在显示方面,该电子时钟采用了发明于上世纪50年代的辉光管,亦称“冷阴极离子管”或“冷阴极充气管”,是一种利用气体辉光放电原理而工作的离子管,在电子电路中指示、稳压等作用。由于它在21世纪的今天具有一定的收藏和观赏价值。所以本设计将历史的辉光管与现代的单片机进行融合,制作独一无的,历史与现代融合产物——辉光钟。

1 总体设计方案

■1.1 系统总体框架与设计

本次辉光钟的设计所采用的ESP8266主控是一款拥有高性能的无线芯片,它拥有超低功耗的32位微型MCU,同时具有16位缩减模式,主频支持80MHz和160MHz,支持RTOS,集成了WiFi MAC/BB/RF/PA/LNA,板载天线。最主要的是ESP8266可以实现远程控制、OTA升级等。这大大降低了开发成本,缩短了开发周期。作为与ESP8266同样重要的时钟芯片,本次所采用的是DS1302,它是由美国的DALLAS公司开发的时钟电路,其优点为高性能、低功耗、并自带RAM的时钟电路,不仅可以对基本时间进行计时,还能够进行闰年补偿,可以自动对少于31天的月份日期进行调整。DS1302在与ESP8266的连接上也十分的方便,除去供电接口外,只需三条线便能进行串行通信。ESP8266与DS1302构成了本次设计中主要的控制部分即“产生时间”。在“发送时间”的设计中,由于ESP8266端口有限,所以笔者选用了74HC595芯片来进行“节约端口”,74HC595是单片机系统中常用的芯片,它是一个8位串行输入、并行输出的位移缓存器,能够将串行信号转化为并行信号,并具有一定的驱动能力,可以去除掉三极管等放大电路(后文会介绍详细功能)。在驱动显示方面,由于辉光管的驱动特殊性,笔者在查阅大量资料后,发现常用到的辉光管BCD译码驱动芯片有SN74141和K155ID1,本次设计中所采用的是K155ID1。K155ID1在功能上与常见的BCD译码芯片几乎没有区别,唯一的一点是因为辉光管的驱动需要170~180V的高压,维持点亮的电压约为120V,K155ID1的输出耐压为60V左右,所以完全满足高压经过电阻和辉光管串联之后的电路。以上就是本次设计的总体布局,后文会对每个模块进行详细的功能介绍。系统总体设计方案框图如图1所示。

图1 系统方框图

■1.2 辉光时钟的主要用途

该电子时钟以ESP8266为主控,利用WiFi进行自动对时,无需手动调节,在失去网络连接时,可利用DS1302模块进行精准的走时,ESP8266读取DS1302的时间,进行显时。

2 硬件与软件的设计

■ 2.1 硬件设计

2.1.1 主控模块

根据ESP8266的系统(SoC)设计,其内部包含了处理器芯片等组件,处理器大约有16条GPIO线路,其中一些GPIO规定默认用于与其他内部组件进行通信,比如与内部闪存的通信等。在实际应用中大约还有11个GPIO引脚可按常规GPIO进行使用,在这11个针脚中,又有2个针脚预留给串口RX和TX。因此,最后只剩下9个通用I/O引脚,即D0到D8。在本次设计中由于使用了74HC595,所以在发送时间数据时,只使用了D2、D3、D4引脚。D5、D6、D7引脚用于连接DS1302模块。其余引脚为供电引脚。所使用的引脚如表1所示。

表1

2.1.2 DS1302 模块

DS1302有一块备用电池以预防断电情况发生,VCC接在ESP8266的3V3端口,当ESP8266突然断电时,DS1302也能继续走时。ESP8266的D5、D6、D7分别与 DS1302的 CLK、DATA、RST连接。 其中CLK 用来产生 DS1302 的读写信号,DATA用来和单片机进行数据传输。如图2所示的DS1302模块接线图。

图2 控制部分原理图

2.1.3 74HC595 芯片

由于ESP8266端口有限无法传输时钟所使用的时、分、信息。故采用74HC595来解决这一问题。前文相信读者已经稍微了解到74HC595,它是一个8位串行输入、平行输出的位移缓存器:平行输出为三态输出。在SCK的上升沿,单行数据由SDL输入到内部的8位位移缓存器,并由Q7'输出,而平行输出则是在LCK的上升沿将在8位位移缓存器的数据存入到8位平行输出缓存器。当串行数据输入端OE的控制信号为低使能时,平行输出端的输出值等于平行输出缓存器所存储的值。而当OE为高电位,也就是输出关闭时,平行输出端会维持在高阻抗状态。就本次设计中所用到的功能,简明的说:Q0~Q7负责发送时钟所需要显示的时、分信息。DS级联下一块74HC595并将移位命令传输至下一片,SH_CP 高电平触发控制移位动作,ST_CP高电平触发并行输出,OE低电平输出有效。74HC595的主要优点是具有数据存储寄存器,在移位的过程中,输出端的数据可以保持不变。这在串行速度慢的场合很有用处,数码管没有闪烁感。74HC595真值表、引脚功能表如表2和表3所示。

表2 74HC595真值表

表3 74HC595引脚功能表

2.1.4 K155ID1 芯片

一片74HC595可控制两片K155ID1,分别显示小时和分钟。K155ID1芯片为辉光管的驱动芯片同时也是一个简单的BCD译码芯片也被称为二—十进制译码器,通过4位二进制输入,可输出0~9的十进制数字,用于辉光管的显示。K155ID1真值表、引脚功能表如表4和表5所示。

表4 K155ID1真值表

表5 K155ID1 引脚功能表

2.1.5 IN12A 辉光管

辉光管也叫阴冷极辉光放电指示管,诞生于50年代左右,由一家名为海顿兄弟实验室的小型真空管制造商制造出来,并在1955年被美国宝来公司收购之后开始推向市场。美国宝来公司将这种阴冷极辉光放电指示管命名为NIXIE,虽然后来这种阴冷极辉光放电指示管有很多种名称出现,业界一般统称为阴冷极氖读数管,但是大多数还是以美国宝来公司的NIXIE这个名字作统称,因此后来大部分都是用Nixie tube这个词来表示。本次设计采用的是IN12A辉光管,如图3、图4所示,其开启电压为170V,电流为1mA。其管脚和显示原理图如图5、图6所示,将HIV端接入170V,再将各个管脚对应接入K155ID1的输出端上即可。

图3 辉光管 侧视图

图4 辉光管正视图

图6 辉光管显示原理图

■ 2.2 软件设计

本次设计采用Arduino IDE编译,由于Arduino中有非常方便的开发环境,方便后期的调试升级,大大增加了程序的可维护性和可靠性 在本设计中,使用了NTP协议来获取时间,在获取时间后,程序将获得的时间发送给DS1302,在ESP8266断电后依然能够稳定走时,方便在下次启动时获得时间。在发送时间时,由于使用了74HC595移位寄存器所以在进行时间信息的传送时首先要给74HC595的ST_CP口上加低电平,来让芯片准备接收数据;通过shiftOut()函数将信息传输,然后给予ST_CP口高电平结束这一过程。由于考虑到辉光管存在阴极中毒的特殊性,所以在每一次数字变化时,ESP8266把辉光管全部的数字迅速点亮一遍,以防阴极中毒,这样大大的增加了辉光管的使用寿命。在时钟的网络方面,笔者使用了WiFi Manager库文件,时钟的每一次启动,都会自动连接上次已经连接过的WiFi,如果连接失败,首先读取DS1302时间并开放自身热点,让用户自行连接并配置。主程序流程图如图7 所示。

图7 程序流程图

3 总结

本次设计把现实中常见的LED数码管电子时钟的显示改为辉光管。时钟采用ESP8266为主控,DS1302为时钟芯片,两片74HC595和四片K155ID1芯片来驱动辉光管显示时、分。该时钟实现了WiFi自动对时和辉光管防阴极中毒,并实现了历史与现代的完美融合,这大大提高了辉光管在21世纪的知名度,在辉光管的微光中透着工业时代的辉煌,它的光亮在向人们讲述一个时代的历史。

图8 实物图(1)

图9 实物图(2)

猜你喜欢
辉光平行时钟
向量的平行与垂直
平行
别样的“时钟”
逃离平行世界
古代的时钟
自然神性辉光下的凹村世界——雍措散文集《凹村》解读
深圳市煜辉光电科技有限公司
有趣的时钟
时钟会开“花”
再顶平行进口