专注电子技术学习与研究
当前位置:单片机教程网 >> MCU设计实例 >> 浏览文章

单片机控制可控硅调光不闪电路+程序

作者:佚名   来源:本站原创   点击数:  更新时间:2009年09月12日   【字体:

       单片机控制可控硅调光,是件比较麻烦的事情,开始是没加过零检测,结果不管怎么做pwm频率多高,都很闪,用了下面这个后就不闪了.在51hei单片机开发板上测试成功。 要调光的话,moc3063是不行的,3063是过零导通的,对交流电源的控制结果只能是对半波,而不能斩波,通常要调光,调压的话用3052,配合交流过零信号硬件,也可用变压器+二极管做过零检测电路.过零信号边沿触发中断,在过零后延时输出控制信号给光藕,使可控硅导通,过零前边沿关闭控制信号,使可控硅自然关断,完成一个半波的斩波控制,调整延时值就可以调节输出电压了,当然,延时值根据电源频率及定时器分频比不同,有相应的取值范围,一般可以用外中断负责过零边沿触发,一个边沿(至于哪个边沿与过零信号硬件结构有关)负责关闭可控硅,一个边沿负责延时计算,并写入定时器,由定时器中断来打开可控硅 .

来段视频先看哈效果哦

联系QQ:125739409 ,手机15886684881

 
单片机驱动可控硅调光电路



'改变INT1中断中的"移相值",即可改变输出电压,这里T2分频比为1024,可根据主频计算出移相值取值范围
'程序采用电平触发,脉冲触发可作相应修改
'若主频12M,电源50Hz,则移相值计算约为0--117,但实际使用0-105就可以了,太大了会移相到过零位置,使可控硅不能关断
'单片机类型atmege16,开发者:http://www.51hei.com email:372xcom1@21cn.com 下面是主要的程序
'主程序:
'略
ldi r16,4                   'INT1上升,下降沿都中断
Out Mcucr,R16
ldi r16,128              'INT1中断允许,INT0,INT2中断禁止
Out Gicr,R16

ldi r16,7
Out Tccr2,R16        'T2开始循环计数
in r17,timsk
andi r17,127           '暂时禁止T2比较匹配中断(T2比较匹配中断在中断程序中启闭)
Out Timsk,R17

sei
'-------------------------中断服务程序------------------------------------------
Int_comp2:      '移相中断
push r17
in r17,sreg
push r17
   cbi porta,5       '触发信号输出
in r17,timsk
andi r17,127       '禁止T2比较匹配中断
out timsk,r17
pop r17
out sreg,r17
pop r17
reti


Int1_isr:            '电源同步中断
push r17
in r17,sreg
push r17
sbis pind,3       'int1引脚(电源同步)状态=1则跳行,上升沿中断
rjmp falling
'上升沿中断
sbi portA,5         '关触发
rjmp isr_over
Falling:
'下降沿中断
   ldi r17,0
   Out Tcnt2,R17          'T2清零
   lds r17,移相值
   Out Ocr2,R17
'清中断标志,确保中断正确执行
in r17,tifr
ori r17,128            '清T2匹配标志
Out Tifr,R17
in r17,timsk
ori r17,128
Out Timsk,R17         '允许T2比较匹配中断
Isr_over:
pop r17
Out Sreg,R17
pop r17
Reti

上面的是的是AVR的汇编程序,51的也可以实现的,就是用定时器的溢出中断啦,溢出值-移相值=初始值
触发可控硅用脉冲方式,计算好触发脉冲宽度对应的计数初值
 同步信号输入--下沿中断写计数初值,开始计数--计数器溢出中断,判标志=0,打开可控硅,写触发脉冲初值,写标志=1---再次溢出中断,判标志=1,关可控硅,清零标志--------再次同步中断,51的代码我这里就不贴出来了,需要者可联系我手机15886684881,QQ号码是125739409加入时请注明"调光"哦 

关闭窗口