图2 Abacom公司的AM-HRR3-433接收机
在没有接收信号的时候,接收机模块的输出满是毛刺和噪音。我用示波器观察发现一点信号都没有,因?我住在乡村地区。正因?这个原因必须使用Abacom公司的NKM2401-N芯片。接收机中NKM2401-N的模式?(第4?)接地,使其工作于解码模式。用一个普通PNP三极管反相器向服务器PC提供虚拟 RS232电平信号。
LM2936CZ5低压差整流器?接收机提供5V直流电。大多数时间接收机模块都连在MP3服务器计算机的串行端口上,然而出于工作需要,有时遥控单元必须连接到PC(例如下载歌名列表的时候),因此我制作一根短电缆把PC上的DB9插座接到一个5pin DIN插头上,接收机和遥控单元均用配对的5pin DIN插座,这样你就可以按需要把设备连起来了。
Abacom公司的接收机/发射机模块与NKM2401-N配合使用非常可靠。无?发送指令是本设计的一个亮点。唯一觉得不足的是不能把433MHz接收机和FM发射机模块装在同一个机箱内。当把FM发射机放在接收机旁边时,发射机的RF输出会对接收机灵敏度有轻微影响,造成无?连接仅能在20码范围内工作,跟我的预期目标相比发射距离太近了。然而当我把FM发射机装进机箱里?把它放到离433MHz接收机几码远的地方时,发射距离近的问题解?了,这时发射距离增加到约50码(注意这仍然在室内)。
FM发射机
我构想这个设计的时候就预料到一定会有一些设计中的难点或者编程上的问题。开始我总认?制作一个小型FM发射机是很容易的事,所以我把这项工作留到最後完成。然而正如墨菲定律所说的一样,当初我认?最简单的事情到最後?成?整个设计中最棘手和最耗费时间的部分。
曾经谣传基于Rohm BA1404 IC的FM立体声发射机套件经常会因?工作不稳定而导致无法使用,不过我还是鬼使神差地买了这个套件。唉,谣传是真的──它的频率稳定性实在是太差了,以致不能和现代数字调谐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发射机。
10年前可以很容易取得频率高达1GHz的256分频预分频器芯片,但这些芯片现在都听?了,因此我用74F161计数器来实现16分频。该器件工作频率大于100MHz,成本低于1美元?且容易买到。
我用2N5485制作了一个VCO。VCO的振荡频率主要取?于L1和C12的值。C12?微调电容,发射机第一次通电时,用其对频率进行微调使发射机工作在指定频率上。只有装上J1使微控制器把DAC输出设置在中间值时,才可以进行微调,之後把跳?去掉。当发射机再次通电後,自动频率稳定器电路开始工作,振荡器被变容二极管D1微调到指定频率。74F161需要几伏的信号作?时钟,这可以用FET振荡器实现(其它大多数形式的振荡器没有这样的能力)。
振荡器的RF输出从L1的抽头取出以?小负载的影响。RF输出用电容耦合到74F161预分频器第一级的时钟输入。调整分压器R7?时钟输入端提供适当的偏置,使振荡信号触发输入分频级。把它设定在2~2.5V之间较好,最好用示波器调整设定,使74F161的11?输出得到乾净的5~6MHz的波形。
控制VCO微调的12位DAC U14采用TI公司带SPI接口的DAC7611。虽然AT90S2313不具备用户SPI端口(它的SPI端口只严格地配合闪存编程工作),但用PB1~PB4 I/O?可以简单地实现发送SPI数据到DAC的功能。
图4中AT90S2313下面的跳?J1与PD6端口?连接,复位时微控制器检测该端口?的状态。如果J1处于连接状态,它只不过会把DAC设置在中间值,接著进入等待。这时你可以调节微调电容把振荡器的频率设定在最接近指定频率的地方使误差最小。北美地区所有FM广播均把频率设定?100KHz的奇数倍,随便选一个就行了。
做完这个後,接著去掉跳?再给发射机通电。这时发射机应在几秒时间内反复调整DAC电压,?经过预分频器反复测量振荡器输出频率使其返回指定频率。这就是随後用作FM发射机模块的正常工作模式。
从主机声卡输出的立体声音频信号先经过一个预加重网络(每个声道都要)混合成一个单声道信号,该信号?加在DAC的直流控制电压上对振荡器的输出进行调频。