呂鑫,姚輝,伍遠(yuǎn)征
(西安通信學(xué)院,西安 710106)
呂鑫(碩士研究生),主要研究方向?yàn)閱纹瑱C(jī)系統(tǒng)與儀器儀表。
USB總線具有傳輸速度快、應(yīng)用范圍廣、即插即用等優(yōu)點(diǎn),成為當(dāng)前主流的串口通信標(biāo)準(zhǔn)。本文設(shè)計(jì)了由FT245BL、MSP430F149單片機(jī)以及 Labview構(gòu)成的4通道簡(jiǎn)易數(shù)據(jù)采集系統(tǒng),并對(duì)此系統(tǒng)的原理及實(shí)現(xiàn)方法進(jìn)行了介紹。
數(shù)據(jù)采集系統(tǒng)的一般原理如圖1所示。本采集系統(tǒng)中,4路被測(cè)信號(hào)先通過(guò)信號(hào)調(diào)理電路轉(zhuǎn)換為適合A/D采樣的電信號(hào),然后由MSP430F149單片機(jī)內(nèi)部的 A/D轉(zhuǎn)換器將電信號(hào)轉(zhuǎn)換為數(shù)字信號(hào),最后通過(guò)USB接口接入PC機(jī),并在PC機(jī)上利用Labview軟件構(gòu)建采集界面。

圖1 數(shù)據(jù)采集系統(tǒng)的原理圖
單片機(jī)采用TI公司的MSP430F149芯片。MSP430F149為16位混合信號(hào)處理器,突出特點(diǎn)是超低功耗,正常工作時(shí)電流在200 μ A左右,低功耗模式可實(shí)現(xiàn)2 μ A 甚 至 0.1 μ A 的低功 耗[1]。MSP430F149 內(nèi)置8路12位的SAR型高速A/D轉(zhuǎn)換器,其轉(zhuǎn)換速率可達(dá)到200 ksps,可以在沒(méi)有CPU干預(yù)的情況下進(jìn)行16次獨(dú)立采樣并保存結(jié)果。采用片內(nèi)的A/D轉(zhuǎn)換不僅可以降低系統(tǒng)的復(fù)雜性,而且可以提高系統(tǒng)的可靠性,避免了接口的復(fù)雜性[1]。
信號(hào)調(diào)理電路主要將各種傳感器探測(cè)到的電信號(hào)轉(zhuǎn)換為適合A/D采集的電信號(hào)。對(duì)于本系統(tǒng),片內(nèi)ADC的參考電壓為3.3 V,采用外接方式,因此需要通過(guò)一個(gè)高輸入阻抗、低輸出阻抗的4路高精度放大濾波電路將電信號(hào)范圍轉(zhuǎn)換為0~3.3 V。
USB接口電路如圖2所示。USB控制芯片采用FTDI公司的FT245BL。FT245BL是完全集成化的USB接口模塊,滿足USB1.1/2.0標(biāo)準(zhǔn),無(wú)需用戶編寫驅(qū)動(dòng)程序,其內(nèi)部結(jié)構(gòu)圖可參照FTDI公司的官方網(wǎng)站[2]。FT245BL的主要功能是在內(nèi)部硬件邏輯的作用下實(shí)現(xiàn)USB串行數(shù)據(jù)格式與并行數(shù)據(jù)格式的雙向轉(zhuǎn)換,中間的轉(zhuǎn)換工作全部由芯片自動(dòng)完成,無(wú)需考慮硬件的設(shè)計(jì)[2]。
本程序設(shè)計(jì)中,采樣信號(hào)采用時(shí)序電路產(chǎn)生的信號(hào)。時(shí)鐘源采用5 MHz的內(nèi)部振蕩器ADC12OSC,轉(zhuǎn)換模式設(shè)置為序列通道多次轉(zhuǎn)換,通過(guò)合理設(shè)置ADC12MCTLx寄存器,選擇采樣通道并將轉(zhuǎn)換結(jié)果存放到相應(yīng)的ADC12MEMx寄存器中。依據(jù)以上設(shè)置,ADC12模塊轉(zhuǎn)換結(jié)果的計(jì)算公式為:

其中,NADC為轉(zhuǎn)換的結(jié)果,VIN為輸入的模擬電壓。
USB既可接收上位機(jī)發(fā)送的指令,也可將采樣值實(shí)時(shí)發(fā)送到PC機(jī)上。當(dāng)單片機(jī)掃描接收數(shù)據(jù)標(biāo)志為1,且P2.6口檢測(cè)到低電平時(shí),表明可以向PC機(jī)發(fā)送數(shù)據(jù);然后單片機(jī)通過(guò)8位數(shù)據(jù)總線D0~D7發(fā)送數(shù)據(jù),通過(guò)信號(hào)WR由高到低的變化讀入數(shù)據(jù),當(dāng)P2.6口為低電平時(shí),表明此次數(shù)據(jù)發(fā)送完成,可以進(jìn)行下一次數(shù)據(jù)的發(fā)送。主程序流程如圖3所示。

圖2 USB接口電路

圖3 主程序流程
2.2.1 驅(qū)動(dòng)的安裝
FT245BL芯片的最大優(yōu)點(diǎn)是免去了復(fù)雜的固件編程和驅(qū)動(dòng)程序的編寫。FTDI公司免費(fèi)提供虛擬串行口VCP驅(qū)動(dòng)程序和動(dòng)態(tài)鏈接庫(kù)D2XX驅(qū)動(dòng)程序,安裝 VCP驅(qū)動(dòng)的傳輸速率最高可達(dá)到 300 KB/s,安裝D2XX驅(qū)動(dòng)的傳輸速率最高可達(dá)到1 MB/s。當(dāng) USB接口與主機(jī)連接后,在PC機(jī)上安裝FTDI公司免費(fèi)提供的版本號(hào)為2.08.02的驅(qū)動(dòng)程序和壓縮文件,該驅(qū)動(dòng)程序兼容Windows 2000/XP/Vista/7等操作系統(tǒng)。安裝好驅(qū)動(dòng)后,打開(kāi)設(shè)備管理器,查看端口和通用串行總線控制器,分別出現(xiàn)了“USB Serial Converter”和“USB Serial Port”,這樣就完成了USB驅(qū)動(dòng)的安裝。FT245BL芯片的使用,簡(jiǎn)化了USB數(shù)據(jù)接口的設(shè)計(jì),加快了USB系統(tǒng)的開(kāi)發(fā)進(jìn)程。
2.2.2 應(yīng)用程序設(shè)計(jì)
安裝驅(qū)動(dòng)后,USB與主機(jī)實(shí)現(xiàn)連接,但Labview軟件不直接支持非NI公司的數(shù)據(jù)采集設(shè)備,此系統(tǒng)采用調(diào)用動(dòng)態(tài)鏈接庫(kù)來(lái)實(shí)現(xiàn)Labview與采集設(shè)備的連通。所謂動(dòng)態(tài)鏈接庫(kù)(DLL)是指應(yīng)用程序在運(yùn)行時(shí)與庫(kù)文件鏈接的技術(shù)。它是在應(yīng)用程序運(yùn)行時(shí)被裝入和鏈接的,而不是把源代碼復(fù)制到應(yīng)用程序中去,因此可實(shí)現(xiàn)多個(gè)應(yīng)用程序之間代碼和資源的共享。Labview可以通過(guò)調(diào)用庫(kù)函數(shù)節(jié)點(diǎn)實(shí)現(xiàn)對(duì)動(dòng)態(tài)鏈接庫(kù)中函數(shù)的調(diào)用。
在程序框中的互連接口,選擇調(diào)用庫(kù)函數(shù)節(jié)點(diǎn),雙擊左鍵出現(xiàn)調(diào)用庫(kù)函數(shù)對(duì)話框。根據(jù) Labview與DLL的參數(shù)對(duì)應(yīng)關(guān)系填寫好DLL文件的路徑、被調(diào)用函數(shù)名、參數(shù)的類型及返回類型。需要注意的是,當(dāng)調(diào)用多個(gè)函數(shù)時(shí)要分別填寫參數(shù)的個(gè)數(shù)和對(duì)應(yīng)的類型,而且在調(diào)用過(guò)程中應(yīng)保持?jǐn)?shù)據(jù)位的一致。填好單擊OK按鈕后,Labview將自動(dòng)生成各參數(shù)的入口及出口狀態(tài),這樣就實(shí)現(xiàn)了Labview與DLL的調(diào)用[3]。在實(shí)現(xiàn)采集前,需要調(diào)用一些庫(kù)函數(shù)對(duì)系統(tǒng)進(jìn)行一些設(shè)置,通過(guò)調(diào)用FT_ListDevices()函數(shù)可得到設(shè)備的描述和USB接口的運(yùn)行狀態(tài)。按照此類調(diào)用方法,通過(guò)調(diào)用FT_OpenEx()函數(shù)得到句柄,通過(guò)調(diào)用FT_Write()、FT_Read()實(shí)現(xiàn)對(duì)USB接口的讀寫操作,還可以根據(jù)自己的設(shè)計(jì)需要調(diào)用其他函數(shù)來(lái)實(shí)現(xiàn)比特率、奇偶校驗(yàn)碼設(shè)定等功能,這些設(shè)置可以參照FTDI公司的參考文檔[4]。根據(jù)設(shè)計(jì)需求,依次調(diào)用所需的函數(shù)實(shí)現(xiàn)對(duì)采集系統(tǒng)的設(shè)置。此外,根據(jù)設(shè)計(jì)的采樣速率,需要在上位機(jī)建立一個(gè)緩存。
數(shù)據(jù)采集系統(tǒng)要實(shí)現(xiàn)4通道數(shù)據(jù)采集,因此采用數(shù)組的讀寫方式。由圖4可知,單片機(jī)與USB接口的通信是通過(guò)并口實(shí)現(xiàn)的,而并口傳送的最大數(shù)值為255,采樣范圍為0~4 095,因此需要在單片機(jī)的發(fā)送程序中編寫數(shù)據(jù)轉(zhuǎn)換程序,將采樣值分別轉(zhuǎn)換為千位、百位、十位、個(gè)位,依次進(jìn)行傳送,上位機(jī)通過(guò)串口接收數(shù)據(jù)后依次進(jìn)行還原。

圖4 USB通信方式
為了數(shù)據(jù)能夠穩(wěn)定地傳輸,當(dāng)單片機(jī)接收到上位機(jī)發(fā)送的指令后,首先發(fā)送一個(gè)標(biāo)識(shí)符,標(biāo)識(shí)符采用并口發(fā)送數(shù)值15,隨后用數(shù)據(jù)轉(zhuǎn)換程序依次通過(guò)并口發(fā)送4個(gè)通道的數(shù)據(jù),上位機(jī)通過(guò)對(duì)標(biāo)識(shí)符的識(shí)別將接收到的數(shù)據(jù)進(jìn)行還原。

圖5 采集系統(tǒng)運(yùn)行后的前面板
用數(shù)字萬(wàn)用表(當(dāng)量程為2 V時(shí),分辨率為1 mV)分別測(cè)量4路直流電信號(hào),分別測(cè)得1.267 V、0.743 V、0.812 V、0.494 V。將這4路信號(hào)與單片機(jī)的轉(zhuǎn)換接口P6.0~P6.1相連,采集系統(tǒng)運(yùn)行后的前面板如圖5所示。
將上述采樣值按照公式(1)轉(zhuǎn)換為電壓,與電壓表的誤差最大不超過(guò)0.02 V。
編者注:單片機(jī)程序和Labview部分程序見(jiàn)本刊網(wǎng)站www.mesnet.com.cn。
本文介紹了一種簡(jiǎn)易4通道數(shù)據(jù)采集系統(tǒng)。測(cè)試表明,該數(shù)據(jù)采集系統(tǒng)結(jié)構(gòu)簡(jiǎn)單,成本低,界面美觀,可對(duì)多個(gè)通道數(shù)據(jù)進(jìn)行準(zhǔn)確測(cè)量。在此架構(gòu)下,可根據(jù)應(yīng)用需求選用相應(yīng)的微控制器和模/數(shù)轉(zhuǎn)換器件。
[1]謝興紅,林凡強(qiáng),吳雄英.MSP430單片機(jī)基礎(chǔ)與實(shí)踐[M].北京:北京航空航天大學(xué)出版社,2008.
[2]Future Technology Devices International Limited.FT245BL Data Sheet[OL].[2011-05].www.ftdichip.com.
[3]T Jeffrey,K Jim.Lab VIEW大學(xué)實(shí)用教程[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.