OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 7308|回复: 14

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

[复制链接]

11

主题

179

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1103
金钱
1103
注册时间
2016-7-19
在线时间
168 小时
发表于 2017-9-29 09:17:27 | 显示全部楼层 |阅读模式
5金钱
如题,我用ST的L6470电机驱动芯片,F091为控制芯片。现在用官方L6470的驱动程序实现控制步进电机,细分为128。最大速度设置低于1000步/秒时,正常运行不会产生太大噪音和振动,当设置最大速度超过1000步/秒时电机噪音非常大,振动厉害,当设置最大速度超过1500步/秒时,电机回出现不转的现象,并发出强烈的噪音。
[mw_shl_code=applescript,true]/**********************************************************************
* 名    称:L6470_ConfigurationX
* 功    能:配置X号电机各参数
* 入口参数:
* 出口参数:
* 说    明:步进电机初始化设置
***********************************************************************/
void L6470_ConfigurationX(void)
{
        /* 初始化L6470各寄存器初值 */
        dSPIN_Regs_Struct_Reset(&dSPIN_RegsStruct);
        /* 加速率的设置为466 steps/s2,范围14.55至59590 steps/s2*/
        dSPIN_RegsStruct.ACC                 = AccDec_Steps_to_Par(800);//466);
        /* 减速率的设置为466 steps/s2,范围14.55至59590 steps/s2 */
        dSPIN_RegsStruct.DEC                 = AccDec_Steps_to_Par(800);//466);
        /* 最大速度设置为488步/秒,最大速度设置范围为15.25至15610步/秒*/
        dSPIN_RegsStruct.MAX_SPEED         = MaxSpd_Steps_to_Par(1000);
        /* 最小速度设置为0步/秒,取值范围为0至976.3,步骤/秒*/
        dSPIN_RegsStruct.MIN_SPEED        = MinSpd_Steps_to_Par(0);
        /* 全步进速度设置252步/秒,范围为7.63到15625步/秒*/
        dSPIN_RegsStruct.FS_SPD         = FSSpd_Steps_to_Par(2000);//252);
        /*保持占空比(转矩)设定为10%,范围在0到99.6%*/
        dSPIN_RegsStruct.KVAL_HOLD         = Kval_Perc_to_Par(5);
        /* 运行占空比(转矩)设定为10%,范围在0到99.6%*/
        dSPIN_RegsStruct.KVAL_RUN         = Kval_Perc_to_Par(10);
        /* 加速的占空比(转矩)设定为10%,范围在0到99.6%*/
        dSPIN_RegsStruct.KVAL_ACC         = Kval_Perc_to_Par(10);
        /* 减速的占空比(转矩)设定为10%,范围在0到99.6% */
        dSPIN_RegsStruct.KVAL_DEC         = Kval_Perc_to_Par(10);               
        /* 加速/减速曲线斜率的速度值。 range 0 to 3906 steps/s */
        dSPIN_RegsStruct.INT_SPD         = IntSpd_Steps_to_Par(200);//200);
        /* 加减速——开始斜率(反电动势)BEMF补偿设置 0 to 0.4% s/step */
        dSPIN_RegsStruct.ST_SLP         = BEMF_Slope_Perc_to_Par(0.038);
        /* 加速度——结束斜率(反电动势)BEMF补偿设置 0 to 0.4% s/step */
        dSPIN_RegsStruct.FN_SLP_ACC = BEMF_Slope_Perc_to_Par(0.063);
        /* 减速度——结束斜率(反电动势)BEMF补偿设置 0 to 0.4% s/step */
        dSPIN_RegsStruct.FN_SLP_DEC = BEMF_Slope_Perc_to_Par(0.063);
        /* 热补偿参数设置为1,范围为1-1.46875*/
        dSPIN_RegsStruct.K_THERM         = KTherm_to_Par(1);
        /* 过流阈值设置1500毫安 */
        dSPIN_RegsStruct.OCD_TH         = dSPIN_OCD_TH_2250mA; //375mA//750mA//1125mA//1500mA//1875mA//2250mA//2625mA//3000mA//3375mA//3750mA//4125mA//4500mA//4875mA//5250mA//5625mA//6000mA
        /* 失速阈值设置至1000mA,范围:31.25 to 4000mA */
        dSPIN_RegsStruct.STALL_TH         = StallTh_to_Par(3000);//1000
        /* 设置到128微步模式 */
        dSPIN_RegsStruct.STEP_MODE         = dSPIN_STEP_SEL_1_128;
        /* 报警设置 - 启用所有警报 */
        dSPIN_RegsStruct.ALARM_EN         = dSPIN_ALARM_EN_ALL_ENABLE;       
                                                                        //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;
        /* 内部振荡器,2MHz的的OSCOUT时钟,电源电压补偿禁用,启用过流关断,压摆率= 290 V /us,PWM频率为15.6kHz *///ENABLE// //过流关断
        dSPIN_RegsStruct.CONFIG         = dSPIN_CONFIG_INT_16MHZ_OSCOUT_2MHZ
                                                                | dSPIN_CONFIG_SW_HARD_STOP
                                                                | dSPIN_CONFIG_VS_COMP_DISABLE       
                                                                | dSPIN_CONFIG_OC_SD_DISABLE        
                                                                | dSPIN_CONFIG_SR_290V_us       
                                                                | dSPIN_CONFIG_PWM_DIV_2       
                                                                | dSPIN_CONFIG_PWM_MUL_1;       
        // Program all dSPIN registers
        dSPIN_Registers_Set(&dSPIN_RegsStruct);
}
[/mw_shl_code]

面是L6470初始化的参数设置。另外我测了一下L6470的输出电流,我逐渐把最大速度的值增加,输出电流也随之增加,但电流最大输出也就1.1A,不会超过1.1A。不知道什么原因,请问有大神用过这个芯片吗?怎么会出现这种状况的。


最佳答案

查看完整内容[请看2#楼]

不知道原因,重新画了个板子,基本没有改什么东西。目前没什么问题。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

11

主题

179

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1103
金钱
1103
注册时间
2016-7-19
在线时间
168 小时
 楼主| 发表于 2017-9-29 09:17:28 | 显示全部楼层
wxjhby 发表于 2017-12-7 10:30
那楼主的问题解决了么?

不知道原因,重新画了个板子,基本没有改什么东西。目前没什么问题。
回复

使用道具 举报

1

主题

430

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1461
金钱
1461
注册时间
2011-12-1
在线时间
110 小时
发表于 2017-9-29 10:36:42 | 显示全部楼层
你看看你的步进电机的最大电流是多少,最大的转速大概是多少,还有就是你的加速度是否过大,你这个有点像堵转了。
回复

使用道具 举报

2

主题

685

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3448
金钱
3448
注册时间
2017-7-4
在线时间
869 小时
发表于 2017-9-29 12:46:42 | 显示全部楼层
步进电机高速转动时,需要一个加减速的过程,不能瞬间提速,否则容易丢步堵转;步进电机转速随着速度提高力矩减小得很快,最快也就600——800转;典型的就是梯形、S型加减速算法;之前有了解过6470,挺厉害的一款芯片,内部集成了速度算法,只有控制相关寄存器就可以实现加减速过程了。
回复

使用道具 举报

11

主题

179

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1103
金钱
1103
注册时间
2016-7-19
在线时间
168 小时
 楼主| 发表于 2017-9-29 13:13:33 | 显示全部楼层
xlong_06 发表于 2017-9-29 10:36
你看看你的步进电机的最大电流是多少,最大的转速大概是多少,还有就是你的加速度是否过大,你这个有点像堵 ...

谢谢诶。速度设置大了就是会堵转。我这个步进电机的最大电流不知道,但额定电流是1.5A,问了下厂家,空载时转速每秒10转应该没问题。我把加速度改小了,但转速一旦过快也会堵转。现在空载时5转每秒没什么问题,超过了就堵转了。不知道怎么弄了。
回复

使用道具 举报

11

主题

179

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1103
金钱
1103
注册时间
2016-7-19
在线时间
168 小时
 楼主| 发表于 2017-9-29 13:21:06 | 显示全部楼层
Acuity 发表于 2017-9-29 12:46
步进电机高速转动时,需要一个加减速的过程,不能瞬间提速,否则容易丢步堵转;步进电机转速随着速度提高力 ...

谢谢回复啊,这个芯片是挺方便的,写命令参数就能控制,现在有问题了不知道怎么调试了。我把加速度设置小了,但电机速度一但快了,也会堵转。
回复

使用道具 举报

1

主题

430

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1461
金钱
1461
注册时间
2011-12-1
在线时间
110 小时
发表于 2017-9-29 14:10:12 | 显示全部楼层
还是看不穿 发表于 2017-9-29 13:13
谢谢诶。速度设置大了就是会堵转。我这个步进电机的最大电流不知道,但额定电流是1.5A,问了下厂家,空载 ...

这个芯片我以前用过,我那个时候电机电流大点,这个芯片不是很好用,速度快了,芯片发热很严重,功能倒是很足,后来直接买的专用的驱动器,自己做的控制。毕竟真正做的好的电机驱动芯片是很贵的,你这个多试试吧。
专业从事软硬件设计,毕业设计,C51/AVR/MSP430/STM32等单片机软硬件制作与定制。有需求的可以联系我。QQ:3436737049淘宝店铺:龙隽电子科技
回复

使用道具 举报

11

主题

179

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1103
金钱
1103
注册时间
2016-7-19
在线时间
168 小时
 楼主| 发表于 2017-9-29 15:03:17 | 显示全部楼层
xlong_06 发表于 2017-9-29 14:10
这个芯片我以前用过,我那个时候电机电流大点,这个芯片不是很好用,速度快了,芯片发热很严重,功能倒是 ...

嗯。我再看看,谢谢
回复

使用道具 举报

2

主题

47

帖子

0

精华

高级会员

Rank: 4

积分
584
金钱
584
注册时间
2015-1-10
在线时间
39 小时
发表于 2017-11-28 21:12:41 | 显示全部楼层
请问楼主。我照着ST网站给的L6470的原理图做了一块板子,没用外部的3.3或者5V,用Vreg输出给Vdd供电,/Flag管脚总是低电平,不知怎么回事,能说说可能哪方面原因吗?
回复

使用道具 举报

11

主题

179

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1103
金钱
1103
注册时间
2016-7-19
在线时间
168 小时
 楼主| 发表于 2017-12-7 10:16:42 | 显示全部楼层
老李 发表于 2017-11-28 21:12
请问楼主。我照着ST网站给的L6470的原理图做了一块板子,没用外部的3.3或者5V,用Vreg输出给Vdd供电,/Flag ...

当时我是直接供电的,你的这种情况我也不太清楚呀!你看看能不能正常工作把
回复

使用道具 举报

4

主题

349

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1046
金钱
1046
注册时间
2017-5-19
在线时间
335 小时
发表于 2017-12-7 10:30:56 | 显示全部楼层
还是看不穿 发表于 2017-12-7 10:16
当时我是直接供电的,你的这种情况我也不太清楚呀!你看看能不能正常工作把

那楼主的问题解决了么?
回复

使用道具 举报

2

主题

47

帖子

0

精华

高级会员

Rank: 4

积分
584
金钱
584
注册时间
2015-1-10
在线时间
39 小时
发表于 2018-1-18 17:03:26 | 显示全部楼层
请教楼主,我遇到一些问题:
我设置L6470的细分为8,想让步进电机每秒转一圈,就设200*8 Step/s,但是实际转速也就是大概1/4圈每秒 ;更改细分为32,128,转速没明显变化。不知还应当设置哪些相关参数?
楼主能否给一套参数设置,参考参考。
回复

使用道具 举报

11

主题

179

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1103
金钱
1103
注册时间
2016-7-19
在线时间
168 小时
 楼主| 发表于 2018-4-16 17:58:24 | 显示全部楼层
老李 发表于 2018-1-18 17:03
请教楼主,我遇到一些问题:
我设置L6470的细分为8,想让步进电机每秒转一圈,就设200*8 Step/s,但是实际 ...

不好意思哈 好久没来论坛了!现在才看到。你如果设置为8细分的话,那就是一圈要200*8步,那你就用run指令设置以200*8步/s的速度运就行了。
回复

使用道具 举报

4

主题

18

帖子

0

精华

初级会员

Rank: 2

积分
122
金钱
122
注册时间
2018-12-24
在线时间
20 小时
发表于 2019-8-15 10:12:42 | 显示全部楼层
可否借鉴一下L6470芯片的程序
回复

使用道具 举报

0

主题

5

帖子

0

精华

新手上路

积分
37
金钱
37
注册时间
2019-10-19
在线时间
7 小时
发表于 2020-7-16 12:48:07 | 显示全部楼层
我现在也遇到了L6470的问题,5R/S就震动得厉害,不知道是不是参数的问题,有没有高人能有偿指点下
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-29 20:54

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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