无感控制指令
#该无传感器控制配置基于80KV电机,电机参数需要根据实际进行修改。
#恢复默认参数
odrv0.erase_configuration()
#主板参数配置
odrv0.config.brake_resistance = 2.0
odrv0.config.dc_bus_undervoltage_trip_level = 8.0
odrv0.config.dc_bus_overvoltage_trip_level = 56.0
odrv0.config.dc_max_positive_current = 20.0
odrv0.config.dc_max_negative_current = -3.0
odrv0.config.max_regen_current = 0
odrv0.save_configuration()
#电机参数配置
odrv0.axis0.motor.config.pole_pairs = 7
odrv0.axis0.motor.config.calibration_current = 5
odrv0.axis0.motor.config.resistance_calib_max_voltage = 10
odrv0.axis0.motor.config.motor_type = MOTOR_TYPE_HIGH_CURRENT
odrv0.axis0.motor.config.current_lim = 6
odrv0.axis0.motor.config.requested_current_range = 60
odrv0.axis0.motor.config.direction = 1 #设置电机定向转动。
odrv0.axis0.sensorless_estimator.config.pm_flux_linkage = 5.51328895422 / (7 * 80) #永磁磁链配置,GIM6010-36电机极对数=6,电机KV=80
odrv0.save_configuration()
# 校准电机
odrv0.axis0.requested_state = AXIS_STATE_MOTOR_CALIBRATION #校准电机,2S后会听见滴声。
odrv0.axis0.motor.config.pre_calibrated = True #设置重启也有效。
odrv0.axis0.requested_state = AXIS_STATE_SENSORLESS_CONTROL #进入无传感器控制模式。
odrv0.axis0.config.startup_sensorless_control = True #重启也有效。
odrv0.save_configuration()
odrv0.reboot()
#重启后电机会定向转动校准位置
#控制器参数配置
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.input_vel = 0
odrv0.axis0.controller.config.vel_limit = 50
dump_errors(odrv0,True)
#电机控制测试
odrv0.axis0.controller.input_vel = 10 #设置电机转动速度为10 turns/s
odrv0.axis0.controller.input_vel = -10 #设置电机转动速度为-10 turns/s
有感控制指令
# 先清除电机错误
odrv0.clear_errors()
#进入闭环模式
odrv0.axis0.requested_state = AXIS_STATE_CLOSED_LOOP_CONTROL
#设置速度模式
odrv0.axis0.controller.config.control_mode = 2
odrv0.axis0.controller.config.input_mode = 1
odrv0.axis0.controller.input_vel = 10 #单位 turn/s
# 设置完成后可以拔掉USB-type-c线,电机自己持续运行
######################如果上述流程不行,按照以下方式设置########################
# 直接速度模式控制
odrv0.axis0.controller.config.control_mode = 2
odrv0.axis0.controller.config.input_mode = 1
odrv0.axis0.controller.input_vel = 10 #单位 turn/s
# 斜坡速度控制
odrv0.axis0.controller.config.control_mode = 2
odrv0.axis0.controller.config.input_mode = 2
odrv0.axis0.controller.input_vel = 10 #单位 turn/s
# 上电如果没有校准声音,先开启校准
odrv0.axis0.requested_state = AXIS_STATE_MOTOR_CALIBRATION
odrv0.axis0.requested_state = AXIS_STATE_ENCODER_OFFSET_CALIBRATION
odrv0.axis0.motor.config.pre_calibrated = 1
odrv0.axis0.encoder.config.pre_calibrated = 1
odrv0.save_configuration()