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

可控硅调光,时间不符合理论

[复制链接]
查看: 1778 |回复: 7
1
w18331508690
  • 积分:150
  • |
  • 主题:6
  • |
  • 帖子:22
积分:150
LV2
本网技师
  • 2018-9-27 21:15:53
10问答币
void Init_Int1()
{
        EA = 1;
        EX1 = 1;
        IT1 = 1;               
}
void Int1_Fuwu() interrupt 2 //using 0
{
        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 = a + 10;
//                if(a >= 255)
//                {
//                        a = 0;
//                }       
        }
        if(Flag_Key == 1 && K2 == 0)
        {
                Flag_Key = 0;
                a = a - 10;
                if((a <= 0)||(a >= 400))
                {
                        a = 100;
                }               
        }
}
void Init_Int0()
{
        EA = 1;
        EX0 = 1;
        IT0 = 1;               
}
void Int0_Fuwu() interrupt 0
{
        AUXR = 0x00;
        PluseOut_Flag = 1;               
}
void Init_T0()
{
        TMOD = 0x01;//设置定时器0为工作方式1
        TH0 = 0xff;   
        TL0 = 0xa4;
        EA = 1;
        ET0 = 1;
        TR0 = 1;       
}
void T0_Fuwu() interrupt 1
{
        static uint PluseOut_Time=0;
        TH0 = 0xff;
        TL0 = 0xa4;
        if(PluseOut_Flag == 1)               
        {
                PluseOut_Time++;
                if(PluseOut_Time == a)
                {
                        if(PluseOut_Time <= a+1)
                        {
                                AUXR = 0x10;
                        }                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
                }
                if(PluseOut_Time >= (a+10))         //脉冲宽度为1ms
                {
                        AUXR = 0x00;
                        PluseOut_Time = 0;
                        PluseOut_Flag = 0;       
                }               
        }                                           
}
void Init_T1()
{
        TMOD = 0x50;//设置计数器1为工作方式1                        //        WAKE_CLKO = 0x20;//设置定时器1可以下降沿触发中断标志
        TH1 = 0xff;  
        TL1 = 0xff;
        EA = 1;
        ET1 = 1;
        TR1 = 1;                       
}
void T1_Fuwu() interrupt 3
{
        TH1 = 0xff;  
        TL1 = 0xff;  //每次1个脉冲中断         
        AUXR = 0x00;
        PluseOut_Flag = 1;                          
}                                                                                               
void CLKOUT_Init()
{       
        BRT = 233;                 //        CLKOUT2工作在1T模式时的输出频率 = SYSclk / ( 256 - BRT ) / 2          20KHZ
        WAKE_CLKO = 0x04;//将P1脚设置成独立波特率发生器
}
void main()
{       
//        P4SW = 0x70;
        Init_T0();
        Init_Int1();
        Init_T1();
        Init_Int0();
        CLKOUT_Init();
        IPH = 0x0b;//设置最高优先级中断
        IP = 0x06;
        a = 200;
        while(1)
        {       
                Key_Function();
                display1(a);               
        }                                                                                                            
}
以上是软件和硬件部分。可控硅移相控制灯泡电压,实现灯泡亮度的改变。现象较明显。理论上220V交流电周期20ms,半个周期内控制导通角应该在10ms以内。但现在延时a=250时灯才灭,就是延时了25ms,理论上应在10ms时就灭。现在一直搞不通。求大神告知,停留一个月了,很难受!感谢。

QQ图片20180831104515.png
QQ图片20180831104503.png
lpqlwan
  • 积分:2282
  • |
  • 主题:6
  • |
  • 帖子:199
积分:2282
LV8
副总工程师
  • 2018-9-28 06:59:02
  • 倒数6
 
你自己写的?
w18331508690
  • 积分:150
  • |
  • 主题:6
  • |
  • 帖子:22
积分:150
LV2
本网技师
  • 2018-9-28 09:34:53
  • 倒数5
 
嗯呢,都是自己写的
lovelee
  • 积分:6287
  • |
  • 主题:18
  • |
  • 帖子:560
积分:6287
LV8
副总工程师
  • 2018-9-28 12:51:03
  • 倒数4
 
慢慢查找原因吧
w18331508690
  • 积分:150
  • |
  • 主题:6
  • |
  • 帖子:22
积分:150
LV2
本网技师
  • 2018-9-28 15:02:18
  • 倒数3
 
您觉得硬件和软件,哪里有什么不妥的地方吗?
tanik
  • tanik
  • 离线
  • LV6
  • 高级工程师
  • 积分:1797
  • |
  • 主题:7
  • |
  • 帖子:319
积分:1797
LV6
高级工程师
  • 2018-9-29 14:56:59
  • 倒数2
 
可控硅的触发端有信号就导通,灯亮;无信号时,在主线路过零时就关断。你先去掉这个过零检测电路及软件功能,软件上修改为在你想关灯时就无输出触发信号。这样试试看。
ZWC317441532
  • 积分:14333
  • |
  • 主题:55
  • |
  • 帖子:1262
积分:14333
LV10
总工程师
最新回复
  • 2018-11-3 17:14:01
  • 倒数1
 
感觉你这个是硬件有问题,1过零检测电路产生了检测延时.三极管和光耦在深度饱和后,就会产生释放延时.2.信号驱动芯片ULN2003,太浪费了,7路只用了1路. 你是用的什么型号的单片机?P4.5和P4.6应该是输入一个很窄脉冲信号.可以测试一下,在P4.5和P4.6给触发信号测试输出信号与触发信号的延时是否与设定时间相同,触发方式设置是否正确.如果时间相同,软件没有问题.
热门技术、经典电源设计资源推荐

世纪电源网总部

地 址:天津市南开区黄河道大通大厦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号