基于51单片机的晶闸管调光设计正文.docx

上传人:b****3 文档编号:4684110 上传时间:2022-12-07 格式:DOCX 页数:25 大小:3.20MB
下载 相关 举报
基于51单片机的晶闸管调光设计正文.docx_第1页
第1页 / 共25页
基于51单片机的晶闸管调光设计正文.docx_第2页
第2页 / 共25页
基于51单片机的晶闸管调光设计正文.docx_第3页
第3页 / 共25页
基于51单片机的晶闸管调光设计正文.docx_第4页
第4页 / 共25页
基于51单片机的晶闸管调光设计正文.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

基于51单片机的晶闸管调光设计正文.docx

《基于51单片机的晶闸管调光设计正文.docx》由会员分享,可在线阅读,更多相关《基于51单片机的晶闸管调光设计正文.docx(25页珍藏版)》请在冰豆网上搜索。

基于51单片机的晶闸管调光设计正文.docx

基于51单片机的晶闸管调光设计正文

1前言

在日常生活中,我们常常需要对灯光的亮度进行调节。

本设计通过单片机控制晶闸管的导通来实现白炽灯(纯阻负载)亮度的调整。

晶闸管又叫可控硅(SiliconControlledRectifier,SCR)。

自从20世纪50年代问世以来已经发展成了一个大的家族,它的主要成员有单向晶闸管、双向晶闸管、光控晶闸管、逆导晶闸管、可关断晶闸管、快速晶闸管,等等。

本设计用到的双向晶闸管是在普通晶闸管的基础上发展而成的,它不仅能代替两只反极性并联的晶闸管,而且仅需一个触发电路,是目前比较理想的交流开关器件。

它的特点是导通后即使触发信号去掉,它仍将保持导通;当负载电流为零(交流电压过零点)时,它会自动关断。

所以需要在交流电的每个半波期间都要产生触发信号,触发信号产生时间的长短(触发角的大小)就决定了灯泡的亮度。

调光的实现方式就是在交流电源信号过零点后一段时间触发双向可控硅开关的导通,称这段时间为双向可控硅的触发角。

触发角越大,可控硅导通的时间越短,灯的亮度就越低;反之,灯就越亮。

这就要求确定交流电源同步信号的过零点,并以此为基础,控制触发信号触发角的大小,达到白炽灯亮度调节的目的。

本文是基于51单片机的晶闸管调光设计内容,本系统主要包括五大模块:

交流电过零信号采集模块、按键控制模块、最小系统模块、晶闸管触发模块及显示模块。

其中,由按键设置需要的导通角,经单片机AT89C52对按键数据进行运算处理,最后发出驱动晶闸管导通的脉冲使晶闸管导通,同时驱动LED显示导通角大小。

 

2总体方案设计

2.1方案论证

方案一:

硬件电路设计由5个部分组成:

过零信号采集电路,按键控制电路,AT89C52单片机系统,LED显示电路以及晶闸管电路。

硬件电路设计框图如下图2.1所示。

AT89C52

过零信号

显示电路

时钟电路

按键信号

晶闸管触发

复位电路

 

图2.1基于单片机的灯光调节系统硬件设计框图

方案二:

电路基本组成就是滑动变阻器和灯泡串联,通过简单的电阻分压来改变灯泡的电压,从而改变灯泡亮度。

电路框图如图2.2所示。

灯泡

滑动变阻器器

电源输入

图2.2简单电路的灯光调解器设计框图

 

2.2方案比较及选择

方案一方案二都各有各的特点。

方案一采用的是基于AT89C52单片机的电路设计,电路设计稍微复杂,元器件也较多,程序编写也有一定难度;方案二用到简单的电路知识,元器件非常简单,电路设计非常简单。

但是由于电阻也要消耗能量并不能达到节能的目,且方案一能较为精确的对灯光亮度进行控制且能知道具体输出电压有效值,由于使用了单片机,后期还能根据自己意愿添加更多功能。

综合以上的分析,选择方案一。

3单元模块设计

3.1单片机模块

单片机AT89C52的功能介绍:

AT89C52是一个低电压,高性能CMOS8位单片机,片内含8kbytes的可反复擦写的Flash只读程序存储器和256bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,AT89C52单片机在电子行业中有着广泛的应用。

AT89C52有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2个读写口线,AT89C52可以按照常规方法进行编程,也可以在线编程。

其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本。

AT89C52有PDIP、PQFP/TQFP及PLCC等三种封装形式,以适应不同产品的需求。

主要功能特性:

兼容MCS51指令系统;8k可反复擦写(>1000次)FlashROM;2个双向I/O口;256x8bit内部RAM;3个16位可编程定时/计数器中断;时钟频率0-24MHz;2个串行中断;可编程UART串行通道;2个外部中断源;共6个中断源;2个读写中断口线;3级加密位;低功耗空闲和掉电模式;软件设置睡眠和唤醒功能。

AT89C52芯片的引脚图如图3.1所示。

图3.1AT89C52单片机引脚图

AT8C52各引脚功能:

P0口:

P0口是一组8位漏极开路型双向I/O口,也即地址/数据总线复用口。

作为输出口用时,每位能吸收电流的方式驱动8个TTL逻辑门电路,对端口P0写“1”时,可作为高阻抗输入端用。

在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据总线复用,在访问期间激活内部上拉电阻。

在Flash编程时,P0口接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。

P1口:

P1是一个带内部上拉电阻的8位双向I/O口,P1的输出缓冲级可驱动4个TTL逻辑门电路。

对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。

作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。

与AT89C51不同之处是,P1.0和P1.1还可分别作为定时/计数器2的外部计数输入(P1.0/T2)和输入(P1.1/T2EX)。

P2口:

P2是一个带有内部上拉电阻的8位双向I/O口,P2的输出缓冲级可驱动4个TTL逻辑门电路。

对端口P2写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。

在访问外部程序存储器或16位地数据存储器时,P2口送出高8位地址数据。

在访问8位地址的外部数据存储器时,P2口输出P2锁存器的内容。

Flash编程或校验时,P2亦接收高位地址和一些控制信号。

P3口:

P3口是一组带有内部上拉电阻的8位双向I/O口。

P3口输出缓冲级可驱动4个TTL逻辑门电路。

对P3口写入“1”时,它们被内部上拉电阻拉高并可作为输入端口。

此时,被外部拉低的P3口将用上拉电阻输出电流(IIL)。

P3口除了作为一般的I/O口线外,更重要的用途是它的第二功能,P3口还接收一些用于Flash闪速存储器编程和程序校验的控制信号。

RST:

复位输入。

当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。

ALE/PROG:

当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。

一般情况下,ALE仍以时钟振荡频率的1/6输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。

要注意的是:

每当访问外部数据存储器时将跳过一个ALE脉冲。

对Flash存储器编程期间,该引脚还用于输入编程脉冲。

PSEN:

程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当AT89C52由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲。

在此期间,当访问外部数据存储器,将跳过两次PSEN信号。

EA/VPP:

外部访问允许。

欲使CPU仅访问外部程序存储器(地址为0000H—FFFFH),EA端必须保持低电平(接地)。

需注意的是:

如果加密位LB1被编程,复位时内部会锁存EA端状态。

如EA端为高电平(接VCC端),CPU则执行内部程序存储器中的指令。

Flash存储器编程时,该引脚加上+12V的编程允许电源VPP,当然这必须是该器件是使用12V编程电压VPP。

XTAL1:

振荡器反相放大器及内部时钟发生器的输入端。

XTAL2:

振荡器反相放大器的输出端。

3.2时钟电路模块

单片机中CPU每执行一条指令,都必须在统一的时钟脉冲的控制下严格按时间节拍进行,而这个时钟脉冲是单片机控制中的时序电路发出的。

CPU执行一条指令的各个微操作所对应时间顺序称为单片机的时序。

单片机芯片内部有一个高增益反相放大器,用于构成震荡器,XTAL1为该放大器的输入端,XTAL2为该放大器输出端,但形成时钟电路还需附加其他电路。

本设计系统采用内部时钟方式,利用单片机内部的高增益反相放大器,外部电路简单,只需要一个晶振和2个电容即可,如图3.2所示。

电路中的器件选择可以通过计算和实验确定,也可以参考一些典型电路的参数,电路中,电容器C1和C2对震荡频率有微调作用,通常的取值范围是30±10pF,在这个系统中选择了22pF;石英晶振选择范围最高可选24MHz,它决定了单片机电路产生的时钟信号震荡频率,在本系统中选择的是12MHz,因而时钟信号的震荡频率为12MHz。

图3.2时钟电路图

3.3复位电路模块

单片机在启动运行时都需要复位,使CPU和系统中的其他部件都处于一个确定的初始状态,并从这个状态开始工作。

单片机有一个复位引脚RST,采用施密特触发输入。

当震荡器起振后,只要该引脚上出现2个机器周期以上的高电平即可确保时器件复位。

复位完成后,如果RST端继续保持高电平,MCS-51就一直处于复位状态,只要RST恢复低电平后,单片机才能进入其他工作状态。

复位电路如图3.3所示。

图3.3复位电路图

由以上单片机模块时钟模块复位模块构成了单片机最小系统,其接线图如下图3.4所示。

图3.4单片机最小系统电路

 

3.4过零检测模块

过零检测电路用于检测电源电压波形的过零点,产生过零脉冲。

220v电源经降压变压器送到过零检测电路,形成与电压过零点同步的负脉冲同步信号,送到单片机的中断输入端INT0,用于触发可控硅进行同步移项。

采集过零信号用到光藕元件。

光耦元件全称光电耦合器,是将发光元件和光传感器结合在一起的元件,由于利用自身产生的光亮,和外界独立绝缘,具有光电隔离的作用,起到保护电路不被干扰的作用,主要运用在双向可控硅的控制、音乐设备、电子乐器等方面,但要受环境温度的影响,所以不宜在温度过高的地方使用。

本次设计用到光藕P52l。

P521是TLP521的简称,下图3.5(a)是其引脚图。

由于Protuse中无TLP521元件,我们用OPTOCOUPLER-NPN代替仿真下图3.1(b)。

(a)(b)

图3.5光耦元件

TLP521简介:

TLP521是可控制的光电藕合器件,光电耦合器广泛作用在电脑终端机,可控硅系统设备,测量仪器,影印机,自动售票,家用电器,如风扇,加热器等 

电路之间的信号传输,使之前端与负载完全隔离,目的在于增加安全性,减小电路干扰,减化电路设计。

集电极-发射极电压:

 55V(最小值) 

经常转移的比例:

 50 %(最小)  

隔离电压:

 2500 Vrms (最小)

OPTOCOUPLER-NPN接口说明:

1,2端口接经降压变压器变压后的电源,4端口接地,5端口经上拉电阻接Vcc。

当1端口电压大于2端口时,6端口为高电平,NPN导通,5端口为低电平。

具体接线如图3.6。

图3.6过零信号采集电路

3.5晶闸管触发模块

经按键设置好的导通角,送到单片机其内部运算实际上是将过零脉冲信号进行了延时处理,延时长度由导通角决定,实际仿真中按此连接方法只能控制半个周期。

其连接图如下图3.8所示。

图3.7晶闸管触发电路

交流电源、过零信号(同步信号)、触发信号各个信号间的关系如下图3.9所示。

双向晶闸管在接收到触发信号时导通,对于用电器(灯泡)来说,它接收到的电信号是下图交流电源阴影部分,已达到控制电压输出有效值进而控制灯泡亮度的目的。

图3.8各信号间的关系

 

4软件设计

4.1设计原理及工具

要控制的对象是50Hz的正弦交流电,通过光耦取出其过零点的信号(同步信号),将这个信号送至单片机的外中断,单片机每接收到这个同步信号后启动一个延时程序,延时的具体时间由按键来改变。

当延时结束时,单片机产生触发信号,通过它让可控硅导通,电流经过可控硅流过白炽灯,使灯发光。

延时越长,导通时间就越短,灯的亮度越暗(并不会有闪烁的感觉,因为重复的频率为100Hz,且人的视觉有暂留效应)。

由于延时的长短是由按键决定的,所以实际上就是按键控制了光的强弱。

理论上讲,延时时间应该可以是0~10ms内的任意值。

在程序中,将一个周期均分成N等份,每次按键只需要去改变其等份数,在这里,N越大越好,但由于受到单片机本身的限制和基于实际必要性的考虑,只需要分成大约100份左右即可,实际采用的值是95。

可控硅的触发脉冲宽度要根据具体的光耦结合示波器观察而定,在本设计中取20μs。

程序中使用T1来控制这个时间。

对两个调光按键的处理有两种方式:

一种是每次按键,无论时间的长短,都只调整一个台阶(亮或暗);另一种是随按键时间的不同,调整方法不同:

短按只调整一个台阶,长按可以连续调整。

如前面所述,由于本设计中的台阶数95(N=95),如果使用前一种方式,操作太麻烦,所以用后者较为合理。

4.2主程序流程

主程序反应了系统主要运行步骤,首先系统初始化,判断主开关是导通还是断开,入关按键按下,表示系统继续向下运行,然后判断是加键按下还是减键按下,加键按下系统继续运行,灯光调亮,按键按下,调用延时子程序,延时时间到时,系统运行,若减键按下,调用延时子程序,灯光变暗。

系统主要就是对按键延时的控制,通过对按键的延时时间来控制可控硅的通断,从而控制灯泡的亮度,系统还要检测过零点的脉冲信号,过零检测模块将检测信号输入给单片机,单片机在通过这个信号去控制可控硅,同时控制显示模块显示。

其主程序如下框图4.1所示。

 

否否

是是

图4.1主程序框图

 

5系统调试

5.1硬件调试

单片机应用系统的硬件和软件调试是交叉进行的,但通常是先排除电路板中明显的硬件故障,如电源故障,电路板导通情况,综合进行调试。

常见的硬件故障:

电路板中硬件的逻辑错误,这种情况是由于设计错误和加工过程中的工艺性能所造成的。

这类错误有顺序不匹配、错误、开路、相位接错。

实物的实际效果与仿真不同,原因有两个方面,一是器件本身本身损坏和性能差,如器件型号选择不当、电器性能达不到要求。

二十由于组装安装错误造成的元件错误,如电容、二极管、三极管的极性安装错误。

调试方法:

第一,在电路板通电之前,首先用万用表等工具,根据硬件电器原理图和装配图仔细检查线路的正确性。

第二,加电后检查各插件上引脚的电位,仔细测量个点电位是否很正常,尤其是注意单片机插座上的各点电位,若有高压,联机时会烧坏器件。

第三,在不加电的情况下,除单片机以外,插上所有的元器件,最后联机调试。

5.2软件调试

先用编辑程序把编制的源程序按照一定的书写格式送到计算机中,编辑程序会根据使用人员的意图对源程序进行增、删或修改。

然后把送入的源程序翻译成机器语言,即用编译程序对源程序进行语法检查并将符合语法规则的源程序语句翻译成计算机能识别的“语言”。

如果经编译程序检查,发现有语法错误,那就必须用编辑程序来修改源程序中的语法错误,然后再编译,直至没有语法错误为止。

程序运行没有错误后,将其导入单片机,检查其是否符合要求的功能,检查后符合该功能。

5.3电路仿真

过零信号如图5.1所示,频率为100Hz的脉冲信号,说明采集到了220V电压的过零点。

图5.1过零信号

触发脉冲如图5.2所示,此信号滞后过零信号一段时间,说明单片机内部程序成功地发出触发信号。

图5.2触发脉冲

灯泡波形如图5.3所示,由于在设计时双向晶闸管没有找到最好的连接方式,导致只能控制半个周期,但也能起到调节灯光的目的。

图5.3灯泡波形

 

6系统功能、指标参数

6.1系统功能

1、通过单片机控制晶闸管的触发信号,从而实现晶闸管的触发;

2、通过七段数码管显示触发角大小;

3、通过键盘操作调节晶闸管导通触发角,并控制显示的开关;

4、拥有复位功能。

6.2参数测试

将自己所设计的调光系统接入电路,并用交流电压表来测量最终输出的电压有效值,将测得的数据和设置的角度进行对比。

表6.1为对比值。

表6.1导通角测试表

导通角(近似值)

电压有效值/V

灯光亮度

220.09

最亮

30°

205.26

稍亮

60°

165.46

微亮

90°

109.97

最暗

6.3系统功能及指标参数分析

上述参数和实验效果可知,晶闸管起到控制电压输出的作用,能控制灯光亮度。

但是在实际设计中,由于晶闸管没有找到最合适的连接方法,导致只能控制电压波形的半个周期,加入四位七段显示器更加大了设计难度。

所以我们舍去了显示模块,并且通过控制半个周期的电压输出来调节灯光亮度,基本能实现设计的目标。

 

7结论

经过一段时间的努力,基于AT89S52单片机可控硅调光系统的设计已经完成。

经试验验证,满足设计要求。

通过制作该调光控制器,我掌握了单片机、光藕和晶闸管等方面的知识和使用技能,特别是晶闸管和光耦,平时大家都较少接触。

本次设计主要涉及了单片机原理及接口技术的相关知识和编程语言的诸多要领。

设计中涉及的许多问题,更是对以前所学的知识的回顾及在过去的两年中学到知识的系统总结,这次设计对我们来说有一定难度,但是对我们将来的工作有很大的帮助。

在设计中,我积极查阅资料,细心钻研各个细节,完成了单片机调光系统的开发与调试,也让我们明白了在设计中考虑问题应该全面。

在设计中既锻炼了我的动手能力,又学会查阅资料,提炼需要的信息。

毕业设计任务是很重要的,从理清设计思路和着手做设计都离不开导师的指导。

在设计过程中我们的指导老师王光宇老师给了我们很大的帮助,对设计中出现的问题及时了讲解和耐心的指导,使我的设计得以完成,在此,特向我的指导老师王光宇老师表示真诚感谢;同时,很多同学也给我提供了很多帮助,也向帮助我的同学表示感谢。

 

8总结与体会

本次课程设计让我温习了单片机的基本原理、功能以及构造,以及晶闸管的基本工作原理,学会了使用Proteus、KEIL这两个软件的基本使用方法,利用C语言进行编程实现所需要的功能,同时在Proteus软件上画电路图并进行仿真,通过硬件的制作提高了动手能力和分析问题的能力。

软件部分的编程,主要是通过看芯片的基本资料进行编写的,所以我意识到了当你需要某个东西时,一定要去了解它,弄清楚其工作原理、实现方案以及需要注意的地方,特别是像一些芯片工作的时序图,这是编程之前必须去了解的。

 

对于硬件部分,我收获颇多。

首先,让我对单片机的最小系统有了深刻的理解,特别是通过串口通信将程序下载到单片机中,明白了将程序下载到单片机的方法和原理。

其次,对一些基本电路检测问题,能够做到独立解决,像我在实验过程中遇到了各种不同的问题,其实是对自己能力的体现,其实问题多还更加好,那样你可以更加发现自己的不足之处,这样才能够提高。

最后,此次设计提高了我的焊接技术,比起以前的课程设计焊的电路图,真的发现自己提高了很多,比如在布局上更加地合理、简洁、美观。

 我很早就把电路给焊好了,可是后面的调试花了比较长的时间,在此我领悟到遇到问题时不要心燥、心烦,而是要静下心来认真分析问题之所在,想出各种有效的解决方法,这样才会很好的解决问题,同时提高自己独立思考的能力。

过这次设计,我学到了许多课外的东西,加深了对单片机等知识的了解,提高了应用思考和设计能力。

在分析设计课题,查阅资料,了解设计原理并进行仿真的过程中尽管遇到了些许问题,但在老师的指导下,最终独立地完成了任务,不仅锻炼了分析解决问题的能力,更重要的是加强了我对电子应用学习的兴趣。

在设计的过程中老师给予一定的启发和指导,并叮嘱我们独立认真完成本次课程设计,在此表示衷心的感谢。

 

9参考文献

[1]胡汉才.单片机原理及接口技术[M].北京:

清华大学出版社,1996.

[2]胡健.单片机原理及接口技术[M].北京:

机械工业出版社,2004.

[3]胡健.单片机实用教程[M].北京:

兵器工业出版社,2001.

[4]周行慈.单片机应用程序设计基础[M].北京:

北京航空航天大学出版社,1991.

[5]李广弟.单片机基础[M].修订本,北京:

北京航空航天大学出版社,2001.

[6]李朝青.单片机原理及接口技术[M],简明修订版.北京:

北京航空航天大学出版社,1999.

[7]李叶紫.MCS-51单片机应用教程[M].北京:

清华大学出版社,2004.

[8]朱定华.单片机原理及接口技术[M].北京:

电子工业出版社,2001.

[9]AT89S52芯片资料(译文),Atmel公司.

 

10附录

附录1:

元件清单

表10.1元件清单

序号

名称

型号

数量

1

变压器

220v/12v/8w-12W

1

2

光耦

MOC3022

2

3

光耦

TLP521-1

2

4

双向晶闸管

T435-400

2

5

白炽灯及灯座

220v/25W

1

6

2输入与非门

74LS00

2

7

4位显示管

共阳

1

8

电容

10uf

2

9

电容

22pf

4

10

电阻

5.1k

4

11

电阻

10k

4

12

电阻

1k

4

13

电阻

0.22k

4

14

细导线

若干

15

导线

220V

若干

 

附录2:

程序清单

#include

typedefunsignedcharunchar;

//voidint0(void);//同步信号

sbitsw=P1^0;//开关

sbitkeyjia=P1^1;//亮++

sbitkeyjian=P1^2;//暗--

sbitsignal=P2^0;//可控硅信号

uncharliangdu=30;//调光等级计数

sbitled=P1^7;

bitflag1=1;

bitflag2=1;

intcount=0;

intflag=0;

voiddelaykt(void)//导通延时

{

unchara;

for(a=2;a>0;a--);

}

voiddelay(intz)//可调延时

{

unsignedx,y;

for(x=z;x>0;x--)

for(y=110;y>0;y--);

}

voidkeyscan()//键盘判断

{

if(sw==0)

{

delaykt();

if(sw==0)signal=0;while(!

sw);

}

if(keyjia==0)//加键判断

{

delaykt();

if(keyjia==0)

{

if(flag1==1)

{

flag1=0;

liangdu++;

if(liangdu==95)

liangdu=30;

}

}

}

elseif(keyjia!

=0)

{

delaykt();

if(keyjia!

=0)

flag1=1;

}

if(keyjian==0)//减键判断

{

delaykt();

if(keyjian==0)

{

if(flag2==1)

{

flag2=0;

liangdu=60;

if(liangdu==30)

liangdu=95;

}

}

}

elseif(keyjian!

=0)

{

delaykt();

if(keyjian!

=0)

flag2=1;

}

}

voidtimepd()//同步标志判断与定时器设置

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1