找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 21384|回复: 30
收起左侧

单片机可控硅调光的源程序原理图与视频(带光耦过零检测)

  [复制链接]
ID:338171 发表于 2018-8-17 16:48 | 显示全部楼层 |阅读模式
我是参考咱们51hei论文DIY区里面大神的资料做出来的 希望大家多多提建议  多多鼓励

我用的是自己买的开发板上的52单片机,  晶振采用11.0592M,  光耦用了MOC3023 和P521-1两个  可控硅用的是BTA41   跟一块整流桥  电容用的是CBB 0.06μF  电阻那些由于我没有那么多 所以就找了相近值的 然后自己加了一个电源指示灯 和工作指示灯  按键我就直接修改成开发板上的独立按键
通电调节过后那几个电阻发烫都挺严重的。   但过零检测那部分还是不大明白  之前我做了个点焊机根本没有过零检测  但是加了有脉冲宽度调节和电流调节。特别提醒各位爱好者在做的过程中千万要注意安全  检测检测再检测确认对了之后再通电  我也是新手 初次做  希望能够得到大家的鼓励让我更加有信心去做下一个作品 提高自己  也希望能够跟同基础的小伙伴共同成长

视频演示:https://v.youku.com/v_show/id_XMzc4NTI4NTg2NA==.html


实物图与实验效果图:

0.png
66.jpg 77.jpg

电路原理图如下:
0.png

可控硅调光的单片机源程序如下:
  1. #include "reg52.h"

  2. sbit lamp_pwm=P0^0;//可控硅位
  3. sbit key0=P3^4;//降低亮度按键位
  4. sbit key1=P3^5;//增加亮度按键位

  5. unsigned int inc;

  6. void INT0s()interrupt 0        using 0//INT0外部中断,过零检测触发
  7. {
  8.         TR0=0;
  9.         if(!key0)//降低亮度
  10.         {
  11.                 inc+=50;
  12.                 if(inc>=8000)inc=8000;
  13.         }
  14.         if(!key1)//增加亮度
  15.         {
  16.                 inc-=50;
  17.                 if(inc<=800)inc=800;
  18.         }
  19.         TH0=(65536-inc)/256;
  20.         TL0=(65536-inc)%256;
  21.         TR0=1;
  22. }


  23. void timer1()interrupt 1 using 0//可控硅触发中断
  24. {
  25.         unsigned char i;
  26.         lamp_pwm=0;//灯亮
  27.         for(i=0;i<2;i++);//延时2us
  28.         lamp_pwm=1;//灯灭
  29. }

  30. /************STC不断电下载用******************/
  31. sfr ISP_DOWNS=0xe7;//ISP软复位地址
  32. sbit ISP_SW=P3^0;//串口数据接收
  33. void DebugDownISP()//软复位
  34. {
  35. ……………………

  36. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

所有资料51hei提供下载:
原理图和程序制作部分.zip (469.79 KB, 下载次数: 597)

评分

参与人数 1黑币 +100 收起 理由
admin + 100 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:338171 发表于 2018-8-18 18:52 | 显示全部楼层
上面那个工作指示灯  工作的时候只有微弱的闪     修改了下把工作指示灯单独接了个IO口 控制了  当按键加或者减按下的时候工作指示灯就会闪一下 这样也达到了工作指示灯的效果
  
以下是原理图:
77.png



程序:

  1. #include "reg52.h"

复制代码




回复

使用道具 举报

ID:338171 发表于 2018-8-20 09:38 | 显示全部楼层
请问各路前辈们  有没有不用硬件的过零检测  直接用软件做过零检测      
回复

使用道具 举报

ID:403593 发表于 2019-3-14 20:38 | 显示全部楼层
请问一下,Q1的型号是什么呢?看不清楚。。。我也想做一个玩玩~~
回复

使用道具 举报

ID:495990 发表于 2019-3-22 12:38 | 显示全部楼层
楼上的朋友,Q1是BTA-41双向可控硅,其实在本电路只无须用那么大的可控硅,一般的BTA-6就可以胜任了
回复

使用道具 举报

ID:323994 发表于 2019-3-22 14:47 | 显示全部楼层
moc3021等一些光耦是自带过零检测的。但要像可控硅电路那样调光不实际。原因1,模拟调光是不稳定的,不能保证同样的开启角度有同样的亮度。原因2,在较低亮度时灯光会闪烁。
比较可行的方案1是四二极管整流,改成100hz变化,这样闪烁影响会小些。方案2,既然已整流,不如稳压滤波用mos管控制。这样也就不必检测过零什么的。如果只是灯泡这种几十瓦的调制,器件还是挺多的。
如果是几百上千的功率,如果考虑成本还是可控硅的比较实惠。

评分

参与人数 1黑币 +60 收起 理由
admin + 60

查看全部评分

回复

使用道具 举报

ID:495990 发表于 2019-5-2 18:10 | 显示全部楼层
按照这个电路图和程序实际搭了个电路根本不能让灯亮呀
回复

使用道具 举报

ID:338171 发表于 2019-5-3 15:48 | 显示全部楼层
SJ-123 发表于 2019-5-2 18:10
按照这个电路图和程序实际搭了个电路根本不能让灯亮呀

电路图和程序肯定是没问题的,实物都做出来了。 你的不亮可能还有很多原因,多找找问题出在哪
回复

使用道具 举报

ID:550010 发表于 2019-5-29 11:10 | 显示全部楼层
交流电负半周导通时候你的可控硅如何导通
回复

使用道具 举报

ID:550010 发表于 2019-5-29 11:14 | 显示全部楼层
SJ-123 发表于 2019-3-22 12:38
楼上的朋友,Q1是BTA-41双向可控硅,其实在本电路只无须用那么大的可控硅,一般的BTA-6就可以胜任了

交流电反向导通的时候,你的可控硅还会导通吗
回复

使用道具 举报

ID:455170 发表于 2019-6-24 14:10 | 显示全部楼层
这个电路带感性负载有点不合适
回复

使用道具 举报

ID:495990 发表于 2019-6-30 21:53 | 显示全部楼层
jkangk123 发表于 2019-5-3 15:48
电路图和程序肯定是没问题的,实物都做出来了。 你的不亮可能还有很多原因,多找找问题出在哪

我完全按照你给的原理图搭建的电路,而且还反复仔细分析过你的实物电路,也是和原理图一致的,但是烧录程序后始终没有任何的反应,灯根本不亮,我用LED灯代替光藕,程序烧录好上电调节上下键LED灯也是没有任何反应的,
回复

使用道具 举报

ID:398094 发表于 2019-7-1 16:41 | 显示全部楼层
谢谢分享程序与原理图
回复

使用道具 举报

ID:143767 发表于 2019-8-20 10:46 | 显示全部楼层
我完全按照你给的原理图搭建的电路,而且还反复仔细分析过你的实物电路,也是和原理图一致的,但是烧录程序后始终没有任何的反应,灯根本不亮,见下图。并且测得P1.0口电压5V,调节亮暗键该电压无任何变化。
无标题.jpg

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:60021 发表于 2019-10-29 11:28 | 显示全部楼层
我也按这个电路做一个,刚开始光耦我用的是PC-17T1,没有成功,最后把光耦换成MOC3020,成功,效果很好。
回复

使用道具 举报

ID:233733 发表于 2019-10-30 10:35 | 显示全部楼层
jkangk123 发表于 2018-8-20 09:38
请问各路前辈们  有没有不用硬件的过零检测  直接用软件做过零检测

既然是过零检测就是要过零的时候才能触发硬件。你没有硬件应该没法检测吧。
回复

使用道具 举报

ID:410749 发表于 2019-10-31 20:42 | 显示全部楼层
盉飞沙 发表于 2019-3-22 14:47
moc3021等一些光耦是自带过零检测的。但要像可控硅电路那样调光不实际。原因1,模拟调光是不稳定的,不能保 ...

我的想法是如果检测两个过零信号之间的时间,然后把这个时间分成50或者100段,1段导通的时候可控硅导通时间最长,灯泡最亮,100段导通的时候,可控硅导通时间最短,灯泡最暗。这种导通方式只适合电阻负载,不适合容性和感性负载,因为不是过零后导通。过零导通不是控制可控硅的导通角度,而是控制减少可控硅的导通周期。所以控制灯泡的时候会闪烁。仅供参考。
回复

使用道具 举报

ID:60021 发表于 2019-11-14 11:21 | 显示全部楼层
能否把上面的程序改为一个按键,从暗到明4档,又从明到暗4档,多谢大师们指点。
回复

使用道具 举报

ID:292876 发表于 2019-11-16 18:06 | 显示全部楼层
wsh62 发表于 2019-11-14 11:21
能否把上面的程序改为一个按键,从暗到明4档,又从明到暗4档,多谢大师们指点。

楼主这个图调光有很多弊端,1:过零检测电路检测的过零时间和实际过零时间会有差异,解决方法可以,程序做 延时补偿,能达到调光效果!  2:过零检测使用运放来做,时间偏差会小很多! 3: 我做过此类调光,做了很多措施,最终还是在低亮度有所频闪!想了很多手段都没找到原因! 4:这个电路调光用作电动机类和热惯性大的应用是没问题的!白炽灯调光的频闪,真心无法忍受!

回复

使用道具 举报

ID:643836 发表于 2019-11-17 19:38 | 显示全部楼层
感谢楼主分享,学习下
回复

使用道具 举报

ID:25310 发表于 2019-11-22 14:42 | 显示全部楼层
终于淘汰了可控硅调光产品,不用再劳神费心了。
回复

使用道具 举报

ID:60021 发表于 2019-12-3 11:59 | 显示全部楼层
改为一个按键,从暗到明4档,又从明到暗4档,已搞定。
回复

使用道具 举报

ID:659385 发表于 2019-12-9 16:15 来自手机 | 显示全部楼层
wsh62 发表于 2019-12-3 11:59
改为一个按键,从暗到明4档,又从明到暗4档,已搞定。

可以把你的原理图和程序发来看看嘛,非常感谢
回复

使用道具 举报

ID:60021 发表于 2019-12-14 07:33 | 显示全部楼层
void timer_init()
{
        inc=0;
        TMOD|=0x01;
        TH0=(65536-inc)/256;
        TL0=(65536-inc)%256;
        IT0=1;                   //INT0下降沿触发
        EX0=1;                   //外部中断允许
        ET0=1;
        EA=1;                    //开总中断   
}
void INT0s()interrupt 0 using 0//INT0外部中断,过零检测触发
{       
        TH0=(65536-inc)/256;
        TL0=(65536-inc)%256;
        TR0=1;
        if(!SW4)               //降低亮度
        {
                delay_ms(20);
                if(!SW4)
                {                       
                        while(!SW4)
                        switch(m)
                        {
                                case 0:inc=6000; m++;break;
                                case 1:inc=4000; m++;break;
                                case 2:inc=2000; m++;break;
                                case 3:inc=5; m++;break;
                                case 4:m=0; break;
                                default: break;
                        }
                }                       
         }
}

void timer1()interrupt 1 using 0//可控硅触发中断
{
        unsigned char i;
        P44=0;                 //灯亮
        for(i=0;i<2;i++);      //延时2us
        P44=1;                 //灯灭
}
我用100W的灯泡测试过,效果还可以;原理图就是楼上的图。
回复

使用道具 举报

ID:171036 发表于 2020-4-10 21:28 | 显示全部楼层
楼主  你那两个光耦用啥型号的  可控硅又是啥型号
回复

使用道具 举报

ID:87631 发表于 2020-4-12 14:03 | 显示全部楼层
盉飞沙 发表于 2019-3-22 14:47
moc3021等一些光耦是自带过零检测的。但要像可控硅电路那样调光不实际。原因1,模拟调光是不稳定的,不能保 ...

现在有很多可控硅调光的LED灯,一般分为前沿触发或后沿触发,发须要单独的过零检测电路,不然LED的闪得很严重或电源异响
回复

使用道具 举报

ID:877242 发表于 2021-1-20 17:07 | 显示全部楼层
不过零.JPG
以下这些是不过零的:
CT301X_2X.JPG

CT305X.JPG

总结:型号倒数第1个数字代表启动电流大小,1是15ma,2是10ma,3是5ma,CT301X系列的除外;
倒数第2个数字代表峰值电压,1是250V,2是400V,5是600V;倒数第2个数字为1,2,5的系列为不过零;

过零.JPG

以下这些都事过零的:
CT303X_4X.JPG

CT306X_8X.JPG

总结:型号倒数第1个数字代表启动电流大小,1是15ma,2是10ma,3是5ma;
倒数第2个数字代表峰值电压,3是250V,4是400V,6是600V,8是800V;倒数第2个数字为3,4,6,8的系列为过零;


回复

使用道具 举报

ID:848824 发表于 2021-3-10 10:52 | 显示全部楼层
dj3365191 发表于 2019-8-20 10:46
我完全按照你给的原理图搭建的电路,而且还反复仔细分析过你的实物电路,也是和原理图一致的,但是烧录程序 ...

我的也是和你一样的现象灯不亮
回复

使用道具 举报

ID:97350 发表于 2021-6-3 16:59 | 显示全部楼层
首先感谢楼主分享。
1.这个不带有过零检测,会有抖动
2.制作成本太高了,可以考虑精简下
回复

使用道具 举报

ID:283361 发表于 2023-6-15 10:57 来自手机 | 显示全部楼层
图中C1电容是什么作用,请大神指教
回复

使用道具 举报

ID:561623 发表于 2023-7-13 15:40 | 显示全部楼层
dianziren12 发表于 2023-6-15 10:57
图中C1电容是什么作用,请大神指教

保持可控硅驱动电压,避免过零或者电压低时可控硅无法导通,如果电路采用rc降压热地还可以省掉两个光耦,
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表