找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 9103|回复: 35
收起左侧

51单片机是不是不能移相控制可控硅啊?

  [复制链接]
ID:37147 发表于 2017-5-6 20:54 | 显示全部楼层 |阅读模式
求大师指点,为什么我这个电路和程序,灯泡只能在110V--220V直间调压(半波),怎么调试,都不能在0--220V之间调,首先我没有用MOC3021等元件,我想实现我现在的电路的功能。是不是单片机检测过零的时候,丢掉了一个过零信号,才导致半波的?。。。求指点。谢谢了。。
QQ截图20170506204159.jpg
QQ截图20170506204630.jpg
回复

使用道具 举报

ID:47933 发表于 2017-5-7 08:20 | 显示全部楼层
过零检测电路问题,只有半波触发,因为MCU只有正半波峰转谷时才触发,而负半周根本就不能触发,并且这个电路根本不是过零触发,而是只有二象限才能触发,也就是只有1/4的时间可以触发,要是接了负载,怕是输出连110伏都没有,要解决这个问题,必须要讲负半周反相,并且正负半周都要在过零时产生下降沿脉冲,才能实现全波触发。可采用全波整流电路来解决负半周过零反相,然后再加上反相器才能实现真正的过零触发。

评分

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

查看全部评分

回复

使用道具 举报

ID:47933 发表于 2017-5-7 08:36 | 显示全部楼层
参考电路:
20170507083550.png
回复

使用道具 举报

ID:111634 发表于 2017-5-7 12:28 | 显示全部楼层
本帖最后由 zl2168 于 2017-5-7 15:42 编辑

过零触发电路
过零检测电路.jpg
微机控制晶闸管过零触发电路.jpg
MOC3041能自动过零触发
无触点交流电源通断控制电路.jpg


以上摘自张志良编著
《模拟电子技术基础》(ISBN 7-111-19362-8)机械工业出版社



回复

使用道具 举报

ID:47933 发表于 2017-5-7 13:23 | 显示全部楼层

上图修正:
20170507083550.png
回复

使用道具 举报

ID:47933 发表于 2017-5-7 15:31 | 显示全部楼层
晕,看了你的程序才知道你的异相思路,市电的周期是20MS,而你只在前10MS进行了控制,也就是只控制了正半周,负半周是失控的,所以就灭不了灯

评分

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

查看全部评分

回复

使用道具 举报

ID:47933 发表于 2017-5-7 15:33 | 显示全部楼层
把 if(num==1)改成if(num==1|num==11)试试?

评分

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

查看全部评分

回复

使用道具 举报

ID:111634 发表于 2017-5-7 22:09 | 显示全部楼层
正弦波过零检测后延时触发就是移相触发。
回复

使用道具 举报

ID:37147 发表于 2017-5-8 09:03 | 显示全部楼层
lyf898 发表于 2017-5-7 15:31
晕,看了你的程序才知道你的异相思路,市电的周期是20MS,而你只在前10MS进行了控制,也就是只控制了正半周 ...

我整个完整的电路是这样的,这个电路我是抄另一个板子的,一抹一样,只不过单片机是我自己的,程序是我自己写的。所以那个过零电路我也是防照它的
1.jpg

评分

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

查看全部评分

回复

使用道具 举报

ID:37147 发表于 2017-5-8 09:10 | 显示全部楼层
lyf898 发表于 2017-5-7 15:31
晕,看了你的程序才知道你的异相思路,市电的周期是20MS,而你只在前10MS进行了控制,也就是只控制了正半周 ...

我知道交流周期是20ms,所以我让单片机在每次交流过零的时候,就延时触发导通一个可控硅呀,所以就在第一个10ms,也就是正半波触发一次可控硅,然后在下一个10ms,再触发一次可控硅,所以周期不应该是10Ms吗,程序不对吗?下面的是我画的分析图 11.jpg
回复

使用道具 举报

ID:37147 发表于 2017-5-8 09:15 | 显示全部楼层
zl2168 发表于 2017-5-7 22:09
正弦波过零检测后延时触发就是移相触发。

嗯嗯嗯   思路完全是这个思路,程序也是这么写的,,现在我 只能怀疑是过零检测电路的问题了。。。这个是我抄的板子的原理图
1.jpg
回复

使用道具 举报

ID:111634 发表于 2017-5-8 10:00 | 显示全部楼层
周鹏 发表于 2017-5-8 09:15
嗯嗯嗯   思路完全是这个思路,程序也是这么写的,,现在我 只能怀疑是过零检测电路的问题了。。。这个是 ...

你看我那个图10-10 ,就是单片机移相触发控制可控硅。
还有,你那个非隔离然后稳压是很危险的呵,不能这样用的。
回复

使用道具 举报

ID:37147 发表于 2017-5-8 15:23 | 显示全部楼层
zl2168 发表于 2017-5-8 10:00
你看我那个图10-10 ,就是单片机移相触发控制可控硅。
还有,你那个非隔离然后稳压是很危险的呵,不能这 ...

嗯嗯 你那个图我知道 我用过  可以的,没事,我很小心的在做我现在的这个实验 --非隔离的~
回复

使用道具 举报

ID:37147 发表于 2017-5-8 16:33 | 显示全部楼层
lyf898 发表于 2017-5-7 08:20
过零检测电路问题,只有半波触发,因为MCU只有正半波峰转谷时才触发,而负半周根本就不能触发,并且这个电 ...

我那个过零检测电路在交流电上串了5个电阻接在单片机的INT0口,为什么是半波流进单片机,而不是全波,难道单片机的INT0口内部也是个单向导通的二极管?

评分

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

查看全部评分

回复

使用道具 举报

ID:47933 发表于 2017-5-13 12:11 | 显示全部楼层
周鹏 发表于 2017-5-8 16:33
我那个过零检测电路在交流电上串了5个电阻接在单片机的INT0口,为什么是半波流进单片机,而不是全波,难 ...

进入的是全波,但是单片机外部触发只能是下降沿触发,正半周才有下降沿,负半周只有上升沿,而上升沿是不能过零触发的,所以就只有正半波下降时MCU才被触发,所以你的程序需要作与电路匹配的修改才能实现你要的结果。

评分

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

查看全部评分

回复

使用道具 举报

ID:47933 发表于 2017-5-13 13:03 | 显示全部楼层
周鹏 发表于 2017-5-8 09:03
我整个完整的电路是这样的,这个电路我是抄另一个板子的,一抹一样,只不过单片机是我自己的,程序是我自 ...

既然你这个电路是成品抄板而来,那电路是肯定没问题,问题就应该出现在程序里了
回复

使用道具 举报

ID:47933 发表于 2017-5-13 13:07 | 显示全部楼层
周鹏 发表于 2017-5-8 15:23
嗯嗯 你那个图我知道 我用过  可以的,没事,我很小心的在做我现在的这个实验 --非隔离的~

其实在简单控制方面,不用隔离也是可以的,批量生产可以节约成本,只是在高压电连通的时候调测时需要格外小心。
回复

使用道具 举报

ID:47933 发表于 2017-5-13 13:17 | 显示全部楼层
周鹏 发表于 2017-5-8 09:10
我知道交流周期是20ms,所以我让单片机在每次交流过零的时候,就延时触发导通一个可控硅呀,所以就在第一 ...

根据你的程序和电路联合分析,你的程序根本不是过零触发,而是正半波峰转谷时触发的,到正半波转负半波过零时可控硅是关断的,而根据时序,10MS时触发是在谷转峰时第二次触发,到负转正时可控硅又是断开了的,这就是为什么你的程序只能控制半波的原因。所以,程序的时序不对。应该改为在第一次触发后的5MS时第二次触发,15MS时进行第三次触发,才能得到完整的全波(220V)输出。

评分

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

查看全部评分

回复

使用道具 举报

ID:47933 发表于 2017-5-13 13:21 | 显示全部楼层
周鹏 发表于 2017-5-8 16:33
我那个过零检测电路在交流电上串了5个电阻接在单片机的INT0口,为什么是半波流进单片机,而不是全波,难 ...

串联5个电阻应该是电阻的功率太小,串联多个是为了电阻功率过小而过载烧坏,要是功率够的话一个电阻即可。只是阻值应为串联的总阻值而已。
回复

使用道具 举报

ID:47933 发表于 2017-5-13 13:28 | 显示全部楼层
总体说来,问题是出在过零检测时刻并未触发可控硅,而是在过零后5MS才触发可控硅,而在两个过零时刻可控硅恰好是断开的,这就造成只能控制一半的原因。修改程序时序方可解决此问题。
回复

使用道具 举报

ID:47933 发表于 2017-5-13 13:42 | 显示全部楼层
前面说的三次也可以改为两次触发,只是这样就应该在过零后分别在10MS+移相时间和20MS+移相时间触发可控硅
回复

使用道具 举报

ID:47933 发表于 2017-5-13 13:58 | 显示全部楼层
lyf898 发表于 2017-5-13 13:42
前面说的三次也可以改为两次触发,只是这样就应该在过零后分别在10MS+移相时间和20MS+移相时间触发可控硅

要是想过零时刻就触发可控硅,就只有改造硬件了,需要增加一个过零反相脉冲输出电路,增加一个三极管反相是最简单的,不过还是软件延时触发成本要低一些,电路也更简洁。
回复

使用道具 举报

ID:198608 发表于 2017-5-13 15:17 | 显示全部楼层
小白路过,帮你顶
回复

使用道具 举报

ID:37147 发表于 2017-5-13 21:41 | 显示全部楼层
lyf898 发表于 2017-5-13 13:17
根据你的程序和电路联合分析,你的程序根本不是过零触发,而是正半波峰转谷时触发的,到正半波转负半波过 ...

#include <STC12C2052AD.H> //用的是STC12系列单片机
#define uchar unsigned char                     
#define uint  unsigned int
uchar num=0,num1=100;
sbit pwm=P1^7; //触发三极管控制脚
sbit k1=P3^7;
unsigned char i;
bit trigger=0;

void delay(uint xms)
{
uint i,j;
for(i=xms;i>0;i--)
  for(j=110;j>0;j--);
}
void main()
{

TMOD=0x01;
TH0=0xFF;//定时0.1ms
TL0=0x9C;
EA=1;   //开总中断
EX0=1;   //开外部0中断
ET0=1;   //开定时器中断
pwm=0;   //初始输出0,三极管截止,可控硅不导通.
k1=1;
// TR0=1;
// IT0=1;//INT0下降沿触发
while(1);  
}
void timer0() interrupt 1
{
  TH0=0xFF; //定时0.1ms
  TL0=0x9C;
  num++;
  if(num==50)
  {
  pwm=1;
  for(i=0;i<5;i++);//延时2us
  pwm=0;
  }
  if(num>99)
  {
   num=0;
  }           
}

void ext0() interrupt 0 //过零检测、外部中断
{
  IE0=0;     //清楚中断标志位
  num=0;
  TR0=1;
}

嗯 原理基本了解,我现在的情况是没有使用下降沿触发,灯泡的端电压只有100V,还有微弱的闪烁感,也能从0-22V调,但是总感觉怪怪的,不像我用TLP521做过零检测电路,端电压正好110V,而且还不闪,这是什么原因呢?

回复

使用道具 举报

ID:47933 发表于 2017-5-15 08:39 | 显示全部楼层
周鹏 发表于 2017-5-13 21:41
#include  //用的是STC12系列单片机
#define uchar unsigned char                     
#define uint ...

问题还是在时序上,如果可控硅触发时点超前在过零时就会断开,相当于此次触发失效,自然就会闪烁,电压也自然就不达标。要彻底解决问题还得在程序上动脑筋
回复

使用道具 举报

ID:111634 发表于 2017-5-15 14:00 | 显示全部楼层
必须有过零检测
回复

使用道具 举报

ID:37147 发表于 2017-5-15 14:37 | 显示全部楼层
lyf898 发表于 2017-5-15 08:39
问题还是在时序上,如果可控硅触发时点超前在过零时就会断开,相当于此次触发失效,自然就会闪烁,电压也 ...

好的!谢谢以上所有的提醒!
回复

使用道具 举报

ID:217703 发表于 2017-7-6 18:30 | 显示全部楼层
zl2168 发表于 2017-5-15 14:00
必须有过零检测

你好,能请教你一下吗,用单片机IO口,检测判断全波与半波的思路?
    电路中用的一个开关控制,开关接通时是全波整流输出,开关断开时就变为半波整流输出,整流输出经电阻降压给一个三极管倒像后再给单片机端口,请问是否是用过零检测思路来判断?那么具体是什么思路呢?因为过零检测程序我也还没做过
    谢谢能帮忙回复,或者加我Q964565079,如果回复麻烦的话,麻烦你留个电话,我打你电话沟通也可以,谢谢

评分

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

查看全部评分

回复

使用道具 举报

ID:331575 发表于 2018-5-23 22:16 | 显示全部楼层
这个帖子好列害 吸收了很多知识,最近一直在寻找控制交流电机调速问题 终于有了头绪,谢谢
回复

使用道具 举报

ID:338171 发表于 2018-8-15 09:19 | 显示全部楼层
zl2168 发表于 2017-5-15 14:00
必须有过零检测

过零检测 是不是装个光耦可以代替
回复

使用道具 举报

ID:427033 发表于 2018-12-29 10:50 | 显示全部楼层
这个帖子很强大,我也受用了。谢谢!
回复

使用道具 举报

ID:883242 发表于 2024-3-24 18:45 | 显示全部楼层
就是第二个半波失控了,才无法调整到110V以下。
回复

使用道具 举报

ID:1109793 发表于 2024-3-25 12:28 | 显示全部楼层
17年的帖子又挖出来了,这种过零我用过啊,当然要用上升沿下降沿都能中断的芯片才行吧,两个电阻串联,很省钱的。电源是阻容降压的。
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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