智能读码器镜头自动对焦系统的设计与实现
2021-11-29王正家邵明志
王正家,李 勇,邵明志,何 涛
(湖北工业大学机械工程学院,湖北武汉 430068)
0 引言
在嵌入式设备领域,目前实现镜头对焦功能的方式主要有3种,手动对焦、电动马达对焦和液态镜头对焦。手动对焦在单反相机、工业相机上较常见,但需通过人工反复调焦,耗时长,成像条件苛刻,不适用于需要快速变更焦距的场景,限制了该技术的应用范围[1];液态镜头也叫液态透镜,精度高,响应速度快,但市场上现有液态镜头产品价格高、控制方案复杂,智能读码器采用的镜头更多是小型化镜头(M12镜头),非C接口或CS接口等标准接口镜头,而液态镜头对非标准接口镜头兼容较少;电动马达对焦是嵌入式设备常用的对焦方式,多采用步进电机作为驱动机构,因其成本低、控制精准等优势得到大范围应用[2-3]。市场上智能读码器厂商中,日本厂商基恩士对电动对焦方式的应用较为丰富,国内海康威视ID5000系列产品采用了电动对焦技术,但镜头模组尺寸较大,产品整体外观观感与体验上与国外产品例如SR-2000相比,存在一定差距。
步进电机驱动与控制技术是电动对焦方案效果优劣的关键性技术,现有步进电机驱动方案多是基于STM32控制器所设计的,例如王秋云[4]、张婧[5]、蓝杰[6]、刘媛媛[7]等的研究,但当前智能读码器等图像处理嵌入式设备更多是采用ARM平台或者INTEL平台等能够搭载操作系统的芯片作为主处理器[8-9],基于STM32控制器的步进电机驱动方案已很难适用,急需适用于读码器产品新的步进电机驱动方案出现;伍艳雄[10]针对步进电机失步和抖动问题,使用细分驱动技术进行解决,做了较详细的仿真与测试,但最高细分数只做到16细分,虽降低了电机失步问题,但在微焦调节上,电机还需要更大的细分精度来确保不失步,同时使运行更加平稳与精确,噪声更小;谷晨阳[11]采用DSP平台研究自动对焦技术,在自动对焦算法上做了较深入的研究和改进,但由于硬件平台差异,方案并不能适用于采用ARM或INTEL平台的智能读码器等嵌入式设备。
综上所述,为丰富国产读码器自动对焦方案,解决现有步进电机驱动方案落后,帮助智能读码器实现小型化设计,提出了新的智能读码器自动对焦系统,本系统选择IMXM-xx芯片作为主控平台,选择尺寸较小(31.1 mm×33.7 mm×18.4 mm)的国产底座作为镜头底座,国产MS419xx芯片作为步进电机驱动芯片,设计了硬件电路、LINUX系统步进电机底层驱动以及上位机与下位机消息交互方案。选择6 mm焦距镜头、16 mm焦距镜头进行实际对焦测试,测试结果表明,本系统采用模块化设计思路,能够实现适配不同焦距镜头、上位机自动对焦及手动微调焦距三大功能,自动对焦成功率在99.6%以上,丰富了国产读码器的自动对焦方案,降低了读码器自动对焦系统的物理尺寸,便于国产智能读码器的小型化。
1 整体设计
本系统主要组成有:
(1)IMXM-xx主控芯片,搭载经过裁剪定制化后的LINUX系统,是智能读码器的控制核心;
(2)MS419xx,国产步进电机驱动芯片,通过SPI总线进行参数配置后能够实现高达256细分精度的超低噪声的驱动波形输出,驱动步进电机进行平稳运动;
(3)步进电机对焦镜头模组,选择国产小尺寸M12接口镜头底座,尺寸较SR2000镜头模组更小,有利于智能读码器的小型化设计;
(4)上位机软件,自行开发的智能读码器PC软件,具有智能读码器参数配置、人机交互等功能;
(5)5V DC电源网络,经过稳压滤波网络后的供电电源,负责整个系统的供电。系统整体框图如图1所示。
图1 系统整体框图
系统的主要工作流程为:智能读码器上电→LINUX系统启动→系统加载步进电机底层驱动→对焦系统初始化、建立位置坐标→监听上位机消息,收到对焦消息后开始对焦,并与上位机进行消息交互→系统完成对焦工作,准备下一步工作。系统的工作流程示意图如图2所示。
图2 系统工作流程示意图
2 硬件电路设计
本系统选择国产MS419xx芯片作为步进电机驱动芯片,该选择的主要优势是:
(1)该芯片能够通过电流细分的电压驱动方式以及扭矩纹波修正技术实现超低噪声的微步进驱动,细分驱动精度高达256,在系统自动对焦以及人工微调焦的工作任务下都能保证运动精度和低噪声;
(2)该芯片物理封装尺寸小,有利于实现智能读码器PCB板的小型化设计,进而保证产品小型化;
(3)该芯片实现在智能读码器自动对焦系统中,现有的研究并未包含此芯片,本系统提供了现实可行的步进电机驱动的整体方案。芯片的部分电气性能参数见表1。
表1 MS419xx部分电气性能参数
硬件电路设计主要包括:
(1)电源的滤波与供给。电源分为模拟电源3.3 V、数字电源3.3 V以及直流电机电源5 V,各电源在由电源管理芯片(PMIC)给出,经过传输线到达步进电机驱动PCB板上,通过电容滤波网络后供给MS419xx;
(2)SPI通信电路的设计。CPU通过SPI总线与MS419xx进行参数配置,在CPU硬件资源中分出SPI1通信总线与MS419xx相连,信号分别命名为ECSPI1_SCLK、ECSPI1_CS、ECSPI1_MISO、ECSPI1_MOSI;
(3)VD_FZ信号的设计。VD_FZ信号决定着步进电机的旋转时间与反射时间,硬件上CPU分配GPIO5_2与VD_FZ相连,由CPU输出经过设计的脉冲波形来控制芯片的工作;
(4)芯片输入时钟的设计。使用27 MHz的有源时钟作为芯片的时钟输入,有源晶振型号为OP3225xx-u,晶振输出使用RC一阶网络形成低通滤波器,隔绝其他噪声。
硬件详细电路图如图3所示。在进行PCB设计时,本系统注意了MVCC电源信号的走线宽度,MVCC是步进电机驱动功率电源,从散热与载流双方面因素考虑,使用合适宽度的铜皮代替了常规走线,充分保证了线路的载流能力,同时也加快了热量的传导;注意了时钟的隔离设计,在晶振周围敷上地铜,隔离其他噪声,其他电源的噪声隔离进行了理论计算,使用了合适的电容网络,布局方面尽可能地靠近芯片引脚处放置,保证了隔离效果;注意了PCB板的散热设计,增加了板子厚度,优化了器件布局及板层堆叠方案,保证在小尺寸PCB板的散热。
图3 硬件原理图
3 软件设计
软件设计包括LINUX系统步进电机驱动层设计、对焦初始化以及上位机和下位机的消息交互设计。
3.1 驱动层设计
驱动层所需要完成的工作有:
(1)MS419xx的复位;
(2)SPI总线通信,及寄存器读写接口开放;
(3)VD口设置,给出实现一个激励的接口;
(4)向应用层开放重要寄存器的设置接口,例如DT1延迟设置、AB通道DT2延迟设置、AB 通道电流占空比设置等接口;
(5)为实现位置坐标建立,需向应用层提供的接口包括 AB 通道最大总步数设置、AB 通道总步数设置等接口。
3.2 对焦功能初始化及接口中间层设计
本系统对焦功能采用模块化设计思路,对焦初始化由独立程序完成,可根据系统应用场景的需求,适配其他焦距的镜头,无需更改驱动层代码,显著提高本系统对不同类型镜头的适配能力,降低调参的复杂度,实际应用中极大地提高读码器工作效率。
对焦功能初始化实现包括步进电机的参数初始化以及建立坐标系用以标定调焦位置。将步进电机的参数配置到INI文件中,通过读取此配置文件完成步进电机参数初始化。驱动层完成框架设计后,参数配置写入INI文件,驱动层读取INI文件完成功能初始化。不同类型镜头只需更改INI文件配置,调整相关参数即可。驱动层INI的示例如下所示,相应参数说明如表2所示。
#针对变倍和聚焦共同的设置参数
[all]
DT1_REG_VALUE=7683
#变倍
[ZOOM]
DT2_REG_VALUE=2
PPW_REG_VALUE=24672
STEP_SUM_MAX_VALUE=18000
WAIT_TIME=14000
INTCT_PSUM=15750
STEP_VALUE=50
STEP_SUM_DEFAULT=0
#聚焦
[FOCUS]
DT2_REG_VALUE=2
PPW_REG_VALUE=24672
STEP_SUM_MAX_VALUE=25056
WAIT_TIME=14000
STEP_VALUE=50
STEP_SUM_CHANGE=200
表2 INI文件参数说明
芯片参数完成设置后,根据变倍和聚焦最大总步数和步数,产生足够数目的VD让变倍和聚焦位置移动到镜头对焦行程极限处,将此位置标定为0位置,向驱动层设置变倍和聚焦的总步数为0,而后根据变倍默认位置,将变倍位置从0移动到此位置,完成视野标定。
3.3 上位机与下位机消息交互程序设计
本系统中,由4个软件模块完成镜头对焦,分别是NET、CTAL、COM以及VIDEO,其中NET模块和COM模块负责上下位机消息交互,CTAL模块和VIDEO模块负责下位机调焦功能。消息通信协议是基于JSON协议,采用“包头+命令码+包长度+JSON格式”,包头4 B,命令码2 B,包长度4 B,校验2 B。下位机收到消息后,开始下位机模块间消息交互和控制对焦过程。消息从上位机PC软件传到NET模块,NET模块设置调焦距离等信息后传给CTAL模块,CTAL模块将调焦距离及微调焦距值等填充到VIDEO模块结构体实例中,发送相关消息,开始对焦。消息反馈与回复随各流程结束执行。
VIDEO模块完成初始化工作后,开始监听消息,收到CTAL模块发送焦距调整的消息后进行对焦工作,VIDEO模块工作的流程图如图4所示。
图4 VIDEO模块对焦流程图
4 测试
用搭载本系统的智能读码器作为测试设备,测试对象为不同尺寸的DM二维码、QR码、code128一维码,其中测试使用的智能读码器镜头焦距及物理行程分别为:6 mm焦距,40~400 mm;16 mm焦距,94~265 mm。进行多次人工测试,在镜头物理行程内成功率99.6%以上,条码识别失败原因有:光源不均匀、超出镜头对焦物理行程等,测试结果见表3和表4。自动对焦过程见图5、图6。
表3 6 mm焦距镜头对焦功能测试表
表4 16 mm焦距镜头对焦功能测试表
图5 智能读码器自动对焦前示意图
同时,本系统还进行了对比测试。将搭载本系统的智能读码器与SR-1000做自动对焦效果比对测试。测试结果表明SR-1000自动对焦系统也有无法成功对焦的情况出现,虽然最终靠算法的模糊识别完成了条码的识别任务,但从自动对焦效果上看,并未达到良好效果,导致产品调用了复杂算法,降低了识别速度与准确性;而同等条件下,本系统的自动对焦功能对焦清晰,条码识别快速,降低了算法的复杂度,提升了智能读码器整体性能。图7、图8所示为SR-1000与搭载了本系统的智能读码器在同等条件下的自动对焦效果。由图7可以看到,SR-1000没有完全对焦,图片模糊,而图8显示本系统对焦完全,条码正常识别,图片质量较好。
图7 SR-1000对焦效果图
图8 本系统对焦效果图
5 结论
本系统并未对自动对焦算法做出针对性改进,而通过合理的硬件选型与驱动方案的设计达到合适的效果,减轻了主控平台的计算负担,丰富了本系统的应用场景。测试结果表明,在读码器正常工作条件下,2种测试镜头自动对焦成功率99.6%以上,自动对焦效果优于基恩士SR-1000产品。
本系统为基于ARM平台的智能读码器提供了较为便捷可靠的镜头自动对焦方案,主要优点如下:
(1)通过合适的硬件驱动电路和软件控制,使对焦系统细分精度达到256,保证了步进电机运动精度更高,噪声更小;
(2)采用模块化设计思路,从软件上实现了不同焦距镜头快速兼容功能,在不改变整体框架下,显著增加了读码器的应用场景;
(3)增加了人工手动对焦功能,可在自动对焦后进行人工微调,保证了对焦效果的最优化;
(4)通过产品对比测试,在某些场景下,本系统的自动对焦效果较基恩士SR-1000更好,表明本系统整体的鲁棒性和适应性更强;
(5)镜头模组较SR-2000产品的镜头模组物理尺寸更小,能够最大限度降低智能读码器的整体尺寸,便于实现产品小型化,提高产品整体竞争能力。综上,本系统对提高读码器智能化,丰富国产读码器自动对焦方案有一定的价值。