打印
[STM32F0]

电机不转并发出强烈的噪音

[复制链接]
507|15
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
huanghuac|  楼主 | 2020-4-19 17:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我用ST的L6470电机驱动芯片,F091为控制芯片。现在用官方L6470的驱动程序实现控制步进电机,细分为128。最大速度设置低于1000步/秒时,正常运行不会产生太大噪音和振动,当设置最大速度超过1000步/秒时电机噪音非常大,振动厉害,当设置最大速度超过1500步/秒时,电机回出现不转的现象,并发出强烈的噪音

使用特权

评论回复
沙发
llia| | 2020-4-19 17:50 | 只看该作者

楼主程序可以公开吗?贴程序看下吧,这么说看不出什么原因

使用特权

评论回复
板凳
huanghuac|  楼主 | 2020-4-19 17:52 | 只看该作者
/**********************************************************************
* 名    称: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);
}

使用特权

评论回复
地板
huanghuac|  楼主 | 2020-4-19 17:55 | 只看该作者
上面是L6470初始化的参数设置。另外我测了一下L6470的输出电流,我逐渐把最大速度的值增加,输出电流也随之增加,但电流最大输出也就1.1A,不会超过1.1A。不知道什么原因,请问有大神用过这个芯片吗?怎么会出现这种状况的。

使用特权

评论回复
5
chenho| | 2020-4-19 17:59 | 只看该作者
用的TMC260,虽然有噪音,但是效果等各方面确实好;带上丝杠,负载等,加减速,最高速度等比一般的工业驱动器性能强不少;就是电流有点小而已;

使用特权

评论回复
6
huanghuac|  楼主 | 2020-4-19 18:08 | 只看该作者
这样啊,我现在就是找不出来原因,程序感觉没有问题,那就是电路方面的原因了,电流就是上不去,始终最大也就1.1A。电机的速度不能上去,头大了。

使用特权

评论回复
7
huanghuac|  楼主 | 2020-4-19 18:11 | 只看该作者
你测试的时候有过什么问题呀?能说说吗?谢谢,

使用特权

评论回复
8
heweibig| | 2020-4-19 18:17 | 只看该作者
转动的时候有些问题,好多年前了;

使用特权

评论回复
9
chenjunt| | 2020-4-19 18:20 | 只看该作者

最好找代理,让代理带原厂帮你解决;

电机控制的原厂不熟呢,就MCU熟悉些

使用特权

评论回复
10
huanghuac|  楼主 | 2020-4-19 18:23 | 只看该作者
嗯嗯,谢谢了!

使用特权

评论回复
11
wangzsa| | 2020-4-19 18:27 | 只看该作者
TMC系列的步进电机驱动ic很好使啊,我一直用这个系列的,最近用TMC2660,兼容TMC260,电流比260更大,好像还比260便宜。要大电流的用外置mos管的型号,如TMC262,就是兼容260的,程序都不用改。

使用特权

评论回复
12
wenfen| | 2020-4-19 18:30 | 只看该作者

楼主操作错的可能性大。
把OCD_TH、STALL_TH的内容读出来,核对一下,

使用特权

评论回复
13
stly| | 2020-4-19 18:33 | 只看该作者
也可以换换分压电阻,试试看。

使用特权

评论回复
14
supernan| | 2020-4-19 18:37 | 只看该作者
力矩不够,,我也没办法提到1000步每秒

使用特权

评论回复
15
zhanglli| | 2020-4-19 18:41 | 只看该作者
楼主能跟我说说具体函数怎么配置吗,这个不太会,表示很苦恼

使用特权

评论回复
16
huanghuac|  楼主 | 2020-4-19 18:45 | 只看该作者

嗯,那我按大家的说法挨个排查一下,谢谢哈

使用特权

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

本版积分规则

772

主题

8473

帖子

6

粉丝