流量積算儀的設計

當前位置:首頁 >> 儀器儀表資訊

流量積算儀的設計

摘要 本文中介紹了一個用單片機設計的流量積算儀,與流量計配合使用,能適用于各種介質,如氣體、液體等,并能在全流程范圍內進行非線性調節(jié),用各種介質的標準儀表對該流量計進行檢定后,即可使之成為該介質的流量計。
  一、測量原理
  本文中介紹了一個用單片機設計的流量積算儀,它能適用于各種介質,如氣體、液體等,并能在全流程范圍內進行非線性調節(jié),用各種介質的標準儀表對該流量計進行檢定后,即可使之成為該介質的流量計。
流量計由流量傳感器和流量積算儀兩部分組成,流量傳感器由旋渦發(fā)生體、傳感器探頭和產生輸出信號的相關電子電路組成。
  當以一定流速流動介質遇到流量傳感器的旋渦發(fā)生體時,旋渦產生的頻率與流速成正比,因此與管道內的流量成正比,因此我們用單片機設計的流量積算儀,根據(jù)傳感器送來的頻率信號,進行累計,顯示,并將累計流量和瞬時流量通過串行口通訊送到計算機中進行處理,如形成報表等。
  為使用儀表更加準確,我們可以通軟件的方法使儀表非常精確,基本上可達到0.05%左右。首先在儀表出廠前,非用標準設置對該流量計進行檢定后,即可記錄在全流程范圍內的若干段中,每段內單個頻率的每秒流量系數(shù)。然后通過四個鍵的鍵盤設置流量參數(shù),由單片機程序將系統(tǒng)全程的頻率對應的每秒流量計算出來后,寫入單片機的24C16中。
  正常測量時,根據(jù)不同的頻率取出24C16中的相應每秒流量,送到單片機中經運算,得到當時的瞬時流量(米3/小時),并進行累計。
二、硬件電路原理圖(如附圖一和附圖二)
附圖一:
  1、硬件中的核心是ATMEL生產的AT89C51/LV51單片機,它是一種低功耗/低電壓、高性能的8位單片機,片內帶有一個4K字節(jié)的Flash可編程可擦除只讀存儲器,它采用了CMOS工藝和ATMEL公司的高密度非易失性存儲器技術,而且其輸出引腳和指令系統(tǒng)都與MSC-51兼容。
  2、存儲流量和參數(shù),用的存儲器是ATMEL生產的AT24C16系列,它是一種帶有閃2K字節(jié)的可電擦除、可編程的只讀存儲器。通過單片機的P0.0和P0.1口與它的SDA和SCL分別相連,進行讀寫操作。
  3、一秒硬件復位電路,使用MC14060(十四位二進制計數(shù)器)、二個74HC132(兩輸入與非門)和二個雙JK觸發(fā)器CD4027,在CD4027的15腳形成一秒寬的時鐘脈沖。
  4、CD4027的15腳接到RESET端,使單片機定時復位。單片機采用省電模式工作,每次輸入、累計、顯示處理后等待喚醒,這樣工作功耗非常小。設置補償系數(shù)時,復位腳正常連接。
  5、流量傳感器的輸入脈沖通過74HC393鎖存(雙四位二進制計數(shù)器)后,送入單片機的P2口。輸入信號:脈沖信號(0~255)HZ
  6、在單片機內經過程序處理后,輸出顯示信號送到P1口(數(shù)據(jù)4位,選擇信號4位)。連到12針的插座上。
附圖二:
  1、輸出顯示信號送到P1口(數(shù)據(jù)4位,選擇信號4位)連到12針插座,其中數(shù)據(jù)4位(高四位)送入MC14543(BCD--鎖存/7段譯碼/驅動動器)中,共有12個MC14543,分別控制著與累計流量8位及瞬時流量4位相連的液晶塊的顯示數(shù)據(jù)。數(shù)據(jù)中另外4位選擇信號(ABCD)直接送到CD4514譯碼器(4位鎖存/4-16線譯碼器),通過兩個MC14174B(帶清0端的6D觸發(fā)器),浮動顯示的小數(shù)點位。
  2、累積流量和瞬時流量的顯示使用兩個液晶塊:EDS806A 960827/DR(8位)、EDS805A 971218/DR(4位)
  a、 累積流量顯示:八位浮點式,開始顯示小數(shù)點后五位:0.00000m3,最后顯示小數(shù)點后三位:0000.000m3。
  b、 瞬時流量顯示:顯示為小數(shù)點后兩位:00.00 m3。
三、總框圖及主程序



程序根據(jù)開關的設置分三大部分:①正常使用即測量部分②測量輸入頻率部分③設置調整系數(shù)部分。
主程序如下:
ORG  0000H
    LJMP  L001E
ORG  0003H
LJMP  L05E6
ORG  0023H
LJMP  server
MOV  C,P0.7
NOP
JC L001E
LJMP L052C ;
L001E: MOV  C, P0.7 ;IC40開關1(ON),3(ON),寫系數(shù)
    NOP  
    JC   L002C ;IC40開關2(ON),4(ON),測流量
L0029: LJMP  L037A ;IC40開關2(ON),4(OFF),測頻率
L002C: LCALL L003B ;初始化
    LCALL L01D2 ;輸入頻率
    LCALL L01B7H ;流量進行累計
    LCALL L0085 ;顯示
    ORL  87H, #02H
L003B: MOV  R0, #60H ;60H~6FH清0
    MOV  B, #10H
    LCALL L005B
    MOV  C, P3.3
    JC   L005A
    MOV  R0, #40H ;40H~6FH清0
    MOV  B, #10H
    LCALL L005B
    MOV  R0, #50H ;50H~6FH清0
    MOV  B, #10H
    LCALL L005B
L005A: RET  
L005B: MOV  @R0, #00H
    INC  R0
    DJNZ  B, L005B
    RET  



ORG  0037EH
L037E: NOP  
    JNB  P0.7, L0385
    LJMP  L052C ;寫系數(shù)
L0385: MOV  38H, #00H ;以下是測頻率
    MOV  39H, #00H
    MOV  3AH, #00H
    MOV  3BH, #00H
    MOV  3CH, #00H
    MOV  3DH, #00H
    MOV  3EH, #00H
    MOV  3FH, #00H
L03A1: CLR  C
    MOV  2EH, #00H
    MOV  2FH, #00H
    ACALL L046E
    MOV  A, R0
    NOP  
    MOV  B, #64H
    DIV  AB
    MOV  32H, A
    MOV  A, B
    MOV  B, #0AH
    DIV  AB
    MOV  31H, A
    MOV  30H, B
    MOV  33H, #00H
    MOV  34H, #00H
    MOV  35H, #00H
    MOV  36H, #00H
    MOV  37H, #00H
    ACALL L0411
    ACALL L03EF
    MOV  C, P3.3
    JC   L03EC
    MOV  38H, #00H
    MOV  39H, #00H
    MOV  3AH, #00H
    MOV  3BH, #00H
    MOV  3CH, #00H
    MOV  3DH, #00H
    MOV  3EH, #00H
    MOV  3FH, #00H
L03EC: ORL  87H, #02H
L03EF: ORL  P1, #0FFH
    MOV  B, #0EH
    CLR  A
    MOV  DPTR, #0359H ;顯示數(shù)據(jù)
L03F9: MOVC  A, @A+DPTR
    MOV  R0, A
    MOV  A, @R0
    ORL  A, #0F0H
    ANL  P1, A
    CLR  A
    INC  DPTR
    MOVC  A, @A+DPTR
    ANL  P1, A
    ORL  P1, #0F0H
    ORL  P1, #0FFH
    CLR  A
    INC  DPTR
    DJNZ  B, L03F9
    RET  
L0411: MOV  R0, #30H
    MOV  R1, #38H
    MOV  B, #08H
    CLR  C
L0419: MOV  A, @R1
    ADDC  A, @R0
    DA   A
    MOV  C, ACC.4
    CLR  ACC.4
    MOV  @R1, A
    INC  R0
    INC  R1
    DJNZ  B, L0419
    RET  
ORG 0359
DB 4BH,0DFH,4AH,0CFH,49H,9FH,49H,8FH,47H,7FH,46H,6FH,45H,5FH,44H,4FH
DB 43H,3FH,38H,2FH,37H,1FH,36H,0FH,2FH,0AFH,2DH,0BFH

ORG 000BH
LJMP L05E6

ORG 052CH
L052C: MOV  SP, #38H
    MOV  IE, #88H
    MOV  PSW, #00H
    MOV  TMOD, #15H
    MOV  TL0, #00H
    MOV  TH0, #00H
    MOV  TL1, #00H
    MOV  TH1, #00H
    SETB  TCON.TR0
    SETB  TCON.TR1
    SETB  P3.1
    MOV  P3, #0FFH
L0552: LCALL L0BD3 ;鍵盤輸入
L0579: CJNE  A, #0FBH, L0552
    LCALL L0814 ;寫系數(shù)
    RET  

ORG 05E6H ;定時顯示
L05E6: PUSH  ACC
    PUSH  PSW
    MOV  PSW, #08H
    MOV  TL1, #00H
    MOV  TH1, #00H
    CLR  A
    MOV  78H, A
    SETB  01H
    MOV  R0, #25H
    MOV  R1, #00H
    MOV  R7, #0CH
L05FE: MOV  A, #00H
    ORL  A, #0F0H
    ANL  P1, A
    ANL  P1, A
    CLR  A
    MOV  A, #0BFH
    ANL  P1, A
    ORL  P1, #0F0H
    ORL  P1, #0FFH
    MOV  A, #00H
    ORL  A, #0F0H
    ANL  P1, A
    ANL  P1, A
    CLR  A
    MOV  A, #0AFH
    ANL  P1, A
    ORL  P1, #0F0H
    ORL  P1, #0FFH
    MOV  A, R0
    CJNE  A, 00H, L0635
    JNB  0AH, L0635
    CPL  0BH
    JNB  0BH, L0635
    MOV  A, #0FH
    LJMP  L0636
L0635: MOV  A, @R0
L0636: ANL  A, #0FH
    SWAP  A
    ORL  A, R1
    SWAP  A
    MOV  P1, A
    ORL  A, #0F0H
    MOV  P1, A
    INC  R0
    INC  R1
    CJNE  R1, #0AH, L0648
    INC  R1
    INC  R1
L0648: DJNZ  R7, L05FE
    POP  PSW
    POP  ACC
    RETI 


四、接口及外設驅動程序
1、輸入部分程序:
L01D2: MOV  R0, P2 ;讀入P2中的頻率信號
    CLR  P3.7
    NOP  
    NOP  
    NOP  
    SETB  P3.7
    NOP  
    NOP  
    NOP  
    MOV  R1, #70H ;讀出的數(shù)據(jù)存入位置
    MOV  R6, #0A0H ;27C16中的設備地址
    MOV  R7, #08H
L01E4: LCALL L0223 ;根據(jù)相應的頻率從27C16中讀取每秒流量參數(shù)
    MOV  @R1, A
    INC  R1
    MOV  A, R6
    ADD  A, #02H ;
    MOV  R6, A
    DJNZ  R7, L01E4 ;讀8位參數(shù)
    PUSH  00H
    MOV  R1, #70H
    MOV  R0, #28H
    MOV  R3, #08H
L01F7: MOV  A, @R1
    MOV  @R0, A
    DEC  R0
    INC  R1
    DJNZ  R3, L01F7 ;將70H中的數(shù)據(jù)送入20H~27H中
    MOV  R0, #20H ;將20H~27H中的數(shù)據(jù)送到60H~67H中。
    MOV  R1, #67H
    MOV  R3, #08H
L0203: MOV  A, @R0
    MOV  @R1, A
    INC  R0
    INC  R1
    DJNZ  R3, L0203
    MOV  60H, #36H ;將60H中的每秒流量換算成米3/小時
    MOV  R0, #20H
    MOV  R1, #60H
    MOV  R3, #07H
    LCALL L02FC
    MOV  R0, #20H ;將瞬時流量換算成十進制BCD送入到30H~3FH中
    MOV  R1, #3FH
    MOV  R2, #08H
    LCALL L034A
    POP  00H
    RET   

計算累計流量送入50H中,程序如下
L01B7: mov R0, #67H ;將60H~67H中的瞬時流量二進制值累加到50H~57H
    MOV  R1, #57H
    MOV  B, #08H
    CLR  C
L01BF: MOV  A, @R1
    ADDC  A, @R0
    DA   A
    MOV  @R1, A
    DEC  R0
    DEC  R1
    DJNZ  B, L01BF
    MOV  R0, #50H ;將50H~57H中的二進制換算成十進制BCD碼
    MOV  R1, #4FH ;送到40H~47H中
    MOV  R2, #08H
    LCALL L034A
    RET  
2、顯示部分:
程序如下:

L0085: ORL  P1, #0FFH ;P1口置1,4FH~40H中是要顯示的數(shù)據(jù)(高~低)
    MOV  A, 4FH ;最高位是否為0
    NOP  
    NOP  
    MOV  A, 4FH
    ANL  A, #0ffH
    JZ   L009E ;為0轉移
    MOV  DPTR, #0F10H ;第一段顯示數(shù)據(jù)(此時數(shù)據(jù)為最大)
    MOV  2FH, #0a0h ;送小數(shù)點數(shù)據(jù)到2FH中
    LJMP  L00DD
L009E: MOV  A, 4EH ;次高位是否為0
    NOP  
    NOP  
    MOV  A, 4EH
    ANL  A, #0FFH
    JZ   L00B1 ;為0轉移
    MOV  DPTR, #0F20H ;第二段顯示數(shù)據(jù)
    MOV  2FH, #21H ;送小數(shù)點數(shù)據(jù)到2FH中
    LJMP  L00DD
L00B1: MOV  A, 4DH
    NOP  
    NOP  
    MOV  A, 4DH
    ANL  A, #0FFH
    JZ   L00C4 ;為0轉移
    MOV  DPTR, #0F30H ;第三段顯示數(shù)據(jù)
    MOV  2FH, #22H ;送小數(shù)點數(shù)據(jù)到2FH中
    LJMP  L00DD
L00C4: MOV  A, 4CH
    NOP  
    NOP  
    MOV  A, 4CH
    ANL  A, #0FFH
    JZ   L00D7 ;為0轉移
    MOV  DPTR, #0F40H ;第四段顯示數(shù)據(jù)
    MOV  2FH, #24H ;送小數(shù)點數(shù)據(jù)到2FH中
    LJMP  L00DD
L00D7: MOV  DPTR, #0F50H ;第五段顯示數(shù)據(jù)
    MOV  2FH, #28H ;送小數(shù)點數(shù)據(jù)到2FH中
L00DD: MOV  B, #0DH ;顯示數(shù)據(jù)中的數(shù)據(jù)個數(shù)
    MOV  A, 2FH
    ANL  A, #0FH
    MOV  2DH, A
    MOV  A, 2FH
    ANL  A, #0F0H
    SWAP  A
    MOV  2FH, A
    CLR  A
L00EE: MOVC  A, @A+DPTR ;取相應段的數(shù)據(jù)進行顯示
    MOV  R0, A
    MOV  A, @R0
    ORL  A, #0F0H
    ANL  P1, A
    NOP  
    NOP  
    NOP  
    NOP  
    NOP  
ANL  p1,a
    CLR  A
    INC  DPTR
    MOVC  A, @A+DPTR
    ANL  P1, A
NOP
    NOP  
    NOP
    NOP  
    ANL  P1, A
    ORL  P1, #0F0H
    ORL  P1, #0FFH
    CLR  A
    INC  DPTR
    DJNZ  B, L00EE
END  
ORG 0F10H ;以下為顯示數(shù)據(jù),浮動五位。
DB 4FH,0DFH,4EH,0CFH,4DH,9FH,4CH,8FH,4BH,7FH,4AH,6FH,49H,5FH,48H,4FH
DB 47H,3FH,38H,2FH,37H,1FH,36H,0FH,2FH,0AFH,2DH,0BFH
ORG 0F20 H
DB 4EH,0DFH,4DH,0CFH,4CH,9FH,4BH,8FH,4AH,7FH,49H,6FH,48H,5FH,47H,4FH
DB 46H,3FH,38H,2FH,37H,1FH,36H,0FH,2FH,0AFH,2DH,0BFH
ORG 0F30 H
DB 4DH,0DFH,4CH,0CFH,4BH,9FH,4AH,8FH,49H,7FH,48H,6FH,47H,5FH,46H,4FH
DB 45H,3FH,38H,2FH,37H,1FH,36H,0FH,2FH,0AFH,2DH,0BFH
ORG 0F40 H
DB 4CH,0DFH,4BH,0CFH,4AH,9FH,49H,8FH,48H,7FH,47H,6FH,46H,5FH,45H,4FH
DB 44H,3FH,38H,2FH,37H,1FH,36H,0FH,2FH,0AFH,2DH,0BFH
ORG 0F50 H
DB 4BH,0DFH,4AH,0CFH,49H,9FH,49H,8FH,47H,7FH,46H,6FH,45H,5FH,44H,4FH
DB 43H,3FH,38H,2FH,37H,1FH,36H,0FH,2FH,0AFH,2DH,0BFH
3、鍵盤部分:
L0BD3: SETB P3.2
    SETB  P3.3
SETB p3.4
    SETB  P3.5
    MOV  A, P3
    ORL  A, #0D7H
    CJNE  A, #0FFH, L0BF0
    MOV  R6, #10H
    ACALL L0BFE
    MOV  A, P3
    ORL  A, #0D7H
    CJNE  A, #0FFH, L0BD3
    CLR  A
    CLR  07H
    SJMP  L0BFD
L0BF0: MOV  R6, #10H
    ACALL L0BFE
    MOV  A, P3
    ORL  A, #0D7H
    CJNE  A, #0FFH, L0BFD
    SJMP  L0BD3
L0BFD: RET  
L0BFE: NOP  
    LCALL L07D3 ;延時程序
    DJNZ  R6, L0BFE
    RET  
4、通訊程序:
采用中斷方式傳送數(shù)據(jù)給計算機。
ORG 0023H
server:   push acc
push 00h
push 01h
push 02h ;保護斷點
JBC TI,server1 ;中斷程序將累計流量傳給算機
    RETI
Server1: mov R1,#50h
Mov R0,#08h
mov a,@r1
MOV SBUF, A  ;傳送一個位
    Djnz R0,server1
    JB P,ERROR   ;偶校驗
    ANL A,#7FH   ;去掉校驗位
Server2: mov R1,#60h ; 中斷程序將瞬時流量傳給算機
Mov R0,#08h
mov a,@r1
MOV SBUF, A  ;傳送一個位
    Djnz R0,server1
    JB P,ERROR   ;偶校驗
    ANL A,#7FH   ;去掉校驗位
ERROR:     pop acc ;恢復斷點
pop 02h
pop 01h
pop 00h
RETI
四、結束語
流量計的抗干擾能力強,在流量全范圍內可非線性調整、內部無可調件、使用維護簡單等優(yōu)點,可以用來測量、變送及現(xiàn)場顯示封閉工業(yè)管道中液體、氣體和蒸汽的流量及總量。從投用到現(xiàn)在,應用的效果非常好,是一種理想的儀表。
參考文獻:
1、 李華主編,MCG-51系列單片機實用接口技術,北京航空航天大學出版社出版,1997,書號:ISBN 7-81012-420-X/TP.091
2、 李廣弟主編,單片機基礎,北京航空航天大學出版社出版,1994

 

發(fā)布人:2008/7/15 9:37:003072 發(fā)布時間:2008/7/15 9:37:00 此新聞已被瀏覽:3072次