搜索
bottom↓
回复: 3

L6470控制42步进电机时出现电机停不下来的问题。

[复制链接]

出0入0汤圆

发表于 2018-4-10 18:42:47 | 显示全部楼层 |阅读模式
        dSPIN_Regs_Struct_Reset(&dSPIN_RegsStruct);
       
        /* Acceleration rate settings to dSPIN_CONF_PARAM_ACC in steps/s2, range 14.55 to 59590 steps/s2 */
        dSPIN_RegsStruct.ACC                 = AccDec_Steps_to_Par(600);
        /* Deceleration rate settings to dSPIN_CONF_PARAM_DEC in steps/s2, range 14.55 to 59590 steps/s2 */
        dSPIN_RegsStruct.DEC                 = AccDec_Steps_to_Par(600);
        /* Maximum speed settings to dSPIN_CONF_PARAM_MAX_SPEED in steps/s, range 15.25 to 15610 steps/s */
        dSPIN_RegsStruct.MAX_SPEED         = MaxSpd_Steps_to_Par(3000);
        /* Full step speed settings dSPIN_CONF_PARAM_FS_SPD in steps/s, range 7.63 to 15625 steps/s */
        dSPIN_RegsStruct.FS_SPD         = FSSpd_Steps_to_Par(800);
#if defined(L6470)
        /* Minimum spe4ed settings to dSPIN_CONF_PARAM_MIN_SPEED in steps/s, range 0 to 976.3 steps/s */
        dSPIN_RegsStruct.MIN_SPEED        = MinSpd_Steps_to_Par(0);
        /* Acceleration duty cycle (torque) settings to dSPIN_CONF_PARAM_KVAL_ACC in %, range 0 to 99.6% */
        dSPIN_RegsStruct.KVAL_ACC         = Kval_Perc_to_Par(10);
        /* Deceleration duty cycle (torque) settings to dSPIN_CONF_PARAM_KVAL_DEC in %, range 0 to 99.6% */
        dSPIN_RegsStruct.KVAL_DEC         = Kval_Perc_to_Par(10);       
        /* Run duty cycle (torque) settings to dSPIN_CONF_PARAM_KVAL_RUN in %, range 0 to 99.6% */
        dSPIN_RegsStruct.KVAL_RUN         = Kval_Perc_to_Par(10);
        /* Hold duty cycle (torque) settings to dSPIN_CONF_PARAM_KVAL_HOLD in %, range 0 to 99.6% */
        dSPIN_RegsStruct.KVAL_HOLD         =Kval_Perc_to_Par(5);
                /* Thermal compensation param settings to dSPIN_CONF_PARAM_K_THERM, range 1 to 1.46875 */
        dSPIN_RegsStruct.K_THERM         = KTherm_to_Par(1);
        /* Intersect speed settings for BEMF compensation to dSPIN_CONF_PARAM_INT_SPD in 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 dSPIN_CONF_PARAM_ST_SLP in % step/s, range 0 to 0.4% s/step */
        dSPIN_RegsStruct.ST_SLP         = BEMF_Slope_Perc_to_Par(0.038);
        /* BEMF final acc slope settings for BEMF compensation to dSPIN_CONF_PARAM_FN_SLP_ACC in% step/s, range 0 to 0.4% s/step */
        dSPIN_RegsStruct.FN_SLP_ACC = BEMF_Slope_Perc_to_Par(0.063);
        /* BEMF final dec slope settings for BEMF compensation to dSPIN_CONF_PARAM_FN_SLP_DEC in% step/s, range 0 to 0.4% s/step */
        dSPIN_RegsStruct.FN_SLP_DEC = BEMF_Slope_Perc_to_Par(0.063);
        /* Stall threshold settings to dSPIN_CONF_PARAM_STALL_TH in mA, range 31.25 to 4000mA */
        dSPIN_RegsStruct.STALL_TH         = StallTh_to_Par(1500);//StallTh_to_Par(3000);//StallTh_to_Par(dSPIN_CONF_PARAM_STALL_TH);
        /* Set Config register according to config parameters */
        /* clock setting, switch hard stop interrupt mode, */
        /*  supply voltage compensation, overcurrent shutdown */
        /* slew-rate , PWM frequency */
        dSPIN_RegsStruct.CONFIG         = (uint16_t)dSPIN_CONF_PARAM_CLOCK_SETTING |
                                          (uint16_t)dSPIN_CONF_PARAM_SW_MODE           |
                                          (uint16_t)dSPIN_CONF_PARAM_VS_COMP       |   
                                          (uint16_t)dSPIN_CONF_PARAM_OC_SD         |
                                          (uint16_t)dSPIN_CONF_PARAM_SR                   |
                                          (uint16_t)dSPIN_CONF_PARAM_PWM_DIV       |
                                          (uint16_t)dSPIN_CONF_PARAM_PWM_MUL;
#endif /* defined(L6470) */
        /* Overcurrent threshold settings to dSPIN_CONF_PARAM_OCD_TH in mA */
        dSPIN_RegsStruct.OCD_TH         = dSPIN_OCD_TH_1500mA;  
        /* Alarm settings to dSPIN_CONF_PARAM_ALARM_EN */
        dSPIN_RegsStruct.ALARM_EN         = dSPIN_CONF_PARAM_ALARM_EN;
        /* Step mode and sycn mode settings via dSPIN_CONF_PARAM_SYNC_MODE and dSPIN_CONF_PARAM_STEP_MODE */
        dSPIN_RegsStruct.STEP_MODE         = dSPIN_STEP_SEL_1_128;

        /* Program all dSPIN registers */
        dSPIN_Registers_Set(&dSPIN_RegsStruct);
  
                                dSPIN_Move(FWD, (uint32_t)(10000));
                                while(dSPIN_Busy_HW());
                               
                                dSPIN_Run(REV, Speed_Steps_to_Par(400));
                                        dSPIN_Delay(0x004FFFFF);
                                        dSPIN_Hard_Stop();
                                  dSPIN_Move(FWD, (uint32_t)(10000));
                                while(dSPIN_Busy_HW());
                                GPIO_SetBits(GPIOE,GPIO_Pin_5);
                                while(1);

使用官方的程序,如果只执行        move指令,电机运行没有问题。                       
dSPIN_Move(FWD, (uint32_t)(10000));
while(dSPIN_Busy_HW());
但是如果如上执行一个move指令,在执行一个RUN指令,在执行一个MOVE指令后,电机就一直转,且方向也不会变。
                               

阿莫论坛20周年了!感谢大家的支持与爱护!!

如果想吃一顿饺子,就得从冰箱里取出肉,剁馅儿,倒面粉、揉面、醒面,擀成皮儿,下锅……
一整个繁琐流程,就是为了出锅时那一嘴滚烫流油的热饺子。

如果这个过程,禁不住饿,零食下肚了,饺子出锅时也就不香了……《非诚勿扰3》

出0入0汤圆

发表于 2018-4-10 20:10:33 | 显示全部楼层
先确认dSPIN_Hard_Stop();是否能停下来。

出0入0汤圆

 楼主| 发表于 2018-4-11 11:17:14 | 显示全部楼层
ap0705307 发表于 2018-4-10 20:10
先确认dSPIN_Hard_Stop();是否能停下来。

不会停下。

出0入0汤圆

发表于 2019-4-16 14:59:17 | 显示全部楼层

我现在也是停不下来
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-3-28 19:51

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表