關鍵詞:Matlab;聲卡;信號發生器;三角波
聲卡作為多媒體計算機系統中基本常用的硬件之一,其技術已經發展成熟,他同時具有A/D和D/A轉換功能,經濟方便,目前已經被廣泛應用于數據采集和虛擬儀器系統的設計[1,2]。Matlab是一個數據分析和處理功能十分強大的工程實用軟件,他的數據采集工具箱(data acquisition toolbox)為實現數據的輸入和輸出提供了十分方便的函數和命令,利用這些函數和命令可以很容易地實現對外部物理世界的信號輸出和輸入。根據聲卡輸出信號的原理,采用Matlab軟件編程,可以方便地利用聲卡輸出所需要的三角波、正弦波、方波等多種信號,有效地實現信號發生器的基本功能。
1基于Matlab和聲卡的虛擬信號發生器的設計與實現
1.1系統實現原理
通常PC機配置的聲卡提供了麥克風輸入和揚聲器輸出2個接口,他集成了信號輸入/輸出需要 的模/數轉換器(ADC)和數/模轉換器(DAC),因此,利用Matlab軟件產生的各種虛擬信號通過聲卡的DAC單元就可以直接輸出。普通計算機與Matlab軟件相結合實現虛擬信號發生器的系統結構如圖1所示。
1.2基于Matlab的信號發生器的實現方法
Matlab的數據采集工具箱(DAT)提供了一系列的函數和命令來實現實時模擬信號的輸出,通過調用這些函數和命令可以直接控制聲卡輸出虛擬信號,在Matlab中用聲卡產生虛擬信號的過程如圖2所示。
(1) 初始化操作
Matlab將聲卡等設備都作為對象處理,其后的一切操作都不與硬件直接相關,而是通過對該 對象的操作來作用對象,所以,首先要為聲卡建立一個設備對象。Matlab建立設備對象的函數如下:
(2) 添加數據輸出通道操作
Matlab中用于添加數據輸出通道操作的函數為addchannel,其函數格式如下:
(3) 輸出數據操作
Matlab中用于輸出數據操作的函數為putdata,其函數格式如下:
putudata(ao,data)
其中:data為所需要輸出的數據。
(4) 啟動并觸發聲卡設備操作
當完成輸出數據操作后,并沒有真正輸出數據,必須啟動聲卡,才能對外輸出信號,啟動并觸發聲卡設備操作的命令如下:
start(ao)
(5) 停止并刪除聲卡設備操作
信號輸出完成后,聲卡設備仍然保留在計算機系統中,若不將聲卡設備停止并刪除,計算機系統中仍會保留該設備,在下次啟動虛擬信號發生器系統時將會發出聲卡設備仍然在使用的錯誤信息。從系統中停止和刪除聲卡設備操作的命令分別如下:
利用Matlab的數據采集工具箱和圖形用戶接口[3]可以方便地通過設計的界面控制輸出信號的幅度、頻率、寬度等參數,并可以用示波器直接觀測,圖3為虛擬信號發生器系統的主界面,可以用來產生正弦波信號、方波信號、矩形波信號、三角波信號和隨機信號等常用信號。
這里以三角波虛擬信號發生器為例來說明利用Matlab和聲卡輸出三角波信號的具體軟件實現 方法。三角波信號發生器的參數設置界面如圖4所示,他除了可以用于參數設置外,還可以顯示輸出信號的模擬波形。
采用Matlab實現的具體程序如下:
3結語
Matlab的數據采集工具箱和圖形用戶接口提供了十分簡便的實現聲卡輸出功能的命令和函數 ,利用Matlab和聲卡設計虛擬信號發生器十分方便,而在硬件上只需要一塊聲卡,無需添加 任何其他設備,價格十分便宜。雖然聲卡的設計是以產生聲音為目的,有效的音頻范 圍和輸出電壓的幅度在一定程度上限制了他的使用,但這已完全能滿足產生基本信號源的 要求。在本設計的基礎上,通過進一步的Matlab編程或硬件上的改進和擴展,可以實現一些 常規儀器設備不能產生的信號,這在實際應用中具有廣泛的推廣應用前景。
參考文獻
[1]傅俊慶,趙愛瓊. Matlab中基于聲卡的虛擬儀器動態數據分析儀[ J].長沙交通學院學報,2003,19(1):15-18.
[2]王春耀,馮培昌.基于聲卡的虛擬儀器示波器設計[J].電氣自動化,2003 ,25(6):59-61.
[3]張志涌,徐彥琴.Matlab教程——基于6x版本[M].北京:北京航空航天大學出版社,2001