zoukankan      html  css  js  c++  java
  • 电机控制8---步进电机常见问题

    五、步进电机常见问题

      1.步进电机T型加速几个参量的作用?

        步进电机运行最大步数(steps):步进电机运行的总步数,决定了步进电机运行的时间。

        步进电机加速阶段加速度accel:该参量决定了步进电机达加速快慢,值越大越早达到最大速度。但是选择加速度过大,将导致脉冲频率增大过快,会导致步进电机丢步,从而卡死。最好选择在5至10。

       步进电机减速阶段减速度(decel):该参量决定步进电机减速快慢,与加速度一样,过大会导致步进电机过冲。从而卡死。

       步进电机运行速度(speeds):该参数决定步进电机运行最快速度,步进电机最快速度由步进电机所能接收的极限频率决定。本例测试步进电机达到速度25时,端口输出脉冲频率为62.5kHz。

    2.如何防止步进电机加速或减速阶段卡死?

       有以下几种解决方法:1.调低加速或减速值

                            2.加入合适的延时时间----一般以微秒计。可以得到极高的运行速度。

     3.步进电机运行速度与延迟时间的关系

          虽然AVR算法提供了控制步进电机的有效解决方案,但是该算法在不同的时间端频率依旧存在骤升现象,因此步进电机会出现卡死现象。所以相让步进电机运行在高频状态仅仅依靠AVR算法不能胜任。在程序适当位置加上延时,能平稳加速,不出现卡死现象。但是,随之而来的是步进电机加速阶段时间延长。

    Speeds(无单位)

    Delay(us)

    运行状态

    <10

    无需延时

    平稳

    25

    10

    平稳

    35

    10

    平稳,有小噪声。

    45

    10

    平稳

    55

    10

    平稳,噪声变大。

        步进电机运行可靠速度选择在0至50之间。加速度确定为5,减速度确定为5.步数为5000,延时时间为10微秒.所以PID所要计算的只是速度。

    4.如何进行位置控制?

        步进电机的运行方式,决定步进电机能够使用开环方式进行控制。开环状态下,能够计算步进电机接收脉冲的次数,也就能实现步进电机精确定位,也就能够根据此获得步进电机旋转圈数,或转换为步进电机转轴旋转总位移。在直线状态,就转换为皮带移动距离,进而能够判断平台大致处于何位置。

       32细分下,步进电机旋转圈数r=pluse/(32*200)。旋转一圈皮带移动60mm。

       取主轴长600mm,左侧、右侧剩下10mm。从左侧到右侧仅需10圈。也就是64000个脉冲。

    理论上,统计脉冲数,便能控制住平台不撞上边缘。

    开环控制总会存在一些误差,想要完全消除误差,只能采用其它方式,进行闭环控制。

    5.换向过程中会遇到的问题?

        步进电机在换向过程中,往往是向某一方向快速运动,突然停止,并且在高频率下换向,这将导致步进电机卡死。因此,想要换向的前提必定是当前端口输出的频率设置为零,这样就能够解决步进电机在高频换向的情况下卡死。

    总结一下,步进电机可能出现以下几种卡死现象。

      1.步进电机启动频率过高导致卡死。

      2.步进电机减速频率过高导致卡死。

      3.T型加速频率提升过快卡死。

      4.T型减速频率降低过快卡死。

      5.步进电机高频换向卡死。

      从不同情景下会出现这些情况,但是,具体只有一种卡死,就是频率变化过快导致卡死。

    6.程序运行中,将运行状态设置为stop,步进电机依旧运转,什么原因?

        经过测试,发现步进电机运行状态已经被设置为零,但是,时钟依旧在进行比较输出,不断地进入中断,也就不断地拉高及拉低IO口。因此,步进电机在脉冲的输入下,依旧在旋转。如果设置步进电机运行状态停止,那么就应当关闭时钟。

         对应的函数为   TIM_Cmd(TIM4,DISABLE);虽然该函数能够解决脉冲输出问题,但是再次开启需要再次配置。(似乎又不用了----给定合适的延迟时间,给10ms延时即可。)

    7.程序运行步数远远多于实际步数,怎么回事?

       这是由于T型加速算法造成的,经过测试,程序会从加速阶段进入运行阶段,但是需要很长时间才能进入减速阶段。T型算法计算出的减速阶段的值为8亿5千万。而运行步数则是进入中断的次数,想要到达减速阶段,需要运行较长时间。

    8.步进电机换向停顿问题,如何解决?

        步进电机换向停顿是由于在换向过程中端口输出的脉冲数量过少,故步进电机移动缓慢,也就出现了换向停顿问题。一解决方法是增大加速度,使得一换向就有较大频率的脉冲输出。但是加速度过快倒立摆卡死。 二是减少延迟时间。

    对问题5的进一步解释,换向需要完成这个动作。

      

    1.检测是否换向

    2.电机停转---运行状态设stop,关中断。(关闭时钟)

    3.置相反位(方向位0设1,1设0)。

    4.清零中断函数中的step_count

    new_step_delay

    Rest

    PMotorPara->accel_count

    PMotorPara->run_state设定为加速状态

    5.Speed_Parameter()设定速度

    6.使能时钟

    清除PMotorPara->pulse

    电动机视频汇总:电动机视频  

    其它博文链接:  电机控制1-电机

                             电机控制4---步进电机模型及控制(1)

                             电机控制5---步进电机模型及控制(2)

                             电机控制6---步进电机模型及控制(3)

                             电机控制7---步进电机模型及控制(4)

                             电机控制8---步进电机常见问题

     

  • 相关阅读:
    xxx.app已损坏,打不开.你应该将它移到废纸篓-已解决
    idea 配置maven一直停留在loading archetype list
    pom.xml 识别xml文件
    idea .defaultMessage
    处理GitHub上的不允许100MB大文件上传
    Makefile 简易教程
    Android:用Intent传送图片
    Android: ListView的使用(列表控件)
    Android: SharedPreferences的简单使用(数据可持久化)
    Andriod:一个Activity向另一个Activity传递数据
  • 原文地址:https://www.cnblogs.com/deciduousmap/p/12207480.html
Copyright © 2011-2022 走看看