如何自己制作一个 divergense meter(辉光管时钟)?

别收藏了,喜欢就点个赞呗!!


关于辉光管本身就不做介绍了,其他答案已经描述的很详尽了。

先上完成图~

关灯效果

功能

  1. 6位数字的时间/日期显示。
  2. 4位有效数字的温度/湿度显示。
  3. RGB全彩显示/呼吸灯。
  4. 微信Airkiss/ESPTouch配网。
  5. APP切换/控制/主动校时。
  6. 高精度时钟+断电锂电池供电。
  7. Crossfade数字切换效果。

设计

  • 辉光管:IN-14
  • 主控:STM32F103
  • 辉光管控制芯片:HV57708
  • Wi-Fi模块:ESP-12s
  • 时钟芯片:DS3231
  • 湿温传感器:SHT30
  • RGB:WS2812C
  • 双层沉金PCB
  • 可替换脚座

升压部分

参考@Sadudu的电源设计,不知道为什么10mΩ的限流电阻会导致过流,烧坏一块HV57708……将限流电阻提高到50mΩ解决问题。同时将电感值降到150uH(完全听不到啸叫)以提高驱动力。

一开始输出电容使用的是MLCC电容,但发现带上负载之后会产生不太能够接受的啸叫……本着完美主义的精神,试了一大圈不同的电容,最后发现还是电解电容比较靠谱,毕竟这次设计中对体积要求不高。

主控部分

STM32似乎没有什么好说的……

辉光管控制部分

用了大家都在用的57708,效果很棒。值得一说的是57708的引脚连接在辉光管的阴极,芯片必须工作在反向模式。信号为低电平时引脚输出为高电平(80V),这样阴极与阳极之间就无法产生170V左右的压差而熄灭,反之亦然。

Wi-Fi模块

基于AT开发,用的乐鑫官方AT库。

时钟

使用了一块CR1220锂电池供电,保证断电依然能够精准走时。

湿温传感器

用了Sensirion公司的一个湿温传感器。因为是板载设计,所以在布局上也避开了其他元器件,同时不在其下方铺铜,打孔至背面形成一个孤岛,尽量能够更好更准确的测量湿度/温度。

RGB

特意使用了WS2812的低亮度版本,毕竟作为氛围灯无需太亮。

制作

PCB

画板子还是比较累人的,前前后后用了好几天。

然后在捷X打样。阻焊颜色是消光黑,沉金工艺。实际效果还是不错的。

焊接

F103拖焊就行了,没想象中这么难。

相当不好焊的是SHT30。因为Datasheet说手工焊接350度必须小于5秒,又是DFN封装,手必须非常的稳。搞坏一块,还好第二块成功了。

控制部分

高压部分

57708

然后是测试,万用表点一点~

完成之后拿洗板水仔细擦净,搞定~

外壳

CAD大概画一画就丢给TB做了,一共就两块亚克力板子~

软件

时间显示

最基本的是时间显示。最早是在 这里 看到有人实现了这样的显示切换效果,就此就成了怨念,决心要实现它……

Crossfade效果的核心就是PWM Control,所以对于辉光管来说,最直接的方法就是使用主控来控制三极管。所以现在绝大多数的解决方案也都是通过三极管来实现的,包括上面的例子。这就带来了问题,因为IN14的引脚很多,即使是只是用数字,6位显示也需要60个三极管。而我不想用那么多只三极管……

所以这时候就要读一读Datasheet了。

打开HV57708的datasheet,发现57708的Clock速度非常快,达到了8MHz。也就是说我理论上完全可以通过串行通信调整辉光管的亮暗信号数组来模拟PWM。

需要通过模拟实现PWM,就要对57708的数据传输方式进行深刻的了解。

57708将64位串行电平数据通过4根通道输入锁存器,然后根据时钟变化将这些数据并行输出到每个引脚。

而辉光管的每一位数字都有自己的“座位号”。根据我的硬件设计,我将64位电平数据(实际只用到60位,每个管子显示10种数字)分为两组并且列出它们位于整个数组的位置。

那变化的本质是什么呢?例如,我要将显示秒数的个位从“5”渐渐变换很“6”,在这个过程中,其实要做这些事:

  1. 将“5”所在电极的导通时间(占空比)逐渐减小至零
  2. 将“6”所在电极的导通时间(占空比)逐渐增大至完全导通
  3. 1与2同时进行

如果考虑到进位,切换操作等还会需要更多的管子参与进来,所以需要对整个数组进行操作。

通过对TIM的无限次调教和不同占空比的测试,最后还是得到了很好的效果~视频放在最后~

湿度/温度显示

没啥特别的直接上图~最后没有装上冒号,因为觉得装上不太好看,脑补一下当中有个dot

Wi-Fi连接

Wi-Fi是基于官方AT库开发的。基本通信过程就是ESP12S在局域网中建立一个固定IP的TCP服务器,然后手机APP作为客户端去访问,透传数据给主控,主控解包后读取数据再做相应的动作。由于AT库很强大,支持微信云,也许以后会研究一下做一些IoT的东西。

但是想了想,一个钟要访问云干什么……

APP

由于是基于Wi-Fi控制的,所以需要一个APP来进行时间日期切换,调整呼吸灯等操作。但是前端开发已经超出了我的能力范围,所以就用了如下巨丑的APP来凑活一下。虽然丑,但是实现功能是完全没有问题的。

总结

Emmmm…..其实还是有许多方面需要改进的,如果有2.0版本的话,要做如下的升级:

  1. 电源部分优化做小,使整体板子小一点
  2. 可能会做蓝牙+Wi-Fi的通信,因为手头上正好有ESP32
  3. 做一个好看一点的APP,可能会用json来使通讯更规范
  4. 可能会加入闹铃之类的
  5. 排针的设计有点愚蠢,可能之后就用焊盘了,烧录完再焊下来,这样更美观
  6. 外壳可能会用木头或者铝合金之类的其他材料,依然保留顶部透明

当然,做这个东西是给 @黄小小小小圆 的。

最后

放一个视频吧

无声视频,各种效果展示~

本次设计参考了@Sadudu@silentcedar的开源部分的内容,感谢!

来源:知乎 www.zhihu.com

作者:笔刀君

【知乎日报】千万用户的选择,做朋友圈里的新鲜事分享大牛。
点击下载

此问题还有 23 个回答,查看全部。
延伸阅读:
怎样让花瓣和其他东西像影视剧中一样均匀从天空落下?
白噪音抵消外界噪音的原理是什么?