你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

有谁用过电机驱动芯片L6470吗?电机的速度升不上去啊。  

[复制链接]
还是看不穿 提问时间:2017-9-29 09:12 /
悬赏1ST金币已解决
如题,我用ST的L6470电机驱动芯片,F091为控制芯片。现在用官方L6470的驱动程序实现控制步进电机,细分为128。最大速度设置低于1000步/秒时,正常运行不会产生太大噪音和振动,当设置最大速度超过1000步/秒时电机噪音非常大,振动厉害,当设置最大速度超过1500步/秒时,电机回出现不转的现象,并发出强烈的噪音。

  1. <span style="background-color: rgb(255, 255, 255);">程序注释乱码了</span><div class="blockcode"><blockquote>/**********************************************************************
  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。不知道什么原因,请问有大神用过这个芯片吗?怎么会出现这种状况的。

最佳答案

查看完整内容

L6470可以在8~45V的宽电压下工作,峰值电流7A(平均电流最大3A)。 而你的电机,最大输出才1.1A。 所以,你应该看看电机的资料, 最大驱动电流是多少? 最大转速是多少? 最大支持细分步数是多少? 还有用示波器看看电机反电动势。 通常情况下,步进电机驱动电路是电流式控制设计, 电流控制器监测并控制绕组电流强度, 因为电源电压变化、停转等会导致电流有很大变化, 而且,随着转速提高或减小,电机的反电动势(BEMF)的变化 ...
收藏 2 评论42 发布时间:2017-9-29 09:12

举报

42个回答
无薪税绵 回答时间:2017-9-29 09:12:09
L6470可以在8~45V的宽电压下工作,峰值电流7A(平均电流最大3A)。
而你的电机,最大输出才1.1A。
所以,你应该看看电机的资料,
最大驱动电流是多少?
最大转速是多少?
最大支持细分步数是多少?
还有用示波器看看电机反电动势。

通常情况下,步进电机驱动电路是电流式控制设计,
电流控制器监测并控制绕组电流强度,
因为电源电压变化、停转等会导致电流有很大变化,
而且,随着转速提高或减小,电机的反电动势(BEMF)的变化也会导致绕组电流的变化。

L6470可以通过在电机绕组上施加电压来控制相电流。
虽然不能直接控制相电流的幅度,但是,
相电流与相电压的大小、负载、转矩、电机电学特性和转速密切相关。
有效输出电压与电机电源电压和补偿系数Kval的积成正比。

KVAL=((KVAL_X+BEMF_COMP)×VSCOMP ×K_THERM)×microstep
其中
KVAL_X        是当前Kval值,
BEMF_COMP 是反电动势补偿因子,
VSCOMP       是输入电压,
K_THERM     是线圈电阻补偿因子,
microstep      是当前设置的微步数。

还有,你可以利用ST公司提供的dSPIN evaluation tool可以方便地求出Kval值,
只要你把电机的各个参数代入数据框,
点击一下evaluate按键就可以求出L6470的各个补偿因子和对应寄存器值。


付上相关资料:
1、STM32控制L6470的官方资料.pdf (1.94 MB, 下载次数: 239)

评分

参与人数 2ST金币 +1 蝴蝶豆 +5 收起 理由
ouy008 + 1 很给力!
zero99 + 5

查看全部评分

还是看不穿 回答时间:2017-9-29 09:22:18
程序注释乱码了
  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. }
复制代码
五哥1 回答时间:2017-10-1 08:31:46
电机匹配吗?
jundao721 回答时间:2018-3-9 09:31:45
再对比一下电机的参数,看看和你的设置是不是合适

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

toofree 回答时间:2018-3-9 09:54:32
有电机参数吗?对这个比较好奇。以前也玩过步进电机,但没你这复杂,步速没你这快。有噪音和振动比较正常。

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

wenyangzeng 回答时间:2018-3-9 10:04:47
调高转速震动、停转,应该是保护电路起控了,或者电源供电电压下降了。

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

feixiang20 回答时间:2018-3-9 10:05:25
查看电机参数,看看是不是已经超过限制,如果是超过限制,那么只能选择最稳定的情况。电流输出也是有最大安全值的,超过的话,肯定会引起一异常,看你程序中设置到1.5A可以调节下。

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

jcx0324 回答时间:2018-3-9 11:23:34
是不是供电电压太低了,提高点电压看看

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

anny 回答时间:2018-3-9 13:06:50
检查一下电路是不是超过了最大速度限制,造成了信号不正常

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

12345下一页

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版