單片機(jī)控制可控硅調(diào)光不閃電路+程序
單片機(jī)控制可控硅調(diào)光,是件比較麻煩的事情,開始是沒加過零檢測,結(jié)果不管怎么做pwm頻率多高,都很閃,用了下面這個后就不閃了.在51hei單片機(jī)開發(fā)板上測試成功。要調(diào)光的話,moc3063是不行的,3063是過零導(dǎo)通的,對交流電源的控制結(jié)果只能是對半波,而不能斬波,通常要調(diào)光,調(diào)壓的話用3052,配合交流過零信號硬件,也可用變壓器+二極管做過零檢測電路.過零信號邊沿觸發(fā)中斷,在過零后延時輸出控制信號給光藕,使可控硅導(dǎo)通,過零前邊沿關(guān)閉控制信號,使可控硅自然關(guān)斷,完成一個半波的斬波控制,調(diào)整延時值就可以調(diào)節(jié)輸出電壓了,當(dāng)然,延時值根據(jù)電源頻率及定時器分頻比不同,有相應(yīng)的取值范圍,一般可以用外中斷負(fù)責(zé)過零邊沿觸發(fā),一個邊沿(至于哪個邊沿與過零信號硬件結(jié)構(gòu)有關(guān))負(fù)責(zé)關(guān)閉可控硅,一個邊沿負(fù)責(zé)延時計算,并寫入定時器,由定時器中斷來打開可控硅 .
單片機(jī)驅(qū)動可控硅調(diào)光電路
'改變INT1中斷中的"移相值",即可改變輸出電壓,這里T2分頻比為1024,可根據(jù)主頻計算出移相值取值范圍
'程序采用電平觸發(fā),脈沖觸發(fā)可作相應(yīng)修改
'若主頻12M,電源50Hz,則移相值計算約為0--117,但實際使用0-105就可以了,太大了會移相到過零位置,使可控硅不能關(guān)斷
'單片機(jī)類型atmege16,開發(fā)者:http://www.51hei.comemail:372xcom1@21cn.com 下面是主要的程序
'主程序:
'略
ldir16,4'INT1上升,下降沿都中斷
OutMcucr,R16
ldir16,128'INT1中斷允許,INT0,INT2中斷禁止
OutGicr,R16
ldir16,7
OutTccr2,R16'T2開始循環(huán)計數(shù)
inr17,timsk
andir17,127'暫時禁止T2比較匹配中斷(T2比較匹配中斷在中斷程序中啟閉)
OutTimsk,R17
sei
'-------------------------中斷服務(wù)程序------------------------------------------
Int_comp2:'移相中斷
pushr17
inr17,sreg
pushr17
cbiporta,5'觸發(fā)信號輸出
inr17,timsk
andir17,127'禁止T2比較匹配中斷
outtimsk,r17
popr17
outsreg,r17
popr17
reti
Int1_isr:'電源同步中斷
pushr17
inr17,sreg
pushr17
sbispind,3'int1引腳(電源同步)狀態(tài)=1則跳行,上升沿中斷
rjmpfalling
'上升沿中斷
sbiportA,5'關(guān)觸發(fā)
rjmpisr_over
Falling:
'下降沿中斷
ldir17,0
OutTcnt2,R17'T2清零
ldsr17,移相值
OutOcr2,R17
'清中斷標(biāo)志,確保中斷正確執(zhí)行
inr17,tifr
orir17,128'清T2匹配標(biāo)志
OutTifr,R17
inr17,timsk
orir17,128
OutTimsk,R17'允許T2比較匹配中斷
Isr_over:
popr17
OutSreg,R17
popr17
Reti
上面的是的是AVR的匯編程序,51的也可以實現(xiàn)的,就是用定時器的溢出中斷啦,溢出值-移相值=初始值觸發(fā)可控硅用脈沖方式,計算好觸發(fā)脈沖寬度對應(yīng)的計數(shù)初值
同步信號輸入--下沿中斷寫計數(shù)初值,開始計數(shù)--計數(shù)器溢出中斷,判標(biāo)志=0,打開可控硅,寫觸發(fā)脈沖初值,寫標(biāo)志=1---再次溢出中斷,判標(biāo)志=1,關(guān)可控硅,清零標(biāo)志--------再次同步中斷
評論