89C51单片机的串行接口采用了TTL电平方式,即2.4 V以上代表数字1,0.45 V以下代表数字0,而一般的标准串行通信标准RS232则用大于+2V的电压表示数字0,用小于-2 V的电压表示数字1。因此,89C51与控制计算机之间的串行通信接口必须经过电压转化。一般的方法是采用专用器件(如MAX232等)完成这一转换,但是需要额外提供一组±12 V电源,不利于设备的安全,另外由于电路只需要接收串行信息,因此本设计采用如图1所示的电路完成电平转换,实现串行通信。
当RS232传送数字“0”时,TXD和GND之间出现一个大于+2 V的电压,光电耦合器TLP521一次侧发光,二次侧导通,输出低电平,对应TTL逻辑“0”;当RS232传送数字“1”时,TXD和GND之间出现一个小于-2 V的电压,光电耦合器TLP521一次侧不发光,二次侧不导通,输出高电平,对应TTL逻辑“1”,从而完成了电平转换,实现了串行数据的接收。这一电路不需要额外提供±12V电源,而且能够避免控制计算机与镜头控制电路的直接电气连接,对于野外应用具有更高的安全性。
3.2 执行电路设计
此部分的硬件设计主要是实现三可变镜头控制
电路中双刀双掷继电器S1用于进行电源极性的变换,实现控制参数变化方向的选择。当S1线包不通电时,AB端输出+12 V电压,控制光圈变大;当S1线包通电时,AB端输出-12 V电压,控制光圈缩小,完成控制参数变化方向的转换。
参数变化数值的控制通过控制驱动电压的存在时间来实现。但是继电器机械动作的持续性使它难以实现精确的通断时间控制,其误差一般在10ms以上,因此在本电路中采用MOSFET作为电子开关,实现通断时间的精确控制,误差小于0.1 ms。常态下MOSFET截止,输出端A、B无电流,光圈不动作。在需要扩大光圈时,S1线包不通电,A端接+12 V,B端通过MOSFET接地,然后51单片机发出控制信号,使MOSFET导通,输出A、B端形成电流回路,驱动光圈扩大;在需要缩小光圈时,S1线包通电,B端接+12 V,A端通过MOSFET接地,然后51单片机发出控制信号,使MOSFET导通,输出A、B端形成电流回路,驱动光圈缩小。这一电路结构和工作方式不仅实现了动作时间的精确控制,还可有效地避免电路因带电切换而造成的打火现象,提高了继电器的工作寿命,减少了干扰。
此外,电路中的光电耦合器OP1主要用于隔离和变换51单片机的+5 V电源电压和镜头动作的+12 V驱动电压;三极管T1用来控制对继电器S1线包的供电。
3.3 中心控制电路及软件设计
中心控制电路如图3所示。镜头控制模块的控制核心是89C51。主要实现接收控制指令、解析控制指令和执行控制指令三项功能。软件采用51系列单片机的汇编语言编写。主要是看重使用汇编语言具有执行速度快。可精确掌握动作时间,所占内存小等方面的优势。
PC与89C51之间采用异步串行通讯方式。数据位最多可为8位,定义为动作类型和动作时间两部分。用数据位前3位表示6种动作状态,包括光圈扩大、光圈缩小、图像放大、图像缩小、焦距变大和焦距变小。数据位后5位表示动作时间,一共可以表示32种不同动作时间。根据软件要实现的三项功能,程序首先进行初始化。89C52的两个定时/计数器分别用作波特率设定和动作时间计时。通过对工作方式控制寄存器TMOD的设置就可完成对两个定时/计数器工作模式的定义。定时/计数器1采用工作方式2,用于定义波特率。定时/计数器0采用工作方式1,用于镜头动作时间控制。
然后是指令的处理部分。通过“逻辑与ANL”运算将指令分解为动作类型和动作时间两部分。利用比较转移指令CJNE进行动作类型筛选,通过对工作寄存器组中R1、R2的赋值完成对引脚的设置:
采用中断方式进行引脚输出。由于在带电状态下变换双刀双掷开关的状态可能会“打火”,为避免这种情况,在对R1,R2赋值时要实现双刀双掷继电器先进行动作变换,后通电。两步动作的间隔为10ms。而动作时间以10 ms为步长。根据预先设计的指令协议可以控制动作时间的范围在0 ms~320 ms之间,可满足本模块需求。
4 结束语
通过对本电路软硬件的改进和调试,获得了预期的应用效果,实现了对镜头的定性定量控制。电路的控制特性曲线如图4所示,图中横坐标表示参数的变化步长,单位为10 ms;纵坐标表示参数最大变化范围所需的驱动级数。
本控制电路结构简单,控制可靠,环境适应性强,实现了智能终端设备对拍摄参数的完全控制。例如终端可以在图像平均亮度较高的情况下扩大摄像镜头的光圈,以使局部阴影中的影像更清晰。具体的控制方式可根据实际需要定制。