文章目录
- 前言
- 开源地址
- 辉光管项目介绍
- 辉光管的工作条件
- 硬件部分
- 部分介绍
- 充电电路
- 驱动电路
- 不足之处
- 软件部分
- 总结
前言
作为一个电子人,一直想做一个辉光管时钟,算是大学的一个心愿,终于在快要毕业前做了一个,下面把软件和硬件的部分开源出来。
开源地址
github项目开源点击这里
提示:打不开github可以到CSDN里面下载
csdn项目开源压缩包点击这里
辉光管项目介绍
辉光管的工作条件
我采用的是QS27-1辉光管,型号和QS30-1是一样的。一般用170v的电压加在阳极,串联一个20k-30k的电阻进行限流。
引脚的判断方法一般是将引脚朝着自己,缺口朝上,顺时针方向为1号引脚,对应上图的引脚编号
硬件部分
总体采用的是STM32F030K6T6控制,网上买了一个5v-170v升压模块和DS3231时钟模式。
PCB主控板画的是四层板结构,尝试了一下。
部分介绍
充电电路
硬件采用的是锂电池供电,用type-c充电,tp4059进行充电管理。
驱动电路
采用了两层编码,stm32先向3-8译码器写入,然后输出的8位分别控制两个K155ID1,驱动两个辉光管点亮
网上说要采用K155ID1是因为耐高压,但是卓晴老师分析的文章说也可以不使用这个译码器。
可以去仔细看一下:K155ID1辉光管驱动芯片功能测试
不足之处
本来打算利用低功耗模式,这样处于待机状态就行了,载利用一些轻触开关啥的进行唤醒操作就行,但是做的比较着急,忘记加mos管开关控制电路了。
应该在进入低功耗的时候把DS3231时钟模块和高压模块的电源关断。
具体见如何实现见:
stm32f103c6t6下的HAL库搭建三种低功耗模式及实战分析(stm32通用)
稳压电路使用的就是低功耗芯片。
软件部分
软件很简单,用keil编程,用IIC读取DS3231时钟模块的时间。
DS3231_getDate(&TIME);
DS3231_getTime(&TIME);
time_hour1=TIME.hour/10;
time_hour2=TIME.hour%10;
time_min1=TIME.minute/10;
time_min2=TIME.minute%10;
hour=Bytes_Config(Num_Select(time_hour1),Num_Select(time_hour2));
min=Bytes_Config(Num_Select(time_min1),Num_Select(time_min2));
然后进行编码显示就行,在显示前加入一些固定的闪烁动画。
软件和硬件参考:QS-30四位辉光管时钟
总结
等之后有时间希望能重新画一画电路,弄成低功耗模式的板子,还有就是加入联网校正时间的功能,不用手动矫正时间了