
1
调光控制器设计在日常生活中,我们常常需要对灯光的亮度进行调节。本调光控制器通过单片机控制双向
可控硅的导通来实现白炽灯(纯阻负载)亮度的调整。双向可控硅的特点是导通后即使触发
信号去掉,它仍将保持导通;当负载电流为零(交流电压过零点)时,它会自动关断。所以需要在交流电的每个半波期间都要送出触发信号,触发信号的送出时间就决定了灯泡的亮度。调光的实现方式就是在过零点后一段时间才触发双向可控硅开关导通,这段时间越长,可控硅导通的时间越短,灯的亮度就越低;反之,灯就越亮。这就要求要提取出交流电压的过零点,并以此为基础,确定触发信号的送出时间,达到调光的目的。1.1 硬件部分本调光控制器的框图如下:控制部分:为了便于灵活设计,选择可多次写入的可编程器件,这里选用的是ATMEL的AT89C51单片机。驱动部分:由于要驱动的是交流,所以可以用继电器或光耦+可控硅(晶闸管SCR)来驱动。继电器由于是机械动作,响应速度慢,不能满足其需要。可控硅在电路中能够实现交流电的无触点控制,以小电流控制大电流,并且不象继电器那样控制时有火花产生,而且动作快、寿命长、可靠性高。所以这里选用的是可控硅。负载部分:本电路只能控制白炽灯(纯阻负载)的亮度。1.2 软件部分要控制的对象是50Hz的正弦交流电,通过光耦取出其过零点的信号(同步信号),将这个信号送至单片机的外中断,单片机每接收到这个同步信号后启动一个延时程序,延时的具体时间由按键来改变。当延时结束时,单片机产生触发信号,通过它让可控硅导通,电流经过可控硅流过白炽灯,使灯发光。延时越长,亮的时间就越短,灯的亮度越暗(并不会有闪烁的感觉,因为重复的频率为100Hz,且人的视觉有暂留效应)。由于延时的长短是由按键决定的,所以实际上就是按键控制了光的强弱。理论上讲,延时时间应该可以是0~10ms内的任意值。在程序中,将一个周期均分成N等份,每次按键只需要去改变其等份数,在这里,N越大越好,但由于受到单片机本身的限制和基于实际必要性的考虑,只需要分成大约100份左右即可,实际采用的值是95。可控硅的触发脉冲宽度要根据具体的光耦结合示波器观察而定,在本设计中取20 μs。程序中使用T1来控制这个时间。对两个调光按键的处理有两种方式:一种是每次按键,无论时间的长短,都只调整一个台阶(亮或暗);另一种是随按键时间的不同,调整方法不同:短按只调整一个台阶,长按可以连续调整。如前面所述,由于本设计中的台阶数为95(N=95),如果使用前一种方式, *** 作太麻烦,所以用后者较为合理。2 各单元电路及说明2.1 交流电压过零点信号提取交流电压过零点信号提取电路如图2所示,图中的同步信号就是我们需要的交流电压过零点信号。各部分波形如图3所示。图中整流后波形中的水平虚线表示光藕P52l输入二极管的门限电压。P521是TLP521的简称,下图是其引脚图。引脚图中器件名的后缀“-1”表示包含一组光藕。2. 2 主控单元主控单元以AT89C51单片机为核心,交流电压过零点信号提取电路中产生的同步信号SYN接到AT89C5l的INT0,此信号的下降沿将使AT89-C51产生中断,以此为延时时间的起点。三个按键只用于控制一路灯:一个为开关,另外两个分别为提高亮度和降低亮度。74HC573用于输出控制可控硅的导通的触发信号。220V交流主电源导通区间、同步信号和触发信号的时序关系如图6所示。图中的阴影部分表示可控硅的导通区间,它的大小决定了灯的亮度。改变延时时间可改变触发信号和同步信号的相位关系,也改变了可控硅的导通区间的大小,达到调光的目的。 2.3 驱动单元图中,L1_D是单片机输出的触发信号,该信号通过光控可控硅MOC3022去驱动可控硅T435。受控的白炽灯接在Ll和零线(图中未画出)之间。MOC3022是DIP-6封装的光控可控硅。其1、2脚分别为二极管的正、负极:4、6脚为输出回路的两端;3、5脚不用连接。如图8所示。T435-400是可控硅,“4”表示主回路电流是4A;“35”表示触发端的最大电流是35mA,一般该端有最大电流的5%就可保证可靠地触发。T435-400外型图如图9所示。3 程序流程图4 结束语本控制器使用了三个开关控制一路灯,主要是为了在教学过程中降低难度。也可改为一个开关控制一路灯,比如短按为开、关,第一次长按为降低亮度,真正的并发执行是不可能的,除非你用多核处理器
程序并发执行其实是 *** 作系统的功劳,包括你的电脑能够同时执行多个任务,靠的就是XP
并发执行只是宏观上看起来是的,实际上CPU内部还是每一个周期执行一条指令。 *** 作系统都有一个系统时钟,对于51来说,这个周期可以选择20ms左右,当然也可以是别的值,视你的任务而定。首先,系统建立多个任务,每个系统周期到来的时刻,都触发一次任务间切换,CPU保存当前任务信息而转去执行另一个任务;也可以在系统周期还没到的时候,由当前执行的任务主动触发一次任务切换;任务之间能够进行通信,比如某个任务要等到另外一个任务发个信息之后才执行,那么这个任务在执行之前,CPU可以执行别的任务(如果没有 *** 作系统的话,一般做法就是CPU不停检测某个标志,这时CPU实际上是在空转!!!)
*** 作系统的核心功能就是调度任务,使CPU利用率达到最高,比如我们的很多程序里面都有延时,这种延时基本上是软件延时,CPU就在那里干耗着, *** 作系统里面也有延时程序,只不过这个延时是用定时器实现的,在A任务延时的时候CPU能够去执行B任务,系统在每次系统周期来到的时候检测任务A延时时间是否达到,如果到了就转去执行任务A,可以看出如果系统周期是20ms,那么任务延时设置成20msk肯定不能只能真正延时20ms
建议你看看RTX51-tiny 实时 *** 作系统,一个为51量身定做的 *** 作系统,非常适合51单片机,百度文库里面有中文使用说明
写单片机P0循环点亮八盏灯的程序并不复杂,只需要实现一个循环点亮的过程,就可以实现了。
一、硬件接线
首先,电路接线是最重要的环节,需要将外部组件与单片机核心引脚相连接,如接线正确,接地和电源,以及led灯和信号脚之间的接法、灯丝与中断脚的线路等,全部调整正确才能正常工作。
二、编程 *** 作
接着,编写程序,设置数字输出端口,将接线好的八盏灯分别设定为1-8口,编写时序程序,循环点亮8个信号脚和led灯,进行点亮和关灯,完成点亮循环工作。
三、调试程序
最后,就可以进行程序调试,将调试好的程序导入单片机,上电启动,查看8个信号脚的点亮情况,运行效果达到预期,即可完成点亮循环程序的编写。
以上是我关于单片机P0循环点亮八盏灯的程序编写步骤,希望能够帮助您更好地理解并完成编写程序,把您的设计想法实现出来!
评论列表(0条)