新聞中心

        EEPW首頁 > 手機與無線通信 > 設計應用 > 基于ATmega8的無線智能跳頻數碼擴音系統

        基于ATmega8的無線智能跳頻數碼擴音系統

        作者: 時間:2012-08-27 來源:網絡 收藏

        2.2 接收端接口
        如圖4所示,與NRF24L01連接方式與發射端相同,IO方向設置也與其相同。為了防止NRF24L01返回ACK時造成的電源波動,模擬器件和數字器件都各自使用獨立LDO。由于的IO口較少,內部數個硬件接口使用同一個IO,導致接口沖突。SPI的MOSI和Timer2的OC2共用PB3,SS與Timer1的OC1B共用PB2,最后只有16 bit的Timer1OC1A可使用。通過修改TCCR1A寄存器讓Timer1工作在8bit PWM模式,工作頻率為62.5 kHz。修改OCR1則可以改變OC1B上輸出的PWM占空比。Timer2在比較匹配模式下工作,每隔52μs中斷一次,并修改緩沖區的數據送至Timer1,讓其改變PWM占空比,經過低通濾波器濾去PWM高頻成分后,最終得到音頻信號。

        本文引用地址:http://www.104case.com/article/154068.htm

        d.JPG



        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 結束語
        跳頻器設計方案,是利用 MCU和nRF24L01射頻收發器件,以及跳頻詢址技術進行開發的,在可選工作頻道中自動跳頻,頻道切換時間極短。在無障礙物的直線傳輸條件下實現輸出功率為5 W、發射和接收有效距離在60 m以內。ATmega8 MCU的應用雖然降低了該器的成本,但ATmega8 MCU的性能限制,使擴音效果存在音頻爆音現象。處理的方法有不少,其中可采用窄帶高頻及中頻選頻濾波,外加噪聲數碼抑制電路,有效避免脈沖雜音,多種增強主音源,最大限度抑制了背景噪音,提高了傳音質量。


        上一頁 1 2 3 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 阳曲县| 响水县| 云霄县| 宣化县| 黄冈市| 巫溪县| 保山市| 安远县| 公主岭市| 本溪市| 布拖县| 宁德市| 军事| 垫江县| 灯塔市| 沐川县| 宁安市| 西林县| 西乌珠穆沁旗| 和政县| 平乡县| 安义县| 长寿区| 静宁县| 阿克苏市| 石城县| 桐柏县| 永兴县| 嵩明县| 德昌县| 隆回县| 安远县| 屏南县| 本溪市| 抚顺市| 镇原县| 红河县| 莲花县| 阿勒泰市| 炉霍县| 晋城|