在直流电机操控系统中,被操控量一般都是电机的转速,操控的意图是坚持电机的转速在所需求的定值上。但在实践出产进程中,电机带动出产机械或许其他负载运动的体现不必定都是转速,也可能是使出产机械或其组织发生必定的方位改变,这时需求的操控量就不再是电机的转速,而是操控目标的直线位移,因而需将电机的转速输出转化为电机的位移输出。
1 电机方位操控模块的规划
1.1 直流电机方位操控的办法
在此,运用maxon直流电机,经过与其配套的行星齿轮箱和磁编码器,可以完成从转速到位移的转化。其作业原理如下:电机滚动时,编码器开端输出反应脉冲,反应脉冲的频率与电机的转速成正比,最高可达20 kHz。电机轴每旋转一圈,编码器就输出16个反应脉冲,经过核算得出每个脉冲代表电机所带负载发生0.006 14 mm的位移。这样就可以把要操控的位移量用反应脉冲的个数来表明,作为FPGA中方位操控模块给定值,当电机滚动时,FPGA中的计数器会把反应脉冲计数并保存,方位操控模块不断读取计数器里的计数值,并与方位操控模块中的给定值比较。当它们持平的时分,方位操控模块宣布中止信号,然后操控电机刹车。电机中止运动后,再读取计数器中的计数值,与给定值做比较,核算出差值。假如差值在操控精度规模内,则此次操控完毕;假如不在规模内,将差值作为下一次操控的给定值,持续操控电机运动,直至抵达要求的精度规模中止。
1.2 方位操控模块的组成
方位操控模块由3部分组成:比较模块、驱动模块和延时模块。比较模块的效果是将编码器反应的脉冲个数与给定的脉冲个数做比较,当它们持平时,给出电机中止信号。驱动模块的效果是依据输入的操控信号操控电机的运动。延时模块的效果是避免丢掉反应脉冲,确保精确读回编码器反应的脉冲个数。接下来将要点介绍各个模块的详细完成。
1.2.1 比较模块
图1中,data_in[15..O]为给定的反应脉冲个数;EN为电机作业使能信号;inclk为作业时钟;feedback[15..0]为电机运行时计数器的计数值;stopinter为电机中止时的模块内部传递信号;“O”表明无效,“1”表明有用。比较模块的作业原理如下:比较模块在接收到给定值后,也便是依据要操控的位移量所核算出的反应脉冲的个数,将其锁存。在作业时钟的效果下,模块会不断地检测EN信号是否有用,假如EN信号有用,模块将开端读取反应计数值,并与给定值做比较;假如持平,模块以为电机所带负载的运动抵达指定方位,这时输出的stopinter信号有用,操控电机刹车;不然 stopinter信号无效,电机持续运动。
如图2所示,假定给定的计数值为7。当使能信号EN有用时,模块开端读端口feedback[15..O]中的值(电机运行时经过磁编码器反应回来的脉冲个数),与data_in[15..0]中给定的脉冲个数做比较。当它们持平的时分,表明电机所带的负载运动到了指定方位,此刻stopinter信号有用,开端操控电机刹车并中止。
1.2.2 驱动模块
图3中,derect[1..O]为电机的操控输入信号;EN为电机作业使能信号,“0”表明无效,“1”表明有用;inclk为作业时钟; stopinter为电机中止信号的模块内部传递信号;control_outA,control_outB为操控电机的输出信号,这两个操控信号直接衔接电机的驱动芯片。驱动模块的作业原理如下:
在作业时钟的效果下,驱动模块会不断地检测EN信号和stopinter信号是否有用,假如:EN有用,而且stopinter无效的时分,模块的输出 controi_outA,cont-orl_outB取决于电机操控输入信号derect[1..0]的状况,当derect[1..0]为“01” 时,control_outA输出为“0”;control_outB输出为“1”,表明操控电机回转。当derect[1..0]为“10”时, 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”时,模块的输出control_outA,contorl_outB都为“1”,对电机不做任何操控。当EN信号变为“1”时,表明电机开端运动,模块的输出control_outA为“O”,Contorl_outB为“1”,与direction [1..0]中的值“01”相同,此刻电机回转。当stopinter信号变为“1”时,模块的输出control_outA为“O”; contorl_outB也为“O”,此刻电机刹车并中止。当EN信号为“1”,stopinter信号再次为“0”时,电机再次开端运动,模块的输出 control_outA为“1”;con-torl_outB为“0”,与direction[1..O]中的值“10”相同,此刻电机回转。
1.2.3 延时模块
图4中,EN为延时的使能信号,也便是计数比较模块的输出信号stopinter;inclk为作业时钟;stop为电机中止信号对外部的输出信号。延时模块(如图5所示)的作业原理如下:当延时模块检测到stopinter信号为“1”时,模块内的计数器开端作业,计数器时钟即模块的作业时钟10 kHz,当记满300后,模块输出信号为“1”。延时模块检测到stopinter信号为“0”时,模块内计数器不作业,模块输出信号为“0”。
当电机刹车时,由于存在惯性,电机不会当即中止,会有一段滑行的进程,在这个进程中,电机仍然会经过磁编码器回来反应脉冲,仅仅由于电机的转速下降,反应脉冲的频率大大下降。当stopinter信号变为“1”时,电机开端刹车,假如此刻马上读取feedback[15..O]端口上的反应脉冲数值,核算出电机所带负载的方位,那么必然会丢掉掉滑行进程中的反应脉冲。这样就会导致读回的反应脉冲数与实践电机回来的反应脉冲数不持平,然后严重地影响操控精度,所以必须在stopinter信号变为“1”后,延伸一段时刻,确保电机中止不动后,再给出STOPTEST信号,作为读取反应脉冲数值的有用信号,这时用读回的反应脉冲数值核算出负载的实践方位是精确的。
经过试验,在电机以最高转速运行时,让电机刹车,用逻辑分析仪抓出反应脉冲的波形,找出反应脉冲频率开端忽然下降直到反应脉冲消失的那段时刻,便是所需求的延时。经过重复进行试验,测试出这段时刻为30 ms,其间的反应脉冲个数为20个。因而把要操控的位移量换算成反应脉冲的个数后,用这个值减去20作为比较模块给定值,就可以抵消滑行进程中添加的20 个脉冲。这样对电机的操控可以抵达一次到位,不需求进行再次调理。延时模块仿真图如图6所示。
2 结语
现场可编程门阵列(FPGA)器材体积小、速度快、集成度高,可以用硬件电路来完成算法。运用FPGA操控电机,可以确保操控的实时性和可靠性。它作为一种有用的数字化操控办法必将广泛地为人们所承受和运用。
发布者:小宇