可用於單片機控制可控硅電路中,可減少產品的體積和重量。……
php
後面的是經過單片機控制的可控硅,控制白熾燈的亮度
/////////////////////
過零檢測電路
電阻參數經過驗證,可用
//////////////////
個人硬件電路圖:
c++
引用
你們看看這個用LM358的電路作過零檢測,AC0接51單片機的INT0非,下圖來源http://bbs.mydigit.cn/read.php?tid=221794
看看個人程序吧,是這樣的,就是用起來漸變時燈有些閃,還沒找到緣由:
緣由找到了,原來是作過零檢測的變壓器接到了負載(白熾燈)以後了,形成中斷信號受到干擾引發閃爍!!
程序上又稍改了一下時間參數,無級漸變,淡入淡出,見26樓視頻效果,這個程序很給力:
git
引用
#include <reg52.h>
#define uint unsigned int
#define uchar unsigned char
#define ON 0
#define OFF 1
………………………………
void main()
{
TMOD = 0x11;
EA=1;
TCON=0x05;
………………
for(;;)
{
DispInfo( );
Display( );
keyscan( );
}
}
…………………………
void keyscan()
{
……………………
if(S1_num==0)
{
if (S2==0)
mDelay(10);
if (S2==0)
if (K_Less30s>59)
{
LampGradual();
}
}
}
void LampGradual()
{
Gradual=Lamp1;
K_Less30s=0; //按開關燈鍵間隔小於30秒標記及時長記錄
EX0=1; //開外部中斷0
ET0=1;
TR0=1;
ET1=1; //定時器1中斷容許
IT0=1; //INT0爲降低沿觸發(之前忘了這個,漸變時卻不亮,呵呵)
On_Init=7000; //漸開定時觸發初始化爲10ms,並遞減
Off_Init=4000; //漸關定時觸發初始化爲0ms,並遞增
}
// ********************************************************************
void timer0() interrupt 1 //實時時鐘中斷程序
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
Time50ms++;
if(Time50ms==20) //實時時鐘走時累計
{
Time50ms=0;
Sec++;
if(K_Less30s<60) //|| OnTime==1 || OffTime==1 //***********按鍵後或定時時間到後開關燈*************
{
K_Less30s++;
if(K_Less30s==30) //30秒後********
{
K_Less30s=60; //封閉漸開漸關操做,
Lamp1=~Gradual;
EX0=0; //30秒後關中斷
ET1=0; //30秒後關定時器1
ET0=0;
TR0=0;
}
}
}
}
void INT0_AC0() interrupt 0 //外部中斷0,AC過0時,50Hz交流電每秒過零100次,每次間隔10ms
{
ET1=1; //定時器1中斷容許
TR1=0; //定時器1開始計時
if(Gradual==OFF) //漸開
{
--On_Init; //On_Init-=2; //每10ms
a=(65536-On_Init)/256; //定時初值
b=(65536-On_Init)%256;
}
if(Gradual==ON) //漸關
{
++Off_Init; //Off_Init+=2;
a=(65536-Off_Init)/256;
b=(65536-Off_Init)%256; //
} //
TH1=a;
TL1=b;
TR1=1; //開始計時
}
void timer1() interrupt 3 //定時器1中斷程序(燈漸變移相控制)
{
uchar i;
Lamp1=ON; //燈1的觸發脈衝
{
for(i=0;i<2;i++); //延時 X μs
Lamp1=OFF;
}
}
////////////////
3063是過零打開的,無法調整導通角的,硬件上就不行了。我的建議仍是換個光耦。
這個要選擇3020系列的非過零檢測的光耦,不過本人也不作硬件這類的,3020峯值電壓400v不知道耐壓夠不,程序我不會寫,能夠給你個思路,本身寫程序
你 要一個過零檢測電路,一個可控硅觸發電路,這個你應該不成問題了,程序上,一個半波10ms,你要幾級調光就分把這個10ms分幾份,不是等份哦,要不調 光不均勻的,你能夠本身實驗,我也說不上,每次單片機檢測到過零信號後就在,若是你要開的是第幾檔,你就在花去前面幾檔的時間後給空空硅電路一個觸發信 號,而後等下一個過零信號。
//////////////
編程
發佈: | 做者: | 來源: tianhaizhou | 查看:1598次 | 用戶關注:安全
以下圖所示爲按上述思想設計的電壓正向過零檢測電路。220V的交流電首先通過電阻分壓,而後進行光電耦合,假設輸入的是A相電壓,則在A相電壓由負半 周向正半週轉換時,圖中三極管導通並工做在飽和狀態,會產生一個降低沿脈衝送入ADμC812的INT0引腳使系統進入中斷程序。微機系統進入中斷程序 後,發出採樣命令並從採樣保持器讀取無功電流值Iqm,這個無功電流即爲A相的無功電流,通過1/4個週期電壓達到最大值,此時對電壓進行採樣,獲得 UM,由UM=1.414U能夠獲得電壓有效值U。
post
///////////////////
過零檢測電路,若是須要十分精準能夠用電阻分壓後用電壓比較器
過零的電阻只用一個100K很危險的,仍是用兩個50K比較好。功率耐壓的問題。
由於是雙向觸發因此頻率有100hz哦,還行基本看不出閃ui