一种带有限位功能的步进电机控制器
根据表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/.
- 基于TMS320F240控制步进电机的调焦系统设计(10-20)
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)