基于AT90S2313-4PC的MP3无线遥控自动点播机 (上)
定而导致无法使用,不过我还是鬼使神差地买了这个套件。唉,谣传是真的──它的频率稳定性实在是太差了,以致不能和现代数字调谐FM接收机配合工作。即使我用高质量的RF调谐元件替换了原来的便宜货,问题依然存在。了取得心理平衡我只能这想∶这个IC是在数字FM接收机发明前设计的,其不能与数字调谐FM接收机配合工作情有可原。老式模拟FM接收机具备自动频率控制电路,有可能会克服这个发射机套件的频飘吧。
我找到了一个PLL稳频的FM发射机套件,但其高达200美元的价格对本设计来说太不合算了。几年前我曾经做过几个10-400MHz范围的PLL频率发生器,因此我想尝试自己制作FM发射机。
不过那是恶梦的开始。我过去所用的PLL芯片现在买不到了。目前大多数的PLL IC是专门用于移动电话之类的,它们在低于100MHz下不能稳定工作。虽然我也找到了一些针对FM发射用的IC,但它们的封装形式太小以致不能焊接。
在这种情况下我决定另辟蹊跷。因此我必须用微控制器来控制PLL芯片,为什么我不完全丢掉PLL芯片而用微控制器测量和控制振荡频率?我所想的可以认?是一个自动稳频器。
我的想法可以用图3描述。振荡频率主要由电感和可变电容设定。本设计中我把调谐范围大概定在88~92MHz,这两方面的原因∶第一,FM波段低端商业电台较少;更重要的是96MHz是该电路能测量的最高频率。
图3 FM发射机框图
确了稳定性和FM调制两个目的,振荡器由一个变容二极管控制频率微调。变容二极管的电容量由加在它上面的偏置电压定。这个偏置电压由两个分量控制。12位 DAC提供的直流电平和一个交流信号双重作用在变容二极管上以实现频率调制。DAC的输出电压初始值设置在中间值(2V),通过手动调整可变电容(微调)把振荡器调到指定的频率,其後微控制器会稍微上下调整DAC的输出电压来稳定这个频率。
要用微控制器测量振荡器的频率必须先把它进行16预分频。这可由普通的74F161 4位分频器完成。预分频输出大概在5~6MHz频率范围,这个频率可以用微控制器的16位计数器/定时器进行计数。
确了确定振荡频率,先把16位计数器清零,经过设定的时间间隔之後再把它的值读出来。设定时间间隔由微控制器中另一个计数器/定时器编程控制,每5.461ms周期中断一次。这样16位计数器中的值可以这样计算∶
Counter/timer Value=(fosc/16)×(5.461×10-3)
实际操作时微控制器读出16位定时器的值把它与用你选择的频率代人上述方程计算出来的一个常数进行比较。如果振荡频率太低了DAC的值就会向上加1再试;相反地如果振荡频率太高了,DAC值就1。如此反复直到振荡器的频率落在你所选频点附近的很窄的带宽内。
这个电路一般来说可能会一直处于搜索状态,有两个原因∶第一,因为在采样时间内振荡器信号的变化会使计数器/定时器总会出现1次计数误差;第二,由于振荡器被音频信号进行频率调制,其频率会随著这个调制电压而变化。
我们是不希望出现一直搜索的情的,因为这会导致接收机收到的音乐中夹著调制声。避免这种情发生,微控制器一旦把频率调定,就进入期10分钟的 "休眠"状态,10分钟过後再检测一次频率。除非室内温度出现较大变化,否则振荡器就几乎不用修正,本电路就可保证正常工作。
AVR AFC
在我详细描述怎样实现自动频率控制FM发射机前,请先看一下图4以有一个感性认识。首先我需要一个可以对6MHz频率进行计数的微控制器且该微控制器还必须具备另外一个定时器,用来发出读计数器和清零计数器的中断冲。我选用Atmel AT90S2313-10PC,因它内部含有我所需要的功能。然而我必须让它在超出它额定频率10MHz的12MHz频率下工作以获得6MHz频率的计数能力。顺便说一下,这样适当对Atmel AT90S2313"超频"到目前为止还没有出现过什么问题。
图4 自动微调的发射机单元
当发射机制作完成设定在某个信道之後FM振荡器频率就可确定。因此,简化操作,在程序开头我输入了所需的发射频率作为常数,程序经编译以後下载到AT90S2313做成一个固定频率的FM发射机。
- 视频MP3音/视频设计的新需求 (03-09)
- 手机TFT显示驱动的解决方法和应用方法 (04-21)
- 基于MCU和音频解码器设计磁带式MP3播放器 (06-20)
- 基于AT90S2313-4PC的MP3无线遥控自动点播机(下)(07-24)
- 基于CH375的U盘MP3播放器设计(02-05)
- 基于ISP1362的U盘MP3播放器设计(05-01)