家用电源功率因数补偿
节约用电
家用电源功率因数补偿
提高用电的功率因数, 是节约电费的根本方。这在工厂里很早就在实行。所谓功率因数,也就是用电器具所消耗的电流波形与电源波形不同步。由此产生的无功功率这与电器的用电性质有关。对于电阻性负载, 如电炉、白炽灯等。虽然它们的效率不高,但功因数比较高。而电容性负载和电感性负载,如家中的洗衣机、电扇、空调等,由于都是感性负荷,它们的功因数都不是很高。而这电器,在家用电器中大量存在。提高家用电源的功率因数。大有必要。所谓功率因数补偿。就是在感性负荷的情况下, 投入电容,使之吸收感性负荷的无功电流。
电路设计:
这里,用单片机来完成功率因数的检测、显示、及自动控制。首先来看功率因数的检测, 电压信号经R1,R3,R5,R9, 及R8,C2,C3等组成的滤波网络后,送入IC6A 的输入端。IC6A 在这里作为一个过0比较器,在它的输岀端就得到了与电源同步的方波伩号。见图2中的波形1。在PAD12,PAD11两端接由电流互感器送来的电流汛号, 也经滤波网络后,送入IC6B 的输入端。它的输岀端也得到了与电流同步的方波伩号。如果是感性负载,电流将滞后,如图二中的波形4,如果是容性负载,电流将超前,如图二中的波形2。将这两个伩号相与,得到了图二中的波形3,将此及波形1送入89C2051,进行计算。
在单片机编程序时,要考虑的是:1,要检测出功率因数的值。还有,是超前还是滞后。先检测P3.4脚的电压伩号2, 将值显示。3, 根据检测出功率因数的值来控制K1-K9来投放或切除补偿电容。这里投放或切除的顺序有个要求,先投放的先切除。使之各路电容轮流都能工作。
图(1)
电压波型
电流超前
电流滞后
图(2)
编程设计
我们看到,当电流与电压不同步时,P3.4就会岀现正脉冲。而正脉结束后电压波形为正时、为电流超前,而正脉结束后电压波形为负时、为电流滞后。当P3.4为正时我们启动一个记数器、并经过转换来表示功率因数的值。
我们知道,市电的频率为50,周长就是20毫秒,其1/2为10毫秒。要在10毫秒时间内记100个数,再用100减去所记的数,来近似的表示功率因数。
我们设置一个中断。并让它0.1毫产生一次,那么100次中断就为10毫秒。
还有要考虑的亊,1,在负载小时不进行补偿。这里用IC8C 和IC8D 放大并整流电流伩号, 只有这个值到要求值时才有无功伩号。2,补偿切換时不能太频繁。检测到无功伩号后要廷时一奌时候,以避开一些短时波动的无功伩号。
汇编程序:
ORG 00H
LJMP START
ORG 0BH
JMP INT_T0
ORG 30H
START:
MOV 46H,#00H
MOV 47H,#00H
MOV 48H,#00H
MOV 49H,#00H
MOV P1,#0FFH
SETB EA
MOV TMOD,#011H
SETB ET0
;***************
WEM:
CALL CK3
CALL WE
JNB P3.4,$
MOV R2,#5
DJNZ R2,$
JB P3.4,CK1
JMP WEM
;**************
CK1: MOV TH0,#0FFH
MOV TL0,#0A2H
SETB TR0
JB P3.4,$
JNB P3.3,CK2
JB P3.3,KKI
JMP CK1
;-----------------------------------
CK2: CLR TR0
SETB P3.5
CALL CK3
INC 49H
MOV A,49H
CJNE A,#5,WEM
MOV 49H,#00H
JMP BK1
;-----------------------------------
KKI: CLR TR0
CLR P3.5
定时中断0地址 跳转中断0程序 计数器工作方式1 定时器0溢出中断 调用显示程序 置数 置数 开定时器0 关超前灯 开超前灯 ; ; ; ; ; ; ; ; ; ;
CALL CK3
INC 4AH
MOV A,4AH
CJNE A,#5,WEM
MOV 4AH,#00H
JMP BK2
;----------------------------------------
CK3:
MOV A,42H ; 参数计算
MOV B,#10
MUL AB
ADD A,41H
MOV 44H,A ; 十位的数乘以10加个位的数放入44H MOV B,#100
MOV A,43H
MUL AB
ADD A,44H
MOV 45H,A ; 百位的数乘以100加44H 的数放入45H MOV A,#100
SUBB A,45H
MOV B,#100
DIV AB
MOV 46H,A ; 计算后的百位放入46H
MOV A,B
MOV B,#10
DIV AB
MOV 47H,A ; 计算后的十位放入47H
MOV 48H,B
CALL WE ; 调用显示程序
MOV 41H,#00H
MOV 42H,#00H
MOV 43H,#00H
CALL DELAY
RET
;----------------------------------------
; 显示程序
WE: MOV R0,#46H
K0: MOV 2FH,#8
CLR P3.1 ; 禁止串行数据转为并行输出 MOV DPTR,#TAB ;
MOV A,@R0 ; 将R0所指向的地址中内容送ACC MOVC A,@A+DPTR
CLR C
K1:
RLC A
MOV P3.0,C
SETB P3.2 ; 产生一个上升沿CLK
NOP
CLR P3.2 ; 产生一个下降沿CLK
DJNZ 2FH,K1
INC R0
CJNE R0,#49H,K0
SETB P3.1
RET
;----------------------------------------
INT_T0: ; 中断0程序
MOV TH0,#0FFH ; 置数
MOV TL0,#0A2H ; 置数
INC 41H ;41H 的值增加1
MOV A,41H ;41H 放人ACC
CJNE A,#10,EP ;ACC 到了10吗? 不到, 跳EP MOV 41H,#00H ; 到了,41H 清0
INC 42H ;42H 的值增加1
MOV A,42H ;42H 放人ACC
CJNE A,#10,EP ;ACC 到了10吗? 不到, 跳EP MOV 42H,#00H ; 到了,42H 清0
INC 43H ;43H 的值增加1
EP:
RETI
;-----------------------------------
; 加程序
BK1:
MOV R1,50H
CJNE R1,#0FFH,KK1 ;P1到0FH 吗
KK1: MOV A,31H ;31H 放入ACC
CJNE A,#07FH,KK2 ;31H 到7FH 吗, 不到转头 CPL C ; 到了CY 取反
KK2: RLC A ;ACC 左移一步
MOV 31H,A ;ACC 的值放31H
JMP RTY ; 跳转RTY
;***********************
; 减程序
BK2:
MOV R1,50H
CJNE R1,#00H,KK3 ;P1到00H 吗
KK3: MOV A,32H ;32H 放入ACC
CJNE A,#07FH,KK4 ;32H 到7FH 吗, 不到转头 CPL C ; 到了CY 取反
KK4: RLC A ;ACC 左移一步
MOV 32H,A ;ACC 的值放32H
JMP RTY ; 跳转RTY
;***********************
TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H ;***********************
RTY: ; 结果
MOV A,31H ;31H 放入ACC
XRL A,32H ;31H 与32H 作异划
MOV 50H,A
MOV P1,A
JMP BK1
;-----------------------------------------
DELAY:
MOV 24H,#20 ;1秒
N1: MOV 25H,#155
N2: MOV 23H,#160
DJNZ 23H,$
DJNZ 25H,N2
DJNZ 24H,N1 RET END