基于ATmegal 28的调光控制器方案设计
扫描二维码
随时随地手机看文章
引言
节能是照明灯光控制中的一项重要指标。目前,存在模拟调光控制系统和数字调光控制系统。模拟调光控制系统包括模拟调光控制台(调光控制器)和模拟调光器。其中,模拟调光控制台输出O~10 V控制电压,通过模拟调光器的0~10 V接口调节其所带灯具的光强弱。数字调光控制系统包括数字调光控制台(调光控制器)和数字调光器。其采用的协议为DMX512控制协议,该协议的物理接口为RS485。
虽然数字调光控制系统有其优点,但由于成本在短时间内无法全部替代模拟控制系统,模拟调光控制仍占很大比率。现有的模拟调光控制台大多采用拉杆、旋钮、开关等对模拟信号进行变换,其控制精度不高,体积较大且只实现灯具通断控制,所以很有必要开发一种控制精度高、体积适中且可实现多种灯光效果变换的调光控制器。近几年来,PC机由于其图形化界面易操作性,在工业简单控制中常被使用,单片机的成本也逐渐下降。本文结合PC机和单片机设计了一种模拟调光控制器,通过上位机的调光软件可以实现多种灯光效果的控制。
1 总体设计
模拟调光控制系统总体设计如图1所示。PC上位机上运行的控制软件通过RS232串口发送控制命令,调光控制器根据给定的指令产生相应的0~10 V控制信号(256级)。通过可调光电子镇流器以及LED可调光驱动的0~10 V接口,根据相应的控制电压进一步控制相应灯具的亮度达到调光目的。此外,光强传感器采集现场的实时光强送入调光控制器,上位机通过指令读取光强并将其显示在控制界面上,再根据给定值对控制电压进行调节来实现灯光的闭环控制。本文重点研究调光控制器的设计方法。
2 硬件实现
2.1 单片机
单片机采用Atmel公司基于AVR RISC结构的8位低功耗CMOS微处理器ATmegal28。它具有128 KBFlash、53个通用I/O口、4个灵活的具有比较模式和PWM功能的定时器/计数器、2个USART、8通道10位ADC(具有可选的可编程增益)、JTAG片上调试接口,以及6种可以通过软件选择的省电模式。通过将8位CPU与系统内可编程的Flash集成在一个芯片内,ATmegal28为许多嵌入式控制应用提供了灵活而低成本的方案。
ATmegal28可提供两个串口功能:一个串口用来与上位机通信;另一个串口则预留给DMX512数字控制方式,以便该控制器在日后既可以作为模拟调光控制输出O~10 V模拟控制信号,又可以作为数字调光控制器输出符合DMX512控制协议的数字控制信号。
2.2 电源模块
ATmegal28需要5 V供电,AD7226需要15 V供电以及10 V电压作为参考电压。外部电源采用15 V开关电源,对单片机的5 V供电及AD7226的10 V参考电压分别使用稳压芯片LM2940T-5及LM2940T-10实现。
2.3 按键模块
按键模块提供调光控制器上的调光快捷操作。4个按键分别为25%、50%、75%、100%调光,分别接到PE4、PE5、PE6、PE7外部中断引脚上。当按键被按下时,外部中断被触发。
2.4 串口模块
单片机的串口模块用来与上位机PC进行通信。由于PC机RS232串口的电平与单片机UART串口电平定义不一致,在此通过MAX232芯片进行电平转换。
2.5 A/D模块
光强传感器采用北京易盛泰和科技公司的YSCG-X新型光照度传感器,其量程为0~2000 lux,其输出为标准的4~20 mA。传感器的输出接入引脚PF0,在PF0引脚外通过电阻将电流转换为电压以便采样。由于A/D采样的输入最高为5 V,则该电阻应选249 Ω电阻。此外为了保证采样的准确性,在电路中加入电压跟随器。
2.6 D/A转换模块
D/A转换模块实际上是调光控制器的输出模块。采用ADI公司的AD7226产生0~10 V的电压。AD7226具有8位精度的4通道D/A转换器,最小分辨率为4 mV,可以满足设计精度的要求。每一个通道都有一个输入锁存器,可以对输入的数字量进行锁存,输出端带有输出缓冲放大器。D/A转换模块硬件电路如图2所示。
其中,/WR为控制线,A0、A1为两条地址线,通过地址线可以选择不同的D/A通道。该控制器设计为具有12通道的输出,所以采用了3个AD7226芯片。数据线、地址线与单片机的接法相同,只是控制线/WR作为芯片锁存引脚与不同的单片机引脚连接,3个芯片的控制线分别连接PA4、PA5、PA6。
3 软件设计
3.1 变量定义
该控制器包含12个独立的通道且要将现场采集的光强送给上位机显示,所以定义数组channelData[13]。其中,channelData[O]~chan-nelData[11]存储相应1~12通道的实际控制电压(0~255),channelData[12]存储传感器采样的现场光强。变量write_end表示channelData[O]~channelData[11]的值是否被修改,write_end=1表示修改完成。
3.2 主程序
上位机对调光控制器的控制通过串口中断实现,调光控制器上的快捷按键通过I/O外部中断实现,传感器的采样间隔通过定时器中断实现。3个中断的优先级为;定时器中断>I/O外部中断>串口中断。主程序流程如图3所示。
当串口中断被响应时,首先判断上位机的指令是读操作还是写操作。如果是写操作,返回同样的指令作为响应指令,根据指令改变cha-nnelData[]中相应通道的值,并将write_end置1。如果为读指令,根据地址将channelData[]中相应通道的数据或者现场光强返回作为响应。
当定时器中断被响应时,通过传感器采样现场光强。为了保证数据的准确,在算法中采用求16次采样的平均值作为有效值存入channel-Data[12]。
当I/O外部中断被响应时,首先需要判断是否为按键抖动所致。如果为抖动,返回;反之,将channelData[O]~channelData[11]的值改为该快捷键代表的电压值,并将write_end置1。
最后判断变量write_end是否为1。若write_end=1,则执行函数DAOperation(channelData,12),将channelData[O]~channelData[11]中对应的各通道值(O~255)以0~10 V电压输出,然后将write_end清0。
4 实验结果
当上位机调节通道1控制电压为2.5 V,通道1的实际测得电压如图4所示。从图中可知,实际电压为2.46 V,其中O.04 V的压降是由AD7226芯片引脚的100 Ω电阻引起的。
在实际的测量中发现,未接电源时在该控制器中存在峰峰值为40 mV、频率为50 Hz的干扰电压,如图5所示。为了减小这种低频干扰,在D/A输出引脚接了一个47 μF的电容(见图2),并取得很好的效果。
5 总结
利用8位的ATmegal28单片机可以精确地实现多级可调的0~10 V控制电压,分辨率为40 mV。在调光控制器上可以通过4个按键快速地调节各个通道的灯光强弱。此外,通过上位机实现单个通道的独立调光、所有通道的快速调光以及灯光的闭环控制。