【Odrive-3.6】极飞A12电机无感速度控制
效果演示视频:【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