这是关于精密时钟 Mk IV 开发的页面,包含其规格、架构、接口等多方面内容:
- 规格:毫秒级精度,高帧率拍摄时无闪烁且亮度自动调节,自动根据 GPS 坐标确定时区和偏移,断电时保持时间(石英晶体和电池),易天线升级(SMA 连接器),易维修(背面表面贴装零件),精度反映准确性,多种显示模式,易固件更新等。
- 架构:使用两个处理器和六个缓冲芯片,将显示分为四个 5x8 的矩阵,通过 DMA 驱动矩阵以实现零开销显示更新,缓冲芯片解决亮度问题,通过调整 LDO 和微控制器的 DAC 输出控制亮度,四芯线跨越铰链实现多种功能。
- 接口:希望像之前版本一样无需配置接口,自动获取时间,但多种显示模式需要添加配置文件或 USB 串口设备,用户可通过配置文件或串口命令更改时钟行为。
- 双缓冲显示:之前的时钟在秒开始时获取 PPS 中断计算显示内容,在添加多种功能后变得复杂,Mark IV 时钟将代码改为 C 语言,采用双缓冲机制,避免显示抖动,同时考虑到模式切换和按钮操作的情况。
- GPS 校时:PPS 信号不保证每秒出现,Mark IV 时钟不再对主振荡器进行校时,而是使用温度补偿振荡器作为外部振荡器,同时配备纽扣电池和音叉振荡器,以在断电时保持近似时间,并在恢复供电时快速同步到 GPS 时间。
- 振荡器问题:PCB 上的 PLL 安排复杂,将 10MHz 主振荡器通过特定方式跳转到 48MHz 以运行 USB 硬件,但在设置显示频率为 30kHz 时导致 USB 断开,原因是显示信号靠近 32.768kHz 石英晶体,改变信号路由后解决问题。
- 中断向量热插拔:通过将中断向量移到 RAM 并动态交换函数指针来优化中断处理,以降低中断处理的延迟和复杂性,这需要对链接器脚本有深入理解。
- 链式加载引导加载程序:更新时钟固件容易是重要目标,设计了类似 UF2 的更新机制,通过 USB 端口呈现小容量存储设备,可复制粘贴文件进行更新,同时考虑到更新过程中的各种情况,如备份、恢复等,以确保更新过程的可靠性。
- 自动时区:根据 GPS 坐标自动设置时区是最受请求的功能,但实现过程复杂,需要保存世界地图数据、时区数据库等,通过一系列算法和预处理步骤,最终实现从 GPS 数据中准确确定本地时间。
- 中断优先级:处理多个中断任务时,需要合理设置中断优先级,以确保时钟显示的稳定性和实时性,同时要注意 HAL 函数在不同优先级下的行为,避免出现问题。
- 显示设计:考虑多种显示方案,最终选择将显示分为四个矩阵,通过 DMA 控制,电压控制 LED 亮度,使用缓冲芯片解决亮度问题,经过原型测试和优化,确定了最终的显示设计。
- 亮度细节:通过调整 LDO 的反馈电压来控制亮度,应用非线性格式,同时考虑处理器复位时的亮度情况,设置适当的滤波以避免亮度变化过快。
- 冒号控制:冒号用于指示 GPS 信号和动态精度,可配置为平滑动画,通过 PWM 控制亮度,与主显示的电压控制相结合,实现不同的冒号显示效果。
- 铰链开发:早期时钟 PCB 过长,开发了铰接式铰链,以增加功能和便于携带,经过多次原型测试,确定了铰链的电气连接和机械结构,同时解决了不同供应商数字引脚位置不一致的问题。
- 双层挑战:虽现在多层 PCB 成本差异不显著,但仍坚持两层设计,注重电路布局的美观和信号完整性,通过 KiCad 进行设计,考虑各种电路元件的布局和连接,同时解决接口按钮数量和 GPS 模块阻抗等问题。
- 塑料零件:最初使用激光切割亚克力,后因胶水粘合问题转向 3D 打印,设计了带有卡扣的 3D 打印零件,以确保时钟的紧密结合和稳定性。
- 徽标:在日期侧 PCB 上设计徽标,考虑正反两面的显示效果,通过 inkscape 和 svg2mod 工具将 SVG 转换为 KiCad 可用的多边形,经过多次修改和测试,确定了最终的徽标设计。
- 倒计时模式:倒计时模式看似简单,但由于时钟的精度和动态精度,需要准确处理时间显示和截断问题,以确保在不同情况下都能正确显示倒计时。
- 闰秒:官方规定数字时钟在闰秒时应显示 60,但 GPS 模块在闰秒时行为不一致,目前的做法是提前准备闰秒列表,在闰秒期间忽略 GPS 模块,未来若有闰分情况,将面临新的挑战。
- 高速测试:使用高速相机测试时钟显示,从 1000FPS 开始,逐渐提高到 25000FPS,确认时钟与 PPS 信号的对齐和显示精度,同时还测试了矩阵更新速度和不同频率下的效果。
- 旅行测试:将时钟带到荷兰和希腊进行测试,证明自动时区检测在不同环境下的工作情况,包括在火车和飞机上,以及在海上无手机信号的环境中。
- 生产批次:全球芯片短缺导致生产困难,最终通过捐赠的贴片机生产 100 块时钟 PCB,但在零件采购和生产过程中遇到诸多问题,如 reel 混乱、 solder paste 过期、假货 GPS 模块等。
- 结论:开发时钟花费多年,撰写项目页面仅需几天,动态精度是其重要特点,展示了时钟在不同活动中的应用,未来可能推出微秒级精度的版本,源代码和 PCB 文件将在 github 上发布。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。