亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Manufacturing Technology >> 制造工艺

DCF77 无线电波钟分析仪 v2.0:Arduino Mega/UNO 双板协作

项目简介

这是一款功能极其完善的 DCF77 (德国长波授时信号 77.5 kHz) 接收、解码、分析与显示系统。采用 **双 Arduino 协作架构**:Uno 运行 Udo Klein 的 **DCF77 Superfilter** 固件,作为“信号净化黑盒”将嘈杂天线信号重构为干净的方波;Mega 运行主控固件,完成解码、校验、RTC 同步、多路 LED 环显示、温度采集、省电管理等功能。项目包含完整 PCB 设计、外壳加工、声音文件、详尽注释代码,堪称 DIY 无线电波钟教科书级范例。

系统架构

┌─────────────┐     天线信号      ┌──────────────────┐     干净 DCF 方波      ┌────────────────────┐
│  DCF77 天线  │ ────────────────▶ │  Arduino UNO     │ ────────────────────▶ │  Arduino MEGA 2560 │
│  (有源/无源)  │                   │  Superfilter v3  │   (A5→D12 滤波输出)   │  主控固件 v2.1     │
└─────────────┘                   └──────────────────┘                        └────────────────────┘
                                                                                       │
                    ┌────────────────────────────────────────────────────────────────┘
                    ▼
         ┌────────────────────────┐
         │  外设矩阵               │
         │  - 7×MAX7219 驱动      │
         │    · 内/外环 LED×59    │
         │    · 7段数码管×多块    │
         │  - DS1307 RTC (I2C)    │
         │  - DS18B20 温度 (1-Wire)│
         │  - PIR 人体红外        │
         │  - 蜂鸣器/音频板       │
         │  - 多路拨码/按键       │
         └────────────────────────┘

核心功能特性

关键硬件接口 (Mega)

Superfilter (Uno) 关键配置

主控固件核心流程

  1. 中断采样:`INT0` 双沿触发 `int0handler()`,记录上升/下降沿时间戳
  2. 脉冲判别:`scanSignal()` 计算周期 (应 ≈1000/2000ms) 与脉宽 (≈100/200ms),超限标记错误
  3. 比特解码:`processDcfBit()` 存入环形缓冲 `DCFbitBuffer[59]`,同步更新内环 LED
  4. 实时奇偶校验:第 28/35/58 位分别校验分钟/小时/日期奇偶,任一失败即标记 `dcfValidSignal=false`
  5. 帧结束检测:检测到 2 秒间隙 (Minute Mark) → `finalizeBuffer()`
  6. 缓冲区决策:
    • 位数=59 且三校验通过 → 解码时间、同步 RTC、内环→外环、亮起“DCF OK/同步”LED
    • 否则 → 亮“Minute Mark/溢出”错误 LED,清空缓冲重新同步
  7. 后台任务**:秒/分/时定时任务 (`tasksEverySecond/Minute/Hour`) 处理显示刷新、温度采集、省电判断、报时触发

PCB 与机箱资源

代码亮点与可移植性

常见问题排查

功能引脚备注
DCF 输入 (来自 Superfilter)D2 (INT0)必须为外部中断引脚
PIR 传感器D3
蜂鸣器开关D4
整点报时开关D5
省电开关D6
温度传感器D81-Wire
温度复位键D9
MAX7219 CS/CLK/DIND10/D11/D12级联 7 片
LED 阵列 (D22–D50)29 路星期/夏令时/闰年/错误/同步状态等
蜂鸣器 (DCF 响声)A7PWM 音频
音量控制A6Sound Board 音量
报时触发A5低电平触发
I2C (RTC)SDA/SCL (20/21)DS1307

致谢与参考

制造工艺

  1. 布谷鸟钟:历史、工艺与现代演变
  2. Arduino POV 时钟:自制视觉暂留 LED 显示器
  3. 复古 Numitron 管时钟:Arduino Nano 驱动,低温可靠省电
  4. 用 Adafruit 60 LED NeoPixel 环形灯和 Arduino 制作时尚挂钟
  5. DIY Arduino单词时钟 – 极简优雅的实时文字显示
  6. 自制 Arduino 伊斯兰祷告时间实时时钟
  7. DIY 蓝牙控制 Arduino 间谍小车
  8. FlickMote:基于手势的智能家居红外遥控器
  9. 自制大尺寸LED主时钟带闹钟功能 — 12米外清晰可见
  10. Arduino Due 驱动 3.2″ TFT 实现温度监测与实时时钟
  11. 用 Arduino Pro Mini 与 DS1302 RTC 打造精准七段数码管时钟
  12. 用 DS1302 RTC 和 Arduino UNO 制作可靠闹钟

现象排查步骤
长期无法同步1) 确认天线方向 (垂直于法兰克福方向) 2) Superfilter LED 观察锁定状态 3) Mega D2 波形示波器抓包 4) 调整 `THRESHOLD` 宽容度
频繁 PT/PW 错误环境干扰大 (开关电源、变频器) → 加屏蔽、换电池供电测试、Superfilter 合成输出模式
RTC 报错 LED 常亮DS1307 电池亏电 (CR2032) 或 I2C 总线拉升电阻缺失/接触不良
温度显示 85℃/不变DS18B20 未上电/总线短路/寄生供电模式需 4.7kΩ 上拉
省电模式不生效检查 `POWERSAVE_BY_PIR` 宏、PIR 跳线触发模式 (H/L)、`PIR_DELAY_TIME` 设置