目录
说明
驱动器采用的是Modbus协议,
上位机软件把输入的字符串解析为Modbus协议发送给驱动器,
如果你对Modbus协议比较熟悉,也可以直接用串口调试助手发送指令。
驱动器购买链接:某宝购买
一、指令说明
指令 | 描述 | 参数说明 |
---|---|---|
motor0.requested_state | 运行模式 | STATE_IDLE、STATE_ENCODER_INDEX_SEARCH、STATE_CALIBRATION、STATE_CLOSED_LOOP_CONTROL、STATE_FAULT |
motor0.controller.input_torque | 目标力矩 | 单位0.1A,取值范围 -200—200 |
motor0.controller.input_vel | 目标速度 | 单位RPM,取值范围 -6000—6000 |
motor0.controller.input_pos | 目标绝对位置 | 最多正负32000圈,每圈角度65536,取值范围 -2097152000—2097152000 |
motor0.read.vbus_voltage | 母线电压 | 单位0.1V |
motor0.read.vbus_current | 母线电流 | 单位0.1A |
motor0.read.rpm | 当前速度 | 单位RPM |
motor0.read.position | 当前位置 | 最多正负32000圈,每圈角度65536,取值范围 -2097152000—2097152000 |
motor0.read.error | 故障信息 | FAULT_NO_ERROR、FAULT_ALIGN_FAIL、 |
FAULT_UNDER_VOLTAGE、FAULT_OVER_VOLTAGE、 | ||
FAULT_OVER_CURRENT、FAULT_NEGA_CURRENT、 | ||
FAULT_TEMPERATURE_OVER、FAULT_INPUT_SIGNAL | ||
motor0.read.code_version | 驱动器版本 | 单片机代码版本,第一版 866 |
erase_configuration() | 擦除配置 | |
save_configuration() | 保存参数 | |
reboot() | 重启 | |
motor0.config.cur_p_gain | 电流环P | 取值范围1-127,默认20 |
motor0.config.cur_i_gain | 电流环I | 取值范围1-127,默认10 |
motor0.config.vel_p_gain | 速度环P | 取值范围1-255,默认20 |
motor0.config.vel_i_gain | 速度环I | 取值范围1-255,默认40,速度环的P和I参数保持1:2 |
motor0.config.pos_p_gain | 位置环P | 取值范围1-255,默认20 |
motor0.config.driver_id | 驱动器ID | 用于RS485多设备通信,0是广播地址,取值范围0—254 |
motor0.config.motor_type | 电机类型 | MOTOR_TYPE_HIGH_CURRENT、MOTOR_TYPE_GIMBAL |
motor0.config.pole_pairs | 电机极对数 | 取值范围2—64 |
motor0.config.angle_compensation | 角度补偿 | 不同编码器不同电机在高速时需要设置补偿值,电机速度低于2000转不用操作 |
motor0.config.encoder_mode | 编码器接口类型 | ENCODER_MODE_INCREMENTAL、ENCODER_MODE_SPI、ENCODER_MODE_I2C |
motor0.config.encoder_type | 编码器型号 | AS5600、AS5047P、TLE5012B、MT6701 |
motor0.config.encoder_cpr | 编码器CPR | PPR的四倍频是CPR,取值范围12-20000 |
motor0.config.calibration_duty | 零点校准占空比 | 航模电机5—10,云台电机20—30。如有负载可适当增大 |
motor0.config.gpio_mode | 输入模式 | GPIO_MODE_USART、GPIO_MODE_PWM、GPIO_MODE_ADC |
motor0.config.control_mode | 控制模式 | CONTROL_MODE_TORQUE_CONTROL、CONTROL_MODE_VELOCITY_CONTROL、ONTROL_MODE_POSITION_CONTROL |
motor0.config.current_lim | 电流限制 | 单位0.1A,电机最大电流限制,默认200 |
motor0.config.vel_limit | 速度限制 | 单位RPM,速度模式和位置模式的转速限制 |
motor0.config.current_ramp_rate | 电流爬升率 | 力矩模式,防止电机设置不同目标值,电机切换顿挫 |
motor0.config.vel_ramp_rate | 速度爬升率 | 速度模式和位置模式,速度切换更加平滑 |
motor0.config.dc_bus_undervoltage_trip_level | 欠压保护值 | 单位:0.1V,取值范围50—100 |
motor0.config.dc_bus_overvoltage_trip_level | 过压保护值 | 单位:0.1V,取值范围120—560 |
motor0.config.dc_max_positive_current | 过流保护值 | 单位:0.1A,取值范围50—500 |
motor0.config.dc_max_negative_current | 回充电流值 | 单位:0.1A,取值范围-100— -10 |
motor0.config.startup_encoder_index_search | 上电是否找零 | FALSE、TRUE |
motor0.config.startup_encoder_offset_calibration | 上电是否校准 | FALSE、TRUE |
motor0.config.startup_closed_loop_control | 上电是否运行 | FALSE、TRUE |
motor0.config.mapping_torque | 最大输入对应力矩 | 用于电位器和PWM输入控制 |
motor0.config.mapping_velocity | 最大输入对应速度 | 用于电位器和PWM输入控制 |
motor0.config.mapping_position | 最大输入对应位置 | 用于电位器和PWM输入控制,最多50圈,每圈65536,取值范围0-3276800 |
二、软件安装
2.1、安装python
-
1、软件是用python编写的,需要先安装python环境,
以下只为演示安装流程,请安装最新版本,
-
2、安装完以后,测试是否安装成功
输入python,有以下回复,说明安装成功。
输入 exit() 退出
2.2、安装 pyserial
继续输入 pip install pyserial,安装串口插件
2.3、双击运行
三、硬件准备
序号 | 名称 | 数量 | 说明 |
---|---|---|---|
1 | USB转串口 | 1 | TTL电平 |
2 | JCFOC驱动器 | 1 | 工作电压12—36V |
3 | 带编码器电机 | 1 | |
4 | 12V电源 | 1 | 根据电机型号选择电源 |
5 | 杜邦线 | 若干 | 母对母 |
带编码器电机 购买链接:某宝购买
JCFOC驱动器购买链接:某宝购买
四、2804云台电机+AS5600编码器
4.1、位置模式
1.擦除保存的参数
motor0.erase_configuration()
2.选择电机类型,
航模电机:MOTOR_TYPE_HIGH_CURRENT;
云台电机:MOTOR_TYPE_GIMBAL
motor0.config.motor_type = MOTOR_TYPE_GIMBAL
3.设置极对数,根据电机的实际极对数设置
motor0.config.pole_pairs = 7
4、设置编码器接口类型。
目前支持三种接口:
ENCODER_MODE_INCREMENTAL
ENCODER_MODE_SPI
ENCODER_MODE_I2C
motor0.config.encoder_mode = ENCODER_MODE_I2C
5、设置编码器型号。
目前I2C接口只支持这一种型号,
motor0.config.encoder_type = AS5600
6、设置零点校准的占空比。
电机初次使用需要先校准下参数,校准时电机处于开环运行状态,此处为电机PWM输出的占空比,占空比设置太大电机发热;设置太小,电机无力,校准失败。航模电机设置6—10之间,云台电机设置20—35之间。
motor0.config.calibration_duty = 25
7、选择控制模式。
三种控制模式: 力矩模式、速度模式、位置模式
CONTROL_MODE_TORQUE_CONTROL
CONTROL_MODE_VELOCITY_CONTROL
CONTROL_MODE_POSITION_CONTROL
motor0.config.control_mode = CONTROL_MODE_POSITION_CONTROL
8、设置限速。
限制电机转动过程中的最大转速,单位:RPM
motor0.config.vel_limit = 200
9、设置位置闭环P参数,
motor0.config.pos_p_gain = 20
10、设置速度闭环P参数,
motor0.config.vel_p_gain = 40
11、设置速度闭环I参数,
motor0.config.vel_i_gain = 80
12、保存参数
motor0.save_configuration()
13、重启,大约需1秒钟
motor0.reboot()
14、零点检测
电机正反转一下,获取参数,大概5秒钟,不同电机的参数不同,同一个电机不同的三相线接端子方式参数不同。
motor0.requested_state = STATE_CALIBRATION
15、保存零点检测结果。
电机和接线不改变的情况下,以后再上电可以不用零点检测。
motor0.save_configuration()
16、重启,大约需1秒钟
motor0.reboot()
17、等待驱动器重启,发送指令进入闭环状态
motor0.requested_state = STATE_CLOSED_LOOP_CONTROL
18、设置目标位置。
电机采用定点数运算,一圈360°=65536,最高可以设置正负32000圈,即-2097152000——2097152000。
motor0.controller.input_pos = 0
motor0.controller.input_pos = 65536
motor0.controller.input_pos = 655360
motor0.controller.input_pos =