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

單片機驅(qū)動可控硅調(diào)光電路
'改變INT1中斷中的"移相值",即可改變輸出電壓,這里T2分頻比為1024,可根據(jù)主頻計算出移相值取值范圍
'程序采用電平觸發(fā),脈沖觸發(fā)可作相應修改
'若主頻12M,電源50Hz,則移相值計算約為0--117,但實際使用0-105就可以了,太大了會移相到過零位置,使可控硅不能關(guān)斷
'單片機類型atmege16,開發(fā)者:http://www.zg4o1577.cn 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開始循環(huán)計數(shù)
in r17,timsk
andi r17,127 '暫時禁止T2比較匹配中斷(T2比較匹配中斷在中斷程序中啟閉)
Out Timsk,R17
sei
'-------------------------中斷服務程序------------------------------------------
Int_comp2: '移相中斷
push r17
in r17,sreg
push r17
cbi porta,5 '觸發(fā)信號輸出
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引腳(電源同步)狀態(tài)=1則跳行,上升沿中斷
rjmp falling
'上升沿中斷
sbi portA,5 '關(guān)觸發(fā)
rjmp isr_over
Falling:
'下降沿中斷
ldi r17,0
Out Tcnt2,R17 'T2清零
lds r17,移相值
Out Ocr2,R17
'清中斷標志,確保中斷正確執(zhí)行
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的也可以實現(xiàn)的,就是用定時器的溢出中斷啦,溢出值-移相值=初始值
觸發(fā)可控硅用脈沖方式,計算好觸發(fā)脈沖寬度對應的計數(shù)初值
同步信號輸入--下沿中斷寫計數(shù)初值,開始計數(shù)--計數(shù)器溢出中斷,判標志=0,打開可控硅,寫觸發(fā)脈沖初值,寫標志=1---再次溢出中斷,判標志=1,關(guān)可控硅,清零標志--------再次同步中斷,51的代碼我這里就不貼出來了,需要者可聯(lián)系我手機15886684881,QQ號碼是125739409加入時請注明"調(diào)光"哦