1 电机位置控制模块的设计
1.1 直流电机位置控制的方法
在此,使用maxon直流电机,通过与其配套的行星齿轮箱和磁编码器控制工程网版权所有,能够实现从转速到位移的转换。其工作原理如下:电机转动时
www.cechina.cn
,编码器开始输出反馈脉冲,反馈脉冲的频率与电机的转速成正比,最高可达20 kHz。电机轴每旋转一圈,编码器就输出16个反馈脉冲,通过计算得出每个脉冲代表电机所带负载产生0.006 14 mm的位移。这样就可以把要控制的位移量用反馈脉冲的个数来表示,作为FPGA中位置控制模块给定值,当电机转动时www.cechina.cn
,FPGA中的计数器会把反馈脉冲计数并保存,位置控制模块不断读取计数器里的计数值,并与位置控制模块中的给定值比较。当它们相等的时候CONTROL ENGINEERING China版权所有
,位置控制模块发出停止信号,从而控制电机刹车。电机停止运动后,再1.2 位置控制模块的组成
位置控制模块由3部分组成:比较模块、驱动模块和延时模块。比较模块的作用是将编码器反馈的脉冲个数与给定的脉冲个数做比较控制工程网版权所有,当它们相等时
www.cechina.cn
,给出电机停止信号。驱动模块的作用是根据输入的控制信号控制电机的运动。延时模块的作用是防止丢失反馈脉冲,确保准确读回编码器反馈的脉冲个数。接下来将重点介绍各个模块的具体实现。1.2.1 比较模块
图1中,data_in[15..O]为给定的反馈脉冲个数;EN为电机工作使能信号;inclk为工作时钟;feedback[15..0]为电机运行时计数器的计数值;stopinter为电机停止时的模块内部传递信号;“O”表示无效,“1”表示有效。比较模块的工作原理如下:比较模块在接收到给定值后,也就是根据要控制的位移量所计算出的反馈脉冲的个数,将其锁存。在工作时钟的作用下,模块会不断地检测EN信号是否有效CONTROL ENGINEERING China版权所有,如果EN信号有效,模块将开始读取反馈计数值,并与给定值做比较;如果相等,模块认为电机所带负载的运动到达指定位置,这时输出的stopinter信号有效www.cechina.cn,控制电机刹车;否则 stopinter信号无效,电机继续运动。
如图2所示,假设给定的计数值为7。当使能信号EN有效时
www.cechina.cn
,模块开始读端口feedback[15..O]中的值(电机运行时通过磁编码器反馈回来的脉冲个数),与data_in[15..0]中给定的脉冲个数做比较。当它们相等的时候CONTROL ENGINEERING China版权所有
,表示电机所带的负载运动到了指定位置,此时stopinter信号有效,开始控制电机刹车并停止。图3中,derect[1..O]为电机的控制输入信号;EN为电机工作使能信号,“0”表示无效,“1”表示有效;inclk为工作时钟; stopinter为电机停止信号的模块内部传递信号;control_outA
www.cechina.cn
,control_outB为控制电机的输出信号,这两个控制信号直接连接电机的驱动芯片。驱动模块的工作原理如下:在工作时钟的作用下,驱动模块会不断地检测EN信号和stopinter信号是否有效,如果:EN有效,并且stopinter无效的时候,模块的输出 controi_outA,cont-orl_outB取决于电机控制输入信号derect[1..0]的状态
www.cechina.cn
,当derect[1..0]为“01” 时www.cechina.cn
,control_outA输出为“0”;control_outB输出为“1”,表示控制电机反转。当derect[1..0]为“10”时www.cechina.cn
, control_outA输出为“1”;con-trol_outB输出为“O”,表示控制电机正转。驱动控制模块一旦检测到stop信号有效, control_outA和control_outB的输出都为“O”,表示控制电机刹车并停止。在EN和stop信号都无效的时候, control_outA和con-trol_outB的输出都为“1”,表示对电机不做任何控制。如图4所示,当EN和stopinter信号都为“0”时