打印
[STM32F4]

用L6470芯片驱动电机,转速过快就出现卡顿现象

[复制链接]
3414|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wei12123|  楼主 | 2018-7-10 11:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 wei12123 于 2018-7-10 11:18 编辑

我用用L6470芯片驱动AM23HS5412-01电机,我细分1/8步,1步1.8度,6400步/s转速就出现卡顿现象,像是力矩不足一样
--------------------------------------------------------------------------------------------------------------------------------------------------
/* Structure initialization by default values, in order to avoid blank records */
        dSPIN_Regs_Struct_Reset(&dSPIN_RegsStruct);
       
        /* Acceleration rate settings to 466 steps/s2, range 14.55 to 59590 steps/s2 */
        dSPIN_RegsStruct.ACC                 = AccDec_Steps_to_Par(30);
        /* Deceleration rate settings to 466 steps/s2, range 14.55 to 59590 steps/s2 */
        dSPIN_RegsStruct.DEC                 = AccDec_Steps_to_Par(466);
        /* Maximum speed settings to 488 steps/s, range 15.25 to 15610 steps/s */
        dSPIN_RegsStruct.MAX_SPEED         = MaxSpd_Steps_to_Par(10000);
        /* Minimum speed settings to 0 steps/s, range 0 to 976.3 steps/s */
        dSPIN_RegsStruct.MIN_SPEED        = MinSpd_Steps_to_Par(0);
        /* Full step speed settings 252 steps/s, range 7.63 to 15625 steps/s */
        dSPIN_RegsStruct.FS_SPD         = FSSpd_Steps_to_Par(252);
        /* Hold duty cycle (torque) settings to 10%, range 0 to 99.6% */
        dSPIN_RegsStruct.KVAL_HOLD         = Kval_Perc_to_Par(50);
        /* Run duty cycle (torque) settings to 10%, range 0 to 99.6% */
        dSPIN_RegsStruct.KVAL_RUN         = Kval_Perc_to_Par(99);
        /* Acceleration duty cycle (torque) settings to 10%, range 0 to 99.6% */
        dSPIN_RegsStruct.KVAL_ACC         = Kval_Perc_to_Par(30);
        /* Deceleration duty cycle (torque) settings to 10%, range 0 to 99.6% */
        dSPIN_RegsStruct.KVAL_DEC         = Kval_Perc_to_Par(10);               
        /* Intersect speed settings for BEMF compensation to 200 steps/s, range 0 to 3906 steps/s */
        dSPIN_RegsStruct.INT_SPD         = IntSpd_Steps_to_Par(200);
        /* BEMF start slope settings for BEMF compensation to 0.038% step/s, range 0 to 0.4% s/step */
        dSPIN_RegsStruct.ST_SLP         = BEMF_Slope_Perc_to_Par(0.3);
        /* BEMF final acc slope settings for BEMF compensation to 0.063% step/s, range 0 to 0.4% s/step */
        dSPIN_RegsStruct.FN_SLP_ACC = BEMF_Slope_Perc_to_Par(0.1);
        /* BEMF final dec slope settings for BEMF compensation to 0.063% step/s, range 0 to 0.4% s/step */
        dSPIN_RegsStruct.FN_SLP_DEC = BEMF_Slope_Perc_to_Par(0.063);
        /* Thermal compensation param settings to 1, range 1 to 1.46875 */
        dSPIN_RegsStruct.K_THERM         = KTherm_to_Par(1.3);
        /* Overcurrent threshold settings to 1500mA */
        dSPIN_RegsStruct.OCD_TH         = dSPIN_OCD_TH_6000mA;
        /* Stall threshold settings to 1000mA, range 31.25 to 4000mA */
        dSPIN_RegsStruct.STALL_TH         = StallTh_to_Par(4000);
        /* Step mode settings to 128 microsteps */
        dSPIN_RegsStruct.STEP_MODE         = dSPIN_STEP_SEL_1_8;
        /* Alarm settings - all alarms enabled */
        dSPIN_RegsStruct.ALARM_EN         = dSPIN_ALARM_EN_OVERCURRENT | dSPIN_ALARM_EN_THERMAL_SHUTDOWN
                | dSPIN_ALARM_EN_THERMAL_WARNING | dSPIN_ALARM_EN_UNDER_VOLTAGE | dSPIN_ALARM_EN_STALL_DET_A
                | dSPIN_ALARM_EN_STALL_DET_B | dSPIN_ALARM_EN_SW_TURN_ON | dSPIN_ALARM_EN_WRONG_NPERF_CMD;
        /* Internal oscillator, 2MHz OSCOUT clock, supply voltage compensation disabled, *
         * overcurrent shutdown enabled, slew-rate = 290 V/us, PWM frequency = 15.6kHz   */
        dSPIN_RegsStruct.CONFIG         = dSPIN_CONFIG_INT_16MHZ_OSCOUT_2MHZ | dSPIN_CONFIG_SW_HARD_STOP
                | dSPIN_CONFIG_VS_COMP_DISABLE | dSPIN_CONFIG_OC_SD_ENABLE | dSPIN_CONFIG_SR_260V_us
                | dSPIN_CONFIG_PWM_DIV_2 | dSPIN_CONFIG_PWM_MUL_1;       

        /* Program all dSPIN registers */
        dSPIN_Registers_Set(&dSPIN_RegsStruct);

沙发
huzi2099| | 2018-7-10 12:29 | 只看该作者
升高驱动电压

使用特权

评论回复
评论
wei12123 2018-7-10 17:17 回复TA
真的是电压问题,万分感谢,,多谢多谢 
板凳
wei12123|  楼主 | 2018-7-10 16:33 | 只看该作者

升高不了,我换了一个更大电压输出直流电源,好像超过一定阀值就卡住了,不知道是不是我配置有问题

使用特权

评论回复
地板
huzi2099| | 2018-7-10 21:01 | 只看该作者
wei12123 发表于 2018-7-10 16:33
升高不了,我换了一个更大电压输出直流电源,好像超过一定阀值就卡住了,不知道是不是我配置有问题 ...

高速力矩小这个是正常的,因为电机转动的感生电动势把驱动电压抵消了.

你还可以考虑换同型号电感参数小的电机有利于提高转速的性能,但是低转速电流又很大,权衡一下.

步进电机就不太适合高速运动.

使用特权

评论回复
5
stm32jy| | 2018-7-10 21:32 | 只看该作者
需要驱动电压,电压要稳,硬件电路问题

使用特权

评论回复
6
huangcunxiake| | 2018-7-11 17:34 | 只看该作者
电压不足,速度快的话,提供的周期能量不足以驱动,所以就卡顿,或者发出震动的嗡嗡声。

使用特权

评论回复
7
kwin2015| | 2018-12-19 09:51 | 只看该作者
为什么你还能到6400step/s,相当于2000r/min了。我用的L6470,驱动两相步进电机,试过了很多型号的电机,不管怎么调参数,速度就上不去。也就是1000-2000step/s,而且力矩很小,手握住转轴就开始振动。有没有这方面的大神,求联系。QQ416900788

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

12

帖子

1

粉丝