高壓平流泵控制系統(tǒng)設(shè)計與實現(xiàn),軟硬件協(xié)同
1前言
1.1高壓平流泵控制現(xiàn)狀
高壓平流泵是利用電機驅(qū)動柱塞泵,使液體以穩(wěn)定的流量及壓力輸出的一種設(shè)備,作為分析儀器的動力源,廣泛應(yīng)用于石油、化工、食品、制藥、煤炭、環(huán)保等工業(yè)領(lǐng)域。其主要技術(shù)要求:壓力范圍0~42MPa,流量范圍0.001~9.999mL流量誤差小于0.5%,從技術(shù)參數(shù)可知,如此小流量、高精度、高壓力的流量計較難制造。平流泵又稱恒流泵,要求流速恒定。平流泵流量的設(shè)定,實質(zhì)上就是改變電機的轉(zhuǎn)速,所以恒流效果如何主要取決于電機速度的穩(wěn)定性。
目前,國內(nèi)生產(chǎn)的恒流泵大多為步進電機驅(qū)動。這種泵成本低,調(diào)試方便,但致命弱點是在低流量下有較大脈動,很難保證恒流效果。這是因為步進電機是按照一定拍節(jié)和相序運行。為了解決這一問題,可借鑒國外儀器,使用直流電機取代步進電機,使恒流泵的性能大為提高[1]。直流電機具有良好的線性調(diào)速特性,簡單的控制性能,高的效率,優(yōu)異的動態(tài)特性,特別適用于要求調(diào)速的系統(tǒng)。
現(xiàn)在市場上通用的電機控制器大多采用單片機和DSP。但是傳統(tǒng)單片機的數(shù)據(jù)處理能力有限,對采用復(fù)雜的反饋控制的系統(tǒng),由于需要處理的數(shù)據(jù)量大,實時性和精度要求高,往往不能滿足設(shè)計要求。近年來出現(xiàn)了各種高速SOC單片機,其性能得到很大提高,價格卻比DSP低很多。其相關(guān)軟件和開發(fā)工具越來越多,功能也越來越強,但價格卻在不斷降低?,F(xiàn)在越來越多的廠家開始采用SOC單片機來提高產(chǎn)品性價比[2]。
1.2本文主要內(nèi)容
系統(tǒng)采用PWM技術(shù)閉環(huán)調(diào)節(jié)直流電機轉(zhuǎn)速,從而精確控制平流泵流量。
系統(tǒng)對高壓平流泵精度要求非常高,流量精度要求小于0.5%。如此高精度需要有高性能控制器來采集調(diào)節(jié)直流電機轉(zhuǎn)速,PIC32MX460F512L可很好滿足要求,它采樣直流電機轉(zhuǎn)速,經(jīng)過分析處理,發(fā)送適當占空比的PWM信號給電機,從而精確控制直流電機轉(zhuǎn)速。為提高系統(tǒng)穩(wěn)定性,電機驅(qū)動采用電機專用驅(qū)動芯片LMD18200。
系統(tǒng)提供壓力、電流和熱報警三重保護,以防平流泵損壞。壓力和電流采用PIC32MX460F512L提供的A/D模塊采樣,精度高達10位[8]。
為便于人機交互和調(diào)試系統(tǒng),系統(tǒng)提供了穩(wěn)定可靠的通信功能,通信部分采用光耦隔離,提供RS232通信方式。
2相關(guān)技術(shù)和原理
2.1 直流電機控制方法
在各類機電系統(tǒng)中,由于直流電機具有良好的啟動、制動和調(diào)速性能,直流電機調(diào)速系統(tǒng)已廣泛運用于工業(yè)、航天領(lǐng)域的各個方面。隨著半導體技術(shù)的進步,電力電子技術(shù)飛速發(fā)展,使直流電機的傳動技術(shù)得到改進,以往普遍采用的三種基本調(diào)速方法,即:(1) 改變電樞回路總電阻;(2)改變電樞的供電電壓;(3) 改變勵磁磁通,發(fā)展為晶閘管相控整流電機調(diào)壓系統(tǒng),以及全波不控整流——PWM軋波直流電機調(diào)壓調(diào)速系統(tǒng)[3]。直流電機脈寬調(diào)制(PWM)直流調(diào)速具有調(diào)速精度高、響應(yīng)速度快、調(diào)速范圍寬和耗損低等特點,使之成為直流電機應(yīng)用的主要調(diào)速方式。
2.2 PWM直流調(diào)速原理
PWM控制是對脈沖的寬度進行調(diào)制的技術(shù),即通過對一系列脈沖的寬度進行調(diào)解,來有效地獲得所需要的波形。基于PWM控制的調(diào)速電路把流電壓“軋”成一系列脈沖,通過改變脈沖的占空比來獲得所需的輸出電壓。在PWM驅(qū)動控制的調(diào)速系統(tǒng)中,通過改變電機電樞電壓接通時間與通電周期的比值(即占空比)來控制電機的轉(zhuǎn)速。用脈寬調(diào)制的方法,把恒定的直流電源電壓調(diào)制成頻率一定寬度可變的脈沖電壓序列,從而改變平均輸出電壓的大小,以調(diào)節(jié)電機轉(zhuǎn)速??梢?,在直流電壓下,當調(diào)制脈沖頻率一定時,脈沖寬度與占空比成線性關(guān)系。
在脈沖作用下,按一個固定的頻率來接通和斷開電源,就能夠?qū)崟r控制電機的運轉(zhuǎn)速度。當電機通電時速度增加;電機斷電時速度減小。設(shè)電機直接接通電源時(即占空比為100%),電機的轉(zhuǎn)速為Vm,設(shè)占空比為D=t/T,則電機的平均速度為
(2-1)
式中:Ve——平均速度;Vm——全速(即直接通電時的速度);D=t/T——占空比(0-100%)。
由式(2-1)可見,Vm是直流電機直接通電時的速度(全速),只跟電機本身的特性相關(guān),電機一定時,Vm為一個定值。改變占空比D=t/T,就能得到不同的平均速度,從而就能夠?qū)﹄姍C轉(zhuǎn)速進行實時控制[4]。嚴格地講,平均速度與占空比D并不是嚴格的線性關(guān)系,在一般的應(yīng)用中,可將其近似看成線性關(guān)系。
2.3 H橋型電機驅(qū)動原理
圖2-1 H橋PWM驅(qū)動
常見的PWM驅(qū)動系統(tǒng)的主電路(功率放大器)結(jié)構(gòu)有:H型和T型。這里以H型結(jié)構(gòu)為例說明PWM雙極式驅(qū)動的電路工作原理。
H橋PWM驅(qū)動如圖2-1,圖中VD1、VD2、VD3、VD4為續(xù)流二極管,用來保護VT1、VT2、VT3、VT4三極管,Ub1=Ub4=-Ub2=-Ub3。
當Ub1=Ub4為正時,VT1和VT4導通,VT2和VT3截止,UAB=Us。
當Ub2=Ub3為正時,VT1和VT4截止,VT2和VT3不能立即導通,因為電機的反電勢使AB存在續(xù)流,續(xù)流流經(jīng)VD3和VD2,保護了四個三極管,若續(xù)流在這個過程沒有得到很大衰減,而Ub1=Ub4為正的階段已經(jīng)來臨,則VT2和VT3一直不能導通;若續(xù)流在這個過程中得到很大衰減,則VT2和VT3導通,UAB=-Us。
顯然,Ub1=Ub4為正的時間和Ub2=Ub3為正的時間相同時,UAB的平均電壓為0,電機動態(tài)靜止;當Ub1=Ub4為正的時間長于Ub2=Ub3為正的時間時,UAB的平均電壓>0,電機正轉(zhuǎn),UAB的值越大,轉(zhuǎn)速越高;當Ub1=Ub4為正的時間短于Ub2=Ub3為正的時間時,UAB的平均電壓0,電機反轉(zhuǎn),UAB的值越小,轉(zhuǎn)速越高。
可見,只要控制Ub1、Ub2、Ub3、Ub4的脈沖寬度,就可控制直流電機的轉(zhuǎn)向和速度,且可以達到動態(tài)靜止,有利于正反轉(zhuǎn)死區(qū)電壓的消除[3]。
2.4 電機驅(qū)動H橋組件LMD18200
小型機電一體化產(chǎn)品要求直流電機的驅(qū)動器既有較小的體積,又能提供較大的電流、電壓輸出。采用達林頓三級管可搭建H橋?qū)崿F(xiàn)PWM脈寬調(diào)制控制系統(tǒng),但由于分立器件各個元件的特性并不相同,調(diào)速性能并不太好,而且電路不能達到很高的穩(wěn)定性。相比而言,采用美國國家半導體公司推出的專用于運動控制的H橋組件LMD18200具有很大好處。該芯片上集成有CMOS控制電路和DMOS功率器件,峰值輸出電流高達6A,連續(xù)輸出電流高達3A,工作電壓高達55v,還具有熱報警和過熱與短路保護功能[5][6][7]。
原理框圖如圖2-2。因為電機由LMD18200驅(qū)動,對電機的控制就是對LMD18200控制,所以這里將詳細介紹一下該芯片的用法。
圖2-2 LMD18200原理框圖
(1) PWM信號類型
LMD18200可采用兩種不同類型的PWM信號:①類型1 PWM信號中既包含方向信息又包含幅值信息,50%占空比的PWM信號代表零電壓。使用時,該信號應(yīng)加于方向輸入端(腳3),同時將PWM信號輸入端置邏輯高電平。②類型2 分別由方向信號與幅值信號組成。幅值由PWM信號的占空比決定,零脈沖時代表零電壓。在實際使用時,腳3接方向輸入信號,腳5接PWM信號。
(2) 電流取樣限流
每輸出1A電流,腳8輸出377nA取樣電流。接在8腳與地之間的電阻將其轉(zhuǎn)化為電壓信號,該電壓幅值在5-8v之間時,線性度與精度最佳。該端最高電壓為12v。電流取樣電路并不檢測反饋電流,僅檢測橋臂上端晶體管中的電流。
(3) 溫度報警標志
該端(9腳)為OC門輸出,對多芯片使用可進行線與。該端通常接到系統(tǒng)控制器的中斷輸入,以便過熱時對系統(tǒng)采取適當措施。該端最高電壓為12v。
(4) 限流
LMD18200內(nèi)部含有限流保護電路,用于檢測器件中的浪涌電流,該電流接近10A時,迅速關(guān)斷功率器件。器件關(guān)斷后,保護電路周期性試圖開通功率器件。一旦外界短路故障消失,器件就恢復(fù)正常運行。由于短路將產(chǎn)生大量熱量,在實際使用時,LMD18200必須配備面積足夠大的散熱器,同時芯片電源端Vcc(腳6)在PCB上需要1平方英寸的銅箔。
(5) 工作原理
LMD18200內(nèi)部集成了4個DMOS管,組成了一個標準的H橋驅(qū)動電路。H橋高側(cè)DMOS功率器件要求其柵極驅(qū)動電壓大于電源正極約8V以上才能導通。為此該集成電路設(shè)置了內(nèi)部充電泵電路,它由一個300kHz振蕩器控制,充電泵電容被充電至14v左右。此柵極驅(qū)動電壓上升時間典型值為20us,適用于工作頻率1kHz左右的情況。如果要求更高的工作頻率,需要外接自舉電容。推薦用兩個10nF的電容器分別接于引腳1、2和引腳10、11之間,使柵極驅(qū)動電壓上升時間在100ns以下,允許開關(guān)頻率高達500kHz。引腳2、10接直流電機的電樞兩端,正轉(zhuǎn)時電流的方向應(yīng)該從引腳2到引腳10;反轉(zhuǎn)時電流的方向應(yīng)該是從引腳10到引腳2。電流檢測引腳8可以外接一個對地電阻,通過此電阻來檢測輸出電流的情況。內(nèi)部保護電路設(shè)置的過電流閾值是10A,當超過該值時會自動封鎖輸出,并周期性地自動恢復(fù)輸出。如果過電流持續(xù)的時間過長,過熱保護將關(guān)閉整個輸出。過熱信號可以通過引腳9輸出,當結(jié)溫達到145度時引腳9有輸出信號。
- LMD18200邏輯正值表
LMD18200邏輯正值表如下(表2-1),通過控制PWM信號,Dir信號和Brake信號可控制驅(qū)動電流,從而控制電機的轉(zhuǎn)向及啟停。
表2-1 PWM邏輯正值表
PWM | 轉(zhuǎn)向 | 剎車 | 實際輸出驅(qū)動電流 | 電機工作狀態(tài) |
H | H | L | 流出1、流入2 | 正轉(zhuǎn) |
H | L | L | 流入1、流出2 | 反轉(zhuǎn) |
L | X | L | 流出1、流出2 | 停止 |
H | H | H | 流出1、流出2 | 停止 |
H | L | H | 流入1、流入2 | 停止 |
L | X | H | NONE |
2.5 本設(shè)計中軟件
2.5.1 Altium Designer Summer 09
原名protel,從2004年開始更名為protel dxp 而后是新版 Altium Designer 6.0。6.9以后開始了以年份命名
Altium Designer Summer 09是基于Windows的32位EDA設(shè)計系統(tǒng),集成強大的設(shè)計能力、復(fù)雜工藝的可生產(chǎn)性、設(shè)計過程管理于一體,可完整實現(xiàn)電子產(chǎn)品從電學概念設(shè)計到生成物理生產(chǎn)數(shù)據(jù)的全過程。既滿足了產(chǎn)品的高可靠性,又極大縮短了設(shè)計周期,降低了設(shè)計成本。
Summer 09版本解決了大量歷史遺留的工具問題。其中就包括了增加更多的機械層設(shè)置、增強的原理圖網(wǎng)絡(luò)類定義。新版本中更關(guān)注于改進測試點的分配和管理、精簡嵌入式軟件開發(fā)、軟設(shè)計中智能化調(diào)試和流暢的License管理等功能。
利用Altium Designer Summer 09設(shè)計電路板的一般流程如下:
(1) 電路原理圖的設(shè)計。
(2) 產(chǎn)生網(wǎng)絡(luò)報表。
(3) 印制電路板的設(shè)計。
2.5.2 MPLAB IDE
MPLAB集成開發(fā)環(huán)境(IDE)是一款免費的集成工具組合,用來對采用Microchip PIC®和dsPIC®單片機的嵌入式應(yīng)用進行開發(fā)。MPLAB IDE作為32位應(yīng)用程序運行在MS Windows®系統(tǒng)上,其使用方便并且包含一系列免費軟件可進行快速應(yīng)用開發(fā)和強大的調(diào)試。MPLAB IDE也可作為獨立的統(tǒng)一圖形用戶界面,支持其他Microchip和第三方的軟件及硬件開發(fā)工具。由于MPLAB IDE對所有工具都呈現(xiàn)相同的用戶界面,因此無論是工具之間的切換,還是免費軟件模擬器向硬件調(diào)試和編程工具的升級均非常便捷
MPLAB IDE 提供以下功能:
• 使用內(nèi)置編輯器創(chuàng)建和編輯源代碼。
• 匯編、編譯和鏈接源代碼。
• 通過使用內(nèi)置模擬器觀察程序流程調(diào)試可執(zhí)行邏輯;或者使用MPLAB ICE 2000和 MPLAB ICE 4000 仿真器或MPLAB ICD 2 在線調(diào)試器實時調(diào)試可執(zhí)行邏輯。
• 用模擬器或仿真器測量時間。
• 在觀察窗口中查看變量。
• 使用 MPLAB ICD 2、PICSTART Plus 或 PRO MATE II 器件編程器燒寫固件。
• 使用MPLAB IDE 豐富的在線幫助快速找出問題的答案。
2.5.3 Microsoft Visual C++ 6.0
3需求分析
3.1系統(tǒng)所需的主要功能
3.1.1 電機速度檢測
可實時精確檢測電機轉(zhuǎn)速,以便系統(tǒng)調(diào)速和用戶設(shè)定轉(zhuǎn)速。
平流泵沖程為2mm,管道直徑為3.175mm,由此可計算出平流泵沖程體積為15.83mm3,平流泵取最大流量10ml/min時,沖程次數(shù)為10*1000/15.83=632次。大齒輪轉(zhuǎn)一圈產(chǎn)生2個沖程,因此最大流量時,大齒輪轉(zhuǎn)速為632/2=316rpm。皮帶傳送的轉(zhuǎn)速比為10:1,電機轉(zhuǎn)速要求為316*10=3160rpm,因此電機最高轉(zhuǎn)速應(yīng)選4000rpm以上,這里選擇5000rpm。電機轉(zhuǎn)速范圍1~5000rpm,轉(zhuǎn)速范圍大,不易精確采樣。
3.1.2 電機調(diào)速
根據(jù)用戶設(shè)置的電機速度,系統(tǒng)自動調(diào)節(jié)電機轉(zhuǎn)度,使系統(tǒng)穩(wěn)定工作,以便用戶控制平流泵流量,電機調(diào)速精度在1.0%范圍內(nèi)。
3.1.3 電機保護功能
平流泵精度高,電機質(zhì)量好,應(yīng)提供適當措施保護電機,特別是壓力保護,壓力精度為0.1MPa。
3.1.4 通信功能
要求系統(tǒng)具有串口通信功能,以便與用戶交互和調(diào)試系統(tǒng)。
3.1.5 其他功能
本系統(tǒng)是平流泵產(chǎn)品的一部分,要求為產(chǎn)品的其他部分提供所需接口,如風扇電源接口,壓力檢測接口等。
3.2 性能需求
3.2.1 精度需求
在精度需求上,根據(jù)使用需要:平流流量精確控制,要求電機速度精確檢測控制,電機調(diào)速精度在1.0%范圍內(nèi),電機轉(zhuǎn)速范圍為1~5000rpm。
3.2.2 時間需求
電機保護,電機速度設(shè)定都要求較高的響應(yīng)時間,特別是電機保護。
3.2.3 接口需求
(1) 通信接口
本系統(tǒng)要求提供UART串口接口,最好也嵌入485接口,以方便用戶調(diào)試程序和控制系統(tǒng)。
(2) 正交編碼接口
為了檢測電機轉(zhuǎn)速,系統(tǒng)應(yīng)提供正交編碼器接口。
(3) 壓力檢測接口
為便于檢測平流泵壓力,系統(tǒng)應(yīng)提供壓力檢測接口。
(4) JTAG接口
下載調(diào)試程序都要用到JTAG接口。
3.3 系統(tǒng)目標
(1) 電機速度精確可控,以保證平流泵流量的高精度。電機轉(zhuǎn)速范圍1~5000rpm,調(diào)速精度為1.0%。
(2) 給高壓平流泵提供壓力和電流兩重保護措施,壓力精度為0.1MPa。
(3) 人機良好交互,電機速度可設(shè)置,以便平流泵流量調(diào)試。
(4) 高可靠通信功能,以保證與用戶交互順暢。
4概要設(shè)計
4.1 綜述
高壓平流泵控制系統(tǒng)是一個嵌入式系統(tǒng),為完成系統(tǒng)所要求的功能,需要軟件硬件協(xié)調(diào)工作。
控制系統(tǒng)控制器采用PIC32MX460F512L。PIC32MX460F512L基于80MHz, 1.56 DMIPS/MHz, 32-bit MIPS M4K Core設(shè)計的微控制器,它將高性能的32位計算引入到對價格敏感的嵌入式微控制器應(yīng)用中,在提高性能的同時降低了成本。它提供了豐富的外設(shè)接口,足夠滿足該系統(tǒng)的設(shè)計需要,內(nèi)置的PWM模塊可用來控制直流電機,廣泛應(yīng)用于直流電機控制系統(tǒng),本系統(tǒng)就采用其作為控制核心單元。
LMD18200作為電機驅(qū)動芯片,前面已介紹過其性能。硬件電路采用PIC32MX460F512L+LMD18200方案,比分立電路設(shè)計可靠,比單片機控制系統(tǒng)性能高,是一個不錯的設(shè)計方案。
硬件可很好的實現(xiàn)了電機控制,軟件所要做的就是驅(qū)動硬件和精確采樣,保證平流泵工作的精度。本系統(tǒng)用循環(huán)和中斷機制控制系統(tǒng),不采用操作系統(tǒng),主要基于以下考慮:
(1)本系統(tǒng)中任務(wù)較少,主要有測速并控制速度,采樣電流,采樣壓力和協(xié)議處理,PIC32MX460F512L提供了豐富的中斷資源,大部分任務(wù)可通過中斷機制實現(xiàn),如測速調(diào)速,采樣電流,采樣壓力。
(2)操作系統(tǒng)本身要占用存儲空間,任務(wù)調(diào)度和切換需要消耗時間,當任務(wù)切換頻繁時所耗時間更多,而操作系統(tǒng)并不能減少中斷時間。
對重要信息的采集采用中斷方式,減少延遲,提高系統(tǒng)響應(yīng)速度,縮短系統(tǒng)響應(yīng)時間。此外,能用硬件實現(xiàn)時盡量用硬件實現(xiàn),以提高系統(tǒng)可靠性和響應(yīng)。
4.2 硬件設(shè)計
本系統(tǒng)的硬件設(shè)計總框圖如下:
圖4-1 硬件系統(tǒng)總框圖
硬件系統(tǒng)主要分為五個模塊,分別為:電源模塊,MCU模塊,電機驅(qū)動模塊,通信模塊及其它。
系統(tǒng)要工作就需要有電源,電源模塊為整個系統(tǒng)提供合適可靠的動力。
MCU是系統(tǒng)“大腦”,系統(tǒng)要井然有序工作,就需要協(xié)調(diào)各模塊甚至各個器件的工作順序,這個任務(wù)就由MCU來完成。此外,它還是系統(tǒng)的計算中心,各個模塊的信息反饋給它,它經(jīng)過對信息的分析計算,之后再作用于相應(yīng)模塊器件。它通過分析正交編碼器反饋的信息可計算出電機的速度,并根據(jù)要求值和實際值來適當調(diào)節(jié)電機轉(zhuǎn)速。它接受串口傳來的用戶命令,經(jīng)過分析可作用于相應(yīng)模塊以達到用戶的目標,例如用戶通過串口可向MCU發(fā)送設(shè)定轉(zhuǎn)速命令,MCU經(jīng)過分析通過調(diào)節(jié)PWM信號的占空比作用于電機驅(qū)動模塊,從而達到設(shè)置電機速度的目的。它可接收電機驅(qū)動模塊反饋的電流及熱報警信息,經(jīng)過分析,可采取適當措施作用于電機驅(qū)動模塊,以實現(xiàn)電機的保護功能。此外,它還實現(xiàn)了ADC接口可實現(xiàn)壓力檢測,JTAG接口可實現(xiàn)程序的下載和調(diào)試。
電機驅(qū)動模塊是系統(tǒng)的主要工作模塊。本系統(tǒng)就是為了實現(xiàn)電機控制,電機驅(qū)動模塊是直接作用于電機的模塊,MCU通過對LMD18200的精確控制可實現(xiàn)電機的精確控制,從而精確控制了平流泵。
通信模塊主要實現(xiàn)與用戶的交互,為提高可靠性,設(shè)計中采用光耦隔離。本系統(tǒng)設(shè)計中提供了兩類接口,RS232和RS485
其他模塊主要為了根據(jù)系統(tǒng)具體情況增加接口。例如:風扇電源接口。
4.3 軟件設(shè)計
軟件設(shè)計層次圖如下,共包括3部分內(nèi)容:底層,驅(qū)動層,應(yīng)用層和上位機。
圖4-2 軟件設(shè)計層次圖
4.3.1 下位機
驅(qū)動庫為上層驅(qū)動層設(shè)計提供接口,便于驅(qū)動層編程設(shè)計。
驅(qū)動層包含了系統(tǒng)所需外圍接口的驅(qū)動程序,主要包括:直流電機驅(qū)動、PWM驅(qū)動、溫度檢測驅(qū)動、蜂鳴器驅(qū)動、ADC(模數(shù)轉(zhuǎn)化)驅(qū)動和串口驅(qū)動。
直流電機驅(qū)動主要完成速度的采樣及調(diào)速,它接受正交編碼器的脈沖信號,通過脈沖采樣來完成速度采樣,并根據(jù)采樣值與設(shè)定值差值對PWM進行調(diào)節(jié)。
PWM驅(qū)動完成PWM模塊的初始化,PWM占空比的設(shè)置,對電機進行直接控制。
溫度檢測完成LMD18200熱報警的處理,主要完成相應(yīng)引腳的初始化及對熱報警的檢測,系統(tǒng)中采用中斷方式進行處理。
蜂鳴器驅(qū)動完成蜂鳴器的初始化及一些簡單操作,供其他程序調(diào)用。
ADC驅(qū)動把模擬量轉(zhuǎn)化為數(shù)字量,完成壓力采樣和電機電流采樣。根據(jù)采樣量的要求采取不同處理,壓力采樣除保護電機外,還提供給用戶查看,以供用戶使用;電機電流采樣主要為保護電機,防止電流過大時損壞電機。
串口驅(qū)動完成串口初始化及相應(yīng)操作,主要為接受和發(fā)送字符。
應(yīng)用層包括串口命令解析和main()函數(shù)。串口命令解析程序接受用戶的命令,并根據(jù)命令對系統(tǒng)進行控制。main()完成整個系統(tǒng)的調(diào)度,使系統(tǒng)以合適的順序井然有序工作。
通過以上分析可知,系統(tǒng)硬件軟件協(xié)調(diào)工作,可很好的實現(xiàn)用戶所要求的功能。
4.3.2 上位機
上位機用戶界面主要用于實現(xiàn)交互功能,用戶可以通過此界面向系統(tǒng)發(fā)送命令來實現(xiàn)對系統(tǒng)的控制,同時此界面可以實時顯示當前系統(tǒng)運行的各項參數(shù),如平流泵壓力、電流、電機轉(zhuǎn)速等信息,并可以以波形的形式直觀的顯示到界面上。另外,本系統(tǒng)還配有數(shù)據(jù)庫,他將實時記錄系統(tǒng)的各項參數(shù),以供對系統(tǒng)進行二次研發(fā)提供相應(yīng)數(shù)據(jù)。
5詳細設(shè)計
5.1硬件設(shè)計
5.1.1電源模塊
電路要正常工作,就需要有合適的電源供電。一個好的供電系統(tǒng)是電路正常工作的首要條件。微控制器需要3.3v電源,直流電機要穩(wěn)定工作需要24v電壓,本設(shè)計中從外部引入24v電壓,經(jīng)變壓后提供3.3v電源供電路板正常工作。此外通信模塊需要5v電源供電,因5v只在通信模塊中用到,所以把5v電壓放到通信模塊介紹。
為了防止大電流或大電壓給電子設(shè)備造成損毀,通常使用保險絲作為電路保護元件,最好采用自復(fù)保險絲,免去更換元件的煩惱。此外,采用二極管IN4007穩(wěn)壓,其只允許單向電壓通過,保護了整個電路元器件。
24v電壓變壓為3.3v主要用到芯片LM2575-3.3,其應(yīng)用如圖5-1,芯片兩端都要用電容濾波去耦。
圖5-1 LM2575-3.3應(yīng)用電路
為便于觀察電路板上電情況,在電源模塊加LED燈指示上電狀態(tài)。
5.1.2 MCU模塊
本設(shè)計中用到的處理器為PIC32MX460F512L,可采用兩種方式安裝到電路板上:插座和SMD。采用SMD焊接芯片時,微處理器芯片損壞時,可把帶有PIC32MX460F512L芯片的小主板插到電路板插座上;當采用插座方式安裝處理器芯片時,芯片損壞時,只需更換小主板,同時也為電路板的調(diào)試帶來方便。
這時設(shè)計就要熟悉小主板上電路,通過查閱數(shù)據(jù)手冊知道小主板實現(xiàn)了5v轉(zhuǎn)3.3v電壓變化電路和復(fù)位電路(如圖5-2)及晶振電路,在電路板上需要重新設(shè)計這些電路。小主板供電采用5v電源,由于本設(shè)計中除通信模塊采用5v電壓外,其余全為3.3v供電,所以在此設(shè)計中小主板亦采用3.3v供電,不過此時小主板的復(fù)位功能就消失了。由于電路板采用3.3v供電,所以在電路板上要設(shè)計的電路就剩下晶振電路和復(fù)位電路。
圖5-2 小主板上電壓轉(zhuǎn)化及復(fù)位電路
系統(tǒng)中晶振電路設(shè)計簡單,只需在晶振兩端增加兩個30pF去耦電容即可。
復(fù)位電路設(shè)計如圖,本設(shè)計中復(fù)位電路只是簡單的阻容耦合電路,沒有采用復(fù)位芯片,是因為芯片內(nèi)部嵌有看門狗電路,可很好實現(xiàn)復(fù)位。
圖5-3 復(fù)位電路
再來看一下小主板插座設(shè)計,小主板3.3v供電,插座中只需要一個3.3v的電源引腳接3.3v電源即可使小主板穩(wěn)定工作,插座中接地端都要接地以防干擾。
5.1.3 電機驅(qū)動模塊
驅(qū)動電機是本次設(shè)計的目標,理所當然電機驅(qū)動模塊是設(shè)計的重點。前面已介紹過電機驅(qū)動芯片LMD18200,現(xiàn)就本設(shè)計介紹具體應(yīng)用。
電機驅(qū)動模塊總結(jié)構(gòu)框圖如圖5-4。微處理器通過PWM控制驅(qū)動芯片,從而達到控制電機運轉(zhuǎn)及調(diào)速的目的,同時LMD18200電機驅(qū)動芯片向微處理器傳輸熱報警信號(TFLAG)和采樣電流(CTEST)。為了檢測和控制電機速度,增加了QE編碼器,編碼器輸出信號直接傳輸?shù)轿⑻幚砥?,以便MCU計算并設(shè)置PWM,從而精確控制電機轉(zhuǎn)速。
圖5-4 電機驅(qū)動模塊圖
LMD18200數(shù)據(jù)手冊中一典型電路如下圖,其中,PWM信號采用類型2。
圖5-5 LMD18200典型應(yīng)用
本設(shè)計中LMD18200引腳連接圖如下。
圖5-6 LMD18200應(yīng)用
前面已經(jīng)較為詳細地介紹了LMD18200的性能及應(yīng)用,現(xiàn)就本設(shè)計中的具體應(yīng)用做一下簡單介紹。Vs為電源輸入端,接105電容濾波,GND為接地端。引腳1、2間,10、11間接入了10nF的自舉電容,引腳2、10輸出驅(qū)動電機運轉(zhuǎn)。這里PWM類型采用類型2,即從引腳5輸入PWM信號,引腳3作為電機方向信號輸入端。引腳4是電機制動信號,直接接地就可以,表示永不制動,當然可通過其他方式使電機停止運轉(zhuǎn),如PWM信號。引腳9是集電極開路輸出端,應(yīng)用中要接上拉電阻,可接最大電壓為12v,根據(jù)系統(tǒng)需要接3.3v電壓,該引腳接到MCU一中斷引腳上,以便產(chǎn)生中斷時系統(tǒng)采取適當措施。引腳8為電流取樣信號輸出端,提供377uA/A電流,通過下拉電阻使電流信號轉(zhuǎn)化為電平信號。在這里考慮下拉電阻的大小,取峰值輸出電流6A時,3.3v/(6A×377uA/A)約為1.46k,在這里取電阻為1k,主要考慮到電流可能大于6A,數(shù)據(jù)手冊中提到有時達到10A,故在此最好加一穩(wěn)壓二極管(這里選擇IN4728)。
電流取樣時,由于電流為模擬信號最好加放大器,這里采用AD623放大信號,因為信號已經(jīng)較強,不需要增大放大倍數(shù),故在此引腳1,8間不接電阻懸空即可。在電路原理圖中把它與壓力檢測方到一起,因為兩者均為模擬信號處理,在PCB中要特別處理。
圖5-7 AD623應(yīng)用設(shè)計
5.1.4 通信模塊
電路設(shè)計中一般都需要通信模塊來調(diào)試程序及通信,本系統(tǒng)也不例外,這里設(shè)計了232串口接口。此外,為了保證數(shù)據(jù)可靠性,采用光耦進行隔離。總結(jié)構(gòu)圖如下:
圖5-8 通信模塊框圖
具體設(shè)計如下:
首先是變壓,為通信模塊正常穩(wěn)定工作提供5v電壓。有兩種方案可選,第一種3.3v變壓到5v,第二種方式是從外部引入的24v直接變壓為5v。由于3.3v電壓本身就是經(jīng)24v變壓所得,經(jīng)過兩次變壓,可靠性及穩(wěn)定性不好,且由低電壓變?yōu)楦唠妷捍嬖谝欢ㄈ毕荩蝗绺唠妷鹤優(yōu)榈碗妷?,這里采用第二種變壓方式。具體設(shè)計如下圖,芯片兩端只需加電容濾波去耦即可。
圖5-9 24v轉(zhuǎn)5v電路
現(xiàn)在來考慮光耦,光耦一端接MCU(電壓端3.3v),一端接233芯片和485芯片(電壓端5v)。具體設(shè)計如下,芯片采用4N30,MCU引出信號U2Tx、U2Rx,連接通信芯片的信號為TX2S、RX2S。
圖5-10 光耦應(yīng)用
232接口芯片MAX232電路如下:
圖5-11 RS232設(shè)計圖
485接口芯片電路設(shè)計如下:
需要特別指出的是:1)這里增加了一跳線,配置跳線可單獨實現(xiàn)232功能或485功能,如圖中S1。這里之所以讓兩個接口共用同一MCU通信線路,主要考慮到MCU出故障可能性很?。ㄈ羰遣捎眯≈靼逍问浇M裝MCU,當MCU 出故障時只需更換小主板即可)。此外,若要實現(xiàn)另外一組串口通信,必要增加相應(yīng)的光耦,增加了電路板面積,增加了成本。2)485芯片的使能信號接在一起,此信號有晶體管驅(qū)動。當向外發(fā)送時,若輸出低電平,晶體管不導通,輸出使能;若輸出為高電平時,晶體管導通,輸出禁能,輸出引腳為高阻狀態(tài)。與軟件串口通信協(xié)議聯(lián)系起來,串口通信中,無信號時輸出高電平,起始位為一低電平。當要向外輸出高電平時,晶體管導通把控制信號DE變?yōu)榈碗娖剑敵鼋埽J情況下,串口輸出仍為高電平,芯片能正常工作。當然,使能信號可直接由MCU控制,但那樣增加了軟件難度,這里體現(xiàn)出硬件和軟件相通的思想,即硬件的功能可有軟件來實現(xiàn),軟件的功能也可有硬件來實現(xiàn)。
5.1.5 其他模塊
(1) 直流蜂鳴器
通過控制晶體管的導通與否來控制蜂鳴器的響停,所以蜂鳴器部分只需一個GPIO接口控制即可,把引腳方向設(shè)為輸出,引腳高電平時蜂鳴器響,引腳低電平時蜂鳴器響停。
(2) 正交編碼器接口
正交編碼器安在電機上,用來檢測電機速度,需要一個7孔接口。起作用的信號有三個:A相,B相和索引信號,三信號均為脈沖信號。A相,B相信號用于檢測速度和方向,索引信號用來確定絕對位置,電機轉(zhuǎn)動一圈可產(chǎn)生多個相脈沖信號和一個索引脈沖信號。CCP引腳可捕獲A相、B相脈沖信號,用于檢測電機轉(zhuǎn)速。索引信號可簡單與一GPIO相連,當有脈沖時,引腳啟動一中斷即可。
(3) 壓力傳感器
壓力為模擬信號,信號微弱,需要信號放大,這里采用AD623放大器。電路連接與電機電流取樣連接相似,只是在引腳1和引腳8間接一電阻用于放大輸入信號。設(shè)計中電阻取10k,放大倍數(shù)為11。
(4) 位置檢測器
位置檢測器安裝在轉(zhuǎn)輪上,用于判斷大轉(zhuǎn)輪位置。
5.1.6 PCB設(shè)計
硬件電路原理圖設(shè)計完成后,就需要設(shè)計元器件的封裝,從而得到合適正確的網(wǎng)絡(luò)報表。根據(jù)所選元器件及其實際物理尺寸設(shè)計元器件的封裝,這里要注意的是,Altium Designer Summer 09封裝庫提供了許多標準元件的封裝,元器件有標準封裝的盡量采用標準封裝,免去制版廠商定制[10]。將元器件封裝與元器件匹配,提取網(wǎng)絡(luò)報表,為導入到PCB中做準備。
PCB設(shè)計按PCB板物理特性設(shè)置,布局,布線和DRC流程設(shè)計。
PCB板物理特性設(shè)置主要是根據(jù)產(chǎn)品需要設(shè)置合適的板尺寸,設(shè)置安裝孔位置及大小和一些其他的有關(guān)PCB板物理特性的設(shè)置。本設(shè)計中PCB采用兩層板,板的大小為100*85(單位:mm)。
布局主要完成PCB板上元器件的放置。這里要按模塊將元器件分開放置,需要注意的是模擬模塊要與數(shù)字模塊隔離,以減少相互干擾。此外,要根據(jù)產(chǎn)品的需要合理放置外部接口,如電源接口,串口等。
布線主要完成PCB板上元器件引腳的連接。首先設(shè)置布線規(guī)則,設(shè)置各個線路的寬度,然后自動布線看是否能布通。若能布通說明布局成功,否則需要適當調(diào)整布局以方便布線。這里采用手動布線與自動布線相結(jié)合的方式布線,首先將電源線與地線布通以方便元器件連接,需要注意的是元器件的電源和地線網(wǎng)絡(luò)之間形成的回路要最小,以減少電源供電電流形成的回路電流產(chǎn)生的電磁干擾。其次,要預(yù)布重要信號線,如PWM信號線,PWM信號是高頻信號,是電機調(diào)速信號,應(yīng)首先考慮。因本PCB板線路不復(fù)雜,大部分信號采用手動布線。最后按設(shè)計規(guī)則自動布線,完成后做適當調(diào)整。
布線完成后,在制板之前要進行DRC檢查,以防止電路板出現(xiàn)重要錯誤。
5.2 軟件設(shè)計
5.2.1 驅(qū)動層設(shè)計
5.2.1.1 串口驅(qū)動設(shè)計
程序要調(diào)試,首先要實現(xiàn)串口。在串口驅(qū)動文件中包含四個函數(shù),串口初始化函數(shù)InitUart2 (),串口發(fā)送函數(shù)Uart2Send(),串口接收函數(shù)GetCharInBuf()以及串口服務(wù)子程序void __ISR(_UART2_VECTOR, ipl2) ntUart2Handler(void)。
(1) InitUart2 ()完成串口初始化。
(2)Uart0Send(),GetCharInBuf()和UART0_ISR()共同完成串口的發(fā)送和接受。系統(tǒng)發(fā)送機制為程序有數(shù)據(jù)要發(fā)送,串口就發(fā)送數(shù)據(jù)且直到發(fā)送完成(阻塞發(fā)送);字符接受處理在串口中斷中實現(xiàn)。這里采用了循環(huán)數(shù)組來儲存接受的數(shù)據(jù),循環(huán)數(shù)組有三個屬性:CharsInBuf指示數(shù)組中存儲的元素個數(shù),CircIn指示要存儲數(shù)據(jù)的數(shù)組下標,CircOut指示要讀取的數(shù)據(jù)的數(shù)組下標。每接收一個數(shù)據(jù)并且存儲到數(shù)組中,CharsInBuf++,CircIn++,當從數(shù)組中取出一個數(shù)據(jù)時CircOut++,當CircIn、CircOut等于數(shù)組長度時,重新設(shè)置其值為0。
這里重點介紹一下中斷服務(wù)子程序,其實現(xiàn)如下:
void __ISR(_UART2_VECTOR, ipl2) IntUart2Handler(void)
{
if(mU2RXGetIntFlag()) //判斷中斷是否為接收中斷
{
mU2RXClearIntFlag(); //接收中斷標志位清零
if(CharsInBufUART0_LEN) //將串口中的數(shù)據(jù)寫入Buffer中
{
Buffer[CircIn] = (char)ReadUART2();
if(CircInUART0_LEN-1) CircIn++;
else CircIn=0;
CharsInBuf++;
}
}
if ( mU2EGetIntFlag() ) //判斷中斷是否為錯誤中斷
{
mU1EClearIntFlag();
}
if ( mU2TXGetIntFlag() ) //判斷中斷是否為傳送中斷
{
mU2TXClearIntFlag();
}
}
}
5.2.1.2 PWM驅(qū)動設(shè)計
PWM驅(qū)動完成PWM模塊的初始化和PWM占空比的設(shè)置。PWM模塊初始化按照數(shù)據(jù)手冊內(nèi)容調(diào)用相應(yīng)庫函數(shù)進行設(shè)置即可,PWM模塊可產(chǎn)生PWM信號。PWM占空比設(shè)置函數(shù)為SetPWMdutycycle(int v);
5.2.1.3 直流電機驅(qū)動設(shè)計
直流電機驅(qū)動主要完成電機速度采樣和控制。為了精確采樣,電機上安裝有正交編碼器,電機每轉(zhuǎn)一轉(zhuǎn),輸出400個脈沖。現(xiàn)將計數(shù)器設(shè)為邊沿觸發(fā),則采樣精度進一步提高,相當于電機轉(zhuǎn)速放大了400倍。
因為PIC32MX460F512L內(nèi)核沒有內(nèi)嵌QEI模塊,所以需要通過軟件采樣正交編碼器傳來的脈沖信號。Initmdc( )配置與采樣相關(guān)的定時器/計數(shù)器。這里配置TIMER4為16位定時器,定時采樣周期;配置TIMER5為16位計數(shù)器,計數(shù)采樣周期內(nèi)正交編碼器傳來的脈沖信號。
調(diào)節(jié)電機轉(zhuǎn)速在采樣中斷處理函數(shù)中完成,其原理前面已介紹,主要思想是當電機一定時,電機速度與占空比成線性關(guān)系。當PWM脈沖周期一定時,脈沖寬度與占空比成正比,所以電機轉(zhuǎn)速與PWM脈沖寬度成線性關(guān)系。代碼實現(xiàn)位函數(shù)void Setspeed( )如下
void Setspeed()
{
PWMValue=(unsigned int)ReadDCOC2PWM(); //讀取當前狀態(tài)的pwm的占空比
if(PrPumpstatus==0) SetPWMdutycycle(0); //判斷當前的電機狀態(tài)是否為停止,停止設(shè)占空比為0
else
{
if(MotorSpeed > PrPumpMTRSpeed )//當前電機轉(zhuǎn)速大于設(shè)定值
{
if( MotorSpeed - PrPumpMTRSpeed >(PrPumpMTRSpeed*0.01))
{
width=PWMValue*(PrPumpMTRSpeed)/MotorSpeed;
if(width==0) width=1;
SetPWMdutycycle(width);
}
}
else
{
if( PrPumpMTRSpeed-MotorSpeed>(PrPumpMTRSpeed*0.01))
{ //當前電機轉(zhuǎn)速小于設(shè)定值的0.01
if(MotorSpeed==0)
SetPWMdutycycle(0x0fff);
else
{
width=PWMValue*(PrPumpMTRSpeed)/MotorSpeed;
if(width>4095) //4095為占空比最大值
width=4095;
if(width==0) width=1;
SetPWMdutycycle(width);
}
}
}
}
}
其中,PWMValue為當前PWM脈沖正相部分寬度,MotorSpeed為當前電機轉(zhuǎn)速,PrPUMP.MTRSpeed為設(shè)定的轉(zhuǎn)速。
5.2.1.4 溫度檢測驅(qū)動設(shè)計
溫度檢測驅(qū)動主要使能與LMD18200 pin9相連的引腳,使其可接受電機熱報警信息,并提示用戶,這里根據(jù)LMD18200熱報警低電平輸出特性,采用了低電平中斷觸發(fā)機制。當中斷發(fā)生時,通過蜂鳴器告知用戶。
5.2.1.5 蜂鳴器驅(qū)動設(shè)計
MCU通過對一GPIO引腳的控制來控制蜂鳴器的響停。這里主要實現(xiàn)了引腳的初始化及一個簡單的服務(wù)(蜂鳴器響一段時間)。
5.2.1.6 ADC驅(qū)動設(shè)計
ADC驅(qū)動實現(xiàn)了壓力檢測和電機電流取樣功能,包括ADC模塊初始化,壓力采樣檢測和電機電流采樣檢測三部分。ADC模塊初始化配置了兩個采樣序列分別采樣壓力信號和電機電流信號,兩個采樣序列的觸發(fā)方式不同,壓力信號的采樣序列觸發(fā)方式為處理器觸發(fā),根據(jù)系統(tǒng)需要,在需要的時候觸發(fā)即可得到獲得壓力信息;電機電流信號的采樣序列觸發(fā)方式為定時器觸發(fā),不受用戶控制,主要為了保護電機,需要兩個中斷服務(wù)程序?qū)崿F(xiàn)采樣。
電流采樣需要在時間中斷配合使用:定時器定時觸發(fā)ADC采樣序列0,ADC中斷完成采樣信息的處理,當過流時簡單地使電機停止轉(zhuǎn)動,其控制流程如下:
圖5-14 電流采樣處理流程
5.2.2 應(yīng)用層設(shè)計
5.2.2.1 通信協(xié)議設(shè)計
通信協(xié)議實現(xiàn)函數(shù)為HandleProtocol(),主要解析了三條簡單命令,實現(xiàn)了泵的轉(zhuǎn)動,泵的停止和泵速度的設(shè)定。命令解析主要通過字符串匹配,本設(shè)計中采用case語句匹配字符串,需要增加命令時只需增加case語句即可,為后續(xù)開發(fā)提供方便。
表5-1 串口命令解析
命令 | 數(shù)據(jù)流向 | 含義 |
UXXXX/uXXXX | 上位機→下位機 | 泵啟動 |
DXXXX/dXXXX | 上位機→下位機 | 泵停止 |
S????/s???? | 上位機→下位機 | 設(shè)置泵轉(zhuǎn)速 |
B????/b???? | 下位機→上位機 | 顯示當前流量 |
P????/p???? | 下位機→上位機 | 顯示當前轉(zhuǎn)速 |
C????/c???? | 下位機→上位機 | 顯示當前電流 |
注:a.表中X代表任一字符,?代表任一數(shù)字。
5.2.2.2 Main()設(shè)計
Main()函數(shù)協(xié)調(diào)前臺應(yīng)用程序,其處理流程如下:
圖5-15 Main()處理流程
Main()根據(jù)用戶需要輸出壓力轉(zhuǎn)速信息,轉(zhuǎn)速為全局變量,其控制實際在速度采樣中斷中完成;壓力信息的獲取只是簡單的調(diào)用了ADC驅(qū)動文件中的壓力獲取函數(shù)GetPress()。
初始化主要完成全局變量,時鐘及相應(yīng)驅(qū)動初始化,這里需要注意的是,與定時器協(xié)調(diào)工作的模塊的初始化要放到定時器初始化前面。
5.2.2.3 上位機用戶界面
上位機用戶界面主要是便于操作人員和高壓平流泵控制系統(tǒng)的交互。實時地直觀的顯示出系統(tǒng)反饋的相關(guān)信息和方便的設(shè)置調(diào)控系統(tǒng)相關(guān)參數(shù)。
6測試
6.1測試
6.1.1 軟件仿真
通過開發(fā)工具的仿真功能對系統(tǒng)做功能仿真和時序分析。
6.1.2實物調(diào)試
通過調(diào)試電機,了解到PWM脈沖周期直接影響電機穩(wěn)定性
6.2測試數(shù)據(jù)
6.2.1 串口測試
串口主要實現(xiàn)功能就是通信,一方面輸出程序需要輸出的數(shù)據(jù),另一方面輸入數(shù)據(jù)時根據(jù)需要輸出數(shù)據(jù)。這里只是簡單地讓系統(tǒng)輸出速度設(shè)定值,當設(shè)定值改變時,輸出亦改變。測試結(jié)果如下:
圖6-1 串口測試
由測試結(jié)果知,系統(tǒng)很好地完成了串口功能。
6.2.2 ADC測試
ADC模塊主要用于采集電流、壓力。PIC32MX460F512L的ADC模塊為10位,滿量程3.3v時分辨率高達3.3v/1024=3.2mv。這里以采樣電流測試,當與電流相對的電壓大于2639(相當于7A電流,377uA/A *1k *7A=2.639 v =2639 mv)時輸出“The Current over”。通過調(diào)節(jié)電阻,數(shù)據(jù)輸出結(jié)果如下:
圖6-2 電流采樣測試
由測試結(jié)果知,系統(tǒng)的ADC模塊精度高。
6.2.3電機速度采樣與調(diào)速測試
系統(tǒng)采樣電機速度,并根據(jù)采樣結(jié)果對電機進行相應(yīng)調(diào)速。現(xiàn)給出1000rpm和3000rpm時調(diào)試結(jié)果,系統(tǒng)向上調(diào)速時輸出“100plu”,向下調(diào)速時輸出“100min”,如下圖。
圖6-3 1000rpm 測試 圖6-4 3000rpm 測試
由測試結(jié)果可知,系統(tǒng)調(diào)速精度在1.0%內(nèi),當超出此范圍時就調(diào)速,使系統(tǒng)維持在設(shè)置速度1.0%內(nèi)。
評論