基于单片机的过零检测控制系统的设计
如下图所示为按上述思想设计的电压正向过零检测电路。220V的交流电首先经过电阻分压,然后进行光电耦合,假设输入的是A相电压,则在A相电压由负半周向正半周转换时,图中三极管导通并工作在饱和状态,会产生一个下降沿脉冲送入ADμC812的INT0引脚使系统进入中断程序。微机系统进入中断程序后,发出采样命令并从采样保持器读取无功电流值Iqm,这个无功电流即为A相的无功电流,经过1/4个周期电压达到最大值,此时对电压进行采样,得到UM,由UM=1.414U可以得到电压有效值U。
过零检测及单片机调压
首先用PWM(脉宽调制)方法用于可控硅控制是有条件的,即调制频率不能大于市电频率(50Hz),也就是周期
不能小于20mS,否则就不能达到调制作用,调制频率超过市电频率时,可控硅即处于连续导通状态而不能达到调压目的。只有调制频率低于市电频率才能起到调压目的,即限制市电的周波通过可控硅的数量而起到调压的目的。因此用该种方法调制的电压周波数一定是小于50HZ,超过了人眼视觉暂留效应,此就是用于调光产生闪烁的原因。该调压方法用在调功或对脉动电压不敏感的用途上尚可。如果采用可控硅调压用在调光上,须采用移相的调制方法,可使光连续可调。采用移相方法就需过零检测作为移相基点。过零检测其实并不难,如果要求调压比不是很高采用简单的方法即可奏效;用一只三极管即可。用单片机进行移相调压控制可以做得很精。
/********************************************************************************/ #i nclude
__CONFIG (CPD&PROTECT&BOREN&MCLRDIS&PWRTEN&WDTEN&INTIO);
/********************************************************************************/ //
void init (void);
/********************************************************************************/ //
bit fg_pw,fg_vs,fg_zq;
volatile unsigned char fg_count;
volatile unsigned int time1_temp,buff;
/********************************************************************************/ #define powon GPIO|=0B00110000
#define powoff GPIO&=0B00001111
#define vpp GPIO2
#define feedback GPIO0
/********************************************************************************/ void init (void)
{ CLRWDT();
TRISIO=0B11001111;
WPU=1;
IOCB=4; //使能过零信号中断
VRCON=0;
PIE1=1;
OPTION=0;
INTCON&=7;
INTCON|=0B10001000;
CMCON=7;
T1CON&=1;
T1CON|=0x10;
}
/*********************************************************************************/ void interrupt isr_power (void)
{ GPIO=GPIO;
if (TMR1IF&&TMR1ON)
{ TMR1IF=0;
if (fg_pw)
{ if (!fg_vs)
{powon;fg_vs=1;TMR1L=112;TMR1H=0xfe;} //触发宽度400US(256+144)
else
{fg_vs=0;
powoff; //关闭
TMR1ON=0;
}
}
else {powoff;fg_count=0;}
}
if (GPIF)
{ GPIF=0;
if (fg_pw)
{fg_zq=1;
TMR1H=(time1_temp>>8);
TMR1L=(time1_temp&0xff);
//if (vpp==0) TMR1H-=3; //上下沿检测,下沿时间补偿(3*256)US TMR1ON=1;
}
else
{ if (vpp) {TMR1ON=1;TMR1L=TMR1H=0;} //l-->h
else
{time1_temp=(TMR1H<<8|TMR1L); //h-->l
TMR1ON=0;
TMR1L=TMR1H=0;
time1_temp=~time1_temp; //同步信号周期检测(时间)
time1_temp+=1000; //一个半周时间中缩短1MS开始触发
buff=time1_temp;
if (++fg_count>=4) fg_pw=1;//连续周期检测4次
}
}
}
}
/************************************************************************************/
void main (void)
{ unsigned int i;
TMR0=0;
init();
while (1)
{ if (fg_pw&&fg_zq)
{ fg_zq=0;
if (feedback) {if(time1_temp<0xffff-1000) time1_temp+=20;}//功率(电压)上限 else
{if (time1_temp>buff)time1_temp-=20;} //功率(电压)下限
for (i=1000;i!=0;i--) {;}
init();
}
}
}
光电隔离抗干扰技术及应用
摘要:在电子电路系统中,不可避免地存在各种各样的干扰信号,若电路的抗干扰能力差将导致测量、控制准确性的降低,甚至产生误动作,从而带来破坏性的后果。因此,若硬件上采用一些设计技术,破坏干扰信号进入测控系统的途径,可有效地提高系统的抗干扰能力。事实证明,采用隔离技术是一种简便且行之有效的方法。隔离技术是破坏“地”干扰途径的抗干扰方法,硬件上常用光电耦合器件实现电→光→电的隔离,它能有效地破坏干扰信号的进入,可靠地实现信号的隔离,并容易构成各种功能状态。
关键词:光电耦合器隔离抗干扰
1.光电耦合器件简介
光电耦合器件是把发光器件(如发光二极管)和光敏器件(如光敏三极管)集成在一起,通过光线实现耦合构成电一光和光一电的转换器件。图1所示为常用的三极管型光电耦合器原理图。
当电信号送人光电耦合器的输入端时,发光二极管通过电流而发光,光敏元件受到光照后产生电流,CE导通;当输入端无信号,发光二极管不亮,光敏三极管截止,CE不通。对于数字量,当输人为低电子“0”时,光敏三极管截止,输出为高电平“1”;当输人为高电平“1”时,光敏三极管饱和导通,输出为低电平“0”。若基极有引出线则可满足温度补偿、检测调制要求。
光电耦合器之所以在传输信号的同时能有效地抑制尖脉冲和各种噪声干扰,使通道上的信噪比大为提高,主要有以下几方面的原因:
(1)光电耦合器的输入阻抗很小,只有几百欧姆,而干扰源的阻抗较大,通常为10
5~106Ω。据分压原理可知,即使干扰电压的幅度较大,但馈送到光电耦合器输入端的噪声电压会很小,只能形成很微弱的电流,由于没有足够的能量而不能使二极管发光,从而被抑制掉了。
(2)光电耦合器的输入回路与输出回路之间没有电气联系,也没有共地;发光管和受光器之间的耦合电容很小(2pF以内)的分布电容极小,而绝缘电阻又很大,因此回路一边的各种干扰噪声都很难通过光电耦合器馈送到另一边去,避免了共阻抗耦合的干扰信号的产生。
(3)光电耦合器可起到很好的安全保障作用,即使当外部设备出现故障,甚至输入信号线短接时,也不会损坏仪表。因为光耦合器件的输入回路和输出回路之间可以承受几千伏的高压。
(4)光电耦合器的响应速度极快,其响应延迟时间只有10μs左右,适于对响应速度要求很高的场合。
2.光电隔离技术的应用
2.1 微机接口电路中的光电隔离
微机有多个输入端口,接收来自远处现场设备传来的状态信号,微机对这些信号处理后,输出各种控制信号去执行相应的操作。在现场环境较恶劣时,会存在较大的噪声干扰,若这些干扰随输入信号一起进入微机系统,会使控制准确性降低,产生误动作。因而,可在微机的输入和输出端,用光耦作接口,对信号及噪声进行隔离。典型的光电耦合电路如图2所示。
该电路主要应用在“A/D转换器”的数字信号输出,及由CPU发出的对前向通道的控制信号与模拟电路的接口处,从而实现在不同系统间信号通路相联的同时,在电气通路上相互隔离,并在此基础上实现将模拟电路和数子电路相互隔离,起到抑制交叉串扰的作用。
2.2 功率驱动电路中的光电隔离
在微机控制系统中,大量应用的是开关量的控制,这些开关量一般经过微机的I/O输出,而I/O的驱动能力有限,一般不足以驱动一些点磁执行器件,需加接驱动接口电路,为了避免微机受到干扰,须采取隔离措施。如晶闸管所在的主电路一般是交流强电回路,电压较高,电流较大,不易与微机直接相连,可应用光耦合器将微机控制信号与晶闸管触发电路进行隔离,电路实例如图3所示。
在马达控制电路中,也可采用光耦来把控制电路和马达高压电路隔离开。马达靠MOSFET或IGBT功率管提供驱动电流,功率管的开关控制信号和大功率管之间需隔离放大级。在光耦隔离级一放大器级一大功率管的连接形式中,要求光耦具有高输出电压、高速和高共模抑制。
2.3 远距离的隔离传送
在计算机应用系统中,由于测控系统与被测和被控设备之间不可避免地要进行长线传输,信号在传输过程中很易受到干扰,导致传输信号发生畸变或失真,另外,在通过较长电缆连接的相距较远的设备之间,常因设备间的地线电位差,导致地环路电流,对电路形成差模干扰电压。为确保长线传输的可靠性,可采用光电耦合隔离措施,将2个电路的电气连接隔开,切断可能形成的环路,使他们相互独立,提高电路系统的抗干扰性能。若传输线较长,现场干扰严重,可通过两级光电耦合器将长线完全“浮置”起来,如图4所示。
长线的"浮置"去掉了长线两端间的公共地线,不但有效消除了各电路的电流经公共地线时所产生噪声电压形成相互窜扰,而且也有效地解决了长线驱动和阻抗匹配问题;同时,受控设备短路时,还能保护系统不受损害。
2.4 过零检测电路中的光电隔离
零交叉,即过零检测,指交流电压过零点被自动检测进而产生驱动信号,使电子开关在此时刻开始开通。现代的零交叉技术已与光电耦合技术相结合。图5为一种单片机数控交流调压器中可使用的过零检测电路。
220V交流电压经电阻R1限流后直接加到2个反向并联的光电耦合器GD1,GD2的输入端。在交流电源的正负半周,GD1和GD2分别导通,U O输出低电平,在交流电源正弦波过零的瞬间,GD1和GD2均不导通,U O输出高电平。该脉冲信号经非门整形后作为单片机的中断请求信号和可控硅的过零同步信号。
3.注意事项
(1) 在光电耦合器的输入部分和输出部分必须分别采用独立的电源,若两端共用一
个电源,则光电耦合器的隔离作用将失去意义。
(2) 当用光电耦合起来隔离输入输出通道时,必须对所有的信号(包括数字量信号、
控制量信号、状态信号)全部隔离,使得被隔离的两边没有任何电气上的联系,否则这种隔离是没有意义的。
闪烁问题
EXTERAL1_SERVE:
CLR EX1
PUSH ACC
PUSH PSW
PUSH B
PUSH DPH
PUSH DPL
MOV PSW,#00H;#00011000B ;Bank 3
SETB lamp1;高电平关MOC3021
SETB lamp2
SETB lamp3
SETB lamp4
MOV LAMP1_DUTY_COUNTER,LAMP1_DUTY_CURRENT;过零后重新加载占空比数据
MOV LAMP2_DUTY_COUNTER,LAMP2_DUTY_CURRENT
MOV LAMP3_DUTY_COUNTER,LAMP3_DUTY_CURRENT
MOV LAMP4_DUTY_COUNTER,LAMP4_DUTY_CURRENT
LCALL DELAYUS;延时小段时间
POP DPL
POP DPH
POP B
POP PSW
POP ACC
SETB EX1
RETI
DELAYUS:
MOV R7,#250
DELAYUS_WAIT:
NOP
NOP
DJNZ R7,DELAYUS_WAIT
RET
这是过零部分
触发部分:
TIME0_SERVE: CLR ET0
CLR TR0
PUSH ACC
PUSH PSW
PUSH B
PUSH DPH
PUSH DPL
MOV PSW,#00010000B ;Bank 2 MOV TH0,#0FdH
MOV TL0,#040H
SETB TR0
LCALL PWM_PROCESS
SETB lamp1;高电平关MOC3021
SETB lamp2
SETB lamp3
SETB lamp4
LCALL COLOR_OUTPUT
TIME0_SERVE_END: POP DPL
POP DPH
POP B
POP PSW
POP ACC
SETB ET0
RETI
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; COLOR_OUTPUT:
COLOR_OUTPUT_LAMP1: MOV A,LAMP1_DUTY_COUNTER
JNZ COLOR_OUTPUT_EXIT
CLR LAMP1
sjmp COLOR_OUTPUT_RET
COLOR_OUTPUT_EXIT: setb LAMP1
COLOR_OUTPUT_RET:
RET ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; PWM_PROCESS:
PWM_PROCESS_LAMP1: MOV A,LAMP1_DUTY_COUNTER
JZ PWM_PROCESS_EXIT
DEC LAMP1_DUTY_COUNTER
PWM_PROCESS_EXIT: RET
(注:可编辑下载,若有不当之处,请指正,谢谢!)