呂鑫,姚輝,伍遠征
(西安通信學院,西安 710106)
呂鑫(碩士研究生),主要研究方向為單片機系統(tǒng)與儀器儀表。
USB總線具有傳輸速度快、應用范圍廣、即插即用等優(yōu)點,成為當前主流的串口通信標準。本文設計了由FT245BL、MSP430F149單片機以及 Labview構成的4通道簡易數(shù)據(jù)采集系統(tǒng),并對此系統(tǒng)的原理及實現(xiàn)方法進行了介紹。
數(shù)據(jù)采集系統(tǒng)的一般原理如圖1所示。本采集系統(tǒng)中,4路被測信號先通過信號調理電路轉換為適合A/D采樣的電信號,然后由MSP430F149單片機內部的 A/D轉換器將電信號轉換為數(shù)字信號,最后通過USB接口接入PC機,并在PC機上利用Labview軟件構建采集界面。
圖1 數(shù)據(jù)采集系統(tǒng)的原理圖
單片機采用TI公司的MSP430F149芯片。MSP430F149為16位混合信號處理器,突出特點是超低功耗,正常工作時電流在200 μ A左右,低功耗模式可實現(xiàn)2 μ A 甚 至 0.1 μ A 的低功 耗[1]。MSP430F149 內置8路12位的SAR型高速A/D轉換器,其轉換速率可達到200 ksps,可以在沒有CPU干預的情況下進行16次獨立采樣并保存結果。采用片內的A/D轉換不僅可以降低系統(tǒng)的復雜性,而且可以提高系統(tǒng)的可靠性,避免了接口的復雜性[1]。
信號調理電路主要將各種傳感器探測到的電信號轉換為適合A/D采集的電信號。對于本系統(tǒng),片內ADC的參考電壓為3.3 V,采用外接方式,因此需要通過一個高輸入阻抗、低輸出阻抗的4路高精度放大濾波電路將電信號范圍轉換為0~3.3 V。
USB接口電路如圖2所示。USB控制芯片采用FTDI公司的FT245BL。FT245BL是完全集成化的USB接口模塊,滿足USB1.1/2.0標準,無需用戶編寫驅動程序,其內部結構圖可參照FTDI公司的官方網(wǎng)站[2]。FT245BL的主要功能是在內部硬件邏輯的作用下實現(xiàn)USB串行數(shù)據(jù)格式與并行數(shù)據(jù)格式的雙向轉換,中間的轉換工作全部由芯片自動完成,無需考慮硬件的設計[2]。
本程序設計中,采樣信號采用時序電路產(chǎn)生的信號。時鐘源采用5 MHz的內部振蕩器ADC12OSC,轉換模式設置為序列通道多次轉換,通過合理設置ADC12MCTLx寄存器,選擇采樣通道并將轉換結果存放到相應的ADC12MEMx寄存器中。依據(jù)以上設置,ADC12模塊轉換結果的計算公式為:
其中,NADC為轉換的結果,VIN為輸入的模擬電壓。
USB既可接收上位機發(fā)送的指令,也可將采樣值實時發(fā)送到PC機上。當單片機掃描接收數(shù)據(jù)標志為1,且P2.6口檢測到低電平時,表明可以向PC機發(fā)送數(shù)據(jù);然后單片機通過8位數(shù)據(jù)總線D0~D7發(fā)送數(shù)據(jù),通過信號WR由高到低的變化讀入數(shù)據(jù),當P2.6口為低電平時,表明此次數(shù)據(jù)發(fā)送完成,可以進行下一次數(shù)據(jù)的發(fā)送。主程序流程如圖3所示。
圖2 USB接口電路
圖3 主程序流程
2.2.1 驅動的安裝
FT245BL芯片的最大優(yōu)點是免去了復雜的固件編程和驅動程序的編寫。FTDI公司免費提供虛擬串行口VCP驅動程序和動態(tài)鏈接庫D2XX驅動程序,安裝 VCP驅動的傳輸速率最高可達到 300 KB/s,安裝D2XX驅動的傳輸速率最高可達到1 MB/s。當 USB接口與主機連接后,在PC機上安裝FTDI公司免費提供的版本號為2.08.02的驅動程序和壓縮文件,該驅動程序兼容Windows 2000/XP/Vista/7等操作系統(tǒng)。安裝好驅動后,打開設備管理器,查看端口和通用串行總線控制器,分別出現(xiàn)了“USB Serial Converter”和“USB Serial Port”,這樣就完成了USB驅動的安裝。FT245BL芯片的使用,簡化了USB數(shù)據(jù)接口的設計,加快了USB系統(tǒng)的開發(fā)進程。
2.2.2 應用程序設計
安裝驅動后,USB與主機實現(xiàn)連接,但Labview軟件不直接支持非NI公司的數(shù)據(jù)采集設備,此系統(tǒng)采用調用動態(tài)鏈接庫來實現(xiàn)Labview與采集設備的連通。所謂動態(tài)鏈接庫(DLL)是指應用程序在運行時與庫文件鏈接的技術。它是在應用程序運行時被裝入和鏈接的,而不是把源代碼復制到應用程序中去,因此可實現(xiàn)多個應用程序之間代碼和資源的共享。Labview可以通過調用庫函數(shù)節(jié)點實現(xiàn)對動態(tài)鏈接庫中函數(shù)的調用。
在程序框中的互連接口,選擇調用庫函數(shù)節(jié)點,雙擊左鍵出現(xiàn)調用庫函數(shù)對話框。根據(jù) Labview與DLL的參數(shù)對應關系填寫好DLL文件的路徑、被調用函數(shù)名、參數(shù)的類型及返回類型。需要注意的是,當調用多個函數(shù)時要分別填寫參數(shù)的個數(shù)和對應的類型,而且在調用過程中應保持數(shù)據(jù)位的一致。填好單擊OK按鈕后,Labview將自動生成各參數(shù)的入口及出口狀態(tài),這樣就實現(xiàn)了Labview與DLL的調用[3]。在實現(xiàn)采集前,需要調用一些庫函數(shù)對系統(tǒng)進行一些設置,通過調用FT_ListDevices()函數(shù)可得到設備的描述和USB接口的運行狀態(tài)。按照此類調用方法,通過調用FT_OpenEx()函數(shù)得到句柄,通過調用FT_Write()、FT_Read()實現(xiàn)對USB接口的讀寫操作,還可以根據(jù)自己的設計需要調用其他函數(shù)來實現(xiàn)比特率、奇偶校驗碼設定等功能,這些設置可以參照FTDI公司的參考文檔[4]。根據(jù)設計需求,依次調用所需的函數(shù)實現(xiàn)對采集系統(tǒng)的設置。此外,根據(jù)設計的采樣速率,需要在上位機建立一個緩存。
數(shù)據(jù)采集系統(tǒng)要實現(xiàn)4通道數(shù)據(jù)采集,因此采用數(shù)組的讀寫方式。由圖4可知,單片機與USB接口的通信是通過并口實現(xiàn)的,而并口傳送的最大數(shù)值為255,采樣范圍為0~4 095,因此需要在單片機的發(fā)送程序中編寫數(shù)據(jù)轉換程序,將采樣值分別轉換為千位、百位、十位、個位,依次進行傳送,上位機通過串口接收數(shù)據(jù)后依次進行還原。
圖4 USB通信方式
為了數(shù)據(jù)能夠穩(wěn)定地傳輸,當單片機接收到上位機發(fā)送的指令后,首先發(fā)送一個標識符,標識符采用并口發(fā)送數(shù)值15,隨后用數(shù)據(jù)轉換程序依次通過并口發(fā)送4個通道的數(shù)據(jù),上位機通過對標識符的識別將接收到的數(shù)據(jù)進行還原。
圖5 采集系統(tǒng)運行后的前面板
用數(shù)字萬用表(當量程為2 V時,分辨率為1 mV)分別測量4路直流電信號,分別測得1.267 V、0.743 V、0.812 V、0.494 V。將這4路信號與單片機的轉換接口P6.0~P6.1相連,采集系統(tǒng)運行后的前面板如圖5所示。
將上述采樣值按照公式(1)轉換為電壓,與電壓表的誤差最大不超過0.02 V。
編者注:單片機程序和Labview部分程序見本刊網(wǎng)站www.mesnet.com.cn。
本文介紹了一種簡易4通道數(shù)據(jù)采集系統(tǒng)。測試表明,該數(shù)據(jù)采集系統(tǒng)結構簡單,成本低,界面美觀,可對多個通道數(shù)據(jù)進行準確測量。在此架構下,可根據(jù)應用需求選用相應的微控制器和模/數(shù)轉換器件。
[1]謝興紅,林凡強,吳雄英.MSP430單片機基礎與實踐[M].北京:北京航空航天大學出版社,2008.
[2]Future Technology Devices International Limited.FT245BL Data Sheet[OL].[2011-05].www.ftdichip.com.
[3]T Jeffrey,K Jim.Lab VIEW大學實用教程[M].喬瑞萍,林欣,等譯.3版.北京:電子工業(yè)出版社,2008:136-137.
[4]Future Technology Devices International Limited.FT245BL Data Sheet.Software Application Development D2xx Programmer's Guide[OL].[2011-05].www.ftdichip.com.