51系列单片机在矩阵灯光控制器中的应用
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
51系列单片机在矩阵灯光控制器中的应用
一、引言
近年来,随着文化事业的发展,灯光在大型剧院、舞台、演播厅、体育场馆等场合得到广泛的应用,灯光通过专用控制器的控制变幻出各种效果,营造出许多优美的艺术氛围,在舞美艺术中扮演着不可或缺的角色。
灯光控制不仅包括对发光体进行简单的电气通断控制,同时还包括对发光体亮度的动态、静态控制和大规模灯光场景的调度及总体控制。
灯光控制器一般有两种,既手动调光台与电脑调光台。
手动调光台多数为模拟调光,一般应用于小规模的灯光控制场合,而电脑调光台则可以同时管理着几百个回路的灯光,包括亮度调节与多种管理功能。
本文主要阐述利用51系列单片机自身的各种资源,如何实现在64路矩阵灯光控制器中完成多种灯光控制功能。
二、基本功能
矩阵灯光控制器由控制与功率两部分组成,即可独立使用,亦可连接硅箱增大功率输出。
单独使用时,通过控制纵横各8个共16只硅块实现对64路灯光的控制给,即矩阵控制。
其功能主要有:
1.走灯效果调用编辑
控制器内固化有100个走灯花样效果程序,可由用户编辑调用。
2.走灯速度控制
可由用户设定走灯速度,走灯效果程序可自动或由用户手动运行,通过音频接驳口接入声音信号亦可声控走灯速度。
3.灯光亮度调节
利用数字调光方法通过对可控硅的控制实现对灯光亮度调节。
4.通讯功能
拷贝功能,一个控制器得运行控制参数(如灯光效果编组情况,走灯速度,亮度等)可通过串口传送到其他控制器中,使其他控制器具有相同的运行控制参数;
将64路灯光亮度值以DMX标准信号形式送出,用来连接大功率硅箱以增大功率输出。
三、控制原理
1.调光控制部分
对于亮度的调节,主要是通过改变发光体的电压来调节灯光亮度,目前调压方法主要采用可控硅控制方式,即通过改变可控硅的触发角来改变其导通相位与时间,从而改变作用于发光体的电压有效值,完成调压过程。
一般的灯光控制器主要是采用调整控制电压方式改变触发角,即模拟调光,其原理如图1,图2所示,由于调光器采用双向可控硅,则控制以半波为周期,首先工频正弦波电压信号经同步采样电路产生同步电压U1,
U U
U O
然后经锯齿波发生电路转换成同步锯齿波信号U 2,锯齿波信号同控制电压信号U k 经比较器产生用于触发可控硅的触发脉冲Uout ,改变控制电压U K 也就是改变它与同步电压锯齿波的交点即可实现触发脉冲的相移,从而改变发光体两端的电压,调节灯光亮度。
这种方式触发电路简单可靠,但缺点是同步电压易受电网电压的影响,造成触发精度差,另外,不同的触发电路由于同步取样与锯齿波产生电路的差异(虽然控制电压相同)造成调光器输出电压的不同,从而造成调光的不一致性。
图 2
为解决上述问题,采用数字触发调光方式,这种方式可较好地提高触发精度,其原理是利用单片机时钟基准,将每个正弦半波周期均分为N 等份,即分为N 级调光,每一级对应的时间间隔Δt 是10/N 毫秒。
如图3所示,M 的数值不同,则触发的时间不同,也就是触发角改变,触发脉冲得以移相。
用模拟调光,灯光的变化是连续的,数字调光的亮度变化则是跳跃的。
如何避免这种现象,与N 的取值有一定关系。
2. 调光曲线
调光曲线是指调光过程中灯光亮度变化与控制电压的关系曲线,这里指灯光亮度与时间间隔Δt 变化的关系曲
线,如图4所示的各种曲线。
首先分析N 的取值对调光的影响。
正弦半波被N 等分以后,即Δt 为一定值,设定每一级对应的电压
值变化量为ΔU ,ΔU 是一个与N 有关的函数, N 值越大,ΔU 越小,即级与级之间的电压变化量越小,灯光亮度变化趋势越接近线性,但在实际中,由于人眼的视觉残留及大功率舞台光源有较大的热惯性,实践证明,当N 值趋于一定数值时,人眼对灯光亮度的跳跃变化已分辨不出。
由上图还可以看出,当M 近似为N/2时,ΔU 最大,也就是在半波的中部,灯光亮度变化量较大,而两端较小。
由上分析可以看出,当Δt 为定值时,
U O UT
对应的调光曲线是一个“S ”形,当按照某一规律调整Δt 时,则可以得到线性的1次调光曲线,而且还可以得到2次曲线,3次曲线,2次和3次曲线更适合人眼的要求。
考虑单片机的处理能力,这里以最简单的编码方式为例,即Δt 为定值,只要恰当选择N 值,人眼就可以分辨不出灯光亮度的跳跃现象。
试验得知,当N 取值为200时,Δt=50us ,调光效果已经满足要求。
3、DMX 信号
调光台将多路灯光亮度数据通过DMX 信号发送到接收装置(解码器),然后解码器将其还原成相应的控制触发角以完成多路调光功能。
解码器有模拟式和数字式两种。
DMX 是用于调光台与硅箱之间的一种数据通讯协议,其物理层为RS422,采用单工11位异步通讯方式。
协议规定,通讯的波特率为250Kbps ,每一个数据采用11位,具体数据格式见图5所示,起始为一不小于1ms 宽的低电平同步信号,然后是513个数据,其中第一个数据规定为0,其余为512路灯光亮度值百分数。
图 5
四、 硬件实现
根据功能要求,为充分利用单片机自身的各种资源,在电路设计中采取了很少的外围电路,配合软件,完成诸如键盘扫描、7段数码管显示、串行通讯、数字调光等功能。
如何完成这些功能,关键是如何利用好单片机提供的各种中断源。
51系列单片机具有5个中断源,外部中断INT0、1,定时器/计数器C/T0、1溢出中断和串行口中断。
下面分述在电路设计中如何利用这些中断功能:
1. 键盘与LED 电路
控制器人机交互是利用17个按键,6个LED7显示和17个发光管指示灯组成。
由单片机的数据口组成一个动态扫描刷新电路,其原理是利用人眼的视觉停留现象,当扫描频率足够大时,人眼将分辨不出扫描过程。
发送扫描数据端口为地址2000H 的锁存器,接受端口为地址4000H 的锁存器。
扫描时间间隔为2ms ,此功能利用T1定时器方式完成,将其设定为2ms 的定时中断,具体设定为T1工作方式0,TH1=#0ACH ,TL1=#15H 。
扫描刷新共8组,需耗时16ms 。
2. 数字触发电路
由原理部分可知,由于采用双向可控硅,因此控制周期为半波10ms ,设定N =200,则Δt =10ms/200=50us ,即数字触发的时间基准为50us 。
利用T0定时器方式,将其设定为50us 的定时中断,具体设定为T0工作方式2,TH1=TL1=#0BEH 。
在中断服务的程序中有一计数器,将200个调光等级对应0-100%的亮度等级,要达到某一亮度等级,只要计到相应的数值即可将触发信号送出,控制可控硅导通。
控制计数值即控制可控硅的触发角。
为保证触发角的准确,捕捉电源正弦波的过零信号非常重要,过零时刻是触发角的基点
12
511
512
≥1ms
≥1ms
同步头
同步头
时刻,在数字调光中是起始计数(50us的个数)的时刻,在设计中将过零信号引入单片机的INT0,利用跳变触发方式,其中断服务程序用来完成T0的50us定时中断启动。
3.声控走灯速度部分
控制器内部固化了100种走灯效果程序,发光体按照事先规定好的花样以一定规律一定的变换速度交替的亮和灭,营造艺术效果。
一般在舞台、演播厅及歌厅中,灯光效果往往要和背景音乐相协调,因此涉及到声控的要求,根据声音的强弱(节奏)来控制走灯的速度,使得灯光同音乐节奏能有机结合,共同营造出特定的艺术氛围。
为达到这一效果,首先将音频信号转换为脉冲信号,接入单片机的INT1,同样设定为跳变触发方式,中断服务程序用来完成走灯速度控制。
4.掉电保护
此部分功能由电压监视器完成,当检测到电源电压降低到一定数值时,电压监视器将发出信号,引入单片机的INT0中,中断服务将根据需要保护现场数据。
5.通讯
DMX信号的实现
根据功能需要,通讯分为两种,首先是通过DMX协议完成64路灯光亮度值的实时传送,根据上面介绍,发送513侦数据所需的时间为513*11/250K+1=23.5ms。
为满足上述要求,首先考虑单片机的工作晶振的频率,硬件设计中充分考虑各种需要,如控制的实时性,程序的扫描执行时间,及各种中断处理所需时间等,选择16M晶振比较合适,这样单片机串口具体设定如下,串口工作于方式2,SMOD=0,其通讯波特率为固定值fosc/64,即16M/250=250Kbps,满足通讯速率要求。
灯光亮度数据是实时传送的,为避免通讯功能不过多占用CPU的处理时间,采用分时传送方式,即利用2ms的定时中断,每次定时中断送8路数据。
根据DMX协议规定,同步头为一不小于1ms的低电平,则利用一次2ms中断将串口发送位置0。
这样64路灯光亮度数据经9次中断完成全部数据发送,发送周期为18ms,小于DMX信号的发送周期要求。
具体编程见软件设计。
双机之间的数据传送
用来完成控制器之间控制信息传送,采用全双工8位异步通讯方式,单片机串口设定如下,串口工作于方式1,由计数器/定时器1作为串行通讯的波特率发生器,波特率为1200bps。
6.面板64路灯光模拟显示
控制器面板具有由64个发光二极管组成的模拟显示屏,用来模拟显示实际灯光的导通状态及亮度情况,由图1得知,触发信号为一脉宽可调,周期为10ms的方波,如图所示。
经反相放大驱动控制器面板64个发光管,由于可控硅触发角的不同,触发信号方波脉宽改变,则作用于发光管的平均电压改变,使模拟屏的亮度随实际灯光亮度变化,完成灯光亮度模拟显示。
五、程序设计
1.通过DMX信号传送64路灯光亮度数据程序,在2ms定时中断服务程序中执行。
设定PCON=0,SMOD=80H,串口工作于方式2,fosc=16M,波特率为fosc/64=250Kbps。
程序代码如下:
MOV A,DMXJ ;共分为8次传送
JNZ DMX ;没传送完,继续
MOV DMXJ,#08H
MOV DMXR,ROUT ;传送行控制信息
MOV DMXC,COUT ;传送列控制信息
CLR P3.1 ;置低电平同步头
SJMP OTHERS ;等待下一次发送DMX:MOV R0,#08H ;每次送8个数据
SETB P3.1
MOV A,DMXJ
CJNE A,#08H,DMXOUT ;判断是否第一个数据
MOV SBUF,#00H ;是,发送0
JNB TI,$
CLR TI
DMXOUT:MOV SBUF,DMXR ;判断行控制信息
CLR C
RLC A
MOV DMXR,A
JC DMXNXT
DO8:MOV SBUF,#00H ;无导通情况,送亮度0
JNB TI,$
CLR TI
DJNZ R0,DO8
SJMP DMXEND
DMXNXT:MOV R2,DMXC ;判断列控制信息
DMXN1:MOV A,R2
CLR C
RLC A
MOV R2,A
JC DNN
MOV SBUF,#00H ;无导通,该路送0
SJMP DMXN2
DNN:MOV A,DMXL
MOV SBUF,A ;有导通,该路送亮度值DMXN2:JNB TI,$
CLR TI
DJNZ R0,DMXN1 ;每次共8路,判断DMXEND:DEC DMXJ
2.T0 ,50us定时中断服务程序,及INT0外部中断服务程序
50us定时中断服务如左边框图所示,主要完成根据亮度百分值,计数中断次数,当计数器值到达对应的亮度数值时,输出触发信号,然后关闭50us定时中断。
INT0中断服务程序主要是处理过零检测及电源电压监视,如右边框图所示,当中断有效时,首先判断是否为过零信号,如果是,则启动T0中断工作。
若为电源信号,则用来将片内现场数据移至片外存储区存储。
具体程序框图如下:
3.双机通讯程序
甲机发送程序
将片内RAM区及片外RAM的有关数据传送到乙机中。
片内数据起始地址20H,长度60H,片外数据起始地址200H,长度为660H。
其程序约定如下:
波特率设置初始化:T1方式2工作,计数常数为0BBH,SMOD=1;
串口初始化:方式1工作,允许接收(因要不断接收乙机信号)
SCON=#50H,PCON=#80H,波特率=1200bps
程序框图如下:
具体程序清单略
乙机接收程序
用来接收由甲机发送来的数据,并传送到指定的存储区内。
利用串口中断服务。
接收程序约定与发送程序相同。
程序框图如下:
具体程序清单略。
六、结束语
我们知道,单片机内部集成了许多有用的硬件资源,如CPU、各种接口电路、存储器、中断控制器等部件,配合很少的外围电路与程序即可组成一个个功能各异的单片机控制系统,在64路矩阵灯光控制器中,正是充分发挥了单片机的自身优势,实践证明,这样既降低硬件开发成本,又提高了单片机的利用率,取得了很好的效果。
【参考文献】
1.黄俊:《半导体变流技术》,机械工业出版社,1980
2.孟秀銮等:《调光技术与设备》,中央电视台,中国照明学会,1991
3.何立民:《单片机应用系统设计》,北京航空航天大学出版社,1990
4.丁元杰等:《单片微机原理》,上海科学技术文献出版社,1991
5.李秉操等:《单片机接口技术及其在工业控制中的应用》,陕西电子编辑部,1991。