趙飛 武力 郭堅
摘要:為了實現(xiàn)對多路電壓輸出的實時控制,基于STM32單片機和NI公司的編程軟件LabView,設(shè)計了一個多路電源控制系統(tǒng),實現(xiàn)多路可調(diào)電壓的輸出控制。系統(tǒng)以STM32單片機作為主控芯片,采用高速串設(shè)接口控制三片DAC8420,通過串口接收上位機發(fā)送的命令控制12路電壓輸出,操作簡單,輸出信號精度高。
關(guān)鍵詞:Labview;電壓控制;單片機;串行通信
中圖分類號: TP334 文獻標(biāo)識碼: A 文章編號:1009-3044(2014)22-5377-03
可調(diào)的多路電壓輸出在很多場合有廣泛的應(yīng)用,針對目前多路電壓輸出裝置多采用手動調(diào)節(jié)的狀況,設(shè)計一種程控裝置,采用單片機為核心,控制電壓輸出電路,以NI公司的虛擬儀器開發(fā)軟件LabView開發(fā)應(yīng)用程序,發(fā)送輸出指令,人機界面友好,相應(yīng)速度快,能夠?qū)崿F(xiàn)快速、精確、多路的電壓輸出。
1 系統(tǒng)結(jié)構(gòu)和功能
基于單片機和LabView的多路電壓輸出控制系統(tǒng)由基于單片機的電壓輸出控制裝置和基于LabView的上位機應(yīng)用程序兩部分組成,它們之間通過串口進行通信。系統(tǒng)架構(gòu)圖如圖1所示。
整個系統(tǒng)主要實現(xiàn)輸出電壓的控制和調(diào)節(jié),其中基于單片機的電壓輸出控制裝置通過串口接收上位機發(fā)出的指令,經(jīng)過數(shù)據(jù)處理后,通過高速串行接口控制DAC8420轉(zhuǎn)換為相應(yīng)的模擬量輸出?;贚abView的上位機程序主要實現(xiàn)串口通信、提供友好的人機界面進行電壓輸入調(diào)節(jié)控制功能。
2 基于單片機的多路電壓輸出控制裝置設(shè)計
2.1 總體設(shè)計
根據(jù)系統(tǒng)需要實現(xiàn)的功能,基于單片機的電壓輸出控制裝置的硬件結(jié)構(gòu)以STM32F103RBT6為核心,外圍電路包括電源電路、時鐘和復(fù)位電路、串口通信電路、DA轉(zhuǎn)換電路等。其中多路電壓輸出的核心器件為DAC8420。系統(tǒng)硬件結(jié)構(gòu)如圖2所示。
2.2 電源電路設(shè)計
系統(tǒng)采用專用穩(wěn)壓芯片提供系統(tǒng)工作的電源,交流電通過變壓器降壓再經(jīng)過整流后接到穩(wěn)壓模塊上,輸出各個模塊需要的電壓。由于單片機供電電壓為3.3V,串行通信接口芯片MAX232工作電壓為5V,DAC8420VDD為15V、VSS為-15V,VREFHI和VREFLO分別為+10V和-10V。電源部分采用ASM1117-3.3、ASM1117-5.0分別提供單片機和MAX232工作電壓,由7810和7910輸出正負(fù)10V電壓,7815和7915輸出正負(fù)15V電壓。同時在電源電壓轉(zhuǎn)換過程中進行濾波處理,在模擬和數(shù)字電源中加入電感和電容組成去耦電路來抑制干擾。
2.3 串行通信電路設(shè)計
單片機與LabView通信采用串口,STM32單片機內(nèi)置3個USART,完全支持RS232協(xié)議,具有很高的傳輸速率。本系統(tǒng)的電平轉(zhuǎn)換芯片采用MAX3232,可以同時完成發(fā)送和接收轉(zhuǎn)換雙重功能,串口通信電路如圖3所示。
上位機通過串口將不同通道的電壓值設(shè)定好發(fā)送給單片機,單片機接收的數(shù)據(jù)包含了通道、電壓值、量程、極性等信息,同時單片機在接收到上位機的命令后將返回同樣的狀態(tài)信息。因此,需要設(shè)定上位機和單片機的通信協(xié)議。該文設(shè)計的數(shù)據(jù)格式如表1所示。
2.4 D/A轉(zhuǎn)換電路
單片機接收來自上位機應(yīng)用程序的指令,經(jīng)過數(shù)據(jù)處理后轉(zhuǎn)換為相應(yīng)的數(shù)字信號控制電壓的輸出,其中D/A轉(zhuǎn)換由DAC8420完成。DAC8420是AD公司生產(chǎn)的4路輸出12位DAC,功耗低,轉(zhuǎn)換精度高,為簡化電路設(shè)計,采用高速串行接口方式[1]。參考電壓采用正負(fù)10V,實現(xiàn)電源電壓范圍內(nèi)的正負(fù)單極性或雙極性信號擺幅,通過設(shè)置輸入VREFHI和VREFLO而確定輸出電壓范圍,從而極大的提高設(shè)計靈活性。本系統(tǒng)中DAC8420的電源電壓接正負(fù)15V,參考電壓接正負(fù)10V,可以實現(xiàn)-10V到+10V范圍內(nèi)的可調(diào)電壓輸出。其余STM32單片機的連接如圖4所示。根據(jù)DAC8420的工作時序,STM32向DAC8420寫數(shù)據(jù)時,先將片選信號CS置0,并將異步DAC寄存器載入控制信號LD置1,然后由串行數(shù)據(jù)輸入引腳將符合DAC8420格式的數(shù)據(jù)輸入DAC8420內(nèi)部的串/并轉(zhuǎn)換寄存器。由SDI輸入的16位數(shù)據(jù)中,頭兩位A1,A2用于選擇寄存器A-D,后12為D11-D0是具體的數(shù)值,解碼器根據(jù)兩位數(shù)據(jù)判斷數(shù)據(jù)移入的寄存器。當(dāng)數(shù)據(jù)輸入完畢后,再將LD置1,并在LD的下降沿將數(shù)據(jù)移入一寸器A-D,最后將LD置1、CS置1,完成一次轉(zhuǎn)換。
3 基于LabView的上位機程序設(shè)計
3.1 總體設(shè)計
基于LabView的上位機程序主要通過串口發(fā)送指令,同時通過上位機對各個通道的電壓值進行設(shè)置和調(diào)節(jié),實現(xiàn)串口通信是上位機程序設(shè)計的關(guān)鍵。除了串口通信功能,上位機程序還應(yīng)實現(xiàn)下面的功能:調(diào)節(jié)通道選擇、量程選擇、調(diào)節(jié)步長選擇、超量程報警和按設(shè)定步長調(diào)節(jié)功能。
3.2 LabView串口通信實現(xiàn)
串口通信是實現(xiàn)上位機程序的關(guān)鍵。這里利用LabView自身強大的驅(qū)動庫,用其被打包好的VISA驅(qū)動來實現(xiàn)[2]。要在LabView中使用串口操作節(jié)點,首先要在電腦中安裝NI VISA驅(qū)動,安裝VISA驅(qū)動庫后,可在Instrument I/O模板的Serial子模板中找到串口操作的各個節(jié)點。
LabView串口操作主要用到5種節(jié)點:VISA Configure Serial Port:串口配置節(jié)點,可進行串口號和波特率的設(shè)置;VISA Read:串口讀節(jié)點,用以讀取串口接收緩沖區(qū)的數(shù)據(jù);VISA Write:串口寫節(jié)點,用以向串口發(fā)送緩沖區(qū)寫入數(shù)據(jù);VISA Flush I/O Buffer:用以清空緩存區(qū);VISA Close:關(guān)閉串口。
3.3 人機界面設(shè)計
人機界面采用LabView2013進行開發(fā),采用滑動桿控件和編輯框輸入控件實現(xiàn)對不同通道電壓的輸入,利用組合框控件下拉選擇量程和步長,利用LabView自身的VISA驅(qū)動編程實現(xiàn)串口數(shù)據(jù)的收發(fā),軟件可以實現(xiàn)對十二通道任意一個通道的電壓進行設(shè)置和調(diào)節(jié),同時可以通過軟件的聯(lián)動調(diào)節(jié)功能,選中需要調(diào)節(jié)的若干通道,進行聯(lián)合調(diào)節(jié)。界面如圖所示。
實際操作過程中,選擇需要調(diào)節(jié)的通道,通過滑動桿或者編輯框輸入需要調(diào)節(jié)的通道的電壓,然后點擊發(fā)送數(shù)據(jù),上位機將設(shè)定好的命令參數(shù)發(fā)送給單片機,單片機控制通道輸出相應(yīng)電壓。
4 結(jié)束語
本文設(shè)計了一種基于LabView和單片機的多路可調(diào)電壓輸出系統(tǒng),基于LabView開發(fā)的上位機應(yīng)用軟件控制單片機,可以獨立或并行輸出多達12路-10V~+10V之間的電壓,控制靈活方便。
參考文獻:
[1] 張彥,吳昌才,劉暾東,李茂青.基于串行DAC8420芯片的模擬量輸出卡設(shè)計[J].工業(yè)控制計算機,2006(3).
[2] 楊樂平,李海濤,肖相聲,等. LabView程序設(shè)計與應(yīng)用[M].北京:電子工業(yè)出版社,2001.