新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 利用PLL(LM567)做頻率解調(diào)的實(shí)例

利用PLL(LM567)做頻率解調(diào)的實(shí)例

作者: 時(shí)間:2016-11-29 來(lái)源:網(wǎng)絡(luò) 收藏
這是最近做的一個(gè)很有意思的案子,是一個(gè)玩具上用的藍(lán)牙控制器。
條件限定為:一個(gè)MONO的藍(lán)牙音頻模塊,把它做成藍(lán)牙遙控器,而且,控制的時(shí)候還要播放主機(jī)走藍(lán)牙過(guò)來(lái)的聲音。
同時(shí),這個(gè)藍(lán)牙模塊沒(méi)有數(shù)據(jù)片可以走,直接輸出載著直流的音頻差分信號(hào)。
討論的結(jié)果就是,在要播放的聲音里混音進(jìn)人耳聽(tīng)不到的頻率部分,然后在藍(lán)牙音頻模塊輸出端把數(shù)據(jù)解調(diào)出來(lái)。
解調(diào)部分


核心部分就是LM567的解調(diào)端,中心頻率設(shè)定在人耳基本聽(tīng)不到的18.5Khz
核心的部分是音調(diào)檢測(cè),用了一款NS家很老的專(zhuān)門(mén)做音調(diào)檢測(cè)的LM567。


其原理就是利用本地RC震蕩產(chǎn)生一個(gè)頻率,與輸入頻率進(jìn)行鑒頻,8腳是專(zhuān)門(mén)做鑒頻輸出用。

f0的公式電容用uF,電阻用KOmh,頻率為kHz

本文引用地址:http://butianyuan.cn/article/201611/323455.htm

算出來(lái)18.5Khz下
Cx=6.8nF
Rx=7.5K
但實(shí)際調(diào)試的時(shí)候RX建議用10K的微調(diào)電阻,因?yàn)槠渌骷赡軙?huì)有誤差

帶寬跟C2和輸入信號(hào)的有效值有關(guān)。
Vi是直接取藍(lán)牙輸出的還沒(méi)過(guò)功放的小信號(hào),振幅很小,所以實(shí)際上電路的帶寬會(huì)很小,這是有利于做頻率辨識(shí)的,以防諧波以及聲音文件里夾雜的各種頻率信號(hào)的干擾。
這里C2用的0.1uF,C3用的10uF。測(cè)量出來(lái)帶寬在500~1kHz左右。
電源用5V,跟后端解碼的單片機(jī)電壓一致。
有18.5Khz輸入的時(shí)候,8腳輸出低電平。
焊好的板子如下~

聲音部分
首先用一個(gè)叫做SweepGen的軟件來(lái)做音頻發(fā)生,用Total Recorder的虛擬聲卡映射把生成的聲音捕捉下來(lái)。



注意SweepGen和Total Recoder默認(rèn)的電平和音量不是0db,記得調(diào)節(jié)到0db的原始聲音狀態(tài)。
在SweepGen里面記得把波形設(shè)置成正弦,因?yàn)?8.5Khz的方波的諧波能聽(tīng)出來(lái)。
編輯聲音妥妥的就得靠Adobe Audition了,cool edit是它的前身。其實(shí)聲音生產(chǎn)也可以用它,只是我沒(méi)找到在哪生成正弦波形。




在Audition里面可以看到,剪輯的聲音頻譜落點(diǎn)很明顯。
解調(diào)部分
因?yàn)椴シ牌髟诓シ诺臅r(shí)候可能會(huì)淡出淡入,以及藍(lán)牙模塊剛開(kāi)始播放的時(shí)候會(huì)開(kāi)啟內(nèi)部codec所以正式的編碼數(shù)據(jù)前要加一段靜音。

經(jīng)過(guò)測(cè)試,18.5Khz的信號(hào)要維持50ms以上,LM567的輸出低電平才跟著18.5Khz的持續(xù)時(shí)間接近,所以一幀數(shù)據(jù)長(zhǎng)度暫時(shí)設(shè)置為50ms。

由于無(wú)輸入的時(shí)候解調(diào)部分輸出為高,所以同步頭用一個(gè)低電平來(lái)做下降沿觸發(fā),在觸發(fā)MCU這邊的中斷后對(duì)IO進(jìn)行采樣,1ms采樣一次,50ms為一個(gè)幀,算上采樣內(nèi)執(zhí)行延時(shí),一幀共采樣32次,超過(guò)16次為低就認(rèn)為是0。

MCU用的是8051核的新塘N79E8132,2塊錢(qián)一顆的單片機(jī)

采樣的代碼段:
for (cntbit=0;cntbit<8;cntbit++)
{
sample=0;
for(samcnt=0;samcnt<32;samcnt++)
{
sample=sample+(P0&0X1); //
Delay1ms(1); //read process
}//
//printf("sample%d = %d ",cntbit,sample);
if(sample <16) //HIGH/LOW LEVEL SET
{
state_t=state_t | (0x1<
}
}

這里的delay是新塘的bsp包里用定時(shí)器標(biāo)志位來(lái)做的,并且用一個(gè)IO反轉(zhuǎn)測(cè)過(guò)執(zhí)行延時(shí)才得出32次循環(huán)50ms的結(jié)果。
RC的頻率是22M。
同步頭設(shè)定為0101,后面四位作為命令位

上一頁(yè) 1 2 下一頁(yè)

關(guān)鍵詞: PLLLM567頻率解

評(píng)論


技術(shù)專(zhuān)區(qū)

關(guān)閉