范治政,劉永春,郭志庭
(四川理工學院 自動化與電子信息學院 四川省院士(專家)工作站,自貢 643000)
在工業生產、電氣設備監測過程中常常要求對各種信號進行同步記錄,以便分析信號之間的關系,作出相應的預測與控制[1]。數據采集與分析對于提高工業生產、優化生產線、及時發現設備故障等都有重要的意義。以NI公司為代表生產的數據采集卡過于昂貴,在數據采集過程中,對那些不要求超高速采集和處理的控制系統,這類采集卡顯得過于浪費資源。采用Ardunio和LabVIEW快速構建低成本、多功能的USB采集卡,可適用于這些場合。Ardunio是國外比較流行的電子開源平臺,開發者為不同型號的Ardunio編寫有bootloader,以便于管理和引導程序。編程者只需要掌握C/C++就可以快速地進行開發,以及做出屬于自己的庫文件。在數據采集和控制系統中,采用VC、Delphi、VB等面向對象開發平臺開發上位機監控軟件存在開發周期長、測試效率低等問題[2]。而使用LabVIEW開發周期短、界面控件豐富、內置豐富的信號處理VI、可以大大地提高效率。
系統總體結構如圖1所示。數據采集系統核心部分由上位機監控軟件和下位機Ardunio控制器組成。上位機監控軟件通過USB總線向Ardunio發送數據采集指令,下位機收到指令開始采集數據。傳感器采集到模擬信號經過信號調理電路,送到A/D轉換器轉換為數字量,數字信號經光電耦合隔離電路送到控制器I/O口采集。采集數據通過CH340T芯片緩沖區送到USB通道中,由上位機監控軟件進行分析處理。根據數據分析處理結果,可以調節Ardunio的2路PWM占空比和6路數字輸出,對設備進行控制。

圖1 系統總體結構圖Fig.1 System overall structure
Ardunio是一款便捷的開源電子平臺控制器,包含有各種型號的Ardunio硬件和IDE開發環境。Ardunio主要是基于Atmel公司的微處理器進行高度封裝,開發者不用了解底層硬件就可以控制處理器,現階段已有32位微處理器支持Ardunio。Ardunio主控電路如圖2所示。
Ardunio選用第三代uno板,在原版的基礎上重新設計電路圖,以適應采集卡的需要。電路設計預留出了5 V和3.3 V接口,可直接為各種數字式傳感器提供電源。保留原版的ICSP接口,用于升級bootloader。第三代 Ardunio控制器總共有 6路PWM,系統只使用2路。6路模擬輸入管腳用于采集多通道模擬數據。14路I/O口(包含6路PWM),6路用于數字輸入檢測,6路用于數字量輸出。片內資源豐富:32 K Flash、2 K SRAM、1 K E2PROM。Ardunio管腳編號固定,同一類板卡,不同型號之間的程序可以相互使用,這是Ardunio板的巨大優勢。

圖2 系統主控電路圖Fig.2 System main control circuit diagram
采用CH340T芯片作為轉換接口。使用之前需要安裝驅動程序,從官方網站下載驅動安裝之后可進行數據傳輸。CH340T芯片是全速USB接口,兼容USBV2.0,全雙工串口,內置緩沖區,支持通訊率50 b/s~2 Mb/s。外加電平轉換器件可提供 RS232、RS485、RS422等接口,采用5 V或3.3 V供電。USB轉串口電路圖如圖3所示。

圖3 USB接口轉換電路Fig.3 USB interface conversion circuit
RXD和TXD管腳分別與主控器RXD、TXD管腳相連接。UD-和UD+與USB接口的D-和D+連接,在電源和地之間加有0.1 μF耦合電容。12 MHz晶振和電容構成芯片運行的時鐘。USB接口端分別接上16 kΩ匹配電阻,防止高速信號出現反射現象[3-4]。
下位機程序主要包括初始化控制器管腳、設置波特率、發送數據子程序、接收命令子程序、數據轉化程序等。為增強程序的可讀性和調試方便,把相關程序做成頭文件。由于Ardunio的頭文件均采用了C++編寫,需要嚴格遵守類和繼承有關的要求以及Ardunio庫文件的格式。系統中用到的幾個頭文件 :#inclue

圖4 下位機流程圖Fig.4 Flow chart of lower machine
Ardunio上電或者復位后會初始化內部寄存器和分配I/O引腳,等待上位機發送指令。上位機將指令轉換為十六進制數據發到下位機,指令中包含2個字節校驗碼。下位機通過校驗碼,校驗發送指令是否正確。加入校驗碼進行通訊可以屏蔽掉一些電平干擾,防止下位機進行誤操作,損壞設備。校驗碼正確后,下位機判別指令功能執行相應程序。如接收到模擬采集數據指令,下位機將模擬數值以ASCLL碼格式通過USB接口發送到上位機。當收到PWM更新指令時,根據上位機發送的占空比,下位機改寫PWM函數中參數值,輸出更新PWM。
實驗過程中采用了LabVIEW 2013開發上位機監控軟件。下位機中選用了CH340T芯片進行USB轉串口通訊。LabVIEW中串口通訊接口主要是采用的VISA節點,VISA是高層API調用。VISA函數集中包含有與串口配置VI。調用串口節點配置VI,配置串口節點的波特率、數據位數等相關參數就可以和下位機進行數據交換。上位機監控軟件流程如圖5所示。

圖5 上位機流程圖Fig.5 Flow chart of host computer
數據分析處理的流程為通過VISA中的串口寫入和串口讀取VI,上位機能夠向串口發送命令、讀取數據。從串口中讀取數據后,要立即釋放串口,使串口持續讀取下位機數據。讀取數據中分為模擬數據和數字量。讀取模擬數據易受到各種電磁干擾,讓模擬數據通過濾波器后再進行處理。LabVIEW作為自動化專業的測試測量軟件,提供諸如Bessel、Elliptic、Buterworth等I2R濾波器[5]。根據采集的模擬信號種類,將數據送入對應濾波器,進行濾波。濾波完成再將數據送到波形和數值顯示控件中,進行顯示。同時將采集的數據生成報表文件,供以后查詢。數據分析部分主要是利用Matlab和LabVIEW混合編程實現。在LabVIEW中可以通過ActiveX技術實現和Matlab交換數據[6]。這種交換方式只能滿足一般要求,實時性存在一定的問題?,F有的高級版本中主要通過Matlab腳本和MathScript實現[7]。由于MathScript的實時性能較好,系統設計時優先選用。以數字輸入檢測為例闡述數據采集處理過程:當數字采集通道1被選中,同時采集按鍵發生值改變。上位機向下位機發送采集數字通道1指令。寫入指令后,等待串口緩沖區獲取數據,然后讀出數據,與常量0做比較,結果送入布爾顯示控件。根據數據分析結果,上位機向VISA寫VI中送入指令代碼,改變下位機中的開關量輸出、PWM占空比。校驗指令和控制指令一起寫入Buffer緩沖區,通過轉換芯片以16進制方式發送到下位機。一次控制結束后,立即釋放串口資源。
實驗過程中,在采集卡周圍放置3個通電運行的直流電機,以測試系統抗干擾能力。分別采用實驗室的信號發生器、心率采集器、壓力傳感器、溫度傳感器測試采集數據能力。以溫度采集為例,實驗中采用LM35溫度傳感器。LM35溫度傳感器輸出模擬電壓,片內有溫度補償電路,當前環境每上升1℃,輸出電壓增加10 mV。溫度模擬電壓數據由模擬通道0采集,采集轉換數據時,只保留了溫度整數位數,小數部分未保留。轉化溫度在溫度實驗選項卡顯示。實驗效果如圖6和圖7所示。

圖6 模擬數據采集Fig.6 Analog data acquisition

圖7 溫度實驗效果圖Fig.7 Experimental result of the temperature
文中采用了Ardunio做為采集數據主控器,結合LabVIEW虛擬儀器開發了數據采集系統。借用虛擬儀器強大的信號處理和儀器控制功能,完成對采集數據的分析和外部設備控制。采用開源Ardunio和LabVIEW聯合開發,降低了開發成本,縮短開發周期。通過一系列的實驗表明,系統運行良好,能夠達到預期要求。
[1]邢磊,鄭萍.多通道高速數據采集系統的設計與實現[J].儀表技術與傳感器,2012(11):116-118,148.
[2]吳桂清,朱院娟,郭斯羽,等.基于LabVIEW的旋轉機械振動在線監測系統設計[J].傳感器與微系統,2012,31(6):104-107.
[3]周青云,王建勛.基于USB接口與LabVIEW的數據采集系統設計[J].實驗室研究與探索,2011,30(8):238-240.
[4]張亮,李杰,張天佑.USB接口芯片CH376在專用控制系統中的應用[J].兵工自動化,2014,33(3):51-53.
[5]呂東陽,王顯軍.基于LabVIEW的電機轉臺數據采集及監控系統[J].測控技術,2014,33(4):75-78.
[6]李貴娥,麻紅昭,沈家旗,等.電渦流檢測技術及影響因素分析[J].傳感技術學報,2009,22(11):141-145.
[7]陳樹學,劉萱.LabVIEW寶典[M].北京:電子工業出版社,2011.