基于FPGA+单片机的调焦变倍系统设计
扫描二维码
随时随地手机看文章
摘要:在光电探测领域中以往对相机调焦变倍多采用单片机(MCU)控制完成,其优点在于易于编程实现。因为要求实时控制相机的变倍、调焦,其程序的编写多采用查询方式实现,这就使单片机始终处于十分繁忙的状态,利用率降低,此外当调焦、变倍电机到达限位位置时,由于单片机是采用查询方式工作,这就导致电机到达限位与实际停止电机转动之间存在时间差,这种时间差导致电机发生堵转,容易把电机或调焦变倍驱动机构烧毁。文章采用单片机+FPGA方式进行调焦变倍控制,单片机负责通信,FPGA根据命令实现调焦变倍控制。FPGA实现调焦变倍的优势在于响应速度更快、此外能够真正实现控制电机运转和监测电机运行状态同时进行,当电机运行到限位位置能够及时停止电机运转,有效避免堵转现象发生。
关键词:单片机;现场可编程门阵列;调焦变倍;限位点
0 引言
在光电测量领域中,常常需要使用长焦距、大口径的光学相机进行目标探测。这种相机由于变倍比比较大,为了使不同距离的目标均能在像面成清晰的像,除了需要控制倍率的变化外,还需要对聚焦位置进行微调。以往对这种光学相机变倍调焦的控制比较常用的方法是采用单片机来完成。采用单片机控制的优点在于编程方法简单、易于实现。缺点在于由于需要控制监测的信号有变倍电机的驱动信号、调焦电机的驱动信号、变倍电机分别走到两头的两个限位信号、调焦电机分别走到两头的两个限位信号,这些信号均要实时控制监测,因此通常需要采用查询的方法进行编程处理,这种方法的好处在于能够及时地控制相机的变倍调焦,缺点在于由于频繁的查询硬件状态,使得单片机始终处于繁忙的工作状态,工作效率低。此外由于单片机是以固定周期进行查询,这常常导致检测到电机运行到限位状态与停止电机运动存在时间差,该时间差可导致电机处于堵转状态,易于损坏电路板及电机。
本文设计了一种光学相机调焦变倍控制系统,此系统以FPGA+单片机(MCU)为核心芯片,其中控制电机运行的命令通过中断的方式发出,保证电机实时接到命令即运动起来,当电机到达限位位置FPGA得到限位状态,马上发出停止信号,断掉电机管脚上的电,使电机马上停止下来。此方法同以往方法相比的好处在于控制电机的实时性更强,能够有效地控制相机变倍调焦机构的运动、停止,同时避免电机堵转,以致烧毁电机或电路板。
1 硬件组成
基于FPGA+单片机的调焦变倍系统主要包括MCU、通信模块、FPGA(可编程逻辑器件)模块、电机驱动模块、光耦模块、电机组成,其组成框图如图1所示。其中MCU采用AD公司的ADU812,该款芯片除具有单片机的通用功能外,还具有AD转换功能,当光学镜头需要实时回传当前位置信息时,可通过把电位计同电机连接到一起,把电位计的输出端接到该MCU的AD输入口,通过程序可读到当前电机转到的位置;通信模块采用16C650,该通信模块可把MCU的并行数据信号转变为串行信号传递出去;FPGA采用EP1K100-208I,电机驱动模块采用L298,该芯片具有两路电机驱动信号输出,可同时驱动两路电机;光耦模块采用欧姆龙的EP470,该光耦模块接法简单,并且模块上具有灯光指示,通过灯光可知道当前状态;电机采用瑞士电机。
1.1 工作原理
人机交互模块通过通信模块向MCU发送调焦变倍命令,MCU通过中断接收到命令,实时传递给FPGA,FPGA接到命令后,依照命令向调焦变倍驱动电路发送相应的逻辑电平,调焦变倍驱动电路接到相应逻辑后,向相应的控制电机发送正转反转电压,使电机根据命令正转或反转。当电机转到限位位置时,光耦模块作为传感器检测到相应电机转到限位位置,把限位状态传递给FPGA,FPGA接到限位信号立刻向调焦变倍驱动电路发送信号,使其输出为零电压,电机立即停止转动。这里使用FPGA完成控制的优点在于通过对FPGA编程即可实现调焦变倍;监测电机转动位置;实时停止电机转动并行实现,当电机转动到限位位置能及时迅速地使电机停止。
1.2 FPGA控制模块及电机驱动模块
FPGA具有高集成度、高可靠性以及开发工具智能化等特点,目前逐步成为复杂数字电路设计的理想首选。此外FPGA可以通过编程实现硬件的逻辑功能,大大减少了硬件设计的复杂程度。因此本文以FPGA为核心器件进行调焦变倍驱动电路的设计,这里选用ALTERA公司的EP1K100 -208I,采用VHDL语言编程生成调焦变倍控制信号、限位信号检测逻辑、电机驱动模块使能控制信号。系统上电后,当MCU接收到人机交互机构发来的调焦变倍控制命令后,立即把该命令传递给FPGA,FPGA接到控制命令,转换成实际控制信号传递给电机驱动模块,电机驱动模块接到控制信号,产生相应的电压驱动电机转动,实现相机调焦变倍的控制。FPGA对电机驱动模块的控制原理图如图2所示。其中MFOCUS STOP、FOCUS STOP分别为FPGA向电机驱动模块发出的变倍电机和调焦电机控制使能信号;MFOCUS+、MFOCUS-为FPGA发送的变倍控制信号,FOCUS+、FOCUS-为FPGA发送的调焦控制信号;变倍电机+和变倍电机-为电机驱动模块输出的控制变倍电机转动的电压,调焦电机+和调焦电机-为电机驱动模块输出的控制调焦电机转动的电压。当相应电机转到限位点时,FPGA向对应使能端发送低电平信号,则无论相应的电机控制信号是何种状态,对应的电机驱动模块中的电压输出信号均为零电平,电机停止运动。当电机没有运动到限位点时,对应的使能端被FPGA置为高电平,FPGA通过向变倍控制端和调焦控制端发送相应信号,控制电机驱动模块输出相应电压。FPGA发送的使能信号、电机控制信号及电机驱动模块输出的电压的对应关系如表1和表2所示。其中X表示为任意电平。
1.3 MCU模块及通信模块
在本设计中MCU主要作为通信管理芯片,实现与人机交互模块进行通信。操作者通过人机交互模块向通信模块发送变倍调焦命令,通信模块把该命令转发给MCU,MCU以中断方式接收命令实时传递给FPGA,FPGA对电机驱动模块进行控制,从而实现变倍调焦控制。FPGA对光耦模块的状态进行检测,并把该状态通过MCU模块和通信模块传递给人机交互模块,使操作者能掌握当前相机状态。因为人机交互模块发送数据较频繁,为了防止MCU出现死机现象,这里没有直接应用人机交互模块的通信口与MCU的串口连在一起,而是通过通信模块把二者联系起来。这里通信模块采用了一片16C650,该芯片优点在于内部具有32字节的FIFO,可起到数据缓存的作用,使MCU能够稳定可靠地接收数据。
1.4 光耦模块
光耦模块主要起到实时检测当前电机是否运行到限位点的作用,如果电机没有运行到限位点,光耦模块向FPGA输出0电平,当电机运行到限位点时光耦模块向FPGA输出1电平。为了便于观察和调试,这里选用欧姆龙的EX470P型光耦,该光耦通过指示灯,可指示出光耦当前输出状态。
2 软件设计
本文软件设计主要对MCU和FPGA进行编程。其中对MCU编程主要应用C语言进行,对FPGA主要应用VHDL语言编写。其中MCU程序框图如图3所示。FPGA程序流程框图如图4所示。
3 结论
本文介绍了一种基于FPGA的连续可变焦距相机的变倍调焦系统,该系统同以往单纯使用MCU完成变倍调焦功能的系统相比,采用FPGA控制调焦、变倍,能够更快地实现控制电机运动、停止,对于防止电机因为运动到限位位置没有及时发出停止操作而产生堵转,进而造成电机毁坏或控制系统毁坏具有一定效果,因此具有一定应用价值。