用电机驱动芯片L6470遇到问题了

2019-07-15 09:35发布

如题,我用ST的L6470电机驱动芯片,F091为控制芯片。现在用官方L6470的驱动程序实现控制步进电机,细分为128。最大速度设置低于1000步/秒时,正常运行不会产生太大噪音和振动,当设置最大速度超过1000步/秒时电机噪音非常大,振动厉害,当设置最大速度超过1500步/秒时,电机回出现不转的现象,并发出强烈的噪音。


  1. /**********************************************************************
  2. * 名    称:L6470_ConfigurationX
  3. * 功    能:配置X号电机各参数
  4. * 入口参数:
  5. * 出口参数:
  6. * 说    明:步进电机初始化设置
  7. ***********************************************************************/
  8. void L6470_ConfigurationX(void)
  9. {
  10.         /* 初始化L6470各寄存器初值 */
  11.         dSPIN_Regs_Struct_Reset(&dSPIN_RegsStruct);
  12.         /* 加速率的设置为466 steps/s2,范围14.55至59590 steps/s2*/
  13.         dSPIN_RegsStruct.ACC                 = AccDec_Steps_to_Par(800);//466);
  14.         /* 减速率的设置为466 steps/s2,范围14.55至59590 steps/s2 */
  15.         dSPIN_RegsStruct.DEC                 = AccDec_Steps_to_Par(800);//466);
  16.         /* 最大速度设置为488步/秒,最大速度设置范围为15.25至15610步/秒*/
  17.         dSPIN_RegsStruct.MAX_SPEED         = MaxSpd_Steps_to_Par(1000);
  18.         /* 最小速度设置为0步/秒,取值范围为0至976.3,步骤/秒*/
  19.         dSPIN_RegsStruct.MIN_SPEED        = MinSpd_Steps_to_Par(0);
  20.         /* 全步进速度设置252步/秒,范围为7.63到15625步/秒*/
  21.         dSPIN_RegsStruct.FS_SPD         = FSSpd_Steps_to_Par(2000);//252);
  22.         /*保持占空比(转矩)设定为10%,范围在0到99.6%*/
  23.         dSPIN_RegsStruct.KVAL_HOLD         = Kval_Perc_to_Par(5);
  24.         /* 运行占空比(转矩)设定为10%,范围在0到99.6%*/
  25.         dSPIN_RegsStruct.KVAL_RUN         = Kval_Perc_to_Par(10);
  26.         /* 加速的占空比(转矩)设定为10%,范围在0到99.6%*/
  27.         dSPIN_RegsStruct.KVAL_ACC         = Kval_Perc_to_Par(10);
  28.         /* 减速的占空比(转矩)设定为10%,范围在0到99.6% */
  29.         dSPIN_RegsStruct.KVAL_DEC         = Kval_Perc_to_Par(10);               
  30.         /* 加速/减速曲线斜率的速度值。 range 0 to 3906 steps/s */
  31.         dSPIN_RegsStruct.INT_SPD         = IntSpd_Steps_to_Par(200);//200);
  32.         /* 加减速——开始斜率(反电动势)BEMF补偿设置 0 to 0.4% s/step */
  33.         dSPIN_RegsStruct.ST_SLP         = BEMF_Slope_Perc_to_Par(0.038);
  34.         /* 加速度——结束斜率(反电动势)BEMF补偿设置 0 to 0.4% s/step */
  35.         dSPIN_RegsStruct.FN_SLP_ACC = BEMF_Slope_Perc_to_Par(0.063);
  36.         /* 减速度——结束斜率(反电动势)BEMF补偿设置 0 to 0.4% s/step */
  37.         dSPIN_RegsStruct.FN_SLP_DEC = BEMF_Slope_Perc_to_Par(0.063);
  38.         /* 热补偿参数设置为1,范围为1-1.46875*/
  39.         dSPIN_RegsStruct.K_THERM         = KTherm_to_Par(1);
  40.         /* 过流阈值设置1500毫安 */
  41.         dSPIN_RegsStruct.OCD_TH         = dSPIN_OCD_TH_2250mA; //375mA//750mA//1125mA//1500mA//1875mA//2250mA//2625mA//3000mA//3375mA//3750mA//4125mA//4500mA//4875mA//5250mA//5625mA//6000mA
  42.         /* 失速阈值设置至1000mA,范围:31.25 to 4000mA */
  43.         dSPIN_RegsStruct.STALL_TH         = StallTh_to_Par(3000);//1000
  44.         /* 设置到128微步模式 */
  45.         dSPIN_RegsStruct.STEP_MODE         = dSPIN_STEP_SEL_1_128;
  46.         /* 报警设置 - 启用所有警报 */
  47.         dSPIN_RegsStruct.ALARM_EN         = dSPIN_ALARM_EN_ALL_ENABLE;       
  48.                                                                         //dSPIN_ALARM_EN_OVERCURRENT
  49.                                                                    //|dSPIN_ALARM_EN_THERMAL_SHUTDOWN
  50.                                                                    //|dSPIN_ALARM_EN_THERMAL_WARNING
  51.                                                                    //|dSPIN_ALARM_EN_UNDER_VOLTAGE
  52.                                                                    //|dSPIN_ALARM_EN_STALL_DET_A       
  53.                                                                    //|dSPIN_ALARM_EN_STALL_DET_B;
  54.                                                                    //|dSPIN_ALARM_EN_SW_TURN_ON
  55.                                                                    //|dSPIN_ALARM_EN_WRONG_NPERF_CMD;
  56.         /* 内部振荡器,2MHz的的OSCOUT时钟,电源电压补偿禁用,启用过流关断,压摆率= 290 V /us,PWM频率为15.6kHz *///ENABLE// //过流关断
  57.         dSPIN_RegsStruct.CONFIG         = dSPIN_CONFIG_INT_16MHZ_OSCOUT_2MHZ
  58.                                                                 | dSPIN_CONFIG_SW_HARD_STOP
  59.                                                                 | dSPIN_CONFIG_VS_COMP_DISABLE       
  60.                                                                 | dSPIN_CONFIG_OC_SD_DISABLE        
  61.                                                                 | dSPIN_CONFIG_SR_290V_us       
  62.                                                                 | dSPIN_CONFIG_PWM_DIV_2       
  63.                                                                 | dSPIN_CONFIG_PWM_MUL_1;       
  64.         // Program all dSPIN registers
  65.         dSPIN_Registers_Set(&dSPIN_RegsStruct);
  66. }
复制代码上面是L6470初始化的参数设置。另外我测了一下L6470的输出电流,我逐渐把最大速度的值增加,输出电流也随之增加,但电流最大输出也就1.1A,不会超过1.1A。不知道什么原因,请问有大神用过这个芯片吗?怎么会出现这种状况的。


0条回答

一周热门 更多>