單片機控制可控硅調光不閃電路+程序
單片機控制可控硅調光,是件比較麻煩的事情,開(kāi)始是沒(méi)加過(guò)零檢測,結果不管怎么做pwm頻率多高,都很閃,用了下面這個(gè)后就不閃了.在51hei單片機開(kāi)發(fā)板上測試成功。要調光的話(huà),moc3063是不行的,3063是過(guò)零導通的,對交流電源的控制結果只能是對半波,而不能斬波,通常要調光,調壓的話(huà)用3052,配合交流過(guò)零信號硬件,也可用變壓器+二極管做過(guò)零檢測電路.過(guò)零信號邊沿觸發(fā)中斷,在過(guò)零后延時(shí)輸出控制信號給光藕,使可控硅導通,過(guò)零前邊沿關(guān)閉控制信號,使可控硅自然關(guān)斷,完成一個(gè)半波的斬波控制,調整延時(shí)值就可以調節輸出電壓了,當然,延時(shí)值根據電源頻率及定時(shí)器分頻比不同,有相應的取值范圍,一般可以用外中斷負責過(guò)零邊沿觸發(fā),一個(gè)邊沿(至于哪個(gè)邊沿與過(guò)零信號硬件結構有關(guān))負責關(guān)閉可控硅,一個(gè)邊沿負責延時(shí)計算,并寫(xiě)入定時(shí)器,由定時(shí)器中斷來(lái)打開(kāi)可控硅 .

單片機驅動(dòng)可控硅調光電路
'改變INT1中斷中的"移相值",即可改變輸出電壓,這里T2分頻比為1024,可根據主頻計算出移相值取值范圍
'程序采用電平觸發(fā),脈沖觸發(fā)可作相應修改
'若主頻12M,電源50Hz,則移相值計算約為0--117,但實(shí)際使用0-105就可以了,太大了會(huì )移相到過(guò)零位置,使可控硅不能關(guān)斷
'單片機類(lèi)型atmege16,開(kāi)發(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開(kāi)始循環(huán)計數
inr17,timsk
andir17,127'暫時(shí)禁止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
'清中斷標志,確保中斷正確執行
inr17,tifr
orir17,128'清T2匹配標志
OutTifr,R17
inr17,timsk
orir17,128
OutTimsk,R17'允許T2比較匹配中斷
Isr_over:
popr17
OutSreg,R17
popr17
Reti
上面的是的是AVR的匯編程序,51的也可以實(shí)現的,就是用定時(shí)器的溢出中斷啦,溢出值-移相值=初始值觸發(fā)可控硅用脈沖方式,計算好觸發(fā)脈沖寬度對應的計數初值
同步信號輸入--下沿中斷寫(xiě)計數初值,開(kāi)始計數--計數器溢出中斷,判標志=0,打開(kāi)可控硅,寫(xiě)觸發(fā)脈沖初值,寫(xiě)標志=1---再次溢出中斷,判標志=1,關(guān)可控硅,清零標志--------再次同步中斷
評論