可用于单片机控制可控硅电路中,可减小产品的体积和重量。…… 后面的是通过单片机控制的可控硅,控制白炽灯的亮度 ///////////////////// 过零检测电路 电阻参数通过验证,可用 ////////////////// 我的硬件电路图:
大家看看这个用LM358的电路做过零检测,AC0接51单片机的INT0非,下图来源http://bbs./read.php?tid=221794 ![]() 看看我的程序吧,是这样的,就是用起来渐变时灯有些闪,还没找到原因: 原因找到了,原来是做过零检测的变压器接到了负载(白炽灯)之后了,造成中断信号受到干扰引起闪烁!! 程序上又稍改了一下时间参数,无级渐变,淡入淡出,见26楼视频效果,这个程序很给力:
#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,由
如下图所示为按上述思想设计的电压正向过零检测电路。220V的交流电首先经过电阻分压,然后进行光电耦合,假设输入的是A相电压,则在A相电压由负半
周向正半周转换时,图中三极管导通并工作在饱和状态,会产生一个下降沿脉冲送入ADμC812的INT0引脚使系统进入中断程序。微机系统进入中断程序
后,发出采样命令并从采样保持器读取无功电流值Iqm,这个无功电流即为A相的无功电流,经过1/4个周期电压达到最大值,此时对电压进行采样,得到
UM,由UM=1.414U可以得到电压有效值U。过零检测电路,如果需要十分精准可以用电阻分压后用电压比较器 过零的电阻只用一个100K很危险的,还是用两个50K比较好。功率耐压的问题。 因为是双向触发所以频率有100hz哦,还行基本看不出闪 |
|