終于把頻譜顯示做出來(lái)了,不過(guò)只用來(lái)顯示頻譜似乎太單調(diào)了,所以又順便做了個(gè)耳放,這樣就比較實(shí)用了!功放制作花費(fèi)大,而耳放我倒是沒(méi)有做過(guò)(成本相對(duì)比較低),所以就選擇它了!
這個(gè)方案用的是CD3315+TDA2822+Mega8L,外加一片LM386做電平移動(dòng)。同時(shí),把模擬信號(hào)放大到適合MEGA8ad采樣的程度。整個(gè)方案使用芯片比較少,成本相對(duì)較低,最貴就是那些點(diǎn)陣了(總共用了三個(gè)點(diǎn)陣來(lái)顯示頻譜)。
數(shù)字部分原理圖
模擬部分原理圖
上面給出的整個(gè)系統(tǒng)電路圖,包括兩數(shù)字部分和模擬部分。其實(shí),電路圖比較簡(jiǎn)單,代碼編寫(xiě)倒是很花時(shí)間。
整個(gè)系統(tǒng)采用一個(gè)mega8控制,代碼比較多。這次用mega8也算是用到極致了:用了一個(gè)外部中斷(紅外接收)、兩個(gè)定時(shí)器(一個(gè)adc采樣,一個(gè)掃描點(diǎn)陣),同時(shí)加上內(nèi)部eeprom存儲(chǔ)DSP音頻設(shè)置數(shù)據(jù)。(本來(lái)還加了pwm功能,實(shí)在是代碼沒(méi)地方寫(xiě)了,最后舍棄了)
模擬部分
前端音頻處理。這個(gè)耳放通過(guò)CD3315可以對(duì)音頻信號(hào)實(shí)現(xiàn)非常好的處理。輸入到TDA2822驅(qū)動(dòng)耳機(jī),可以很明顯聽(tīng)出處理前后的效果,尤其是音質(zhì)不怎么樣的mp3或者其他音頻,只要通過(guò)CD3315進(jìn)行高低音的調(diào)節(jié),就可以調(diào)出非常好的效果(媲美媚族MP3音質(zhì))。
不過(guò),耳機(jī)不能太爛。CD3315(PT2315,TDA7315)這幾個(gè)芯片都是管腳通用的音頻數(shù)字調(diào)節(jié)芯片,一塊芯片就可以實(shí)現(xiàn)對(duì)兩個(gè)聲道的音頻信號(hào)的主音量、高/低音、左/右聲道、超重低音、靜音實(shí)現(xiàn)數(shù)字控制,而且效果特好。
后端輸出采用TDA2822(這個(gè)是一個(gè)雙聲道的音頻放大芯片,常用于收音機(jī)和錄音機(jī)上)。和CD3315搭配起來(lái),效果非常好,驅(qū)動(dòng)能力大,音質(zhì)也不錯(cuò)。
整個(gè)系統(tǒng)的電源全部來(lái)自USB(可以從電腦或MP3充電器上取電),因?yàn)橄到y(tǒng)功耗不是很大(不過(guò),無(wú)論是電腦電源還是MP3電源,都是開(kāi)關(guān)電源,紋波都比較大,所以如何抑制紋波是一個(gè)重點(diǎn)!我通過(guò)實(shí)驗(yàn)發(fā)現(xiàn),加電感可以很好的抑制紋波!比加電容效果好得多),所以,從USB得到電源之后就把正負(fù)電源線(xiàn)都經(jīng)過(guò)電感,同時(shí),數(shù)字和模擬部分也都用電感連接,在沒(méi)有聲音輸入的時(shí)候,耳機(jī)里也聽(tīng)不到噪聲!
因?yàn)橄到y(tǒng)會(huì)偶爾斷電,所以要保證時(shí)鐘在斷電之后也能正常跑,就必須加備用電源!(供ds1302用)我選擇的是用電容充電來(lái)提供電壓,用兩個(gè)4700uF的電容并聯(lián)供電(據(jù)網(wǎng)友介紹,一個(gè)100uF的電容就可以跑1個(gè)小時(shí))。
數(shù)字部分
1、主控部分由mega8控制。
整個(gè)系統(tǒng)的運(yùn)行都是在mega8控制之下工作。系統(tǒng)分兩個(gè)模式:音樂(lè)模式(M00)和時(shí)鐘模式(M01),系統(tǒng)默認(rèn)進(jìn)入音樂(lè)模式。
在音樂(lè)模式下,mega8主要處理FFT和頻譜顯示,同時(shí)兼顧紅外遙控對(duì)該模式下的一些數(shù)據(jù)進(jìn)行修改。在時(shí)鐘模式下,mega8則主要控制時(shí)鐘顯示,同時(shí)監(jiān)視鬧鐘,同音也兼顧紅外遙控,以修改時(shí)鐘或鬧鐘。在音樂(lè)模式下,如果長(zhǎng)時(shí)間沒(méi)有音頻信號(hào)輸入,則系統(tǒng)自動(dòng)跳到時(shí)鐘模式顯示時(shí)間。
程序流程
2、ADC采樣。
音頻信號(hào)因?yàn)槭怯姓?fù)的,而mega8又不支持對(duì)負(fù)電壓進(jìn)行采樣。所以,要一個(gè)電平移動(dòng)電路,同時(shí)由于有時(shí)音頻信號(hào)會(huì)比較小,需要放大適當(dāng)倍數(shù)才比較好處理。所以我采用了一個(gè)LM386。這個(gè)芯片不但可以實(shí)現(xiàn)信號(hào)放大,更重要的是,可以實(shí)現(xiàn)電平轉(zhuǎn)移。把原來(lái)的正負(fù)信號(hào),轉(zhuǎn)換為單一極性的信號(hào)。
選擇200倍的固定增益,然后通過(guò)在輸入端加一個(gè)可調(diào)電阻,控制輸出大小,這樣很好的解決了adc的采樣問(wèn)題。
3、FFT變換。
根據(jù)納醛斯特律,音頻信號(hào)的最高頻率大概20Khz,所以adc的采樣頻率設(shè)置為40Khz。FFT根據(jù)這個(gè)采樣頻率,計(jì)算各個(gè)頻率分量的幅值大小。因?yàn)閙ega8的sram只有1K,所以最大只能支持64點(diǎn)的FFT變換,也就是顯示的頻段最多32個(gè),實(shí)際上由于第一個(gè)頻率是直流分量,所以只有31個(gè)頻段。
設(shè)fo 為adc的采樣頻率,N為傅立葉變換的點(diǎn)數(shù),則最小分辨頻率f為:f=fo/N。這樣,這個(gè)頻譜顯示的最低頻率就是625Hz,每向右移一個(gè),頻率加625Hz。
正因?yàn)檫@樣,所以低頻頻段的頻譜顯示不是很好。不過(guò),可以通過(guò)加大采樣點(diǎn)數(shù)或者降低采樣頻率來(lái)提高最小分辨率。
4、點(diǎn)陣驅(qū)動(dòng)。
這個(gè)耳放的驅(qū)動(dòng)我用595來(lái)做列驅(qū)動(dòng),行驅(qū)動(dòng)用了d882,這個(gè)驅(qū)動(dòng)電流比較大(Ice=3A)。595驅(qū)動(dòng)電流大,而且具有三態(tài)輸出,比74164好用。理論上計(jì)算,要達(dá)到1A的電流才能滿(mǎn)足要求,但實(shí)踐發(fā)現(xiàn),整個(gè)系統(tǒng)跑起來(lái)也不到200ma,d882有點(diǎn)大材小用。這樣,由這兩種實(shí)現(xiàn)了點(diǎn)陣的行列的驅(qū)動(dòng),再用一個(gè)595控制8個(gè)d882,大大減少了對(duì)mega8的io口使用。
接收部分直接用一個(gè)38k的接收頭。整個(gè)系統(tǒng)的硬件:
頻譜顯示:
頻譜顯示
頻譜顯示
頻譜顯示
頻點(diǎn)測(cè)量:
1.825Khz時(shí),對(duì)應(yīng)的頻顯
(審核編輯: 智匯小新)
分享