• 可控硅过零检测


    可用于单片机控制可控硅电路中,可减小产品的体积和重量。……

    单片机控制可控硅电路 - mme2003 - 明天眼睛的编程


    为什么要分开用R1、R2、R3呢?都是串一起的,用一个电阻不行吗?

    楼主做过零检测做什么用? 单片机控制可控硅电路 - mme2003 - 明天眼睛的编程

    1、为了增加安全性
    2、控制可控硅输出功率 

    如果需要十分精准可以用电阻分压后用电压比较器 ,再过光耦
    楼主是为了调相从而调功吧,如果不知道楼主在负载方面是如何的 单片机控制可控硅电路 - mme2003 - 明天眼睛的编程


    后面的是通过单片机控制的可控硅,控制白炽灯的亮度 
    /////////////////////
    过零检测电路 
    电阻参数通过验证,可用
    单片机控制可控硅电路 - mme2003 - 明天眼睛的编程

    //////////////////
    我的硬件电路图:

    引用
    根据第5楼decai 的建议单片机控制可控硅电路 - mme2003 - 明天眼睛的编程


    单片机控制可控硅电路 - mme2003 - 明天眼睛的编程
    大家看看这个用LM358的电路做过零检测,AC0接51单片机的INT0非,下图来源http://bbs.mydigit.cn/read.php?tid=221794
    单片机控制可控硅电路 - mme2003 - 明天眼睛的编程
    看看我的程序吧,是这样的,就是用起来渐变时灯有些闪,还没找到原因:
    原因找到了,原来是做过零检测的变压器接到了负载(白炽灯)之后了,造成中断信号受到干扰引起闪烁!!
    程序上又稍改了一下时间参数,无级渐变,淡入淡出,见26楼视频效果,这个程序很给力:

    引用
    见第26楼xinqi99于2011-03-03 12:55发表的  :
    视频效果(00:02:31) 单片机控制可控硅电路 - mme2003 - 明天眼睛的编程



    #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。

    过零检测电路图

    ///////////////////
    过零检测电路,如果需要十分精准可以用电阻分压后用电压比较器    
    单片机控制可控硅电路 - mme2003 - 明天眼睛的编程 
    过零的电阻只用一个100K很危险的,还是用两个50K比较好。功率耐压的问题。单片机控制可控硅电路 - mme2003 - 明天眼睛的编程
    因为是双向触发所以频率有100hz哦,还行基本看不出闪

  • 相关阅读:
    500桶酒中有一桶毒酒
    查看docker run参数(亲测实用)
    ubuntu密码忘记-备份
    python sklearn2pmml
    javafx弹窗显示错误堆栈
    Java实现新开一个进程
    MockServer调试通过,本地通过浏览器可以打开对应web网页
    java 实现Put request
    JAVA发送HttpClient请求及接收请求完整代码实例
    我还是很喜欢你
  • 原文地址:https://www.cnblogs.com/wanglinsheng/p/6005906.html
Copyright © 2020-2023  润新知