標(biāo)題: 具有測(cè)量家用電器功率和消耗電度數(shù)的插排 AD7755檢測(cè) [打印本頁(yè)]
作者: 51黑黑黑 時(shí)間: 2016-2-24 19:01
標(biāo)題: 具有測(cè)量家用電器功率和消耗電度數(shù)的插排 AD7755檢測(cè)
本帖最后由 51黑黑黑 于 2016-3-3 00:53 編輯
(一)、測(cè)量原理
下面我們要利用淘汰的數(shù)字電度表芯,制作一個(gè)具有測(cè)量電功率和電度數(shù)的插排。早期的電子式電度表采用AD7755系列芯片,或類似的國(guó)產(chǎn)芯片。
下圖是AD7755的功能框圖,AD7755是一種高精度的電功率測(cè)量芯片,其內(nèi)部的乘法器是數(shù)字型乘法器。它的工作原理是由分壓器完成電壓取樣,電流通過錳銅片分流完成電流取樣,取樣后的電壓、電流信號(hào)由乘法器轉(zhuǎn)換為功率信號(hào),經(jīng)數(shù)字--頻率變換后,它輸出的脈沖信號(hào)可以直接驅(qū)動(dòng)計(jì)數(shù)器的步進(jìn)電機(jī)來顯示電度數(shù)。V1P、V1N為電流傳感器的模擬輸入端,V2P、V2N為電壓傳感器的模擬輸入端。ADE7755引腳F1和F2以較低頻率形式輸出有功功率平均值,能直接驅(qū)動(dòng)機(jī)電式計(jì)度器或MCU接口。引腳CF以較高頻率形式輸出有功功率瞬時(shí)值,用于校驗(yàn)或與MCU接口。我們制作的插排就是利用CF經(jīng)光電耦合器輸出的電度脈沖進(jìn)行計(jì)數(shù)來獲得負(fù)載的功率和電度數(shù)。單片機(jī)的INT0接光耦輸出端,每個(gè)電度脈沖來到時(shí)產(chǎn)生中斷,中斷程序中對(duì)電度脈沖數(shù)計(jì)數(shù),夠160個(gè)脈沖35h單元加1,35單元存電度數(shù)1/10位,36單元存電度數(shù)個(gè)位。中斷程序中還要對(duì)2個(gè)脈沖之間進(jìn)行定時(shí),第1個(gè)脈沖來到,啟動(dòng)定時(shí)器,第二個(gè)脈沖再來時(shí)關(guān)閉定時(shí)器,這樣就獲得了一個(gè)脈沖周期所用的時(shí)間t存放到41H和42H單元。DDS67型單相電子式電能表1度電是1600個(gè)脈沖。那么1瓦*2250秒=1個(gè)脈沖,定時(shí)器0的定時(shí)時(shí)長(zhǎng)為50毫秒,每50毫秒41H加1,42H是50ms計(jì)數(shù)高位,(42H,41H)*50是一個(gè)脈沖周期的時(shí)長(zhǎng)(ms),2250/0.05=45000,所以用45000除以(42H,41H)的計(jì)數(shù)值就等于功率數(shù)(瓦)。最小量程45000除以65535=0.68瓦,需1.82小時(shí)完成,最大量程是45000/1=45kw,50毫秒鐘完成。一般家用電器的功率都在幾瓦到上千瓦,所以測(cè)量時(shí)間在幾分鐘內(nèi)完成。開始測(cè)量時(shí),每個(gè)脈沖到來時(shí)顯示用電器的功率數(shù),當(dāng)脈沖達(dá)到160個(gè)以后就顯示0.1度開始的電度數(shù)。

(二)單片機(jī)電路及電度表電路
插排顯示的0070是我正在使用的微機(jī)實(shí)際消耗功率是70瓦。
(三)、電度表插排程序
ORG0000h ;
AJMPL1
ORG 0003h
AcallZD
ORG 000BH
AJMP CT
ORG 0023H
RETI
ORG 0030H
L1: MOVSP,#60H ;設(shè)堆棧指針
MOV A,#21H ;定時(shí)器1\0工作方式2,8位可重裝,
MOVTMOD,A ;
MOV 8BH,#0F3H ;給定時(shí)器1賦值6M=FF,1200波特率
MOV8DH,#0F3H ;給定時(shí)器0賦值6M=FF,1200波特率
MOV TH0, #9EH ;定時(shí)50毫秒
MOV TL0, #58H
SETB 0BCH ;通信中斷優(yōu)先,IP中PS置1
MOVA,#93H ;允許串口和定時(shí)器0及INTO中斷及總中斷,禁止定時(shí)器1中斷
MOVIE,A ;A8H
SETBIT0 ;INT0下降沿觸發(fā)
MOV A,#50H;;設(shè)串行口模式1,允許接收。
MOVSCON,A ;送串行控制SCON
CLR REN
MOVA,#00H
MOVR2,#50D ;清數(shù)據(jù)區(qū)
MOV R0,#20H
QRAM: MOV @R0, A
INC R0
DJNZ R2, QRAM
DIS:MOV DPTR,#0700H
MOV A,35H
JZ DIS1
MOV R1, #35H ;夠160個(gè)脈沖顯示電度數(shù)
AJMP DIS2
DIS1: MOV R1,#30H
DIS2: MOV A,@R1
MOVC A, @A+DPTR
MOV P1,A
CLR P3.3
ACALL DELAY1
SETB p3.3
INC R1
MOV A, @R1
MOVC A,@A+DPTR
MOV P1,A
CLR P3.4
MOVA,R1
CJNEA,#36H,DIS4
CLR P1.0
DIS4: ACALLDELAY1
SETB p3.4
INCR1
MOVA, @R1
MOVC A,@A+DPTR
MOV P1,A
CLR P3.5
ACALL DELAY1
SETB p3.5
INCR1
MOVA, @R1
MOVC A,@A+DPTR
MOV P1,A
CLR P3.7
ACALL DELAY1
SETB p3.7
J6: AJMP DIS
ORG 0100h;定時(shí)器中斷子程序
CT: MOV 8CH, #9EH
MOV 8AH, #58H ;BEH
PUSH 0D0H
PUSH 0E0H
PUSH 82H
PUSH 83H
INC41H ;50毫秒計(jì)數(shù)低2位41H,42H是50ms計(jì)數(shù)高位
MOV A,41H
CJNE A, #0FFH, DONE2
INC 42H
DONE2: MOV A, 2FH
INC A
MOV 2FH, A
CJNE A, #14H, DONE
MOV 2FH, #00H
MOV A,30H
INC A
MOV 30H,A
; MOV 41H,A
CJNE A, #0AH, DONE
MOV 30H, #00H
MOV A, 31H
INC A
MOV 31H, A
CJNE A, #0AH, DONE
MOV 31H, #00H
MOV A, 32H
INC A
MOV 32H, A
CJNE A, #0AH, DONE
MOV 32H,#00H
MOV A, 33H
INC A
MOV 33H, A
CJNE A, #0AH,DONE
MOV 33H, #00H
DONE: POP 83H
POP 82H
POP 0E0H
POP 0D0H
RETI
ORG 0200H
; INT0中斷程序
ZD: MOV A,34H
INCA ;電度脈沖數(shù)加1
MOV 34H ,A
CJNE A,#0A0H,ZD1 ;夠160個(gè)脈沖35h單元加1,35單元存電度數(shù)1/10位
MOV 34H, #00H
MOV A,35H
INC A
MOV 35H,A
CJNEA,#0AH,ZD1 ;夠160個(gè)脈沖35h單元加1,36單元存電度數(shù)個(gè)位
MOV 35H,#00H
INC 36H
ZD1: MOVA,40H ;是第二個(gè)脈沖嗎
XRL A,#00H
JZ DIS3
CLRTR0 ;第二個(gè)脈沖到,關(guān)閉定時(shí)器
MOV40H,#00H ;置標(biāo)志
ACALL DIVD ;調(diào)用除法程序
ACALLIBTD ;調(diào)用二進(jìn)制數(shù)轉(zhuǎn)壓縮的十進(jìn)制數(shù)子程序
MOVA,r6 ;把壓縮的十進(jìn)制數(shù)送顯示區(qū)
ANL A,#0FH
MOV 30H,A
MOV A,r6
ANL A,#0F0H
SWAP A
MOV 31H,A
MOV A,r5
ANL A,#0FH
MOV32H,A
MOV A,r5
ANL A,#0F0H
SWAP A
MOV 33H,A
AJMP FH
DIS3: MOV40H,#01H ;置標(biāo)志
MOV 2FH,#00
MOV 30H,#00
MOV 31H,#00
MOV 32H,#00
MOV 33H,#00
MOV41H,#00 ;秒存儲(chǔ)單元低位FF
MOV42H,#00 ;秒存儲(chǔ)單元高位FF
SETBTR0 ;第一脈沖啟動(dòng)定時(shí)器計(jì)秒數(shù)
FH: RETI
org 0500h
;入口條件:被除數(shù)在R2、R3、R4、R5中,除數(shù)在R6、R7中。
;出口信息:OV=0時(shí),雙字節(jié)商在R4、R5中,OV=1 時(shí)溢出。
;影響資源:PSW、A、B、R1~R7 堆棧需求: 2字節(jié)
DIVD: MOV R2,#00H
MOV R3,#00H
MOV R4,#57H
MOV R5,#0E4H
MOV R4,#0AFH ;45000
MOV R5,#0C8H
MOV R6,42H;50毫秒存儲(chǔ)單元高位FF
MOV R7,41H;50毫秒存儲(chǔ)單元低位FF
CLR C ;比較被除數(shù)和除數(shù)
MOV A,R3
SUBB A,R7
MOV A,R2
SUBB A,R6
JC DVD1
SETB OV ;溢出
RET
DVD1: MOV B,#10H ;計(jì)算雙字節(jié)商
DVD2: CLR C ;部分商和余數(shù)同時(shí)左移一位
MOV A,R5
RLC A
MOV R5,A
MOV A,R4
RLC A
MOV R4,A
MOV A,R3
RLC A
MOVR3,A
XCH A,R2
RLC A
XCH A,R2
MOV F0,C ;保存溢出位
CLR C
SUBB A,R7 ;計(jì)算(R2R3-R6R7)
MOV R1,A
MOV A,R2
SUBB A,R6
JB F0,DDIV2;ANL C,/F0 ;結(jié)果判斷
JC DVD3
DDIV2: MOV R2,A;夠減,存放新的余數(shù)
MOV A,R1
MOV R3,A
INC R5 ;商的低位置一
DVD3: DJNZ B,DVD2 ;計(jì)算完十六位商(R4R5)
MOV A,R4 ;將商移到R2R3中
MOV R2,A
MOV A,R5
MOV R3,A
CLR OV ;設(shè)立成功標(biāo)志
RET
IBTD: CLRA ;雙字節(jié)二翻十子程序(R2R3)---(R4R5R6),結(jié)果為壓縮BCD碼
MOV R4,A
MOV R5,A
MOV R6,A
MOV R7,#10H
LOOP: CLR C
MOV A,R3
RLC A
MOV R3,A
MOVA,R2
RLC A
MOV R2,A
MOV A,R6
ADDC A,R6
DA A
MOV R6,A
MOV A,R5
ADDC A,R5
DA A
MOV R5,A
MOV A,R4
ADDC A,R4
DA A
MOV R4,A
DJNZ R7,LOOP
RET
ORG 0700H
DB03H,9FH,25H,0DH,99H,49H,41H,1FH,01H,09H,11H,0C1H,63H ;89ABCDEFP熄滅
DB85H,61H,71H,31H,0FFH,0FCH;"-"
DELAY: MOV R5, #0FFH
DEL: NOP
DJNZ R5,DEL
RET
DELAY1: MOV R6, #4H
DELA: ACALL DELAY
DJNZ R6,DELA
RET
DELAY2: MOV R6, #0FFH
DE: ACALLDELAY
DJNZ R6,DE
RET
END
作者: DansLe 時(shí)間: 2016-3-5 11:19
樓主厲害啊,可惜用的匯編,看不大懂,不過思路了解了
作者: GUOXUAN 時(shí)間: 2017-11-24 17:21
好文章,樓主可以做電表了,可是現(xiàn)在的電表都被壟斷換成電子表了.
歡迎光臨 (http://www.torrancerestoration.com/bbs/) |
Powered by Discuz! X3.1 |