世纪电源网社区logo
社区
Datasheet
标题
返回顶部
未解决

可控硅调光闪烁

[复制链接]
查看: 3089 |回复: 6
1
w18331508690
  • 积分:150
  • |
  • 主题:6
  • |
  • 帖子:22
积分:150
LV2
本网技师
  • 2018-8-31 10:49:48
20问答币
这是我的硬件电路,用两个单向可控硅调光,灯泡是15W红色的,采用移相控制,分成了1~10ms几个档位。无论延时几ms,灯泡都有闪烁的现象。想问问诸位大神,我的硬件问题还是软件,我软件编程能力萌新,希望大神们多多指点,感谢。
软件程序如下:
void Init_T0()
{
        TMOD = 0x01;//设置定时器0为工作方式1
        EA = 1;
        ET0 = 1;
        TH1 = (65536-917)/256;   //中断1次1ms
        TL1 = (65536-917)%256;               
}
void T0_Fuwu() interrupt 1
{
        uchar i;
        TH0 = (65536-917)/256;
        TL0 = (65536-917)%256;
        num++;
        num2++;
        if(num==a)                //改变num的值即可改变移相触发时间,即改变负载功率大小。num的范围:0<num<10
        {
                KZJ = 1;        //触发可控硅导通
                for(i=0;i<2;i++);//延时2us
                KZJ = 0;        //延时2us之后,关掉脉冲输出,因为可控硅在非过零点情况下触发信号丢失,会继续保持导通。       
        }
        if(num2==10+a)                //改变num的值即可改变移相触发时间,即改变负载功率大小。num的范围:0<num<10
        {
                TR0 = 0;
                KZJ = 1;        //触发可控硅导通
                for(i=0;i<2;i++);//延时2us
                KZJ = 0;        //延时2us之后,关掉脉冲输出,因为可控硅在非过零点情况下触发信号丢失,会继续保持导通。
                num = 0;       
                num2 = 0;        //清零变量
        }
        Key_Function();
        display1(a);                                         
}
void Init_T1()
{
        TMOD = 0x50;//设置计数器1为工作方式1
        EA = 1;
        ET1 = 1;
        TR1 = 1;
        TH1 = (65536-1)/256;  
        TL1 = (65536-1)%256;               
}
void T1_Fuwu() interrupt 3
{
        TH1 = (65536-1)/256;  
        TL1 = (65536-1)%256;  //每次1个脉冲中断
        TR0 = 1;//触发定时器
        num = 0;
        num2 = 0;                          
}

void main()
{
        Init_T1();
        Init_Int1();
        Init_T0();
        KZJ = 0;
        while(1);                                                                                                    
}


QQ图片20180831104503.png (14.06 KB, 下载次数: 74)

QQ图片20180831104503.png

QQ图片20180831104515.png (13.41 KB, 下载次数: 69)

QQ图片20180831104515.png
收藏收藏2
mskkk
  • mskkk
  • 离线
  • LV6
  • 高级工程师
  • 积分:747
  • |
  • 主题:3
  • |
  • 帖子:147
积分:747
LV6
高级工程师
  • 2018-8-31 14:02:55
  • 倒数6
 
每次进中断,都是 num++; num2++;,触发点都是变的,闪烁也就不奇怪了
w18331508690
  • 积分:150
  • |
  • 主题:6
  • |
  • 帖子:22
积分:150
LV2
本网技师
  • 2018-8-31 15:24:21
  • 倒数4
 
这个num和num2用来判断延时的时间不是吗?a是设定的触发点的值,num和num2在中断里每次1ms。没懂,编程有点弱,能再仔细说说吗?感谢
w18331508690
  • 积分:150
  • |
  • 主题:6
  • |
  • 帖子:22
积分:150
LV2
本网技师
  • 2018-8-31 15:43:33
  • 倒数3
 
这是我的按键程序,其中a代表延时的时间。num和num2在中断里表示是否到了a毫秒,如果到了,开始导通。
void Init_Int1()
{
        EA = 1;
        EX1 = 1;
        IT1 = 1;               
}
void Int1_Fuwu() interrupt 2
{
        delay(2);
        if(Int1 == 0)
        {
                delay(2);
                if(Int1 == 0)
                {
                        delay(2);
                        if(Int1 == 0)
                        {
                                Flag_Key = 1;
                        }
                }
        }       
}
void Key_Function()
{
        if(Flag_Key == 1 && K1 == 0)
        {
                Flag_Key = 0;
                a ++;
                if(a == 10)
                {
                        a = 0;
                }       
        }
        if(Flag_Key == 1 && K2 == 0)
        {
                Flag_Key = 0;
                a --;
                if(a == 0)
                {
                        a = 10;
                }               
        }
}

mskkk
  • mskkk
  • 离线
  • LV6
  • 高级工程师
  • 积分:747
  • |
  • 主题:3
  • |
  • 帖子:147
积分:747
LV6
高级工程师
  • 2018-9-1 14:29:44
  • 倒数2
 
用示波器看你的触发脉冲和过零时间间隔是不是固定的先,还有固定亮度闪烁吗?用个计数器做触发定时,每次过零时清零,到达设定时间中断,输出触发信号,注意要设为最高优先级。
w18331508690
  • 积分:150
  • |
  • 主题:6
  • |
  • 帖子:22
积分:150
LV2
本网技师
最新回复
  • 2018-9-4 15:31:49
  • 倒数1
 
您看我的触发电路,是属于RC电路触发吗?只要输出端设置高低电平就可以,还是要设置成脉冲输出的?
mskkk
  • mskkk
  • 离线
  • LV6
  • 高级工程师
  • 积分:747
  • |
  • 主题:3
  • |
  • 帖子:147
积分:747
LV6
高级工程师
  • 2018-8-31 14:12:40
  • 倒数5
 
过零电路可以改进,两个光耦输出可以连起来,经过一个三极管反相后进入单片机。检测到过零信号后,间隔固定的时间(0.5-9.5ms)触发可控硅就 OK了。注意触发信号时间要大于20us,以保证可靠触发。用连续脉冲触发也是可以的,到9.5ms的时候关掉就行
热门技术、经典电源设计资源推荐

世纪电源网总部

地 址:天津市南开区黄河道大通大厦8层

电 话:400-022-5587

传 真:(022)27690960

邮 编:300110

E-mail:21dy#21dianyuan.com(#换成@)

世纪电源网分部

广 东:(0755)82437996 /(138 2356 2357)

北 京:(010)69525295 /(15901552591)

上 海:(021)24200688 /(13585599008)

香 港:HK(852)92121212

China(86)15220029145

网站简介 | 网站帮助 | 意见反馈 | 联系我们 | 广告服务 | 法律声明 | 友情链接 | 清除Cookie | 小黑屋 | 不良信息举报 | 网站举报

Copyright 2008-2024 21dianyuan.com All Rights Reserved    备案许可证号为:津ICP备10002348号-2   津公网安备 12010402000296号