单片机控制可控硅调光不闪电路+程序
单片机控制可控硅调光,是件比较麻烦的事情,开始是没加过零检测,结果不管怎么做pwm频率多高,都很闪,用了下面这个后就不闪了.在51hei单片机开发板上测试成功。要调光的话,moc3063是不行的,3063是过零导通的,对交流电源的控制结果只能是对半波,而不能斩波,通常要调光,调压的话用3052,配合交流过零信号硬件,也可用变压器+二极管做过零检测电路.过零信号边沿触发中断,在过零后延时输出控制信号给光藕,使可控硅导通,过零前边沿关闭控制信号,使可控硅自然关断,完成一个半波的斩波控制,调整延时值就可以调节输出电压了,当然,延时值根据电源频率及定时器分频比不同,有相应的取值范围,一般可以用外中断负责过零边沿触发,一个边沿(至于哪个边沿与过零信号硬件结构有关)负责关闭可控硅,一个边沿负责延时计算,并写入定时器,由定时器中断来打开可控硅 .
单片机驱动可控硅调光电路
'改变INT1中断中的"移相值",即可改变输出电压,这里T2分频比为1024,可根据主频计算出移相值取值范围
'程序采用电平触发,脉冲触发可作相应修改
'若主频12M,电源50Hz,则移相值计算约为0--117,但实际使用0-105就可以了,太大了会移相到过零位置,使可控硅不能关断
'单片机类型atmege16,开发者:http://www.51hei.comemail:372xcom1@21cn.com 下面是主要的程序
'主程序:
'略
ldir16,4'INT1上升,下降沿都中断
OutMcucr,R16
ldir16,128'INT1中断允许,INT0,INT2中断禁止
OutGicr,R16
ldir16,7
OutTccr2,R16'T2开始循环计数
inr17,timsk
andir17,127'暂时禁止T2比较匹配中断(T2比较匹配中断在中断程序中启闭)
OutTimsk,R17
sei
'-------------------------中断服务程序------------------------------------------
Int_comp2:'移相中断
pushr17
inr17,sreg
pushr17
cbiporta,5'触发信号输出
inr17,timsk
andir17,127'禁止T2比较匹配中断
outtimsk,r17
popr17
outsreg,r17
popr17
reti
Int1_isr:'电源同步中断
pushr17
inr17,sreg
pushr17
sbispind,3'int1引脚(电源同步)状态=1则跳行,上升沿中断
rjmpfalling
'上升沿中断
sbiportA,5'关触发
rjmpisr_over
Falling:
'下降沿中断
ldir17,0
OutTcnt2,R17'T2清零
ldsr17,移相值
OutOcr2,R17
'清中断标志,确保中断正确执行
inr17,tifr
orir17,128'清T2匹配标志
OutTifr,R17
inr17,timsk
orir17,128
OutTimsk,R17'允许T2比较匹配中断
Isr_over:
popr17
OutSreg,R17
popr17
Reti
上面的是的是AVR的汇编程序,51的也可以实现的,就是用定时器的溢出中断啦,溢出值-移相值=初始值触发可控硅用脉冲方式,计算好触发脉冲宽度对应的计数初值
同步信号输入--下沿中断写计数初值,开始计数--计数器溢出中断,判标志=0,打开可控硅,写触发脉冲初值,写标志=1---再次溢出中断,判标志=1,关可控硅,清零标志--------再次同步中断
- 单片机控制点阵矩形收缩闪烁源程序(12-02)
- 单片机控制点阵LED一秒刷新显示I心形U(12-02)
- 51单片机控制直流电机正反转程序(12-02)
- 关于单片机控制开关三极管总结(12-01)
- 单片机控制18路舵机的C程序(12-01)
- 单片机控制开关电源(12-01)