开源工程系列之Si4703调频收音机

  前不久接到一个任务,要求用Arduino做一个小玩意,而且需要方便初学者制作PCB和焊接。作为一个通信人,我的脑海中闪现的第一个东西就是带DSP的收音机。在网上找了一下,国外有现成的模块了,芯片方案是Silicon Labs的Si4703,资料很齐全,后来又发现了国产版的模块,除了针脚定义与国外版的略有不同,其它都一样。就这么愉快地做决定了。

功能特性:

  • 接收范围76MHz~108MHz,支持粗调(1MHz步进)和细调(0.1MHz步进)
  • 带信号强度指示
  • 带立体声状态指示
  • 支持向上、向下搜台
  • 支持音量调节
  • 使用Micro-USB接口供电,工作电流约31mA

  Si4703的Arduino库来自于GitHub,然而用着不太符合自己的需求和习惯,最后还是改了不少地方。I2C时钟频率提高到了400kHz(经测量,上升时间符合要求),另外针对调谐和搜台过程中I2C总线未保持静默的问题进行了改进。

  由于Si4703模块只能工作在3.3V电压条件下,而且其I/O口只能承受3.3V电平,所以整个系统统一使用3.3V电源供电。根据Atmega328的手册,3.3V供电时最高时钟频率不建议超过13.333MHz,然而为了兼容Arduino UNO官方引导程序和库函数,这里超频使用了Atmega328,而不是使用低频率晶体或是系统时钟预分频器。

  本板基本引出了所有I/O。在向Atmega328烧录引导程序后可以通过CH340串口板向本板烧录用户程序。可以将CH340的DTR引出并连接到本板的TP29以免在烧录程序时需手动复位本板。

  这回用到的液晶是和上次用的液晶预留的负压发生电路同样使用的是7660芯片,但是对比度调压脚的连接方法不一样。上次用的液晶的第三脚直接连到负压发生电路的电阻分压输出端,可以外接电阻调压。这回的连法比较奇怪,尝试参照店里的3.3V版1602液晶跳线(断开J1、J2,接通J3),然后将液晶第三脚通过100Ω电阻连接到3.3V电源,虽然显示正常,但整个液晶工作电流高达84mA,其中负压发生电路工作电流高达80mA,显然不正常,遂放弃此方案。最后还是悬空液晶第三脚,断开J1,接通J2、J3,割开负压输出线,在中间串联了一个10kΩ的电阻,液晶工作电流下降到4mA(其中背光电流2mA)。画外壳的时候用的液晶图纸是另外一家的,屏框比最后买的这一款要大,所以又做了一个边框来填充液晶屏框和上盖之间的缝。这个边框与上盖是用洗板水粘接的。

  外壳壁厚只有2mm,使用沉头螺钉的话PLA有可能会炸开,安装孔就不设计为沉孔了。

附件文件包含原理图、光绘文件、源代码、外壳图纸

猜你喜欢

转载自www.cnblogs.com/elysium/p/8784532.html