文献标识码:A
文章编号: 0258-7998(2011)06-0048-04
步进电机是一种将电脉冲转换为角位移或直线运动的执行设备。在非超载的情况下,电机转速和停止位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,因此步进电机广泛应用于精密控制场合[1]。
在基于图像处理评价函数的调焦系统中,常用的调焦策略包括斐波那契搜索法和爬山搜索法,其中又以爬山搜索法应用最为广泛[2]。根据爬山搜索的原理,在开始搜索时,先复位调焦镜头到起始搜索位置,在搜索焦点的过程中,要防止由于图像噪声等干扰造成程序判断错误,导致调焦镜头越出调焦范围边界。
为了适应这种控制需求,对通用步进电机控制器进行了改进,使其在具有自动和手动控制功能的同时,引入限位信号反馈控制。电机控制器使用硬件描述语言(HDL)编写,而限位信号则由位置感应电路中的光电开关器件自动反馈。
1 步进电机驱动原理
步进电机与直流电机的驱动方式不同,它需要逻辑控制器与功率驱动电路配合使用。具有位置感应电路的步进电机驱动原理图如图1所示。
电机控制器接受指令单元的控制指令,同时检测位置感应电路反馈的限位信号,然后向功率驱动单元传递驱动逻辑,功率驱动单元转换这些驱动逻辑,并输出功率脉冲驱动步进电机运行。
2 步进电机控制器
通用步进电机控制器主要用于输出驱动逻辑信号,控制步进电机的运行方向、速度、步数和停止。本文的步进电机控制器要求具有手动和自动控制功能,同时加入复位和限位处理模块,控制目标为一种二相四线制步进电机。加入限位信号(LIMIT)控制功能的控制器顶层信号如图2所示。
图2中DATA为电机自动运行的步数,HOLD控制电机停止,MANUAL为手动触发信号,DIRECTION用于控制运行方向,RESET_TRI为爬山搜索复位信号,四路OUT信号为步进电机的输出逻辑,用于四线制步进电机的驱动控制。通过控制输出逻辑的频率DRI_CLK可以控制步进电机运行速度,而输出逻辑的转换方向则控制了步进电机的运行方向[3]。
2.1 模块实现
步进电机在具有一定转换方向的驱动脉冲下运行,据此将电机控制器划分为方向控制和逻辑输出两个部分。限位信号用于复位和限定运行方向,因此在方向控制部分同时处理限位;在逻辑输出部分,按照控制需求再次划分为复位、自动和手动三个逻辑处理模块,在逻辑输出的实现方式上,复位、自动和手动通过一定的优先级逻辑,通过发送电机占用请求复用逻辑输出模块。图3为控制器模块划分示意图。
(1)爬山复位
爬山复位模块用于复位调焦镜头到爬山搜索的起始位置。电机控制器在捕获到指令单元的复位信号后,按预定的运行方向产生驱动逻辑,直至控制器收到限位信号LIMIT的有效反馈后停止。复位过程中,自动和手动请求无效。
(2)自动控制
步进电机控制器的步数数据接收端DATA在接收到指令单元传入的运行步数后,首先检查当前是否有其他电机占用请求,如果电机空闲,就按照同时传入的方向信号输出指定步数的驱动逻辑;否则忽略本次自动控制请求。
(3)手动微调
手动微调在控制器中作为一种辅助控制手段,允许人工微调调焦镜头的位置。每启动一次手动微调,电机就按照设定的运行方向,运行一段固定的微调距离。控制器在捕获到手动输入信号后,同时读取手动运行方向DIRECTION的设置值,如果当前电机空闲,则按照手动输入的方向信号输出固定步数的驱动逻辑;否则手动请求无效。
(4)方向和限位处理
当控制器运行在手动微调或自动控制时,需要防止调焦镜头越出边界。方向模块在收到有效的限位信号LIMIT后,对正在输出的方向信号取反,控制步进电机反方向运行,实现限位要求。当控制器没有收到限位信号反馈时,则读取DIRECTION端口的方向,传递给逻辑输出模块,用于控制驱动逻辑的转换方向。
(5)逻辑输出
逻辑输出模块内置逻辑发生器,逻辑发生器按照电机请求和方向信号输出驱动逻辑。方向信号用于控制驱动逻辑的转换方向;自动和手动模块的核心是计数器,电机请求信号是步数计数器的输出,因此电机请求信号的有效时间表示允许逻辑发生器运行的时钟周期数。
2.2 逻辑发生器
逻辑发生器的输出逻辑与步进电机的驱动方式密切相关。本文控制目标的驱动方式为二相双四拍式。标记步进电机的两相绕组为:A(+)、B(-)、C(+)、D(-),AB为一相,CD为另一相,则二相双四拍的驱动方式为AC-AD-BD-BC[4]。二相双四拍的驱动方式是指电机输入线的通电方式,也即功率驱动单元的输出通电脉冲,而逻辑发生器的输出还要考虑功率驱动单元的转换方式。
功率驱动单元可以使用MOS管等分立元件或专用集成电路实现[5]。为了减少电路规模,采用专用驱动芯片BA6845FS完成功率转换。该芯片具有四路电平转换,支持二相双四拍驱动方式;输出饱和电压低、内置节电和过热保护电路,可以降低电路功耗,同时提高电路可靠性。其真值表如表1所示[6]。从表1中可以看出,当控制器没有接到电机运行指令时,可以设置逻辑发生器的输出B/D为0,使步进电机的绕组处于开路状态,防止电机发热。
根据表1的功率转换方式,可以得到逻辑发生器的输出逻辑与二相双四拍绕组通电方式的对应转换关系,如表2所示。表2中1代表高电平,磁极绕组通电;0代表低电平,磁极绕组不通电。
表2中,绕组任意一次通电方式间的变化(1-2、2-3、3-4、4-1),步进电机都会转动一个步距角,即移动一步,所以可以通过控制驱动逻辑转换的次数来控制步进电机转动的步数。逻辑发生器按照脉冲计数的顺序,从1到4循环输出驱动逻辑时,绕组按照二相双四拍的方式通电,驱动步进电机正向转动,反之实现反向转动。
按照表2中的逻辑输出电平即可设计逻辑发生器。其VerilogHDL代码如下:
always @(negedge clk or negedge reset)
begin
if(!reset) q = 4’b0000;
else if(!hold || !run_en) q = 4’b0000;
//输出0可以使功率芯片输出开路状态,
//防止电机发热
else begin//电机请求有效
if(!direc_i)//反方向
case (q) //表2中的逻辑输出
4'b0111 : q = 4'b1111;
4'b1111 : q = 4'b1101;
4'b1101 : q = 4'b0101;
4'b0101 : q = 4'b0111;
default : q = 4'b0101;
endcase
else if(direc_i)//正方向
case (q)
4'b0111 : q = 4'b0101;
4'b0101 : q = 4'b1101;
4'b1101 : q = 4'b1111;
4'b1111 : q = 4'b0111;
default : q = 4'b0101;
endcase
end
end
3 仿真与实验
为了验证所设计的步进电机控制器是否能正常工作,使用EDA工具和Nios II嵌入式系统对控制器进行功能仿真和实验验证。
3.1 功能仿真
使用测试台(testbench)程序在Modelsim中对步进电机控制器进行功能仿真。仿真时钟周期为100 ns,仿真结果如图4所示。测试台程序在预定的时间点自动修改输入端口寄存器的值,并监视逻辑发生器的输出。在评价功能仿真输出结果时,主要查看自动、手动和复位3个模块的仿真输出逻辑是否按测试台程序要求转换了预定的次数,同时检查限位和停止功能是否有效。
图4中,测试台首先设置爬山复位(reset_tri)为有效,逻辑发生器开始输出驱动逻辑,直到限位信号(limit)下降沿到来,A/B/C/D恢复为0;接着置手动触发信号(manual)有效,逻辑发生器在输出手动控制模块预置的7次驱动逻辑转换后,A/B/C/D恢复为0;然后向自动步数(data)写入数据’00001001’,逻辑发生器输出了9次逻辑转换;在手动和自动控制过程中,测试台在逻辑输出过程中插入了有效的限位信号。由图4可以看出,在1600 ns和3 μs 处,驱动逻辑的转换方向发生了变化;最后,向data写入数据’00000100’,驱动逻辑重新开始输出,输出过程中遇到停止信号(hold)有效,强制输出A/B/C/D为0。仿真结果表明所设计的步进电机控制器的功能正确。
3.2 实验验证
步进电机控制器的实验验证电路如图5所示。嵌入Nios II处理器的片上可编程系统(SoPC)在ALTERA DE2开发板的FPGA中建立,同时设计了位置感应电路和功率驱动电路,用来验证复位和限位功能以及驱动步进电机。
位置感应电路如图6所示。采用光电开关(optoiso)作为限位信号传感器,当调焦镜头在设定区域内运行时,限位传感器输出高电平信号,到达边界时则输出低电平信号。光电开关输出的电平信号经存储后,输出限位信号LIMIT。
步进电机的功率驱动电路如图7所示,图中A/B/C/D是步进电机控制器输出的逻辑电平信号,经存储后送入BA6845FS进行功率转换,而功率芯片的输出端口直接与二相四线制步进电机的绕组控制线相连。
完成功率电路和位置反馈电路制作后,把它们连接在DE2开发板上。将步进电机控制器与Avalon总线信号连接后添加到Nios II系统集成工具SoPC Builder中,然后添加其他Nios II系统模块构成一个SoPC并下载到FPGA。最后编写面向Nios II处理器的步进电机控制程序,其中手动控制采用按键中断方式。通过程序向步进电机发送自动和手动以及复位控制命令,验证步进电机的运行状况。实验结果表明,步进电机可以响应自动控制和手动微调请求,同时有效的限位信号可以复位调焦镜头到达爬山起始位置和限定镜头的移动范围。
参考文献
[1] 郭丽霞.基于AMIS30522的步进电机控制器设计及实现[J].自动化与仪表,2009(8):14-17.
[2] 程永强,黄英男,谢克明.一种摄像头自动聚焦方法及硬件实现[J].电子技术应用,2009,(1):28-31.
[3] 张文爱,李逢磊,程永强.基于FPGA的步进电机驱动及自动聚焦的实现[J].电子技术应用,2008(5):33.
[4] 王美川,王紫婷.基于FPGA控制的步进电机驱动设计[J]. 电子测量技术,2008,31(6):184-187.
[5] 蔚永强,张秦岭,郭宏.一种低成本的新型步进电机驱动器的研制[J].微计算机信息,2007,23(10):95-97.
[6] Rohm CO.,LTD.Stepping motor driver BA6845FS[EB/OL].2005[2010-09-28].http://www.rohm.com.cn/.