• 电机调试说明SimpleFOC和ODrive




    SimpleFOC教程目录:请点击

    说明

    本文主要是结合本店电机,通过配置的参数,快速实现对电机的控制。
    店铺链接:https://item.taobao.com/item.htm?ft=t&id=643573104607

    一、SimpleMotor配置

    1.1、云台电机

    在这里插入图片描述

    1.2、航模电机

    在这里插入图片描述

    二、ODrive配置

    • 关于ODrive的配置网上有很多,本节只是尽可能用最少的配置让电机转起来,不保证参数为最佳设置,
    • ODrive版本v0.5.1,
    • ABZ和ABI的叫法不同,指的都是一种编码器。

    2.1、5008航模电机标配AS5047P

    2.1.1、接ABI接口

    在这里插入图片描述
    注意:速度PID只用了P参数,只是为了让电机转起来,非最佳配置

    //5008电机AS5047P_ABI接口,接在M0上,电源电压12V,24V用以下配置也可以
    odrv0.vbus_voltage                                                      //查看电压
    odrv0.erase_configuration()                                             //清除之前的配置,恢复默认配置
    odrv0.axis0.motor.config.motor_type = MOTOR_TYPE_HIGH_CURRENT           //设置电机类型
    odrv0.axis0.encoder.config.mode = ENCODER_MODE_INCREMENTAL              //选择编码器类型
    odrv0.axis0.encoder.config.cpr = 4000                                   //默认8192,AS5047P=4000,TLE5012B=16384
    odrv0.axis0.controller.config.vel_gain = 0.05                           //默认0.167,速度环P参数
    odrv0.axis0.controller.config.vel_integrator_gain = 0                   //默认0.33333,速度环I参数
    odrv0.axis0.controller.config.vel_limit = 100                           //默认2,限制最大转速
    odrv0.axis0.controller.config.input_mode = INPUT_MODE_VEL_RAMP          //为2,速度爬升模式,否则速度变化时“噔”一声
    odrv0.axis0.controller.config.vel_ramp_rate = 100                       //默认1,非常小,加速度
    odrv0.axis0.motor.config.pole_pairs = 7                                 //默认7
    odrv0.axis0.motor.config.calibration_current = 5                        //默认10,10=0.88A,5=0.3A(万用表测母线电流)
    odrv0.save_configuration()                                              //保存参数
    odrv0.reboot()                                                          //重启
    
    odrv0.axis0.requested_state = AXIS_STATE_FULL_CALIBRATION_SEQUENCE           //电机校准,2秒后“哔”一声,然后正反转一圈
    odrv0.axis0.error                                                            //查看是否有错误
    odrv0.axis0.controller.config.control_mode = CONTROL_MODE_VELOCITY_CONTROL   //设置为速度模式
    odrv0.axis0.requested_state = AXIS_STATE_CLOSED_LOOP_CONTROL                 //进入闭环,电流会增加约50mA
    
    odrv0.axis0.controller.input_vel = 10                                        //速度限制会影响最大转速
    odrv0.axis0.controller.input_vel = 0
    odrv0.axis0.requested_state = AXIS_STATE_IDLE                                //进入空闲模式
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    2.1.2、接SPI接口

    SPI接M0端子,进入闭环后电机稍微动一下就报错,查看错误:ENCODER_ERROR_ABS_SPI_COM_FAIL,
    百度后找到这个:https://www.bilibili.com/read/cv12631507/。
    应该跟ODrive的电源是通过M0的DRV8301降压有关,用M1接口控制不再报错。
    注意:速度PID只用了P参数,只是为了让电机转起来,非最佳配置
    在这里插入图片描述

    //5008电机AS5047P_SPI接口,接在M1上,电源电压12V,24V也可以
    odrv0.erase_configuration()                                           //清除之前的配置,恢复默认配置
    odrv0.axis1.motor.config.motor_type = MOTOR_TYPE_HIGH_CURRENT         //设置电机类型
    odrv0.axis1.encoder.config.abs_spi_cs_gpio_pin = 4                    //选择CS引脚
    odrv0.axis1.encoder.config.mode = ENCODER_MODE_SPI_ABS_AMS            //设置编码器类型
    odrv0.axis1.encoder.config.cpr = 2**14                                //14bit
    odrv0.axis1.controller.config.vel_gain = 0.05                         //默认0.167,速度环P参数
    odrv0.axis1.controller.config.vel_integrator_gain = 0                 //默认0.33333,速度环I参数
    odrv0.axis1.controller.config.vel_limit = 50                          //默认2,限制最大转速
    odrv0.axis1.controller.config.input_mode = INPUT_MODE_VEL_RAMP        //为2,速度爬升模式,否则速度变化时“噔”一声
    odrv0.axis1.controller.config.vel_ramp_rate = 100                     //默认1,非常小,加速度
    odrv0.axis1.motor.config.pole_pairs = 7                               //默认7
    odrv0.axis1.motor.config.calibration_current = 5                      //默认10,10=0.88A,5=0.3A(万用表测母线电流)
    odrv0.save_configuration()                                            //保存参数
    odrv0.reboot()                                                        //重启
    
    odrv0.axis1.requested_state = AXIS_STATE_FULL_CALIBRATION_SEQUENCE            //电机校准,2秒后“哔”一声,然后正反转一圈
    odrv0.axis1.error                                                             //查看是否有错误
    odrv0.axis1.controller.config.control_mode = CONTROL_MODE_VELOCITY_CONTROL    //设置为速度模式
    odrv0.axis1.requested_state = AXIS_STATE_CLOSED_LOOP_CONTROL                  //进入闭环,电流会增加约50mA
    
    odrv0.axis1.controller.input_vel = 10                                         //设置速度,速度限制会影响最大转速
    odrv0.axis1.controller.input_vel = 0
    odrv0.axis1.requested_state = AXIS_STATE_IDLE                                 //进入空闲模式
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    2.1.3、无感模式

    去掉编码器接线,就是无感控制

    //无感模式配置,5008电机,KV335
    odrv0.erase_configuration()                                                   //清除之前的配置,恢复默认配置
    odrv0.axis0.motor.config.motor_type = MOTOR_TYPE_HIGH_CURRENT                 //默认0,就是HIGH_CURRENT,设置电机类型
    odrv0.axis0.controller.config.vel_gain = 0.02                                 //默认0.167,速度环P参数
    odrv0.axis0.controller.config.vel_integrator_gain = 0.00                      //默认0.33333,速度环I参数
    odrv0.axis0.controller.config.control_mode = CONTROL_MODE_VELOCITY_CONTROL    //设置为速度模式
    odrv0.axis0.controller.config.vel_limit = 100                                 //默认2,限制最大转速
    odrv0.axis0.controller.config.input_mode = INPUT_MODE_VEL_RAMP                //为2,速度爬升模式
    odrv0.axis0.controller.config.vel_ramp_rate = 100                             //默认1,非常小,加速度
    odrv0.axis0.motor.config.current_lim = 20                                     //默认10
    odrv0.axis0.motor.config.direction = 1                                        //默认0,设定电机转向,必须配置
    odrv0.axis0.sensorless_estimator.config.pm_flux_linkage = 5.51328895422 / (7 * 335)     //永磁磁链配置,极对数=7,KV335
    odrv0.axis0.motor.config.calibration_current = 5                              //默认10,5=0.38A
    odrv0.save_configuration()
    odrv0.reboot()
    
    odrv0.axis0.requested_state = AXIS_STATE_MOTOR_CALIBRATION               //电机校准,2秒后“哔”一声结束
    odrv0.axis0.error                                                        //查看是否有错误
    odrv0.axis0.controller.input_vel = 10
    odrv0.axis0.requested_state = AXIS_STATE_SENSORLESS_CONTROL             //电机启动并运行,vel=10
    
    odrv0.axis0.controller.input_vel = 50                                   //设置目标速度,最大速度为限制速度
    odrv0.axis0.controller.input_vel = 0
    odrv0.axis0.requested_state = AXIS_STATE_IDLE                           //进入空闲模式,重新启动需
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    2.2、3505航模电机标配AS5047P

    2.2.1、接ABI接口

    在这里插入图片描述

    //3505电机AS5047P_ABI接口,接在M0上,电源电压12V
    odrv0.erase_configuration()                                             //清除之前的配置,恢复默认配置
    odrv0.axis0.motor.config.motor_type = MOTOR_TYPE_HIGH_CURRENT           //设置电机类型
    odrv0.axis0.encoder.config.mode = ENCODER_MODE_INCREMENTAL              //选择编码器类型
    odrv0.axis0.encoder.config.cpr = 4000                                   //默认8192,AS5047P=4000,TLE5012B=16384
    odrv0.axis0.controller.config.vel_gain = 0.03                           //默认0.167,速度环P参数
    odrv0.axis0.controller.config.vel_integrator_gain = 0                   //默认0.33333,速度环I参数
    odrv0.axis0.controller.config.vel_limit = 100                           //默认2,限制最大转速
    odrv0.axis0.controller.config.input_mode = INPUT_MODE_VEL_RAMP          //为2,速度爬升模式,否则速度变化时“噔”一声
    odrv0.axis0.controller.config.vel_ramp_rate = 100                       //默认1,非常小,加速度
    odrv0.axis0.motor.config.pole_pairs = 10                                //默认7,3505电机10对极
    odrv0.axis0.motor.config.calibration_current = 4                        //默认10,4=0.33A(万用表测母线电流)
    odrv0.save_configuration()                                              //保存参数
    odrv0.reboot()                                                          //重启
    
    odrv0.axis0.requested_state = AXIS_STATE_FULL_CALIBRATION_SEQUENCE           //电机校准,2秒后“哔”一声,然后正反转一圈
    odrv0.axis0.error                                                            //查看是否有错误
    odrv0.axis0.controller.config.control_mode = CONTROL_MODE_VELOCITY_CONTROL   //设置为速度模式
    odrv0.axis0.requested_state = AXIS_STATE_CLOSED_LOOP_CONTROL                 //进入闭环,电流会增加约50mA
    
    odrv0.axis0.controller.input_vel = 10                                        //速度限制会影响最大转速
    odrv0.axis0.controller.input_vel = 0
    odrv0.axis0.requested_state = AXIS_STATE_IDLE                                //进入空闲模式
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23

    2.2.2、接SPI接口

    在这里插入图片描述

    //3505电机AS5047P_SPI接口,接在M1上,12V供电,
    odrv0.erase_configuration()                                            //清除之前的配置,恢复默认配置
    odrv0.axis1.motor.config.motor_type = MOTOR_TYPE_HIGH_CURRENT          //设置电机类型
    odrv0.axis1.encoder.config.abs_spi_cs_gpio_pin = 4                     //选择CS引脚
    odrv0.axis1.encoder.config.mode = ENCODER_MODE_SPI_ABS_AMS             //设置编码器类型
    odrv0.axis1.encoder.config.cpr = 2**14                                 //14bit
    odrv0.axis1.controller.config.vel_gain = 0.03                          //默认0.167,速度环P参数
    odrv0.axis1.controller.config.vel_integrator_gain = 0                  //默认0.33333,速度环I参数
    odrv0.axis1.controller.config.vel_limit = 100                          //默认2,限制最大转速
    odrv0.axis1.controller.config.input_mode = INPUT_MODE_VEL_RAMP         //为2,速度爬升模式,否则速度变化时“噔”一声
    odrv0.axis1.controller.config.vel_ramp_rate = 100                      //默认1,非常小,加速度
    odrv0.axis1.motor.config.pole_pairs = 10                               //默认7
    odrv0.axis1.motor.config.calibration_current = 4                       //默认10,4=0.33A(万用表测母线电流)
    odrv0.save_configuration()                                             //保存参数
    odrv0.reboot()                                                         //重启
    
    odrv0.axis1.requested_state = AXIS_STATE_FULL_CALIBRATION_SEQUENCE          //电机校准,2秒后“哔”一声,然后正反转一圈
    odrv0.axis1.controller.config.control_mode = CONTROL_MODE_VELOCITY_CONTROL  //设置为速度模式
    odrv0.axis1.requested_state = AXIS_STATE_CLOSED_LOOP_CONTROL                //进入闭环,电流会增加约50mA
    
    odrv0.axis1.controller.input_vel = 10                                       //设置速度,速度限制会影响最大转速
    odrv0.axis1.controller.input_vel = 0
    odrv0.axis1.requested_state = AXIS_STATE_IDLE                               //进入空闲模式
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23

    2.2.3、无感模式

    //无感模式配置,3505电机,KV650,12V供电
    odrv0.erase_configuration()
    odrv0.axis0.motor.config.motor_type = MOTOR_TYPE_HIGH_CURRENT               //默认0,就是HIGH_CURRENT
    odrv0.axis0.controller.config.vel_gain = 0.01                               //默认0.167,速度环P参数
    odrv0.axis0.controller.config.vel_integrator_gain = 0.00                    //默认0.33333,速度环I参数
    odrv0.axis0.controller.config.control_mode = CONTROL_MODE_VELOCITY_CONTROL  //设置为速度模式
    odrv0.axis0.controller.config.vel_limit = 100                               //默认2,限制最大转速
    odrv0.axis0.controller.config.input_mode = INPUT_MODE_VEL_RAMP              //为2,速度梯形轨迹模式
    odrv0.axis0.controller.config.vel_ramp_rate = 100                           //默认1,加速度。10非常小,
    odrv0.axis0.motor.config.current_lim = 15                                   //默认10
    odrv0.axis0.motor.config.pole_pairs = 10                                    //默认7
    odrv0.axis0.motor.config.direction = 1                                      //默认0,设定电机转向
    odrv0.axis0.sensorless_estimator.config.pm_flux_linkage = 5.51328895422 / (10 * 650)     //永磁磁链配置,极对数=10,KV650
    odrv0.axis0.motor.config.calibration_current = 4                            //默认10,5=0.43A,4=0.32A(万用表观测电流)
    odrv0.save_configuration()
    odrv0.reboot()
    
    odrv0.axis0.requested_state = AXIS_STATE_MOTOR_CALIBRATION        //大约2秒后电机“哔”一声结束
    odrv0.axis0.controller.input_vel = 10                             //设置目标速度
    odrv0.axis0.requested_state = AXIS_STATE_SENSORLESS_CONTROL       //电机开始启动并运行,vel=10
    
    odrv0.axis0.controller.input_vel = 50                             //设置目标速度,最大速度为限制速度
    odrv0.axis0.requested_state = AXIS_STATE_IDLE
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    //50=0.25A@12V
    //转速到60或者更高时,电机会发生错误并停止,无论接M0或M1都是这样
    //查看错误:dump_errors(odrv0)
    不接放电电阻时提示:
    axis:AXIS_ERROR_MOTOR_FAILED
    motor:MOTOR_ERROR_CURRENT_LIMIT_VIOLATION
    接放电电阻时提示:
    axis:AXIS_ERROR_BRAKE_RESISTOR_DISARMED / AXIS_ERROR_MOTOR_FAILED
    motor:MOTOR_ERROR_DC_BUS_OVER_REGEN_CURRENT
    总之速度不能设置的太高,具体原因不清楚

    //无感模式配置,3505电机,KV650,12V供电,接M1接口,和M0的接口效果一样
    odrv0.erase_configuration()
    odrv0.axis1.motor.config.motor_type = MOTOR_TYPE_HIGH_CURRENT               //默认0,就是HIGH_CURRENT
    odrv0.axis1.controller.config.vel_gain = 0.01                               //默认0.167,速度环P参数
    odrv0.axis1.controller.config.vel_integrator_gain = 0.00                    //默认0.33333,速度环I参数
    odrv0.axis1.controller.config.control_mode = CONTROL_MODE_VELOCITY_CONTROL  //设置为速度模式
    odrv0.axis1.controller.config.vel_limit = 100                               //默认2,限制最大转速
    odrv0.axis1.controller.config.input_mode = INPUT_MODE_VEL_RAMP              //为2,速度梯形轨迹模式
    odrv0.axis1.controller.config.vel_ramp_rate = 100                           //默认1,加速度。10非常小
    odrv0.axis1.motor.config.current_lim = 15                                   //默认10
    odrv0.axis1.motor.config.pole_pairs = 10                                    //默认7
    odrv0.axis1.motor.config.direction = 1                                      //默认0,设定电机转向
    odrv0.axis1.sensorless_estimator.config.pm_flux_linkage = 5.51328895422 / (10 * 650)    //永磁磁链配置,极对数=10,KV650
    odrv0.axis1.motor.config.calibration_current = 4                            //默认10,5=0.43A,4=0.32A(万用表观测电流)
    odrv0.save_configuration()
    odrv0.reboot()
    
    odrv0.axis1.requested_state = AXIS_STATE_MOTOR_CALIBRATION        //大约2秒后电机“哔”一声结束
    odrv0.axis1.controller.input_vel = 10                             //设置目标速度
    odrv0.axis1.requested_state = AXIS_STATE_SENSORLESS_CONTROL       //电机开始启动并运行,vel=10
    
    odrv0.axis1.controller.input_vel = 50                             //设置目标速度,最大速度为限制速度
    odrv0.axis1.requested_state = AXIS_STATE_IDLE
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23

    2.3、3505航模电机标配TLE5012B

    2.3.1、接ABI接口

    在这里插入图片描述
    请参考2.2.1,TLE5012B的ABI接口配置与AS5047P的ABI接口配置,除了CPR需要修改,其它参数配置相同。

    2.3.2、无感模式

    请参考2.2.3。

    2.4、2808航模电机标配AS5047P

    2.4.1、接ABI接口

    在这里插入图片描述

    //2808电机AS5047P_ABI接口,接在M0上,电源电压12V
    odrv0.erase_configuration()                                             //清除之前的配置,恢复默认配置
    odrv0.axis0.motor.config.motor_type = MOTOR_TYPE_HIGH_CURRENT           //设置电机类型
    odrv0.axis0.encoder.config.mode = ENCODER_MODE_INCREMENTAL              //选择编码器类型
    odrv0.axis0.encoder.config.cpr = 4000                                   //默认8192,AS5047P=4000,TLE5012B=16384
    odrv0.axis0.controller.config.vel_gain = 0.03                           //默认0.167,速度环P参数
    odrv0.axis0.controller.config.vel_integrator_gain = 0                   //默认0.33333,速度环I参数
    odrv0.axis0.controller.config.vel_limit = 100                           //默认2,限制最大转速
    odrv0.axis0.controller.config.input_mode = INPUT_MODE_VEL_RAMP          //为2,速度爬升模式,否则速度变化时“噔”一声
    odrv0.axis0.controller.config.vel_ramp_rate = 100                       //默认1,非常小,加速度
    odrv0.axis0.motor.config.pole_pairs = 7                                 //默认7
    odrv0.axis0.motor.config.calibration_current = 5                        //默认10,10=0.88A,5=0.38A(万用表测母线电流)
    odrv0.save_configuration()                                              //保存参数
    odrv0.reboot()                                                          //重启
    
    odrv0.axis0.requested_state = AXIS_STATE_FULL_CALIBRATION_SEQUENCE           //电机校准,2秒后“哔”一声,然后正反转一圈
    odrv0.axis0.error                                                            //查看是否有错误
    odrv0.axis0.controller.config.control_mode = CONTROL_MODE_VELOCITY_CONTROL   //设置为速度模式
    odrv0.axis0.requested_state = AXIS_STATE_CLOSED_LOOP_CONTROL                 //进入闭环,电流会增加约50mA
    
    odrv0.axis0.controller.input_vel = 10                                        //速度限制会影响最大转速
    odrv0.axis0.controller.input_vel = 0
    odrv0.axis0.requested_state = AXIS_STATE_IDLE                                //进入空闲模式
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23

    2.4.2、接SPI接口

    在这里插入图片描述

    //2808电机AS5047P_SPI接口,接在M1上,电源电压12V
    odrv0.erase_configuration()                                                 //清除之前的配置,恢复默认配置
    odrv0.axis1.motor.config.motor_type = MOTOR_TYPE_HIGH_CURRENT               //设置电机类型
    odrv0.axis1.encoder.config.abs_spi_cs_gpio_pin = 4                          //选择CS引脚
    odrv0.axis1.encoder.config.mode = ENCODER_MODE_SPI_ABS_AMS                  //设置编码器类型
    odrv0.axis1.encoder.config.cpr = 2**14                                      //14bit
    odrv0.axis1.controller.config.vel_gain = 0.03                               //默认0.167,速度环P参数
    odrv0.axis1.controller.config.vel_integrator_gain = 0                       //默认0.33333,速度环I参数
    odrv0.axis1.controller.config.vel_limit = 50                                //默认2,限制最大转速
    odrv0.axis1.controller.config.input_mode = INPUT_MODE_VEL_RAMP              //为2,速度爬升模式,否则速度变化时“噔”一声
    odrv0.axis1.controller.config.vel_ramp_rate = 100                           //默认1,非常小,加速度
    odrv0.axis1.motor.config.pole_pairs = 7                                     //默认7
    odrv0.axis1.motor.config.calibration_current = 5                            //默认10,10=0.88A,5=0.3A(万用表测母线电流)
    odrv0.save_configuration()                                                  //保存参数
    odrv0.reboot()                                                              //重启
    
    odrv0.axis1.requested_state = AXIS_STATE_FULL_CALIBRATION_SEQUENCE          //电机校准,2秒后“哔”一声,然后正反转一圈
    odrv0.axis1.error                                                           //查看是否有错误
    odrv0.axis1.controller.config.control_mode = CONTROL_MODE_VELOCITY_CONTROL  //设置为速度模式
    odrv0.axis1.requested_state = AXIS_STATE_CLOSED_LOOP_CONTROL                //进入闭环,电流会增加约50mA
    
    odrv0.axis1.controller.input_vel = 10                                       //设置速度,速度限制会影响最大转速
    odrv0.axis1.controller.input_vel = 0
    odrv0.axis1.requested_state = AXIS_STATE_IDLE                               //进入空闲模式
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    2.4.3、无感模式

    //无感模式配置,2808电机,KV630,12V供电,
    odrv0.erase_configuration()
    odrv0.axis0.controller.config.vel_gain = 0.01                                //默认0.167,速度环P参数
    odrv0.axis0.controller.config.vel_integrator_gain = 0                        //默认0.33333,速度环I参数
    odrv0.axis0.controller.config.control_mode = CONTROL_MODE_VELOCITY_CONTROL   //设置为速度模式
    odrv0.axis0.controller.config.vel_limit = 100                                //默认2,限制最大转速
    odrv0.axis0.controller.config.input_mode = INPUT_MODE_VEL_RAMP               //为2,速度梯形轨迹模式
    odrv0.axis0.controller.config.vel_ramp_rate = 100                            //默认1,加速度。10非常小,半天才加速上去
    odrv0.axis0.motor.config.current_lim = 20                                    //默认10
    odrv0.axis0.motor.config.pole_pairs = 7                                      //默认7
    odrv0.axis0.motor.config.direction = 1                                       //默认0,设定电机转向
    odrv0.axis0.sensorless_estimator.config.pm_flux_linkage = 5.51328895422 / (7 * 630)     //永磁磁链配置,极对数=7,KV630
    odrv0.axis0.motor.config.calibration_current = 4                             //默认10,4=0.37A(万用表观测电流)
    odrv0.save_configuration()
    odrv0.reboot()
    
    odrv0.axis0.requested_state = AXIS_STATE_MOTOR_CALIBRATION           //大约2秒后电机“哔”一声结束,0.45A
    odrv0.axis0.error                                                    //查看是否有错误
    odrv0.axis0.controller.input_vel = 10                                //启动后的速度,不能太大,否则启动容易失败
    odrv0.axis0.requested_state = AXIS_STATE_SENSORLESS_CONTROL          //电机开始启动,vel=5
    
    odrv0.axis0.controller.input_vel = 10                                //设置目标速度,最大速度为限制速度
    odrv0.axis0.requested_state = AXIS_STATE_IDLE
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    2.5、2808航模电机标配TLE5012B

    2.5.1、接ABI接口

    在这里插入图片描述
    请参考2.4.1。TLE5012B的ABI接口配置与AS5047P的ABI接口配置,除了CPR需要修改,其它参数配置相同。

    2.5.2、无感模式

    请参考2.4.3。


  • 相关阅读:
    18 行为型模式-观察者模式
    第6章:数组、排序和查找
    防止血糖飙升,你需要知道这12个技巧
    二维码智慧门牌管理系统:创新科技改善生活
    车间管理系统哪家好
    异行星低代码平台--第三方插件对接:企业微信平台对接(二)
    硬件电子基础 -单片机信号转换
    Java学习笔记42——方法引用
    c++:数据结构链表list的模拟实现
    金融知识分析系列之:期货种类、T+0期货品种、期货IF、沪深300股指期货、IF交割月份
  • 原文地址:https://blog.csdn.net/loop222/article/details/123827214