基于ATmega8的无线扩音系统设计
3 主控软件流程
3.1 发射端软件流程
MCU上电复位后,首先会对SPI接口进行初始化,再进行IO设置。接着再对外设NRF24L01和Timer0初始化。完成对NRF24L01的初始化后,紧接着就是对接收机的搜索。流程图内附有简略算法。与接收机建立握手后就开始对A/D初始化,并开始对音频信号进行采样,将数据保存至A、B两个缓冲区,一旦A缓冲区溢出后新采样的数据就传输至B缓冲区,并将A缓冲区的数据打包发送。紧接着进入接收模式并等待接收端返回ACK。与此同时采集的数据将保存到B缓冲区内。当收到ACK后将进入下一个循环周期。如果10 min内不断发送数据且没有收到ACK则认为和接收端的连接已经中断,这时将进入待机状态。定时器每10 ms触发中断,对当前连接状态通过红绿LED进行显示。正常状态时绿色LED长亮,一旦出现丢包现象则只有红LED长亮,用于告知发射端和接受端的距离过远或信号受到障碍物阻挡、干扰。
3.2 接收端软件流程
接收端的软件实现流程为发射端的逆过程。首先对ATmage8的IO、SPI、定时器、NRF24L01进行初始化,其设置与发射端一致。接着设置NRF24L01为接受状态,MCU将搜索发射端握手信号和空闲频道,如果搜索不到握手信号时将在空闲频道上等待发射主动搜索到该频道。完成信号握手后接收端将会一直等待发射端发送数据包,并把数据包内的数据移至缓冲区,10 min后收不到数据包则进入待机状态。Timer2工作
于比较匹配模式,一旦TNCT2等于OCR2时,MCU会对TNCT2硬件清零,从而产生一个周期为52μs的比较匹配中断,并利用这个中断去从缓冲区读取音频数据至Timer1用于输出PWM占空比。与此同时,timer也将产生一个10 ms的中断用于LED显示连接状态,实现原理与发射端的一致。
4 性能测试
无线智能跳频数码扩音器实现射频频率在2.4~2.5 CHz的数码传输。在无遮挡直线传输的条件下,有效距离达60 m。收、发机可自动应答和重发。频响为100 Hz~10 kHz。信噪比>45 dB。在125个可选工作频道中自动跳频,频道切换时间极短。发射器工作状态电流最大为12 mA,静待状态电流最大为0.06 mA,输出功率5 W,数据速率为2 Mbit·s-1。
5 结束语
无线智能跳频数码扩音器设计方案,是利用ATmega8 MCU和nRF24L01射频收发器件,以及智能跳频询址技术进行开发的,在可选工作频道中自动跳频,频道切换时间极短。在无障碍物的直线传输条件下实现输出功率为5 W、发射和接收有效距离在60 m以内。ATmega8 MCU的应用虽然降低了该扩音器的成本,但ATmega8 MCU的性能限制,使扩音效果存在音频爆音现象。处理的方法有不少,其中可采用窄带高频及中频选频滤波,外加噪声数码抑制电路,有效避免脉冲杂音,多种增强主音源,最大限度抑制了背景噪音,提高了传音质量。
- 基于AVR单片机的臭氧治疗仪设计方案(09-12)