1 設計任務與要求
工業生產中過程控制是流量測量與儀表應用的一大領域,流量與溫度、壓力和物位一起統稱為過程控制中的四大參數,人們通過這些參數對生產過程進行監視與控制。對流體流量進行正確測量和調節是保證生產過程安全經濟運行、提高產品質量、降低物質消耗、提高經濟效益、實現科學管理的基礎。流量的檢測和控制在化工、能源電力、冶金、石油等領域應用廣泛。
本設計的主要內容是對流量進行檢測,主要由流量傳感器采集流量信息,然后經過AD轉換器將連續的模擬信號離散化后傳給單片機,單片機在軟件系統的控制下,根據預先的設置和預期的控制要求,通過步進電機來精確控制閥門的開度,實現對流量的精確控制。其中,硬件電路的搭接是本設計的重點,控制系統軟件的設計是本課題的核心。硬件電路部分,采用AT89C51單片機,外擴EPROM存儲器,構成單片機控制系統的主體部分。通過電磁流量傳感器,AD轉換器進行輸入,通過控制步進電機帶動閥門來控制輸出。一些其他的功能,如設定值輸入,數碼管顯示則通過擴展I/O接口芯片8155來完成相應的功能。系統軟件設計部分,分別對撥碼盤設定值輸入,步進電機控制,AD轉換控制,數碼管顯示等程序進行了設計,并且設計了主程序和流量控制PID程序。
2 系統設計方案
2.1 系統設計思路
系統的總體設計思想是流量傳感器采集到流量信息,通過變換器,轉化為電信號,AD轉換器將模擬電信號轉化為離散信號,傳給單片機。單片機軟件系統根據事先的設定值對采集的信息進行處理,輸出離散的控制信號。DA轉換器將離散的控制信號轉化為模擬電量。通過模擬電量來控制閥門的動作,從而調節流量,實現流量的精確控制。
2.2 系統設計原理
系統的工作原理是流量傳感器采集到流量信息,通過變換器,轉化為電信號,AD轉換器將模擬電信號轉化為離散信號,傳給單片機。單片機軟件系統根據事先的設定值對采集的信息進行處理,輸出離散的控制信號。DA轉換器將離散的控制信號轉化為模擬電量。通過模擬電量來控制閥門的動作,從而調節流量,實現流量的精確控制。
系統原理框圖如下:
圖2 系統原理框圖
其中,電磁流量計作為流量傳感器,采集流量信息,經放大器放大后送到AD轉換器。AD轉換器將連續的模擬量轉化為單片機能接受的離散的數字量。單片機收到流量信號后,在控制系統軟件的作用下,發出相應的執行命令給執行機構——步進電機。步進電機帶動閥門動作,對流體流量進行控制
2.3 系統實現的功能
該控制系統的基本功能有如下幾點:
(1).流量顯示功能
a 復位顯示功能:
b 平均流量顯示內容折算成立方米
c 累積流量顯示內容為立方米
d 累積流量數值的保護不受停電的影響
e 顯示精度均保留到小數點后兩位
(2).對水泵的工作狀態進行監視
a 水泵工作正常,則顯示平均流量和累積流量的值
b 當水泵停止工作時LED顯示部分顯示的內容和復位時相同
(3).對電動閥門有較好的控制功能
3硬件設計
3.1 硬件系統的組成
本系統主要由水泵、流量傳感器、電動閥門和MCS-51單片機控制系統以及液體管線和控制線、監視線等組成。
系統結構框圖如下所示:
圖3.1 系統結構框圖
3.2 硬件電路及接口設計
3.2.1 MCS-51單片機與BCD碼撥盤的接口設計
(1)BCD碼撥盤
撥盤種類很多,作為人機接口使用的最方便的撥盤是十進制輸入,BCD碼輸出的BCD碼撥盤。這種撥盤為四片BCD碼撥盤拼接的4位十進制輸入撥盤組。每片撥盤具有0~9十個位置,每個位置都有相應的數字顯示,代表撥盤輸入的十進制數。因此,每片撥盤可代表一位十進制數。
表3.1 BCD碼撥盤的輸入輸出狀態表
*:輸出狀態為1時,表示該輸出線與A相遇。
(2)BCD碼撥盤與單片機的接口
單片BCD碼撥盤可以與任何一個4位I/O口或擴展I/O口相連,以輸入BCD碼,A端接+5V。為了使輸出端在不與控制端A相連時有確定的電平,常將8,4,2,1輸出端通過電阻拉低。圖3.2是AT89C51通過P1.0~P1.3與單片BCD碼撥盤的接口電路。
圖3.2 AT89C51與撥盤的接口電路
3.2.2 步進電機控制接口
步進電機是一種將電脈沖轉換成相應角位移或線位移的電磁機械裝置,也是一種能把輸出機械位移增量和輸入數字脈沖對應的驅動器件。步進電機具有快速啟停能力,只要電機的負荷不超過它所能提供的動態轉矩,就能通過輸入脈沖來控制它在一瞬間啟動和停止。步進電機的步距角和轉速只和輸入的脈沖頻率有關,和環境溫度、氣壓、沖擊和振動無關,也不受電網電壓的波動和負載變化的影響,它每轉一周都有固定的步數,步進精確和步距誤差不會長期積累。因此,步進電機在需要精確定位場合應用廣泛。
(一)步進電機的工作原理
電機定子上均勻分布有六個磁極,相鄰兩磁極間夾角為60°,磁極上繞有三相控制繞組,分別對應于A、B和C三相電源。轉子外側均勻分布有40個齒,每個齒的齒距為9°。定子的每個極弧上也有5個齒,定子和轉子的齒寬和齒距都相同,而每個定子磁極的極距為60°,故每個磁極所占的齒距數不是整數。若按ABCA順序輪流循環通電,則步進馬達就會沿順時針方向以每個脈沖3°的規律轉動起來;若把通電順序改為ABCA,則步進馬達就會沿逆時針方向一每個脈沖3°的規律轉動。這就是所謂的三相單三拍通電方式。
(二)步進電機控制系統
上述分析表明:步進電機是否旋轉是由控制繞組中輸入脈沖的有無來控制的,每步轉過的角度和方向是由三相控制繞組中的通電方式決定的。因此,步進電機的控制是要求單片機軟件產生按上述規律變化的時序脈沖,然后通過接口和驅動放大電路來驅動步進電機控制繞組工作。步進電機控制系統由硬件電路和軟件程序兩部分組成。89C51對三相步進電機的控制電路如圖3.3所示。
圖3.3 AT89C51與步進電機接口電路
3.2.3 電磁流量計電路
電磁流量計電路如圖3.4和圖3.5所示,它是利用法拉第法則檢測管內流動流體的流量。激勵線圈中流過的電流通常采用矩形波,電極間產生的流量信號與激勵波形相似,而電平為40
V~4mV左右。將該電壓信號放大并采樣,變換為4~20mV的輸出信號。檢測流體的性質,通常與流體的共同電位C對比,流量信號特別是A、B兩極間的直流成分相重疊。輸出阻抗跟樣,變換為4~20mV的輸出信號。檢測流體的性質,通常與流體的共同電位C對比,
流量信號特別是A、B兩極間的直流成分相重疊。輸出阻抗跟流體的電導率有關,最大為3M
。因此輸入部件的構件要求能把交流放大,并且阻抗高。
圖3.4示出了電磁流量計初級輸入放大電路,加入C5和C6是為了消除因A1、A2的輸入偏置電流和失調電流流過R2、R3、R5、R6而產生的直流偏壓。該直流偏壓含有由溫度引起變化約300mV電壓。
圖3.5示出第二級的采樣和保持電路,通常4066型模擬開關在輸入輸出端間的電壓為18V、85℃時規定為1
A,因此輸入輸出端間開路時的電位差,應抑制在二極管正向電壓0.6V以下。為了提高A4、A5的保持特性,輸入級使用結型場效應管的運算放大器。
圖3.4 電磁流量計初級輸入放大電路
3.2.4 MCS-51對LED的接口
1.LED數碼顯示管原理
LED數碼管結構簡單,價格便宜。八段LED顯示管有八只發光二極管組成,編號是a、b、c、d、e、f、g和SP,分別和同名管腳相連。七段LED顯示管比八段LED少一只發光二極管SP,其他的和八段LED相同。
八段LED數碼顯示管原理很簡單,是通過同名管腳是所加電平高低來控制發光二極管是否點亮而顯示不同字形的。例如:若在共陰LED管的SP、g、f、e、d、c、b、a管腳上分別加上7FH控制電平(即:SP上為0伏,不亮;其余為TTL高電平,全亮),則LED顯示管顯示字形為“8”。7FH是按SP、g、f、e、d、c、b、a順序排列后的十六進制編碼(0為TTL低電平,1為TTL高電平),常稱為字形碼。因此,LED上所顯示字形不同,相應字形碼也不一樣。八段共陰能顯示的字形及相應字形碼如表7-5所列。該表常放在內存,SGTB為表的起始地址,各地址騙移量為相應字形碼對表始址的項數。由于“B”和“8”、“D”和“0”字形相同,故“B”和“D”均以小寫字母“b”和“d”顯示。
圖3.5 第二級的采樣和保持電路
LED數碼顯示管分為共陰和共陽兩種。為共陰八段LED管時,所有發光二極管陰極共連后接到引腳G,G腳為控制端,用于控制LED是否點亮。
為共陽八段LED數碼顯示管時,所有發光二極管陽極共連后接到G腳。5因此,共陰和共陽所需字形碼正好相反,如表3.2所列
2.MCS-51對LED的顯示接口電路
MCS-51對LED管的顯示可以分為靜態和動態兩種。靜態顯示的特點是各LED管能穩定地同時顯示各自字形;動態顯示是指各LED輪流一遍一遍顯示各自字符,人們因視覺惰性而看到的是各LED似乎在同時顯示不同字形。
(1)靜態顯示
在單片機應用系統中,常采用MC14495芯片作為LED的靜態顯示接口,它可以和LED顯示器直接連接。MC14495芯片是由4位鎖存器、地址譯碼器和筆段ROM陣列以及帶有限流電阻的驅動電路(輸出電流為10mA)等三部分電路組成。
(2)動態顯示
為了減少硬件開鎖,提高系統可靠性和降低成本,單片機控制系統通常采用動態掃描顯示。圖4.7示出了89C51通過8155對六只共陽LED的接口電路。圖中,B口和所有LED的a、b、c、d、e、f、g、SP引線相連,各LED控制端G和8155C口相連,故B口為字形口和C口為字位口,因為CPU可以通過C口控制各LED是否點亮。8155的端口地址分配如下:
8000H 命令/狀態口
8001H A口
8002H B口(字形口)
8003H C口(字位口)
8004H 定時器低8位口
8005H 定時器高8位口
8000H—FFFFH 8155I/O重疊地址區
8000H—00FFH 8155 RAM 基本地址區
8000H—7FFFH 8155 RAM 重疊地址區
動態顯示采用軟件法把欲顯示十六進制數(或BCD碼)轉換為相應字形碼,故它通常需要在RAM區建立一個顯示緩沖區。顯示緩沖區內包含的存儲單元個數常和系統中LED顯示器個數相等。顯示緩沖區的起始地址很重要,它決定了顯示緩沖區在RAM中的位置。
當顯示器位數較少時,采用靜態顯示的方法是適合的。當位數較多時,用靜態顯示所需的I/O太多,一般采用動態顯示方法。
圖 3.6 LED接口電路
3.2.5 MCS-51和A/D的接口
圖3.7 ADC0809與單片機的接口
MCS-51和ADC接口必須弄清和處理好三個問題:①要給START線送一個100ns寬的起動正脈沖;②獲取EOC線上的狀態信息,因為它是A/D轉換的結束標志;③要給“三態輸出鎖存器”分配一個端口地址,也就是給OE線上送一個地址譯碼器輸出信號。
MCS-51和ADC接口通常可以采用查詢和中斷兩種方式。采用查詢法傳送數據時,MCS-51應對EOC線查詢它的狀態:若它為低電平,表示A/D轉換正在進行,則MCS-51應當繼續查詢;若查詢到EOC變為高電平,則就給OE線一個高電平,以便2-1—2-6線上提取A/D轉換后的數字量。CPU響應中斷后,應在中斷服務程序中使OE線變為高電平,以提取A/D轉換后的數字量。
4 系統軟件設計
系統軟件設計是該設計的核心,也是設計的重點和難點部分。控制系統軟件設計的好壞直接影響到該控制系統的控制功能,因此,要想做好本設計,一個好的系統軟件是關鍵。
該控制系統的程序主要分為三部分:主程序、流量控制程序和各種中斷子程序。主程序完成系統的地址分配、系統初始化和各子程序的調用。流量控制程序通過PID控制算法,實現系統的數字化控制。各子程序完成相應的各功能。
4.1 主程序設計
主程序部分,主要完成存儲器分配、系統初始化和系統整體控制等,并通過調用各子程序段,實現軟件的總體設計功能。
圖4.1 主程序流程圖
初始化:系統初始化程序的功能是對8155和89C51進行初始化,使D/A輸出為0,步進電機處于停機狀態,將RAM中的標志位和工作單元置為初始狀態,提示符CPUREADY寫入緩沖器。更新顯示器子程序的功能是將顯示緩沖器的內容,分別轉化為段數據,輸出到8155。當系統處于停機狀態時,顯示器0~4顯示參數,顯示器5~7顯示參數地址,所以73H~77H作為數據緩沖器,78H~7AH作為地址緩沖器,在運行狀態時,73H~77H作為瞬時流量緩沖器,78H~7FH作為累計流量緩沖器。初始化程序的流程如圖所示。
圖4.2 初始化流程圖
4.2 流量控制子程序
在流量測試的基礎上,把流量設定值和實際測試得到的瞬時流量進行比較計算出誤差,采用數字PID調節算法,計算輸出到AD0809的變量Uio增量式PID控制算法的計算公式為:

式中:ei為本次實際測得的流量和設定值之差;
-
;

=
-
;
P為比例系數;
I為積分系數;
D為微分系數;
輸出控制變量表達式為:
+ 
本程序占用資源:A,B,R0~R7,CY,F0。
程序如下:
PID1:MOV R0,#52H
MOV R1,#49H
LCALL FSUB
MOV R1,#46H
LCALL FSTR
MOV R1,#4CH
MOV R2,#06H
LCALL LPDM
LCALL LPDM
MOV R0,#4CH
MOV R1,#4FH
MOV 45H,48H
MOV A,4CH
MOV C,A。7
MOV F0,C
程序中 FSUB:3字節浮點數減法子程序;
FADD:3字節浮點數加法子程序;
FMUL:3字節浮點數乘法子程序;
FSTR:3字節浮點數減存放子程序。
4.3 中斷服務子程序
4.3.1 設定值輸入程序
本程序將4位BCD碼按千、百、十、個依次存放在89C51片內RAM的30H~33H單元中,每個地址單元的高4位為0,低4位為BCD碼。
RDS:MOV R0,#30H;初始化,存放單元首址
MOV R2,#7FH;P1口高4位置控制字及低4位置輸入方式MOV R3,#04H;讀入4個BCD碼
LOOP:MOV P1,A;P1口送控制字及低4位置輸入方式
MOV A,P1;讀如BCD碼
ANL A,#0FH;屏蔽高4位
MOV @R0,A;送入存儲單元
INC R0;指向下個存儲單元
MOV A,R2;準備下一片撥盤的控制端置0
DJNZ R3,LOOP;未讀完返回
RET;讀完結束
4.3.2 A/D中斷子程序
A/D中斷子程序流程圖如下所示:
圖4.3 A/D中斷子程序
程序如下:
INT0: PUSH ACC ;保護現場
SETB PSW.3 ;選工作寄存器區1
MOV DPTR,#0DF01H;讀取8155A口數據
ANL A, #0F0H ;屏蔽低4位
JNB 02H, D51 ;判斷是否采樣零信號
D51: MOV C,ACC.0 ;萬位和標志位→荷重信號緩沖器
ND5: MOV A,R2 ;判斷是否讀出千位
JNB ACC.7,ND4
JNB 02H,D41 ;判斷是否采樣零信號
ANL A, #0FH ;千位→零信號緩沖器
SWAP A
ND4: JNB ACC.6, ND3 ;判斷是否讀出百位
JNB 02H,D31 ;判斷是否采樣零信號
MOV R1, #25H ;百位→零信號緩沖器
ND3: JNB ACC.5, ND2 ;判斷是否讀出十位
JNB 02H, D21 ;判斷是否采樣信號
MOV DPTR,#0DFF3H ;啟動A/D轉換
MOV 2AH,24H ; 采樣數據送處理緩沖器
MOV 2FH,29H
SETB 03H ;置一次A/D采樣結束標志
D14: POP PSW ;恢復現場
POP ACC
RETI
4.3.3 定時器中斷子程序
定時器T0中斷程序流程圖如下圖所示。程序如下:
圖4.4 定時器T0中斷
4.3.4 數碼管顯示子程序
在單片機內部RAM的20H和21H單元中有四位十六進制數(20H中為高兩位),以下是將其自左到右顯示出來的程序。
相應程序如下:
ORG 2000H
SDIAPLAY:MOV A,20H ;20H中數送A
ANL A,#0F0H ;截取高4位
MOV P1,A ;送1#MC14495
MOV A,20H ;20H中數送A
SWAP A ;低4位送高4位
ANL A,#0F0H ;去掉低4位
INC A ;A1A0指向2#MC14495
ADD A,#02H ;A1A0指向3#MC14495
MOV P1,A ;送3#MC14495
MOV A,21H ;21H中數送A
SWAP A ;低4位送高4位
ANL A,#0F0H ;去掉低4位
RET
END
程序流程圖如下所示:
圖4.5 數碼管顯示子程序
4.3.5 步進電機控制程序
步進電機控制程序:
- ORG 2100H
- PUSH ACC ;保護現場
- MOV R4,#N ;步進馬達步進數送R4
- CLR C ;Cy清零
- ORL C,PSW.5 ;轉向標志狀態送Cy
- JC ROTE ;若為反轉,則轉ROTE
- MOV R0,#20H ;正轉模型始址送R0
- AJMP NEXT ; 轉入NEXT
- ROTE:MOV R0,#27H ;反轉模型始址送R0
- ACALL DELAY ;延時(形成脈寬)
- INC R0 ;準備下個模型指針
- MOV A,#00H ;判斷送完一遍模型值
- JZ TPL ;若模型結束,則TPL
- LOOP:DJNZ R4,NEXT ;若步進數未走完,則NEXT
- POP ACC ;恢復現場
- RET :返回
- TPL:MOV A,R0
- MOV R0,A ;恢復模型始址
- AJMP LOOP ;判斷步進馬達步數走完?
- DELAY:MOV R2,#M1 ;延時
- DELAY1:MOV R2,#M2
- DELAY2:DEC A
- JNZ DELAY2
- DJNZ R2,DELAY1
- RET
- END
復制代碼
5 小結
通過課程設計,使我加深了對所學理論知識的理解與鞏固,并能將課本上的純理論應用到實踐中,進一步加深了對知識的認識。同時,也有助于對其他知識的理解。現在,我不但對圖解法和解析法有了更深入的理解,而且熟練了應用圖解法對機構進行運動分析以及力分析。
培養了我耐心、仔細、謹慎的工作態度。這次課程設計的內容最多的是繪畫機構簡圖。在繪圖過程中,對比例尺的選定以及合理的布圖都要有細致的規劃,這是最考驗一個人的耐心與嚴謹態度的過程,只有這樣才能使繪制的機構簡圖更準確、更美觀。
通過這次課程設計,使我更充分認識了團隊合作的重要性。由于這次課設是以小組為單位對機構不同的運動位置進行運動分析和受力分析,還要查找資料,每個人都有分工。所以在進行分析的過程中每個成員都要保證自己計算數據的準確,查找資料時都要有耐心,這樣才能確保小組順利完成任務。在這次課設過程中,我們小組成員之間都互幫互助、共同思考,相互查漏補缺,互相給予信心。
最后,我對我們小組的成員同學表示衷心的感謝,因為我們是是靠互幫互助才能完成課程設計的,我想其他同學也跟我有一樣感受,同時也要誠摯地感謝指導教室宜老師在課程設計過程中給予幫助和指導。