趙 運(yùn), 張 萌, 熊俊超
(湖北工業(yè)大學(xué)電氣與電子工程學(xué)院, 湖北 武漢 430068)
基于ARM的多路數(shù)據(jù)量采集終端研制
趙運(yùn), 張萌, 熊俊超
(湖北工業(yè)大學(xué)電氣與電子工程學(xué)院, 湖北 武漢 430068)
[摘要]設(shè)計(jì)了一套基于ARM系列STM32F107VX的多路數(shù)據(jù)采集系統(tǒng),利用ARM數(shù)據(jù)處理速度快、功耗低等特點(diǎn),對8路模擬量、48路開關(guān)量進(jìn)行采集和轉(zhuǎn)換,并將采集數(shù)據(jù)通過CAN通訊傳遞給上位機(jī)。實(shí)驗(yàn)運(yùn)行情況表明該系統(tǒng)采集精度高、數(shù)據(jù)處理速度快,能夠?qū)π盘栠M(jìn)行實(shí)時(shí)采集監(jiān)測。
[關(guān)鍵詞]ARM ;模擬量采集 ;開關(guān)量采集;CAN通訊
現(xiàn)代化工業(yè)的發(fā)展正朝著大規(guī)模集成和控制終端一體化的方向發(fā)展,工業(yè)上的常用模擬量信號4~20 mA仍然在當(dāng)前的控制領(lǐng)域發(fā)揮較大的作用。由于很多系統(tǒng)外部采集數(shù)據(jù)復(fù)雜化,采集的模擬量已變得越來越多。目前很多設(shè)計(jì)產(chǎn)品都是采用單路模擬量采集并通過工業(yè)總線傳輸?shù)姆绞?,將?shù)據(jù)傳遞到上級控制單元,然后再由上級單元對下級單元的信號做統(tǒng)一處理,發(fā)出指令控制下級單元直接動(dòng)作,由于采集通過總線,采集必然存在訪問周期,當(dāng)下級采集數(shù)據(jù)過多時(shí),就會(huì)造成采集數(shù)據(jù)的時(shí)間延時(shí),在一些要求嚴(yán)格的工業(yè)控制環(huán)境下,容易造成危險(xiǎn)。
本文所采用方法的是局部集中控制多路數(shù)據(jù)量采集,部分單元在預(yù)先設(shè)計(jì)的控制原則下進(jìn)行控制的動(dòng)作和任務(wù)處理,本地的控制單元也能夠和上級的控制單元進(jìn)行數(shù)據(jù)交流,這樣既能滿足上級過多訪問和發(fā)放指令所造成的時(shí)間延遲問題,也能保證整個(gè)局部控制過程能夠被上級監(jiān)控和管理[1]。
1全局框圖和設(shè)計(jì)思路
整個(gè)控制器采用分塊接口設(shè)計(jì),便于局部分塊管理及后續(xù)擴(kuò)展接口的擴(kuò)展升級,每個(gè)單元口設(shè)計(jì)有2路模擬量輸入,或者是12路開閉量采集,能夠滿足絕大多數(shù)的控制需求[2]。具體外圍設(shè)計(jì)方案及設(shè)計(jì)接口見圖1。
圖 1 ARM采集設(shè)備全局設(shè)計(jì)方案圖
由圖1可見數(shù)據(jù)量直接通過開閉動(dòng)作高低電平檢測,所有模擬量接口都采用外部電阻阻值變動(dòng)的方式來進(jìn)行檢測。在設(shè)備接口處設(shè)計(jì)一個(gè)簡單的恒流源,通過歐姆定律來簡單實(shí)現(xiàn)電壓外部檢測量。內(nèi)部再通過電阻轉(zhuǎn)換的方式比例縮小得到的所需電壓,之后通過一個(gè)簡單的電壓跟隨器和LC濾波后便可以直接進(jìn)入到ARM的內(nèi)部AD中,這時(shí)便可以通過ARM的內(nèi)部邏輯判斷做出反饋,最后再通過ARM的通訊設(shè)備端口直接將本地的數(shù)據(jù)傳遞到上一級的中控機(jī)設(shè)備上去。
這種設(shè)計(jì)思路的優(yōu)點(diǎn)在于能夠通過下級的中控設(shè)備逐級匯總數(shù)據(jù)和參數(shù)。免于上級控制單元的用戶在初期的設(shè)計(jì)中就需要考慮設(shè)計(jì)太多的備用接口及所帶來的額外工程量。
本文設(shè)計(jì)采用的ARM芯片型號為STM32F107Vx型芯片,該芯片在通訊和數(shù)模量轉(zhuǎn)換、通用外圍接口GPIO上都有很大的優(yōu)勢。具體參數(shù)見圖2。
STM32F107VxCommunicationinterfacesSPII2CUSARTUSBCAN315Yes2GPIO12-bitADC12-bitDAC80162Ethernet--Yes--
圖 2STM32F107Vx硬件接口
該芯片在硬件層面上完全能滿足目前的設(shè)計(jì)要求。由于其具備以太網(wǎng)和雙CAN等工業(yè)通訊接口能力,其在后續(xù)的升級和擴(kuò)展中也能有較大空間。
2底層程序設(shè)計(jì)
由于芯片的GPIO口功能上很大一部分是復(fù)用的,所以在實(shí)際的芯片接口設(shè)計(jì)和使用中,可用接口數(shù)目并不能完全達(dá)到芯片在硬件功能說明書上的數(shù)目。尤其是芯片只提供了一路的PWM接口,在多路的串并聯(lián)結(jié)構(gòu)中不能夠滿足驅(qū)動(dòng)多個(gè)芯片要求。必須要自行設(shè)計(jì)能夠模擬PWM功能,并且能按照要求不間斷輸出高低電平的底層接口。
首先必須把GPIO接口的輸入方向、輸入頻率、輸入后的地址結(jié)構(gòu)位定義清楚。實(shí)例程序以1路串行輸出改8路并行輸出的開閉量輸出控制接口設(shè)計(jì)的流程程序?yàn)閷?shí)例,具體定義方法如下:
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP
//定義GPIO口的輸出方向
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_8MHz
//定義GPIO口的工作頻率
GPIO_Init(GPIOB,&GPIO_Initstructure);
//定義GPIO口的數(shù)據(jù)存放單元
其次需要在程序中,設(shè)計(jì)功能口的高低電平工作順序,以及對應(yīng)取得數(shù)據(jù)和輸出數(shù)據(jù)的存放地址。對應(yīng)的設(shè)計(jì)方式如下:
for(i=0;i<8;i++)
{
SRCLK1_Low();//輸出低電平,進(jìn)行寫數(shù)據(jù)
temp1=vaule1&n1;//取數(shù)據(jù)值到第一個(gè)臨時(shí)位
if (temp==1)
SER1_High();//寫數(shù)據(jù)1
}
else
{
SER1_Low();//寫數(shù)據(jù)0
}
n1=n1<<1; //左移一位,準(zhǔn)備下一個(gè)數(shù)據(jù)寫入
}
由于各串并行改換用的74H芯片都是8位的,所以程序的接收和控制循環(huán)也都是以8位來設(shè)計(jì)的,所以每次接收一個(gè)數(shù)據(jù)單元的數(shù)據(jù)后,便又重新開始再準(zhǔn)備接受下一個(gè)數(shù)據(jù)位,8次循環(huán)作為一個(gè)實(shí)際輸出周期。
同理解釋一下對于8位串行讀數(shù)據(jù)的整個(gè)流程,首先芯片的時(shí)鐘輸出低電平進(jìn)行讀數(shù)據(jù),8路并行數(shù)據(jù)書寫進(jìn)74HC,然后將ARM輸出驅(qū)動(dòng)高低電平,串口的數(shù)據(jù)讀第一位到臨時(shí)單元中,對該臨時(shí)單元的數(shù)據(jù)進(jìn)行判斷,如果該數(shù)據(jù)為高,就在內(nèi)部寄存器中寫1,反之則寫0。之后便對內(nèi)部數(shù)據(jù)組左移一位,再次輸出驅(qū)動(dòng)用的高低電平,再次判斷記錄。如此循環(huán)8次,便可將一個(gè)8位的并行數(shù)據(jù)通過74HC單元改寫成一個(gè)8位的串口數(shù)據(jù)了。
3硬件電路設(shè)計(jì)
3.1模擬量接口電路設(shè)計(jì)
由于目前工業(yè)上常用的現(xiàn)場模擬控制一般都是以電阻無源設(shè)備為主,模擬電路采集過程中需要提供一個(gè)電流源設(shè)備來保證外圍的電阻能正常運(yùn)行,采用了一個(gè)高阻態(tài)的后級差分放大器來完成這一電阻的電壓變換[3]。
其對應(yīng)的電路如圖3所示,電路分成兩個(gè)單元模塊,第一個(gè)模塊為一個(gè)三端穩(wěn)壓芯片和一個(gè)微型變阻器組成的可調(diào)電源。它的輸出電壓
其中V0為三端穩(wěn)壓固定輸出腳電壓值,Rs為固定值下限電阻,Rc1和Rc2為變阻器的下接入電阻部分和上接入電阻部分。
圖 3 模擬量采集電路
由于第二級別的差分放大電路的輸入電阻為50 kΩ左右,而一般的工業(yè)用銅電阻的阻值在幾十到幾百歐附近,兩者數(shù)值等級不是一個(gè)級別,所以第二級的電路與第一級的電路可以近似等同于沒有電流關(guān)聯(lián)[4]。第二級的電路的輸出電壓可以直接通過比例差分電路的基本公式來推導(dǎo)對應(yīng)的輸出值。推導(dǎo)公式如下所示:
其中V+和V-為設(shè)計(jì)單元上電阻接入后的兩端電壓,上端為正,下端為負(fù),R1和R2為第二級差分放大電路的放大比例電阻,其中R2為運(yùn)放負(fù)輸入端的對地電阻,R1為負(fù)輸入端的直接輸入電阻。這里的差分運(yùn)算放大比例為十分之一。基本上可以滿足輸入上下限的理論要求。
末端在電壓模擬量輸入的環(huán)節(jié)設(shè)計(jì)了一個(gè)過壓保護(hù)用的二極管,整個(gè)電路的過壓保護(hù)動(dòng)作環(huán)節(jié)在3.7 V左右,能夠起到內(nèi)部AD的保護(hù)功能。
3.2I/O量采集接口設(shè)計(jì)
外圍的開閉量數(shù)據(jù)通過光耦做隔離控制,這里的光耦沒有特別的速度要求,但是需要做到盡量大的隔離電壓,故選擇常見的光耦P627。并行改串行的數(shù)據(jù)變換芯片采用74HC165,其典型工作電壓為5 V,在此典型工作電壓下,其對應(yīng)的輸入電壓最大,也可以工作在5 V,工作功耗在幾百毫瓦級別,基本可以滿足設(shè)計(jì)的供電要求。其對應(yīng)的設(shè)計(jì)電路圖如圖4所示。
圖 4 并口采集硬件電路圖
3.3開閉量輸出接口設(shè)計(jì)
設(shè)備的內(nèi)部輸出接口需要滿足上電穩(wěn)定性,故在內(nèi)部的所有輸入接口上全部采用一個(gè)排阻來實(shí)現(xiàn)電位上拉的要求,考慮到ARM芯片GPIO接口的灌電流能力大約在0.3 mA左右,排阻的阻值設(shè)計(jì)一般選擇為10 K左右。在內(nèi)部到外部的控制中,一般需為外部單獨(dú)提供繼電器工作電流,74HC595的驅(qū)動(dòng)能力將無法實(shí)現(xiàn)這一要求,該芯片同樣是工作在5 V的典型工作電壓下,它能夠輸出5 V的電壓,但是輸出功率需要通過一級放大后才能驅(qū)動(dòng)繼電器線圈。本電路使用的都是外圍24 V的供電系統(tǒng)設(shè)計(jì),在放大驅(qū)動(dòng)的第二級上使用了24 V的直流供電電源,能夠滿足絕大多數(shù)工況(圖5)。
圖 5 并口改串口的電路硬件圖
3.4通訊電路設(shè)計(jì)
電路采用雙CAN電路的通訊設(shè)計(jì)結(jié)構(gòu),兩組CAN的硬件結(jié)構(gòu)實(shí)際上為同一類型,所以這里只對其中一個(gè)電路的設(shè)計(jì)做說明,其對應(yīng)的電路見圖6(Modicon Inc. Modicon modbus protocol reference guide,1996)。通過高速光耦芯片來完成主電路設(shè)備和外圍接線電路的隔離,保證了電路的穩(wěn)定性。CAN的硬件協(xié)議部分采用了TJA1050芯片,該芯片在自適應(yīng)傳輸速率上具有很大優(yōu)勢,而且驅(qū)動(dòng)能力強(qiáng)。T和R的兩個(gè)端口采用單獨(dú)供電的6N137光耦芯片,該芯片的導(dǎo)通電流在10 mA左右,可以達(dá)到10 M的通訊速率,在性能上能完全滿足設(shè)備的通訊要求。
圖 6 CAN通訊硬件電路圖
4運(yùn)行情況
電路設(shè)備在實(shí)際運(yùn)行中能夠?qū)崿F(xiàn)多路零點(diǎn)幾毫秒的數(shù)據(jù)上傳和采集功能要求,實(shí)現(xiàn)了實(shí)際運(yùn)行中的工況需求,基本達(dá)到了設(shè)計(jì)目標(biāo)。
設(shè)備并沒有完全挖掘出ARM芯片的能力,未來對于具有以太網(wǎng)接口功能的ARM芯片,可以通過在控制設(shè)備的本地設(shè)計(jì)一個(gè)觸摸控制屏,來進(jìn)行本地的邏輯改換控制工作,也能夠借助其D/A功能實(shí)現(xiàn)上級到下級的模擬儀表控制顯示,總之,該設(shè)備具有較大的發(fā)展空間和應(yīng)用價(jià)值。
[參考文獻(xiàn)]
[1]朱俊翔.可配置工程機(jī)械控制器的設(shè)計(jì)與實(shí)現(xiàn)[D].南京:南京理工大學(xué),2013.
[2]趙劍鵬.基于單片機(jī)的多路模擬量采集模塊設(shè)計(jì)[J].電子質(zhì)量,2013(7): 11-14.
[3]何維然.一種可配置的模擬量采集模塊設(shè)計(jì)[J].理論與方法,2014(10):42-45.
[4]張和生,王立文. 一種高精度數(shù)據(jù)采集系統(tǒng)的電路設(shè)計(jì)[J]. 計(jì)算機(jī)測量與控制, 2004(06) :575-577.
[責(zé)任編校: 張巖芳]
Developing Data Acquisition Terminal Based on ARM
ZHAO Yun, ZHANG Meng, XIONG Junchao
(SchoolofElectricalandElectronicEngin.,HubeiUniv.OfTech.,Wuhan430068,China)
Abstract:This paper designed a set of multi-channel data acquisition system based on ARM series STM32F107VX, using data processing fast, low power loss characteristics of ARM, acquisition and conversion of 8 analog, 48 I/O, and the collected data were transmitted to the host computer through CAN communication. The experiment demonstrates that the system has high gathering precision and fast data processing, with real-time acquisition and monitoring of the test signal.
Keywords:ARM, analog acquisition, switch acquisition, CAN communication
[收稿日期]2015-04-25
[作者簡介]趙運(yùn)(1993-), 男, 湖北荊門人,湖北工業(yè)大學(xué)碩士研究生,研究方向?yàn)殡娏﹄娮觽鲃?dòng)
[文章編號]1003-4684(2016)02-0081-04
[中圖分類號]TM46
[文獻(xiàn)標(biāo)識碼]:A