本发明涉及ct技术领域,尤其涉及一种快速消抖的高精度collimator步进电机控制方法。
背景技术:
ct系统在放线过程中,x射线焦点在变化,需要collimator(准直器)快速跟随焦点的变化而改变开缝的大小。普通的步进电机算法无法实现高速跟踪焦点(20ms调节一次),因步进电机在停止时,如果带有惯量负载,会有抖动问题存在。抖动的幅度与时间、减速度、机械负载惯量和机械体刚度相关,一般都在原地抖动约100ms。
基于此,本案由此提出。
技术实现要素:
为解决上述问题,本发明的目的在于提供一种快速消抖的高精度collimator步进电机控制方法,用于减小步进电机的振动幅度和振动时间。
为了实现上述目的,本发明的技术方案如下:
一种快速消抖的高精度collimator步进电机控制方法,其特征在于,包括以下步骤:
s10:cpu接收和分析上位机发出的运动指令,获得初始参数;
s20:将步进电机的位移分为若干个阶段,根据初始参数得到每个阶段的位移;
s30:根据每个阶段的位移转换为各个阶段中步进电机所需运动的步数,并通过初始参数获得每一步的加速度和速度,cpu通过步进电机每一步的大小、加速度和速度计算得到步进电机动作每一步所需的时间长度;
s40:cpu计数器通过每一步所需的时间长度、加速度和速度控制步进电机动作。
进一步的,所述初始参数包括加速系数ka、目标加速度am、目标速度vm及目标位移sm,且将步进电机分为加加速段a、匀加速段b、减加速段c、匀速段d、加减速段e、匀减速段f和减减速段g七个阶段;
所述s20中包括以下判断步骤:
s21:若满足
当sm≥sa+sb+sc+se+sf+sg,则直接进入步骤s30,
当sa+sc+se+sg≤sm<sa+sb+sc+se+sf+sg,则取sd=0,并重新计算sb和sf后进入步骤s30,重新计算的
当sm<sa+sc+se+sg,则取sb=sf=sd=0,并重新计算sa、sc、se、sg后进入步骤s30,重新计算的
若不满足
当sm≥sa+sc+se+sg,则直接进入步骤s30,
当sm<sa+sc+se+sg,则取sb=sf=sd=0,并重新计算sa、sc、se、sg后进入步骤s30,重新计算的
进一步的,所述步骤s30包括以下步骤:
s31:根据各阶段位移确定步进电机在各个阶段所需运动的步数和总步数;
s32:使能timx匹配中断,此时timx寄存器内的步数i=0;
s33:进入timx中断,并记录进入中断的次数;
s34:若进入中断的次数为偶数,则脉冲脚拉至高电平,timx寄存器内的步数i=i+1,并回到步骤s33;若进入中断的次数为奇数,则脉冲脚拉至低电平,并进入步骤s35;
s35:若i≤总步数,则加加速段a和减减速段g的加速度为:a(i+1)=ai+ka*ti,匀加速段b和匀减速段f的加速度为:a(i+1)=ai,减加速段c和加减速段e的加速度为:a(i+1)=ai-ka*ti,匀速段d的加速度为:a(i+1)=0,并进入步骤s36,其中ai表示第i步时,步进电机所需的加速度;若i>总步数,则关闭timx中断,并使timx寄存器内的步数i=0;
s36:计算第i+1步的速度v(i+1)=vi+ai*ti;计算第i+1步的时间,t(i+1)=步距脚/(细分*vi),其中,步距脚和细分为步进电机参数值,为常数;
s37:使timx寄存器内的步数i=i+1,回到步骤s33。
进一步的,包括步骤s50:在运动结束瞬间进行振动抑制,所述振动抑制包括以下步骤:
s51:步进电机编码器采集模块获取当前位置信息,并将位置信息反馈给cpu;
s52:cpu将反馈的位置信息与目标位置信息进行对比,若不在目标位置则进入步骤s53,否则进入步骤s54;
s53:计算补偿量,补偿量为当前位置与目标位置的差值,根据补偿量对步进电机位置进行调节,调节完毕后回到s51;
s54:编码器再次获取当前步进电机的位置信息,并将位置信息反馈给cpu,cpu将反馈的位置信息与目标位置信息进行对比,若不在目标位置,则进入步骤s53,若在目标位置,则结束抑制调节。
本发明的优点在于:
1.加减速过程采用s型曲线加速,在加速和减速的过程中,加速度逐渐从最小值变化到最大值,保证力矩不突变,从而减小抖动幅值;
2.在停止时,将采集到的编码器值与目标位置进行比较,启动反向调节以抑制振动,减少抖动时间。
附图说明
图1为实施例中满足
图2(a)为实施例中满足
图2(b)为实施例中满足
图3(a)为实施例中sm≥sa+sc+se+sg且不满足
图3(b)为实施例中sm<sa+sc+se+sg且不满足
图4为实施例中cpu控制步进电机进行s型曲线加速时的过程示意图;
图5为弹簧负载时的示意图;
图6为实施例中步进电机停止后的振动抑制流程示意图;
图7为本实施例增加抑制流程后的总的控制流程示意图。
具体实施方式
以下结合实施例对本发明作进一步详细描述。
本实施例提出一种快速消抖的高精度collimator步进电机控制方法,包括以下步骤:
s10:cpu接收和分析上位机发出的运动指令,获得初始参数,初始参数包括加速系数ka、目标加速度am、目标速度vm、启动速度vs、停止速度ve、启动加速度as和停止加速度ae,确定上述参数后,就可确定一条唯一的s型曲线,而步进电机的启动速度vs、停止速度ve、启动加速度as和停止加速度ae均为0,所以在控制时不必在计算;
s20:将步进电机的位移分为分为加加速段a、匀加速段b、减加速段c、匀速段d、加减速段e、匀减速段f和减减速段g七个阶段,根据初始参数得到每个阶段的位移,计算过程包括以下步骤:
s21:若满足
当sm≥sa+sb+sc+se+sf+sg时,式(1)中各阶段计算位移为最终结果,加速度、速度及位移曲线如图1所示,根据计算结果直接进入步骤s30,
当sa+sc+se+sg≤sm<sa+sb+sc+se+sf+sg时,则取sd=0,并重新计算sb和sf后进入步骤s30,重新计算的
当sm<sa+sc+se+sg时,则取sb=sf=sd=0,并重新计算sa、sc、se、sg后进入步骤s30,重新计算的
若不满足
当sm≥sa+sc+se+sg时,则式(2)中各阶段计算位移为最终结果,加速度曲线如图3(a)所示,根据最终计算结果直接进入步骤s30,
当sm<sa+sc+se+sg时,则取sb=sf=sd=0,并重新计算sa、sc、se、sg后进入步骤s30,重新计算的
s30:根据每个阶段的位移转换为各个阶段中步进电机所需运动的步数,并通过初始参数获得每一步的加速度和速度,cpu通过步进电机每一步的大小、加速度和速度计算得到步进电机动作每一步所需的时间长度,如图4所示,s30包括以下步骤:
s31:根据各阶段位移确定步进电机在各个阶段所需运动的步数和总步数;
s32:使能timx匹配中断,此时timx寄存器内的步数i=0;
s33:进入timx中断,并记录进入中断的次数;
s34:若进入中断的次数为偶数,则脉冲脚拉至高电平,timx寄存器内的步数i=i+1,并回到步骤s33;若进入中断的次数为奇数,则脉冲脚拉至低电平,并进入步骤s35,脉冲脚在步进电机不动作时为高电平,一个完整的脉冲分为等时间的高电平和低电平两个阶段,在脉冲脚拉至高电平的时候,立即给timx的匹配中断寄存器赋值,使下次进入中断的时间为该步计算的脉冲时间的一半。当脉冲脚拉至低电平的时候,则说明脉冲已经发送了一半,此时需要立即计算下一个脉冲的时间,采用迭代法在各个定时器匹配中断中分别计算下一步定时器的匹配值可大大减少s型运动曲线的计算量;
s35:若i≤总步数,则加加速段a和减减速段g的加速度为:a(i+1)=ai+ka*ti,匀加速段b和匀减速段f的加速度为:a(i+1)=ai,减加速段c和加减速段e的加速度为:a(i+1)=ai-ka*ti,匀速段d的加速度为:a(i+1)=0,并进入步骤s36,其中ai表示第i步时,步进电机所需的加速度;若i>总步数,则关闭timx中断,并使timx寄存器内的步数i=0;
s36:计算第i+1步的速度v(i+1)=vi+ai*ti;计算第i+1步的时间,t(i+1)=步距脚/(细分*vi),其中,步距脚和细分为步进电机参数值,为常数;
s37:使timx寄存器内的步数i=i+1,回到步骤s33;
s40:cpu计数器通过每一步所需的时间长度、加速度和速度控制步进电机动作。
加减速过程采用s型曲线加速,在加速和减速的过程中,加速度逐渐从最小值变化到最大值,保证力矩不突变,从而减小抖动幅值,但当步进电机驱动回旋体运动,停止的瞬间,由于转动惯量的存在,会在步进电机a/b相形成的力的夹角上进行抖动。如图5所示,其原理同一根弹簧挂载一个重物后,重物的上下振动同理,当负载从某一高度落下时,必定会上下振动。为解决该缺陷,本实施例在步进电机停止时,进行了振动抑制,以减少抖动时间,即负载在惯性运动时,给予一个反方向的作用力,使其反方向调节,从而快速停止振动,振动抑制流程如图6所示,包括以下步骤:
s51:步进电机编码器采集模块获取当前位置信息,并将位置信息反馈给cpu;
s52:cpu将反馈的位置信息与目标位置信息进行对比,若不在目标位置则进入步骤s53,否则进入步骤s54;
s53:计算补偿量,补偿量为当前位置与目标位置的差值,根据补偿量对步进电机位置进行调节,调节完毕后回到s51;
s54:编码器再次获取当前步进电机的位置信息,并将位置信息反馈给cpu,cpu将反馈的位置信息与目标位置信息进行对比,若不在目标位置,则进入步骤s53,若在目标位置,则结束抑制调节。
如图7所示,为增加抑制流程后,本实施例的总的控制流程示意图。
上述实施例仅用于解释说明本发明的构思,而非对本发明权利保护的限定,凡利用此构思对本发明进行非实质性的改动,均应落入本发明的保护范围。