Udo*_*ein 18 language-agnostic algorithm signal-processing arduino dcf77
我几乎完成了我的开源DCF77解码器项目.当我注意到标准(Arduino)DCF77库在噪声信号上表现非常差时,一切都开始了.特别是当天线靠近电脑或我的洗衣机运行时,我从来没有能够从解码器中抽出时间.
我的第一种方法是为输入信号添加一个(数字)指数滤波器+触发器.
虽然这显着改善了情况,但仍然不是很好.然后我开始阅读一些关于数字信号处理的标准书籍,特别是Claude Elwood Shannon的原创作品.我的结论是,正确的方法是不对信号进行"解码",因为它是完全已知的先验(闰秒除外).相反,将接收的数据与本地合成的信号进行匹配并确定适当的相位会更合适.这反过来会将有效带宽减少一些数量级,从而显着降低噪声.
相位检测意味着需要快速卷积.有效卷积的标准方法当然是快速傅里叶变换.但是我正在为Arduino/Atmega 328实现.因此我只有2k RAM.因此,我开始堆叠匹配的锁相环滤波器,而不是使用FFT的直接方法.我在这里记录了不同的项目阶段:
我非常广泛地搜索了互联网,发现没有类似的方法.我仍然想知道是否有类似(也许更好)的实现.或者是否存在对这种信号重建的研究.
我不是在寻找:设计优化的代码以接近香农极限.我也没有在DCF77上搜索有关叠加PRNG代码的信息.我也不需要关于"匹配滤波器"的提示,因为我当前的实现是匹配滤波器的近似值.关于Viterbi Decoders或Trellis方法的具体提示不是我要寻找的 - 除非它们解决了严格的CPU和RAM限制问题.
我正在寻找的是:是否有任何其他非平凡算法的描述/实现,用于解码像DCF77这样的信号,在存在重大噪声的情况下CPU和RAM有限?也许在互联网时代以前的一些书籍或论文中?
Ollie B. 提到的匹配过滤器并不是我所要求的。我之前已经在我的博客中介绍过这一点。
\n\n然而现在我通过私人邮件收到了非常好的提示。Daniel Engeler发表了一篇论文“DCF77 无线电控制时钟的性能分析和接收器架构” 。这就是我正在寻找的东西。
\n\n从 Engeler 论文开始进一步搜索,我发现了以下德国专利DE3733966A1 - Anordnung zum Empfang stark gestoerter Signale des Senders dcf-77和DE4219417C2 - Schmalbandempf\xc3\xa4nger f\xc3\xbcr Datensignale。
\n