用USB接口的數據采集系統,使用簡單方便,無需外接電源,還可以利用PC機強大的運算能力處理數據。這類系統一般都要用單片機做接口控制,對于不會使用單片機的人是個難題。這里介紹一個不用單片機的USB數據采集系統,只要會用VB編程就可以實現。 一、系統的硬件 構成本系統的電原理如上圖,CH371是USB接口芯片,MAX197多路AD轉換器做數據采集,電腦對采集的數據進行處理。 CH371是南京沁恒電子出品的一種簡單易用的USB接口芯片,它包括芯片本身和計算機端的通用驅動程序。CH371以硬件邏輯實現了USB通信協議傳輸控制的整個過程,通用驅動程序通過軟件向計算機應用層提供設備級接口,因此用戶不必考慮USB通信協議、固件程序、驅動程序、底層數據傳輸過程等,就可以設計出各種USB接口設備。 CH371有多種工作方式,除了數據傳輸方式外,它還可以工作在一種主控方式,即使沒有連結單片機、DSP等控制器,也可以輸出控制信號和輸入數據。CH371的D7"D0、A3"A0都是雙向引腳,它們可以被分為兩組,分別設置用于輸入或輸出。把CH371的A3"A0與MAX197的CS、WR、RD、HBEN四根輸入控制線相連,把D7"D0和MAX197的并行數據端口相連,就可以通過軟件直接控制MAX197的工作。 MAX197是MAXIM推出的12位AD轉換器,單5伏供電,內置4.096伏電壓基準,外圍電路很簡單,僅需外接幾只電容就可以工作。MAX197有內外兩種時鐘和采樣模式,模擬輸入量程和極性可選,有0"5伏、0"10伏、±5伏、±10伏四種。有8個模擬輸入通道。所有這些都可以通過軟件來選擇,即向MAX197寫入一個字節的控制字來實現,控制字的各位功能見下表: 位 PD1 PD0 ACQMOD RNG BIP A2 A1 A0 功能 內外時鐘和電源管理模式 內外控制采樣模式 模擬信號量程 模擬信號極性 模擬輸入通道選擇 二、系統的軟件設計 1. CH371計算機端的軟件接口 CH371在計算機端提供了三個層次的軟件接口,最高層是應用層接口。應用層接口是由CH371動態鏈接庫DLL提供的面向功能應用的API函數。每個函數實現一個具體的功能,并用簡便易用的API參數代替設備級接口中所要求的數據格式,所有API在調用后都有操作狀態返回,用戶只要選擇特定的API函數就可以實現所需的功能。 CH371動態鏈接庫DLL提供的的API函數包括設備管理、數據傳輸、中斷查詢、I2C操作和直接控制等幾類,我們這里要用的是兩個直接控制函數。 CH371GetStatus(ByVal iIndex As Long, ByVal iStatus As Long,ByRef iDataReg As Long)As Boolean 它的功能是通過CH371直接輸入數據和狀態,其中iIndex指定CH37設備序號,iStatus指向一個雙字單元,用于保存狀態數據。Bit7"Bit0對應CH371的D7"D0引腳。IDataReg指向一個雙字單元,用于保存數據寄存器的數據。 CH371SetControl(ByVal iIndex As Long, ByVal iCtrData As Byte, ByVal iCtrlAddr As Byte,ByVal iData0e As Boolean, ByVal iAddr0e As Boolean)As Boolean 它的功能是通過CH371直接輸出控制信號。ICtrData是準備寫入D7"D0數據寄存器的數據, iCtrlAddr是準備寫入A3"A0數據寄存器的數據, 它們都必須在輸出使能時才可以輸出數據。iData0e控制D7"D0輸出使能,1輸出、0輸入。iAddr0e控制A3"A0輸出使能,1輸出、0輸入。 2. VB應用程序應用程序是用VB編寫的,它的核心就是調用上述兩個API函數,通過CH371的D7"D0和A3"A0向MAX197寫入控制字,啟動模數轉換,最后讀出轉換結果。VB要使用CH371動態鏈接庫中的API函數,首先要用Declare語句在全局模塊的代碼段聲明這些函數,CH371芯片廠商在其提供的VB DEMO中,有兩個MODULE已經包含了CH371所有的API函數,用戶只需要在自己的工程項目中將其加入即可。通過這兩個函數調用,向MAX197寫入控制字,設定模數轉換器的工作方式、選擇輸入通道、啟動模數轉換,最后讀入轉換結果,存入電腦,再做進一步處理。 |