[STC单片机] 移相触发可控硅只控制半波,求指点

[复制链接]
1920|5
 楼主| 周兆鹏 发表于 2017-5-6 13:41 | 显示全部楼层 |阅读模式
本帖最后由 周兆鹏 于 2017-5-6 13:46 编辑

本电路是让可控硅工作在2、3象限。本人写的程序只能控制半波,负载电压只能在0V-110V或者110V-220V之间调,不能全波调压,分析原因应该是程序不对,本人分析原因是一个完整的交流波形有2个过零点信号,而我的程序每次只能检测到一个过零信号,每次都丢一个,类似于只控制到第1 第3 第5 第7……点的过零信号,丢掉了第2 第4 第6 ……点过零信号。现在请大家鉴定下我分析的原因对不对,还有就是程序该怎么重新写?

#include <STC12C2052AD.H>
#define uchar unsigned char
#define uint  unsigned int
sbit pwm=P1^7;
uchar num=0;
void main ()
{
        EA=1;
        EX0=1;
        ET0=1;
        TMOD=0x01;
        TH0=0xFC; //定时1ms
        TL0=0x18;
        IT0=0;
        pwm=0;          //初始输出0,可控硅不导通
        while(1);               
}
void delay (uint z)
{        
        uint x,y;
        for(x=z;x>0;x--)
          for(y=200;y>0;y--);

}
void timer0() interrupt 1
{

        TH0=0xFC;  //定时1ms
        TL0=0x18;
        num++;
                if(num==10)
                {               
                        pwm=0;
                        TR0=0;
                        num=0;
                }
                if(num==1)
                {
                        pwm=1;
                }  
                                 
}
void ext0() interrupt 0
{
     TR0=1;
}

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
liwen_01 发表于 2017-5-6 14:16 | 显示全部楼层
你这程序这样做当然不行啊。
这是做项目的程序吗,你实在想不到,你可以检测桥堆后面,桥堆 后机是频率加倍啊,
liwen_01 发表于 2017-5-6 14:17 | 显示全部楼层
把检测1和0的时间写对称也是可以的
 楼主| 周兆鹏 发表于 2017-5-6 15:23 | 显示全部楼层
liwen_01 发表于 2017-5-6 14:17
把检测1和0的时间写对称也是可以的

我现在程序这么写的 ,我觉得应该行 晚上回去下载试试看,您看我这样写应该可以控制了吧?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| 周兆鹏 发表于 2017-5-6 15:27 | 显示全部楼层
liwen_01 发表于 2017-5-6 14:17
把检测1和0的时间写对称也是可以的

现在想法是:当有过零信号的时候,启动定时器,达到触发时间了,就输出高电平去触发可控硅并关掉定时器,这个时候过零信号又来了,在处理过零信号的同时关掉高电平输出。又启动定时器,如此重复下去,我觉得可以移相控制了~
 楼主| 周兆鹏 发表于 2017-5-6 20:57 | 显示全部楼层
liwen_01 发表于 2017-5-6 14:17
把检测1和0的时间写对称也是可以的

晚上试了还是不能在0-220V之间移相控制,只能在220--110V之间调,麻烦您能不能指点下,,我都快急死了。谢谢

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

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

本版积分规则

11

主题

35

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部