袁越陽,陳宇清,孫建國,馬小林
(1.湖南城市學院機電工程學院 湖南 益陽 413099;2.蘇州凱迪泰醫學科技有限公司 江蘇 蘇州 215163;3.上海交通大學附屬胸科醫院 上海 徐匯區 200030)
聲覺報警被廣泛應用于醫療電子設備和儀器,且要求具有4 次以上泛音,以保證音頻信號的空間定位,方便操作人員迅速確定報警發生源頭,提高服務效率[1-2]。但目前許多醫用設備所提供的聲覺報警存在諸多缺陷[3-4],如對音頻信號的解碼編碼算法比較落后,通常只是采用簡單的脈沖群或重放錄音來完成;缺少泛音或含有諸多噪音,不能很好的反映報警信號之間的區別或所代表的患者需求。類似這類聲覺報警容易引起患者易怒、緊張和不愉快,有時甚至導致病情惡化并威脅到患者的生命[5-7]。為了獲得一種更加符合患者需求的聲覺報警,本文對Goertzel 算法進行簡化,把它從復數領域簡化到實數領域,并開發設計了基于嵌入式單片機的應用程序,以實現多泛音的正弦波聲覺報警信號輸出。
Goertzel 算法的基本形式是一次只計算一個頻點的傅里葉分量,目前主要用于數字信號的頻譜分析[8-10],如應用于DTMF 等只需有限頻率點的場合。當系統只關注頻帶內部分頻率的信號時,使用該算法會有較高的效率[11]。在以往的應用中,它也常被用于生成頻率信號[12],如對于處理中低音頻信號,利用Goertzel 算法能達到有效結果。本文運用簡化的Goertzel 來實現醫用聲覺報警信號輸出,并開發以嵌入式單片機LM3S9B92 為控制器的算法應用程序,實現輸出基音頻率為500 Hz 的正弦音頻信號及其2~5 次泛音信號。

為了實現式(3)中的正弦信號,基于二階無限脈沖響應(IIR)[14]數字濾波器原理,建立如式(4)所示的正弦信號遞歸算式。式中第(n?1)和第(n?2)步的計算結果分別乘以系數“p”和“q”后作為第n 步的輸入。
根據sin(A±B)= sinAcosB±cosAsinB 三角和差定理,將式(4)右邊展開:
令a[n]、a[n?1]、a[n?2]滿足:
得到:
給定基音頻率f0、信號采樣頻率fs,N 為fs/f0的比,得到一組由基音頻率為f0和2~N?1 次泛音(k=0,1,2,···N?1)組成的聲覺報警信號數學表達式:
鑒于IEC60601-1-8 行業標準的要求[1-2],聲覺報警信號的基音頻率范圍規定在150 Hz~1 kHz之內,且泛音數量不少于4 個。根據式(7)的遞歸算法,設定基音頻率f0為500 Hz,2~5 次泛音頻率分別為1、1.5、2 和2.5 kHz。據Nyquist-Shannon 定律[15],設定采樣頻率fs=25 kHz(或采樣周期為40 μs)。
軟件設計如圖1 所示,采用時間間隔為40 μs的定時中斷程序。當時間中斷發生后,系統首先清零泛音計數器k。然后累加每一步的計算結果到Y[n] 中,直到k>N(本設計N 為6),把總和Y[n]輸出。輸出數據經數模轉換(DAC)后以模擬信號輸出。每次定時中斷結束前,步計數器n 增加1 為下一步做準備。
設計硬件電路如圖2 所示。圖中U1 選用美國德州儀器公司生產的32 位ARM Cortex-M3 嵌入式單片機LM3S9B92 為數據處理器,其系統時鐘頻率通過內部鎖相環處理外部輸入4 MHz 時鐘信號后高達80 MHz。U1 的輸出腳PA0、PA1 和PA2分別作為信號輸出端口連接U2 數模轉換器DAC7512(12 bit)的信號輸入腳SYNC(同步信號輸入)、SCLK(時鐘信號輸入)和DIN(數據輸入)。從處理器U1 端口輸出的數字信號經U1 數模轉換成模擬信號,并輸出給U3 信號放大器(LM2904DR2G),最后經U4 音頻驅動集成電路(LM490TS)輸出音頻信號驅動揚聲器發聲。數據處理器U1 和數碼轉換器U2 的工作電源為3.3 V 直流電源。信號放大器U3 和音頻驅動器U4 的工作電源電壓為12 V 直流電源。采用分離數字地和模擬地的辦法避免模擬信號和數字信號通過地線串擾。
將編譯后的程序代碼燒寫到數據處理器并且上電運行,得到圖3 所示信號。圖3a 為一個基音周期的信號波形(示波器為TDS2012C),其最大峰峰值達20 V。圖3b 為設置示波器工作在math 分析模式下所得頻率譜,其基音頻率和2~5 次泛音頻率分別為0.5、1、1.5、2 和2.5 kHz,且具有相同的幅度。整個頻譜曲線顯示噪音幅度均低于基音幅度的5%。

通過虛擬示波器和頻譜儀觀察仿真結果如圖5所示。圖5a 和5b 仿真所得波形和頻譜與本文設計實驗所得圖3a 和3b 的結果相一致。
基于本文的設計和分析,每個頻率點的計算量為只需把前兩步結果相加后做一次乘以系數x[k]的運算。若式(7)中Y[n]再乘以一個在時域上按一定規律變化的系數A[n],則可以得到不同包絡的信號群。如圖6a 所示A[n]滿足紡錘形變化要求所得信號群波形。
改變式(7)中的基音頻率f0便可得到不同的音調。表1 為常用的中音對應的音頻。利用表中不同音調的排列組合,可以得到豐富的報警用樂音。如通常采用的醫用[1]聲覺高級、中級和低級報警音調“CCC-CC”、“CCC”和“EC”,只需依次將表1 中對應的頻率代入式(7)中的基音頻率f0便可。如圖6b 所示波形為發出高級報警“CCCCC”的音頻信號波形。

表1 常用中音C 調所對應的頻率
為便于嵌入式單片機應用程序編程,本文將復數領域的Goertzel 算法簡化實數領域的算法,并應用該簡化的Goertzel 算法推導建立了輸出聲覺報警信號的數學遞歸函數。本文所建函數輸出具有基音及多倍頻率泛音特征的正弦音頻信號。
本文開發設計了基于嵌入式單片機的應用程序和音頻驅動電路,以實現輸出基音頻率為500 Hz和包括2~5 次泛音在內的音頻信號為例,應用本文所建遞歸算法進行試驗,測試得到具有低噪聲、豐富高次泛音的聲覺報警信號。