驱动步进电机转动的方法和系统的制作方法_2

文档序号:8530121阅读:来源:国知局
输入端连接。这便可以同时驱动6个步进电机,能很好的满足数字化仪表中指针式仪表盘上所需驱动的电机的数目。
【附图说明】
[0046]为了使本发明的内容更容易被清楚的理解,下面根据本发明的具体实施例并结合附图,对本发明作进一步详细的说明,其中
[0047]图1是本发明一个实施例中驱动步进电机转动的方法的流程图;
[0048]图2是本发明一个实施例中驱动步进电机转动的方法的加速和恒速时序图;
[0049]图3是本发明一个实施例中驱动步进电机转动的方法的程序流程图;
[0050]图4是本发明一个实施例中驱动步进电机转动的系统的结构框图;
[0051]图5是本发明一个实施例中MC9S12H256芯片与步进电机的电路连接示意图。
【具体实施方式】
[0052]实施例1
[0053]本实施例提供一种驱动步进电机转动的方法,参见图1所示,包括如下步骤:
[0054]S1:设置步进电机从开始启动至恒速运转所需加速的总次数N,以及第η次加速所需要的时间tn,η为整数且I彡η彡N,同时,tn < tn_1D其中N的取值越大,步进电机的加速过程越平缓,但是综合考虑到所要求到达恒速运转所需的时间以及驱动步进电机加速过程的处理器的内存,N的取值一般为:5<N< 10。设置tn<tn_i保证了随着步进电机加速的进行,η越接近N时,第η次加速所需要的时间tn越短。
[0055]S2:按照所述总次数N及每一次加速所需要的时间tn,对所述步进电机进行驱动。
[0056]S3:当加速次数等于所述总次数N之后,驱动所述步进电机以恒定速度运转至目标位置。
[0057]本实施例提供的一种驱动步进电机转动的方法,在控制流程上只设置加速和恒速的控制过程,使得控制过程简单,同时,由于所需加速的总次数N和第η次加速所需要的时间&均可调,这便保证了步进电机运行的稳定性即保证了步进电机平稳快速的转动至恒速区。
[0058]在上述方案的基础上,所述步骤SI中,设置步进电机第η次加速所需要的时间tn的具体过程为:设定基准时间h ;设置加速数组,所述加速数组中包括a1; afan_1; an共N个数组元素,其中,Xt0 = tn, an-an_! < an_「an_2。η_1、η_2的取值均落入小于等于N,大于等于I的范围内。通过设置加速数组和基准时间,使得步进电机按照预设的加速过程,平稳快速的转动到恒速区,便于对步进电机的加速过程进行控制。
[0059]基准时间h同时影响步进电机在加速区和恒速区的运行速度,基准时间h的数值加大,步进电机在加速区和恒速区的速度都减慢,基准时间h可为驱动步进电机运转的芯片的PWM中断周期的2-16倍,根据选择的驱动步进电机运转的芯片的型号,可以得知所要求的PWM中断周期。一般情况下PWM中断周期是一个范围,在实际应用时,可以选择中断周期范围内的最大值即可。
[0060]所述加速数组中N个数组元素Spafa1^an的选取,需满足当η等于N时,aN_aN_i=1,即保证了步进电机在恒速区驱动一步的时间等于基准时间h,在加速区驱动一步的时间等于基准时间h乘以加速数组中两个相邻元素的差值。但是对于η不为N的情况下,Bn-Bn^1的值可以为1,也可以为根据电机运转的实际情况所选择的其他值。
[0061]例如,用acc_array[n]表示所述加速数组,图2给出了一种具体实现步进电机加速和恒速运行时序图,当N = 6时,贝U加速数组中共有6个元素,此处设置acc_array [I]=6,acc_array[2] = ll,acc_array[3] = 15,acc_array[4] = 18,acc_array[5] = 20,acc_array [6] = 21,则表示第一次加速所需要的时间为= (a「a0) Xt0 = (6-0) Xt0 = 6t0,其中%设置为零,即:间隔6倍的基准时间驱动第I步,间隔5倍的基准时间驱动第2步,间隔4倍的基准时间驱动第3步,依次类推,驱动5步后,步进电机从加速区进入恒速区,步进电机进入恒速区后始终以基准时间为运行周期,驱动步进电机转动指定的步数到目标位置。作为其他实现方式,加速数组的元素取值可以为不同组合,需满足G1Talri) Xtci = IaN-aN_! = I,而a2_a1; a3_afaN_「aN_2可以为其他组合的递减数值即可。图3给出了一种具体实现本实施例上述方案的流程图,其中aCC_CyCle定义为步进电机目前所处的状态值,设置acc_cycle初始值等于零,当每一次基准时间到时,将acc_cycle加I后与加速数组中最后一个元素值即acc_array[6] = 21的大小进行比较,若大于等于21,则表示步进电机已经加速完成,进入恒速区运转至目标位置;若小于21,则表示步进电机仍处于加速区中,此时比较acc_cycle是否等于加速数组中任一元素值,即是否等于6、11、15、18和20,若等于,则说明需要对步进电机进行加速,若不等于,说明此时还不到对步进电机进行下一次加速的时间。
[0062]本实施例中选择数字化仪表使用的步进电机为例,其为一种多磁极,90度相位差的精密微型步进电机,其将数字信号直接作为模拟的角度显示输出。这种步进电机需要两路逻辑脉冲信号驱动,可工作于5V-10V的驱动脉冲下,输出轴的步距角最小可达1/12度,最大角速度为600度/秒。一般选择正弦波驱动脉冲信号和余弦波驱动脉冲信号对步进电机进行驱动。本实施例中以分步模式驱动为例进行说明。
[0063]所述步骤S2中,对所述步进电机进行驱动的具体步骤如下:
[0064]S21:实时获取所述步进电机的当前位置,并根据所述当前位置获得每一路驱动脉冲信号的占空比。
[0065]S22:输出相应占空比的驱动脉冲信号驱动所述步进电机转动一个步长。
[0066]本实施例提供的驱动步进电机转动的方法可以实时的确定步进电机的运行状态,控制步进电机的运行过程,运用于指针式仪表盘上时,能实时准确的反应车辆的工作状态。
[0067]在上述方案的基础上,所述步骤S21中具体包括如下步骤:
[0068]S211:获得正弦波驱动脉冲信号和余弦波驱动脉冲信号的分步数F。
[0069]S212:获得所述驱动脉冲信号上与所述步进电机当前位置Ma相对应的分步位置Ad, Ad = Ma% F, (%为取余数的运算符)。
[0070]S213:根据所述分步位置获取正弦波驱动脉冲信号和余弦波驱动脉冲信号的占空比:
[0071]Sin_table = Sin(2 Ji XAd/F);
[0072]Cos_table = Cos (2 Ji XAd/F)。
[0073]例如,当F = 8即采用8分步驱动模式,则Ad = Ma% F的结果可以为0,I, 2,......7,相应的占空比为:Sin_table = {SinO, Sin ( jt /4), Sin ( jt /2), Sin (3 jt /4),Sin jt,Sin (5 jt /4),Sin (3 jt /2),Sin (7 jt /4)},即 Sin_table = {0,0.707,I, 0.707,0,0.707,I,0.707}。设步进电机当前位置Ma为第二步,则所述驱动脉冲信号上与所述步进电机当前位置Ma相对应的分步位置Ad = 2% 8 = 2 ;则根据所述分步位置获取正弦波驱动脉冲信号和余弦波驱动脉冲信号的占空比:Sin_table = Sin(2 jt X2/8) = I ;Cos_table =Cos (2 jt X 2/8) = 0。
[0074]实施例2
[0075]本实施例提供的一种驱动步进电机转动的系统,参见图4所示,包括:
[0076]数据设置模块,用于设置电机从开始启动至恒速运转所需加速的总次数N,以及第η次加速所需要的时间tn,η为整数且I彡η彡N,同时,tn < ;
[0077]加速驱动信号输出模块,用于按照所述总次数N及每一次加速所需要的时间tn,对电机进行驱动;
[0078]恒速驱动信号输出模块,用于当加速次数等于所述总次数N之后,驱动电机以恒定速度运转至目标位置。
[0079]作为一种优选的方案在上述方案的基础上,所述数据设置模块中具体包括:基准时间设置子模块和加速数组设置子模块,其中,基准时间设置子模块,用于设置所述步进电机加速的基准时间h ;加速数组设置子模块,用于设置加速数组,所述加速数组中包括a1;a2"-an_1, an* N 个数组元素,其中,Xt0 = tn, an-an^ < an_「an_2。η_1、η_2 的取值
当前第2页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1