目 录
0 前言 ..................................................................... 1 1 总体方案设计 ............................................................. 1 2 硬件电路设计 ............................................................. 2
2.1单片机系统 ........................................................... 2
2.1.1 晶振时钟电路 ................................................... 2
2.1.2 复位电路 ....................................................... 3 2.2电流驱动系统 ......................................................... 3 2.3发光二极管演示系统 ................................................... 5 2.4键盘系统 ......................................................... 5 3 软件设计 ................................................................. 6
3.1软件执行过程 ......................................................... 6 3.2子程序模块 ........................................................... 6 4 调试分析 ................................................................. 8 5 结论及进一步设想 ......................................................... 9 参考文献 .................................................................... 9 课设体会 ................................................................... 10 附录1 电路原理图 ......................................................... 11 附录2 程序清单 ........................................................... 12
沈阳航空航天大学课程设计论文 基于单片机的继电器控制系统
基于单片机的继电器控制系统设计
胡启洋 沈阳航空航天大学自动化学院
摘要:本文设计了一种基于单片机的继电器控制系统,由单片机、继电器、驱动电路、发光二极管、键盘等部分组成,主要使用了单片机开发板上STC公司生产的C54RD+型号单片机及其最小系统、ULN2003A达林顿管驱动芯片、JQC-3F-05VDC-1ZS型号继电器、四个发光二极管,运用定时器精准定时对继电器开关进行控制,并在继电器输出端使用发光二极管显示。在以上基础上,实现了8路继电器的循环控制功能。 关键词:单片机;继电器;驱动电路。
0 前言
继电器是当输入量(如电压、电流、温度等)达到规定值时,使被控制的输出电路导通或断开的电器。它可分为电气量(如电流、电压、频率、功率等)继电器及非电气量(如温度、压力、速度等)继电器两大类。继电器具有动作快、工作稳定、使用寿命长、体积小等优点。广泛应用于电力保护、自动化、运动、遥控、测量和通信等装置中。
继电器是一种电子控制器件,它具有控制系统(又称输入回路)和被控制系统(又称输出回路),通常应用于自动控制电路中,它实际上是用较小的电流去控制较大电流的一种“自动开关”。故在电路中起着自动调节、安全保护、转换电路等。
电磁继电器一般由铁芯、线圈、衔铁、触点簧片等组成的。只要在线圈两端加上一定的电压,线圈中就会流过一定的电流,从而产生电磁效应,衔铁就会在电磁力吸合的作用下克服返回弹簧的拉力吸向铁芯,从而带动衔铁的动触点与静触点(常开触点)吸合。当线圈断电后,电磁的吸力也随之消失,衔铁就会在弹簧的反作用下返回原来的位置,使动触点与原来的静触点(常闭触点)吸合。这样吸合、释放,可以这样来区分:继电器线圈为通电时处于断开状态的静触点,成为“常开触点”;处于接通状态的静触点称为“常闭触点”。
1 总体方案设计
针对本课题的设计任务,进行分析得到:本次设计通过单片机I/O口输出高低电平控制继电器的输入端,采用ULN2003A型号的达林顿管驱动芯片加大输入电流,使用内部定时器中断进行精准计时,实现继电器通断时间分别为1秒、2秒的精准控制,并实现通过继电器进行八路发光二级管循环1秒的控制。
该继电器控制系统的设计,在总体上大致可分为以下几个部分组成:1.单片机及其最小系统电路,为了使单片机正常工作,需要加入晶振电路,为了使单片机方便使用,需要
第1页
沈阳航空航天大学课程设计论文 基于单片机的继电器控制系统
加入复位电路。2.继电器驱动电路部分。由于单片机输出的电流不足以使电磁继电器的线圈产生足够大的磁力,无法使衔铁与触点簧片吸合,就不能使继电器正常工作。为了使继电器正常工作,需要加入放大电流的驱动电路。该设计考虑了两种不同的驱动方案:(1)使用ULN2003A达林顿管驱动芯片进行驱动,此方案简单易用,只需一个芯片便可驱动7路继电器;(2)采用PNP型三极管放大电路,该方案目的明确,易于理解。3.定时器计时部分。该设计中采用了定时器1的工作方式1,装入的初值是(65535-50000),在计满50000个数之后,TF1置为1,产生中断,当使用晶振频率为12MHz时,定时器刚好每50ms产生一次中断,这个时间的20倍恰好是1秒中,这样便可实现1秒与2秒的精准控制。
精准定时 单 片 机 驱动电路 图1 系统原理框图
继 电 器 控 制 发光二级管的演示 定时器 输出电路 整个电路的工作原理是单片机首先定义定时器1的工作方式为1,使用晶振频率12MHz,装入初值(65535-50000),这样当开启定时器1时每50ms产生一次中断,累计20次便为1秒,1秒累计2次便为2秒,通过设置标志位flag的状态,区别继电器的通2秒与断1秒。设置P2口为输出口,将P2口连接在ULN2003A的输入端,ULN2003的电源端接+5V电源,地端接地,输出直接接在继电器的一个输入端,继电器的另一个输入端接地。这样便可通过控制P2口的高低电平,来控制继电器的通断。
2 硬件电路设计
2.1 单片机系统 2.1.1 晶振时钟电路
晶振是单片机正常工作的必要器件,他提供时钟周期,执行程序代码。它的连接方式 是XTAL1和XTAL2端分别接晶振的两端,再接两个小电容后接地,如图1所示。单片机工作时,是一条一条地从ROM中取指令,然后一步一步地执行。单片机访问一次存储器的时间,称之为一个机器周期,这是一个时间基准。一个机器周期包括12个时钟周期。为了实现精准定时,本设计中采用的晶振为12MHz,它的时钟周期是1/12us,它的一个机器周期是12×(1/12)us,也就是1us。
第2页
沈阳航空航天大学课程设计论文 基于单片机的继电器控制系统
图2 单片机系统电路
2.1.2 复位电路
单片机在启动时都需要复位,以使CPU及系统各部件处于确定的初始状态,并从初态开始工作。系列单片机的复位信号是从RST引脚输入到芯片内的施密特触发器中的。当系统处于正常工作状态时,且振荡器稳定后,如果RST引脚上有一个高电平并维持2个机器周期(24个振荡周期)以上,则CPU就可以响应并将系统复位。单片机系统的复位方式有:手动按钮复位和上电复位,此设计中采用手动按钮复位,需要人为在复位输入端RST上加入高电平,如图1所示。一般采用的办法是在RST端和正电源Vcc之间接一个按钮。当人为按下按钮时,则Vcc的+5V电平就会直接加到RST端。手动按钮复位的电路如所示。由于人的动作再快也会使按钮保持接通达数十毫秒,所以,完全能够满足复位的时间要求。
2.2 电流驱动系统
本设计采用了两种不同的驱动方案:
(1)方案一是直接采用达林顿管驱动芯片ULN2003A。共7路输入和7路输出,每一路都相当于一个反相器,当输入为高电平时输出为低电平,相反,当输入为低电平时输出为高电平,每个反相器的内部结构为由两个三极管组合而成的达林顿管放大电路,该电路可以放大电流,提供给继电器足够大的电流以使其正常工作。除了7个输入和7个输出外,还有两个引脚在使用时分别接地和5V电源即可。如图4所示当单片机输出高电平1时,经过ULN2003A后变为低电平0这样在继电器的线圈两端就产生了电位差,产生较大电流,从而产生足够的磁场,吸引继电器的衔铁与静触点1吸合,相反,则与静触点2
第3页
沈阳航空航天大学课程设计论文 基于单片机的继电器控制系统
吸合。 图3 ULN2003A芯片内部结构
图4 单片机通过ULN2003A驱动继电器
(2)方案二是采用PNP型三极管放大电路,如图5所示,线圈两端的电流由三极管来提供,当单片机控制端给三极管的B极送低电平时,三极管导通,继电器线圈有电流通过,继电器吸合;相反,当单片机控制端给三极管的B极送高电平时,三极管截止,继电器线圈无电流通过,继电器断开。在继电器两端接一个二极管是非常重要的,必须连接,因为,线圈通电正常工作时,二极管对电路不起作用。当继电器线圈在断电的一瞬间会产生一个很强的反向电动势,在继电器线圈两端反响并联二极管就是用来消耗这个反向电动势的,如果不加这个反向二极管,反向电动势会直接作用在驱动三极管上,很容易将三极管烧坏。
第4页
沈阳航空航天大学课程设计论文 基于单片机的继电器控制系统
图5 单片机通过PNP型三极管驱动继电器
2.3 发光二极管演示系统
该设计中在继电器的输出端相当于一个单刀双掷开关,如图6所示,将动触点接地,将左静触点的连一个发光二极管后与电源相连。若动触点与左侧的静触点相连,就会使发光二极管点亮。在程序一中则以1秒亮与2秒灭交替进行在程序二中8路发光二级管左循环点亮。
图6 发光二极管演示电路
2.4 键盘系统
该设计由两个程序组成,其一是使继电器通电1秒断开2秒循环,在程序开始时使按
下键盘的第一个按键即可;其二是使八路继电器以一秒的间隔左移循环,在程序开始时按下第二个按键即可。
第5页
沈阳航空航天大学课程设计论文 基于单片机的继电器控制系统
图7 键盘电路
3 软件设计
根据设计方案,本设计使用了编程软件Keil uVision3,使用C语言进行编程,使用protues 7 professional进行了仿真,并且使用了单片机开发板实现了程序,实现了最终目的。
3.1 软件执行过程
本课题的软件设计采用了模块化设计的思想。主程序流程如图8所示,在流程图中,K1、K2分别表示键盘的第一、第二个按键,程序开始运行时,先初始化数据,定义定时器的工作方式,装入定时器初值,打开定时器中断允许开关,打开总中断开关。进入键盘扫描程序,若按下K1键,则进入程序1,开启定时器后进入while(1)的死循环等待定时器中断产生,每50毫秒产生一次中断,20次中断后时间到达1秒,继电器连通1秒后断开,再通过定时器计时2秒后,重新接通,如此往复循环;若按下K2键,则进入程序2,给P2口给0xfe,使得只有P2.0口控制的继电器处于接通状态,开启定时器后进入while(1)的死循环等待定时器中断产生,每隔一秒8个继电器的状态左移一位,如此循环往复。 3.2 子程序模块
在整个程序中,共包含了主程序、定时器1中断程序、键盘扫描程序。主函数先定义定时器1的工作方式并装入初值,此处选用工作方式1,装入的初值是15536。这里先解释一下装初值的问题,定时器一旦启动它便在原来的数值上加1计数,若在程序开始时没有设置TH1和TL1,他们的默认值就都是0,时钟频率为12MHz,12个时钟周期为一个机器周期,那么此时机器就是1us,计满TH1和TL1就需要216-1个数,
第6页
沈阳航空航天大学课程设计论文 基于单片机的继电器控制系统
8路继电器通断 左移循环 图8 程序流程图
定时器开启,等待中断产生 NN K2按下? Y 继电器以1秒通、 2秒断循环 定时器开启,等待 中断产生 Y K1按下? 按键扫描 定时器装初值 开始 再来一个脉冲计数器溢出,随即向CPU申请中断。因此溢出一次共需要65536us,则我们要定时50ms的话,就需要给TH1和TL1装初值,在这个初值的基础上计50000个数后,定时器溢出,此时就是刚好50ms一次中断,TH1和TL1中要装入的总数为65536-50000=15536,把15536对256求模:15536\\256=60装入TH1中,把15536对256求余:15536%256=176装入TL1中。则当定时器工作在方式1,设机器周期为T,定时器产生一次中断的时间为t,那么需要计数的个数N=t/T,则装入THX和TLX中的数就分别为:
THX=(65536-N)/256 (1)
TLX=(65536-N)%256 (2)
在打开了中断总开关和定时器1的开关后,累计20次中断就成为1秒,这样就形成了1秒的精准定时。在键盘扫描程序中,使用了2个if语句,分别表示检测K1键和K2键是否按下,通过给定义的pro赋不同的值来控制定时器中断子程序执行的语句,当pro
第7页
沈阳航空航天大学课程设计论文 基于单片机的继电器控制系统
为0时,以flag为标志,区别是接通1秒还是断开2秒,用if语句判断,若flag为0,为接通1秒,若flag为1,为断开2秒;当pro为1时,同样通过if语句实现其功能,先给输出P2赋值0xfe,1秒后按位左移1位,并将移动后的数与0x01作或运算,刚好得到0xfd,以后的每次运算都作这种处理,便可实现循环左移的功能,当循环8次后,经或运算的结果为0xff,并将永久保持下去,故需要重新给P2赋值0xfe,这样才保证了永久的循环。
4 调试分析
图9 继电器接通1秒仿真结果
图7 数码管分别显示8组存储的数据
图10 继电器断开2秒仿真结果
第8页
沈阳航空航天大学课程设计论文 基于单片机的继电器控制系统
图11 8路继电器1秒左移循环控制仿真结果
程序的执行结果分别如图9、图10和图11所示。图9和图10是继电器接通1秒断开2秒的仿真结果,图11是8路继电器间隔1秒左移循环控制的仿真结果。需要注意的是,上示结果是比较理想化的仿真结果,并非实物所达到的要求,在实物中,大多数通过单片机这种小信号输出控制的继电器通常需要加入驱动电路来实现。这本次课设中,我除了使用了仿真,还使用了单片机开发板上得实物,开发板上是以ULN2003A的驱动芯片直接驱动的,如果没有这个驱动芯片,就没有足够大的电流,是无法让继电器正常工作的。
5 结论及进一步设想
根据实验结果,本设计完成了设计要求,即利用定时器精准计时,利用键盘进行控制,实现了继电器的1秒通、2秒断的循环控制和8路继电器循环左移控制的要求。但在演示部分只是采用了发光二极管同样是弱电的输出系统,虽熟练了其用法,但是还未涉及其真正的价值,尝试控制强电装置,以及运用于电力保护、自动化、运动、遥控、测量和通信等继电器广泛涉及的领域,会是我的下一个目标。
参考文献
[1] 刘复华.单片机及其应用系统.北京:清华大学出版社,1992,08 [2] 郭天祥.新概念51单片机C语言教程.北京.电子工业出版社.2009,12
[3] 戴佳,戴卫恒.51单片机C语言应用程序设计实例精讲. 北京.电子工业出版
社.2006,04
[4] 孙传友.测控系统原理与设计.北京:北京航空航天大学出版社,2002,08
第9页
沈阳航空航天大学课程设计论文 基于单片机的继电器控制系统
课设体会
通过本次智专业综合课程设计,我对单片机的认识和操作程度又有了一个提升,尤其是对单片机的定时器的使用已经比较熟练,对程序语言的逻辑运用也有了质的飞跃。硬件方面,我掌握了继电器的原理和使用方法,并对其应用领域有了深刻地认识,对继电器的驱动电路也有了深刻地体会,无论是三极管的驱动还是ULN2003A芯片的驱动我都掌握了其原理。对关键的软件如Keil uvision3和Proteus7的使用也更加熟练,对单片机时钟的意义有了明确的认识,并且有了精简程序的意识。
这次课程设计还培养了我自主的能力,软件的编写和硬件的连接的整个过程都是先经过基础知识的学习,再通过认真地思考,仔细地分析后做出来的。这期间我的意志得到了磨练,知识得到了巩固,动手能力得到了锻炼,有不少的收获。
当然本次课程设计离不开指导教师对我的悉心指导,在课设期间我遇到了很多困难,在老师的指点下我才解决了这些关键的问题。在此真心地感谢老师对我的帮助。也感谢这次课程设计给我学习知识和亲手制作的机会让我深刻地认识到单片机在日常生活中的重要性。
[2012年1月 13日完成]
第10页
沈阳航空航天大学课程设计论文 基于单片机的继电器控制系统 5vU1XTAL1321VCCDQGND27.0DS18B20LM3228P0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD73938373635343332U6XTAL2LCD1RST21P2.0/A822P2.1/A923P2.2/A1024P2.3/A1125P2.4/A1226P2.5/A13U227P2.6/A1428P2.7/A15PSENALEEARDU2VSSVDDVOC/DRDWRD0D1D2D3D4D5D6D7CERSTVEEMD2FS1HALTRDP1.0/T2P1.1/T2EXP1.2P1.3P1.4P1.5P1.6P1.710P3.0/RXD11P3.1/TXD12NAND_2P3.2/INT013P3.3/INT114P3.4/T0U715P3.5/T116P3.6/WR17P3.7/RD附录1 电路原理图 WR12345671011121314151617181920NAND_2WRU4:B5U7ADCSA0A1NAND_2VCC46ATC51NAND_274LS00ADCSRSTRST8279RL3RL38RL1RA4RA4RA49RL2OUTB1OUTB2OUTB3OUTB4OUTA1OUTA2OUTA3OUTA4*0IRQCSRDWRA0123ABCY0Y1Y2Y3Y4Y5Y6Y75E1E2E374LS138ASL0SL1SL2RL3RL2RL1RL07RL08RA4RL19RA4RL2ARA4RA45RA4RA46U315141312111097B*14RB05RA46RA4BRA4RA42RA4+5V3RA4CLKRESETC1*2RA42RA43RA4CRA4RA4FRA4EBUZ1RA4D0*3RA4FRA4ERA4DRA4RA4BUZZERQ22N3906
第11页
沈阳航空航天大学课程设计论文 基于单片机的继电器控制系统
附录2 程序清单
#include uchar t,second,flag,pro,count; void keyscan() { } void main() { 第12页 while(1) { } if(keyone==0) { } if(keytwo==0) { } pro=1; P2=0xfe; break; pro=0; while(!keyone) ; break; 沈阳航空航天大学课程设计论文 基于单片机的继电器控制系统 } P1=0xff; t=0; second=0; flag=0; count=0; TMOD=0x10; TH1=(65536-50000)/256; TL1=(65536-50000)%256; EA=1; ET1=1; keyscan(); TR1=1; while(1); void T1_time() interrupt 3 { TH1=(65536-50000)/256; TL1=(65536-50000)%256; t++; if(t==20) { t=0; second++; count++; if(second==1&&flag==0&&pro==0) { } 第13页 second=0; P2=0xff; flag=1; 沈阳航空航天大学课程设计论文 基于单片机的继电器控制系统 if(second==2&&flag==1&&pro==0) { } if(second==1&&pro==1) { } if(count==8&&pro==1) { } count=0; P2=0xfe; second=0; P2<<=1; P2=P2|0x01; second=0; P2=0x00; flag=0; } } 第14页
因篇幅问题不能全部显示,请点此查看更多更全内容