流量積算儀的設(shè)計(jì)

當(dāng)前位置:首頁(yè) >> 儀器儀表資訊

流量積算儀的設(shè)計(jì)

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



程序根據(jù)開關(guān)的設(shè)置分三大部分:①正常使用即測(cè)量部分②測(cè)量輸入頻率部分③設(shè)置調(diào)整系數(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開關(guān)1(ON),3(ON),寫系數(shù)
    NOP  
    JC   L002C ;IC40開關(guān)2(ON),4(ON),測(cè)流量
L0029: LJMP  L037A ;IC40開關(guān)2(ON),4(OFF),測(cè)頻率
L002C: LCALL L003B ;初始化
    LCALL L01D2 ;輸入頻率
    LCALL L01B7H ;流量進(jìn)行累計(jì)
    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 ;以下是測(cè)頻率
    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 ;定時(shí)顯示
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 


四、接口及外設(shè)驅(qū)動(dòng)程序
1、輸入部分程序:
L01D2: MOV  R0, P2 ;讀入P2中的頻率信號(hào)
    CLR  P3.7
    NOP  
    NOP  
    NOP  
    SETB  P3.7
    NOP  
    NOP  
    NOP  
    MOV  R1, #70H ;讀出的數(shù)據(jù)存入位置
    MOV  R6, #0A0H ;27C16中的設(shè)備地址
    MOV  R7, #08H
L01E4: LCALL L0223 ;根據(jù)相應(yīng)的頻率從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/小時(shí)
    MOV  R0, #20H
    MOV  R1, #60H
    MOV  R3, #07H
    LCALL L02FC
    MOV  R0, #20H ;將瞬時(shí)流量換算成十進(jìn)制BCD送入到30H~3FH中
    MOV  R1, #3FH
    MOV  R2, #08H
    LCALL L034A
    POP  00H
    RET   

計(jì)算累計(jì)流量送入50H中,程序如下
L01B7: mov R0, #67H ;將60H~67H中的瞬時(shí)流量二進(jìn)制值累加到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中的二進(jìn)制換算成十進(jìn)制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轉(zhuǎn)移
    MOV  DPTR, #0F10H ;第一段顯示數(shù)據(jù)(此時(shí)數(shù)據(jù)為最大)
    MOV  2FH, #0a0h ;送小數(shù)點(diǎn)數(shù)據(jù)到2FH中
    LJMP  L00DD
L009E: MOV  A, 4EH ;次高位是否為0
    NOP  
    NOP  
    MOV  A, 4EH
    ANL  A, #0FFH
    JZ   L00B1 ;為0轉(zhuǎn)移
    MOV  DPTR, #0F20H ;第二段顯示數(shù)據(jù)
    MOV  2FH, #21H ;送小數(shù)點(diǎn)數(shù)據(jù)到2FH中
    LJMP  L00DD
L00B1: MOV  A, 4DH
    NOP  
    NOP  
    MOV  A, 4DH
    ANL  A, #0FFH
    JZ   L00C4 ;為0轉(zhuǎn)移
    MOV  DPTR, #0F30H ;第三段顯示數(shù)據(jù)
    MOV  2FH, #22H ;送小數(shù)點(diǎn)數(shù)據(jù)到2FH中
    LJMP  L00DD
L00C4: MOV  A, 4CH
    NOP  
    NOP  
    MOV  A, 4CH
    ANL  A, #0FFH
    JZ   L00D7 ;為0轉(zhuǎn)移
    MOV  DPTR, #0F40H ;第四段顯示數(shù)據(jù)
    MOV  2FH, #24H ;送小數(shù)點(diǎn)數(shù)據(jù)到2FH中
    LJMP  L00DD
L00D7: MOV  DPTR, #0F50H ;第五段顯示數(shù)據(jù)
    MOV  2FH, #28H ;送小數(shù)點(diǎn)數(shù)據(jù)到2FH中
L00DD: MOV  B, #0DH ;顯示數(shù)據(jù)中的數(shù)據(jù)個(gè)數(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 ;取相應(yīng)段的數(shù)據(jù)進(jìn)行顯示
    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ù),浮動(dòng)五位。
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 ;延時(shí)程序
    DJNZ  R6, L0BFE
    RET  
4、通訊程序:
采用中斷方式傳送數(shù)據(jù)給計(jì)算機(jī)。
ORG 0023H
server:   push acc
push 00h
push 01h
push 02h ;保護(hù)斷點(diǎn)
JBC TI,server1 ;中斷程序?qū)⒗塾?jì)流量傳給算機(jī)
    RETI
Server1: mov R1,#50h
Mov R0,#08h
mov a,@r1
MOV SBUF, A  ;傳送一個(gè)位
    Djnz R0,server1
    JB P,ERROR   ;偶校驗(yàn)
    ANL A,#7FH   ;去掉校驗(yàn)位
Server2: mov R1,#60h ; 中斷程序?qū)⑺矔r(shí)流量傳給算機(jī)
Mov R0,#08h
mov a,@r1
MOV SBUF, A  ;傳送一個(gè)位
    Djnz R0,server1
    JB P,ERROR   ;偶校驗(yàn)
    ANL A,#7FH   ;去掉校驗(yàn)位
ERROR:     pop acc ;恢復(fù)斷點(diǎn)
pop 02h
pop 01h
pop 00h
RETI
四、結(jié)束語
流量計(jì)的抗干擾能力強(qiáng),在流量全范圍內(nèi)可非線性調(diào)整、內(nèi)部無可調(diào)件、使用維護(hù)簡(jiǎn)單等優(yōu)點(diǎn),可以用來測(cè)量、變送及現(xiàn)場(chǎng)顯示封閉工業(yè)管道中液體、氣體和蒸汽的流量及總量。從投用到現(xiàn)在,應(yīng)用的效果非常好,是一種理想的儀表。
參考文獻(xiàn):
1、 李華主編,MCG-51系列單片機(jī)實(shí)用接口技術(shù),北京航空航天大學(xué)出版社出版,1997,書號(hào):ISBN 7-81012-420-X/TP.091
2、 李廣弟主編,單片機(jī)基礎(chǔ),北京航空航天大學(xué)出版社出版,1994

 

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