可用于单片机控制可控硅电路中,可减小产品的体积和重量。……

为什么要分开用R1、R2、R3呢?都是串一起的,用一个电阻不行吗?

楼主做过零检测做什么用?

1、为了增加安全性

2、控制可控硅输出功率

如果需要十分精准可以用电阻分压后用电压比较器 ,再过光耦

楼主是为了调相从而调功吧,如果不知道楼主在负载方面是如何的

后面的是通过单片机控制的可控硅,控制白炽灯的亮度

/

过零检测电路

电阻参数通过验证,可用

//

我的硬件电路图:

引用

根据第5楼decai 的建议

大家看看这个用LM358的电路做过零检测,AC0接51单片机的INT0非,下图来源http://bbs.mydigit.cn/read.php?tid=221794

看看我的程序吧,是这样的,就是用起来渐变时灯有些闪,还没找到原因:

原因找到了,原来是做过零检测的变压器接到了负载(白炽灯)之后了,造成中断信号受到干扰引起闪烁!!

程序上又稍改了一下时间参数,无级渐变,淡入淡出,见26楼视频效果,这个程序很给力:

引用

见第26楼xinqi99于2011-03-03 12:55发表的  :

视频效果(00:02:31)

#include

#define uint unsigned int

#define uchar unsigned char

#define ON 0

#define OFF 1

………………………………

void main()

{

TMOD = 0x11;

EA=1;

TCON=0x05;

………………

for(;;)

{

DispInfo( );

Display( );

keyscan( );

}

}

…………………………

void keyscan()

{

……………………

if(S1_num==0)

{

if (S2==0)

mDelay(10);

if (S2==0)

if (K_Less30s>59)

{

LampGradual();

}

}

}

void LampGradual()

{

Gradual=Lamp1;

K_Less30s=0;               //按开关灯键间隔小于30秒标记及时长记录

EX0=1;                     //开外部中断0

ET0=1;

TR0=1;

ET1=1;                     //定时器1中断允许

IT0=1;                       //INT0为下降沿触发(以前忘了这个,渐变时却不亮,呵呵)

On_Init=7000;             //渐开定时触发初始化为10ms,并递减

Off_Init=4000;            //渐关定时触发初始化为0ms,并递增

}

//  ********************************************************************

void timer0() interrupt 1                //实时时钟中断程序

{

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

Time50ms++;

if(Time50ms==20)                     //实时时钟走时累计

{

Time50ms=0;

Sec++;

if(K_Less30s<60) //|| OnTime==1 || OffTime==1           //***********按键后或定时时间到后开关灯*************

{

K_Less30s++;

if(K_Less30s==30)                  //30秒后********

{

K_Less30s=60;                  //封闭渐开渐关操作,

Lamp1=~Gradual;

EX0=0;                  //30秒后关中断

ET1=0;                  //30秒后关定时器1

ET0=0;

TR0=0;

}

}

}

}

void INT0_AC0() interrupt 0        //外部中断0,AC过0时,50Hz交流电每秒过零100次,每次间隔10ms

{

ET1=1;                           //定时器1中断允许

TR1=0;                           //定时器1开始计时

if(Gradual==OFF)                //渐开

{

--On_Init;              //On_Init-=2;         //每10ms

a=(65536-On_Init)/256;  //定时初值

b=(65536-On_Init)%256;

}

if(Gradual==ON)                //渐关

{

++Off_Init;          //Off_Init+=2;

a=(65536-Off_Init)/256;

b=(65536-Off_Init)%256; //

}  //

TH1=a;

TL1=b;

TR1=1;               //开始计时

}

void timer1() interrupt 3                //定时器1中断程序(灯渐变移相控制)

{

uchar i;

Lamp1=ON;                //灯1的触发脉冲

{

for(i=0;i<2;i++);      //延时 X μs

Lamp1=OFF;

}

}

3063是过零打开的,没法调整导通角的,硬件上就不行了。个人建议还是换个光耦。

这个要选择3020系列的非过零检测的光耦,不过本人也不做硬件这类的,3020峰值电压400v不知道耐压够不,程序我不会写,可以给你个思路,自己写程序

要一个过零检测电路,一个可控硅触发电路,这个你应该不成问题了,程序上,一个半波10ms,你要几级调光就分把这个10ms分几份,不是等份哦,要不调

光不均匀的,你可以自己实验,我也说不上,每次单片机检测到过零信号后就在,如果你要开的是第几档,你就在花去前面几档的时间后给空空硅电路一个触发信

号,然后等下一个过零信号。

//

过零检测电路图

发布: | 作者: | 来源: tianhaizhou | 查看:1598次 | 用户关注:

如下图所示为按

上述思想设计的电压正向过零检测电路。220V的交流电首先经过电阻分压,然后进行光电耦合,假设输入的是A相电压,则在A相电压由负半周向正半周转换

时,图中三极管导通并工作在饱和状态,会产生一个下降沿脉冲送入ADμC812的INT0引脚使系统进入中断程序。微机系统进入中断程序后,发出采样命令

并从采样保持器读取无功电流值Iqm,这个无功电流即为A相的无功电流,经过1/4个周期电压达到最大值,此时对电压进行采样,得到UM,由

如下图所示为按上述思想设计的电压正向过零检测电路。220V的交流电首先经过电阻分压,然后进行光电耦合,假设输入的是A相电压,则在A相电压由负半

周向正半周转换时,图中三极管导通并工作在饱和状态,会产生一个下降沿脉冲送入ADμC812的INT0引脚使系统进入中断程序。微机系统进入中断程序

后,发出采样命令并从采样保持器读取无功电流值Iqm,这个无功电流即为A相的无功电流,经过1/4个周期电压达到最大值,此时对电压进行采样,得到

UM,由UM=1.414U可以得到电压有效值U。

///

过零检测电路,如果需要十分精准可以用电阻分压后用电压比较器

过零的电阻只用一个100K很危险的,还是用两个50K比较好。功率耐压的问题。

因为是双向触发所以频率有100hz哦,还行基本看不出闪

单片机 c语言 可控硅,单片机控制可控硅电路相关推荐

  1. 单片机c语言实验,单片机实验C语言编程.doc

    单片机实验C语言编程.doc 下载提示(请认真阅读)1.请仔细阅读文档,确保文档完整性,对于不预览.不比对内容而直接下载带来的问题本站不予受理. 2.下载的文档,不会出现我们的网址水印. 3.该文档所 ...

  2. 单片机c语言 步进电机,步进电机控制(单片机C语言).doc

    步进电机控制(单片机C语言) 模块二 简单应用实例调试 任务2 步进电机控制(H22) 任务要求 用单片机P1端口控制步进电机,编写程序输出脉冲序列到P1口,控制步进电机正转.反转,加速,减速. 二. ...

  3. 单片机c语言字符,单片机C语言(一) - 控制/MCU - 电子发烧友网

    第三课.C51数据类型 每写一个程序,总离不开数据的应用,在学习 c51 语言的过程中掌握理解数据类型也是 很关键的.先看表 3-1,表中列出了 KEIL uVision2 单片机c语言编译器所支持的 ...

  4. 好听的歌曲单片机c语言程序,单片机C语言程序举例(三)

    原标题:单片机C语言程序举例(三) 14.音乐播放 //此程序在硬件上调试通过 //本程序的晶振采用11.0592M #include sbit speaker=P1^2; unsigned char ...

  5. 单片机c51语言变量,单片机c语言教程:C51变量

    上课所提到变量就是一种在程序执行过程中其值能不断变化的量.要在程序中使用变量必须先用标识符作为变量名,并指出所用的数据类型和存储模式,这样编译系统才能为变量分配相应的存储空间.定义一个变量的格式如下: ...

  6. 单片机c语言除法,单片机C语言知识点全攻略

    单片机C语言知识点全攻略 为了让有需要的朋友进一步了解单片机C语言知识,下面的文章将为大家讲解单片机C语言的知识内容,欢迎学习! C51运算符和表达式 运算符,双目运算符和三目运算符.单目就是指需要有 ...

  7. c51单片机的语言,51单片机,stm32,arduino都是用什么语言进行编程的?

    51单片机,STM32单片机用汇编或者C语言,现在基本都用C语言编程,Arduino有自己的编程环境,用户也是用C语言编程. 51单片机的编程 51单片机进入中国比较早,在早前用汇编编程比较多,我在上 ...

  8. 单片机c语言 u16,单片机C语言的误用

    单片机C语言的误用 导语:在学习单片机的时候才真正知道C语言是什么它是来干什么的,但是C语言用到嵌入式只是它小小的一部分他的应用还有很多地方呢,也经常出现误用,让我们了解一下吧! 我们是不是在写程序的 ...

  9. 适合自学单片机c语言教材,单片机编程入门看什么书 盘点单片机初学者适合看的书...

    本篇文章盘点:单片机编程入门看什么书.其实学习单片机重点就是C语言,其次实践重要,学习单片机不光要看书,建议初学者多多实践,自己做一些尝试性的开发.话不多说,下面就来盘点,初学者单片机编程入门适合看什 ...

  10. c语言访问dph 单片机,(c语言版)单片机复习题(15页)-原创力文档

    单片机复习题 一.名词解释 1.时序:按照时间顺序显示的对象(或引脚.事件.信息)序列关系. 2.指令:CPU 用于指挥功能部件完成某一指定动作的指示和命令. 3.变量:在程序执行过程中,数值可以发生 ...

最新文章

  1. runaway深度递归函数测试及相关汇编指令
  2. windows linux 传文件_2种windows到linux上传文件的方法
  3. uniapp App权限配置
  4. ARINC 429 过滤介绍
  5. linux/windows下代理软件对比分析
  6. 手把手教你用python实现一个简单用户管理系统
  7. 清除微信或者企业微信的缓存或cookie
  8. 4.1关系运算符和逻辑运算符
  9. php arrayaccess什么作用,PHP中的ArrayAccess用法详解
  10. webpack-theme-color-replacer webpack插件 实现web项目 全局修改主题颜色
  11. html5跳跳蛙小游戏分析,中班科学优秀教案《跳跳蛙》(5页)-原创力文档
  12. 车牌号合法性校验正则表达式(含新能源车牌)
  13. 微擎微信公众号消息模板
  14. 第一次用VNPY,通过仿真测试,踩过千万坑,我太难了~~~~~~
  15. Jquery鼠标滚轮放大缩小图片
  16. 计算机集群共享gpu,GPU集群
  17. /*输入一个字符串,判断其是否为回文。(回文字符串是指从左到右读和从右到左读完全相同的字符)*/
  18. 计算机桌面体验,解决运行OneNote提示“安装桌面体验”的方法
  19. Jenkins使用2——Jenkins使用时间戳
  20. 一张纸对折13次JAVA_一张纸最多折叠8次?她把纸折叠了13次后,发生了什么?

热门文章

  1. 微型计算机显示器的两种引线,第八章章节微型计算机接口技术8-2led显示器接口.ppt...
  2. 网吧部分机器耳麦line in线要重插一下才能说话的设置
  3. 在家看片利器,有Android App以及桌面应用(已开源)。
  4. 用计算机查找文件地址吗,如何快速搜索电脑里的文件( 快速准确定位和查找电脑文件位置的方法...
  5. Lifeline功能介绍04——个人课程的查看及管理
  6. 正确方法将电子书放到Kindle的documents文件夹,还是看不了书?
  7. canvas 系列学习笔记二《绘制图形》
  8. deepin 安装git
  9. throw er; // Unhandled ‘error’ event
  10. 二叉树的创建以及先中后序遍历