張虎 任明 朱曉駿



摘要:本設計是實現用機器人模仿演奏者現場敲擊木琴的動作和順序的裝置。使用PC端的聲卡和LabVIEW軟件作為音頻信號的采集和處理裝置,并編輯成譜。通過串口通信將處理好的音譜發送給Mcu,MCU讀取并轉換數據。MCU根據得到的數據控制2自由度舵機作為執行裝置,來模仿演奏者的敲擊動作,重現演奏過程。
關鍵詞:機器人;木琴演奏;模式識別;LabVIEW;舵機控制
中圖分類號:TP399 文獻標識碼:A
文章編號:1009-3044(2020)10-0218-03
隨著社會科技化進程的推進,像LabVIEW,MATLAB之類的上位機軟件的應用越來越多,版本更新的功能也越來越強大。它們擁有強大的數字處理和運算能力,可以在頻域上精準的分析音頻信號。同時越來越多的人使用機器人代替人類的勞動,像掃地機器人,炒飯機器人等。基于這樣的大背景下,將軟硬件相結合,能夠更好地為人們服務。
1總體設計思路
我們使用PC機自帶的錄音設備,用LabVIEW軟件調用Windows底層函數使用計算機的聲卡,利用LabVIEW的處理能力將聲卡傳人的數據進行頻域上的分析,將輸入的這一段音頻信號和已經設定后的頻率區間做比對,在相應的區間內輸出相應的值并按先后順序編輯成一維數組,之后通訊發送給單片機,單片機開始讀取數據,將數據轉換成控制舵機的PWM的脈寬,控制舵機敲擊木琴。從而實現由音頻信號控制舵機動作再重現音頻信號的過程。
2基本方案
2.1采集
計算機的麥克風和聲卡可以將語音信號轉換為電信號,經過A/D轉換器,以數字信號傳人計算機。在LabVIEW里面有一系列使用Windows底層函數編寫的與聲卡有關的函數,可在函數選板的[編程]-[圖像與聲音]-[聲音]-[輸入]的子選板中查找使用。在LabVIEW中調用這些函數可將聲音輸入Lab-VIEW,然后對聲音進一步處理如圖1所示(以濾取兩個頻段為例)。
2.2數字濾波
濾波器類型選用低通濾波器,低通濾波器有許多不同的逼近方法,我們選擇BuUerworth(巴特沃斯)逼近。Butterworth濾波器的平方幅度響應為:
wc:低通濾波器的截止頻率。
n:濾波器的階數。
同時也使用FFT數字濾波控件(快速傅里葉變換)。Lab-VIEW提供了MATLABScript節點連接主流算法仿真分析軟件MATLAB,可以在節點中編輯程序,能夠很好地解決復雜數值的運算,充分發揮了MATLAB強大的數據處理能力,流程如圖2所示。
數字濾波器濾波時,模擬信號量化后,利用數字系統進行數字運算實現濾波。低通數字濾波器的特性就是只能讓低頻分量通過,阻止高頻分量的通過。在BuUerworth濾波器將接收到的輸入信號進行FFT處理,處理的結果經過D/A轉換輸出信號。
2.3模式識別
“模式識別”是本設計的一大特色。我們使用LabVIEW來對聲音進行處理,在頻域上分析捕捉固定的頻段如圖3f以兩路為例)。因為取得的聲音信號是混合信號,所以需要用到提取混合單頻信息vI控件,選用vI控件的detected signal多頻導出模式并且設置頻率范圍,我們所需要的木琴頻段為166Hz-2100Hz,各個音階的頻率為264Hz(doul,297Hz(re),330Hz(mi),352Hz(fa),396Hz(s01),440Hz(1a),495Hz(si)。通過連線數據到時間信號輸入,然后通過混合單頻信息通道提取出需要的信號?;旌蠁晤l信息返回vI提取出的每個單頻信號的頻率、幅值和相位。其數組的元素是時間信號輸入中某個信號的混合單頻信息。由于采集的每個音頻不是整數,因此要標定某個區間為某個音階。利用取整函數將其轉化為整型,并按先后順序排成數組編輯成譜。
可通過下列方程表示實數多頻信號(包含N個單頻):
2.4舵機控制
LabVIEW將處理好的數據(樂譜)利用串口通訊發送給MCU,接著MCU開始執行數據控制舵機轉動固定角度進行敲擊。我們使用的是2自由度舵機,下舵機控制左右旋轉,上舵機控制上下敲擊。這時候就要考慮到旋轉的最小角度是否符合要求,因為下舵機掃過的是一個扇形區域,距離舵機越遠兩個音符之間相對的舵機旋轉角越小,距離舵機越近旋轉角越大。因此舵機分度越小,敲擊動作就越精確效果越好。裝置最終的固定需要不斷地根據實際情況進行調整,才能找到最合適的位置。
我們將木槌固定在舵機臂上,通過改變PWM波的占空比來控制2自由度舵機模仿演奏者的敲擊動作??刂苾群瞬捎肧TC89C52RC單片機,開啟兩個定時器中斷Timer_O和Timer_1。Timer_O控制下舵機左右旋轉,Timer_l控制上舵機上下敲擊。舵機型號我們選用Tower pro SG-5010 180度舵機,控制信號周期為20ms中置脈寬為1.5ms+0.02ms,旋轉脈寬范圍為0.5ms-2.5ms。因為STC89C52RC單片機內部沒有自帶的PWM,我們通過STC89C52RC的GPIO輸出高低電平來模擬PWM波。通過控制高電平在一個周期內輸出的時間長短來調節占空比大小,進而控制舵機旋轉的角度。
設置定時器中斷時間計算:
為了方便計算以及設置定時器裕量,設定時間為200us進入一次定時器中斷。
在中斷中設置100次重復計數變量。通過接收的一維數組(樂譜)中的數據大小來控制是第多少次進入中斷翻轉GPIO的電平,來實現周期為20ms的PWM波的輸出。
用按鍵來取反主通道標志,當主通道標志置位時,單片機main函數讀取并執行接收到的數據,每讀取一個數據,下舵機開始動作,轉動到目標位置后,置位下舵機完成標志,復位上舵機完成標志,并關閉Timer_O,開啟Timer_l。上舵機控制函數當檢測到下舵機的完成標志置位時開始動作,敲擊后返回初始狀態,置位上舵機完成標志,復位下舵機完成標志,并關閉Timer_1,開啟Timer_O。當單片機檢測到上舵機完成標志置位后,開始讀取下一個數據,依次循環直至讀完數組,完成所有動作。之后main函數復位主通道標志,返回待命狀態,這樣就完成了一個完整的敲擊過程。
3結束語
以軟硬件結合的方式,實現音階的捕捉與再現,用機器代替人來工作是本設計的主體思想。LabVIEW軟件是使用圖形化的語言,是一個既操作簡便,又功能強大的軟件,在LabVIEW中提供了許多的Script,為嵌入其他的軟件提供平臺。可以通過USB與MCU進行數據傳輸,將LabVIEW的實時數據發送給MCU。進而控制執行裝置按設定好的方式動作,實現“重現”的目的。本設計還可以用于其他方面,像敲揚琴、敲石琴、打鼓等。另外還可以嵌入到各種樂器或音頻設備里面,將設備智能化,科技化。例如嵌入到鋼琴內部,根據捕捉到的鋼琴的音階來彈鋼琴。還可用于判斷演奏者有沒有揍錯音階,作為初等音樂考試評判設備。