【Odrive-3.6】极飞A12电机无感速度控制

发布时间 2023-08-03 01:04:21作者: __TRACKER

效果演示视频:【Odrive-3.6】极飞A12电机无感速度控制

 

以下是我的电机配置和测试用的一些配置,有需要的可以参考一下:

//无感模式配置,极飞A12电机,KV100
odrv0.erase_configuration()                                                   //清除之前的配置,恢复默认配置
odrv0.config.dc_bus_overvoltage_trip_level = 56
odrv0.config.dc_max_positive_current = 30
odrv0.config.dc_max_negative_current = -5
odrv0.axis0.motor.config.motor_type = MOTOR_TYPE_HIGH_CURRENT                 //设置电机类型
odrv0.axis0.motor.config.current_lim = 20                                     //默认10
odrv0.axis0.motor.config.direction = 1                                        //默认0,设定电机转向,必须配置
odrv0.axis0.motor.config.calibration_current = 5                              //默认10,5=0.38A
odrv0.axis0.controller.config.control_mode = CONTROL_MODE_VELOCITY_CONTROL    //设置为速度模式
odrv0.axis0.controller.config.vel_gain = 0.01                                 //默认0.167,速度环P参数
odrv0.axis0.controller.config.vel_integrator_gain = 0.05                      //默认0.33333,速度环I参数
odrv0.axis0.controller.config.vel_limit = 100                                 //默认2,限制最大转速
odrv0.axis0.controller.config.input_mode = INPUT_MODE_VEL_RAMP                //速度爬升模式
odrv0.axis0.controller.config.vel_ramp_rate = 50                              //默认1非常小
odrv0.axis0.sensorless_estimator.config.pm_flux_linkage = 5.51328895422 / (20 * 100)     //永磁磁链配置,极对数=10,KV100
odrv0.save_configuration()
odrv0.reboot()

odrv0.axis0.config.enable_sensorless_mode = True

odrv0.axis0.requested_state = AXIS_STATE_MOTOR_CALIBRATION               //电机校准,2秒后“哔”一声结束
odrv0.axis0.error                                                        //查看是否有错误

odrv0.axis0.requested_state = AXIS_STATE_CLOSED_LOOP_CONTROL        //启动电机

odrv0.axis0.controller.input_vel = 10

odrv0.axis0.controller.input_vel = 50                                   //设置目标速度,最大速度为限制速度
odrv0.axis0.controller.input_vel = 0
odrv0.axis0.requested_state = AXIS_STATE_IDLE                           //进入空闲模式,重新启动需


上面主要参考Odrive官方文档和CSDN里一些文档,下面是官方文档内的配置方法:

官方无感配置

odrv0.axis0.controller.config.vel_gain = 0.01
odrv0.axis0.controller.config.vel_integrator_gain = 0.05
odrv0.axis0.controller.config.control_mode = CONTROL_MODE_VELOCITY_CONTROL
odrv0.axis0.controller.config.vel_limit = <a value greater than axis.config.sensorless_ramp.vel / (2pi * <pole_pairs>)>
odrv0.axis0.motor.config.current_lim = 2 * odrv0.axis0.config.sensorless_ramp.current
odrv0.axis0.sensorless_estimator.config.pm_flux_linkage = 5.51328895422 / (<pole pairs> * <motor kv>)
odrv0.axis0.config.enable_sensorless_mode = True


要启动电机:

odrv0.axis0.requested_state = AXIS_STATE_CLOSED_LOOP_CONTROL