• JCFOC使用说明




    说明

    驱动器采用的是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()
    
    • 1

    2.选择电机类型,
    航模电机:MOTOR_TYPE_HIGH_CURRENT;
    云台电机:MOTOR_TYPE_GIMBAL

    motor0.config.motor_type = MOTOR_TYPE_GIMBAL
    
    • 1

    3.设置极对数,根据电机的实际极对数设置

    motor0.config.pole_pairs = 7
    
    • 1

    4、设置编码器接口类型。
    目前支持三种接口:
    ENCODER_MODE_INCREMENTAL
    ENCODER_MODE_SPI
    ENCODER_MODE_I2C

    motor0.config.encoder_mode = ENCODER_MODE_I2C
    
    • 1

    5、设置编码器型号。
    目前I2C接口只支持这一种型号,

    motor0.config.encoder_type = AS5600
    
    • 1

    6、设置零点校准的占空比。
    电机初次使用需要先校准下参数,校准时电机处于开环运行状态,此处为电机PWM输出的占空比,占空比设置太大电机发热;设置太小,电机无力,校准失败。航模电机设置6—10之间,云台电机设置20—35之间。

    motor0.config.calibration_duty = 25
    
    • 1

    7、选择控制模式。
    三种控制模式: 力矩模式、速度模式、位置模式
    CONTROL_MODE_TORQUE_CONTROL
    CONTROL_MODE_VELOCITY_CONTROL
    CONTROL_MODE_POSITION_CONTROL

    motor0.config.control_mode = CONTROL_MODE_POSITION_CONTROL
    
    • 1

    8、设置限速。
    限制电机转动过程中的最大转速,单位:RPM

    motor0.config.vel_limit = 200
    
    • 1

    9、设置位置闭环P参数,

    motor0.config.pos_p_gain = 20
    
    • 1

    10、设置速度闭环P参数,

    motor0.config.vel_p_gain = 40
    
    • 1

    11、设置速度闭环I参数,

    motor0.config.vel_i_gain = 80
    
    • 1

    12、保存参数

    motor0.save_configuration()
    
    • 1

    13、重启,大约需1秒钟

    motor0.reboot()
    
    • 1

    14、零点检测
    电机正反转一下,获取参数,大概5秒钟,不同电机的参数不同,同一个电机不同的三相线接端子方式参数不同。

    motor0.requested_state = STATE_CALIBRATION
    
    • 1

    15、保存零点检测结果。
    电机和接线不改变的情况下,以后再上电可以不用零点检测。

    motor0.save_configuration()
    
    • 1

    16、重启,大约需1秒钟

    motor0.reboot(
    • 相关阅读:
      一年跳一行,南京校区小哥哥最终选择在软件测试扎根,入职就拿9k!
      Rust 交叉编译 macOS 为 Linux 和 Windows
      个人开源项目如何上传maven中央仓库
      三.Postman接口实践
      使用 Redis 作为缓存的 Spring Boot 应用
      k8s如何优雅地关闭Pod
      HNUCM-2022年秋季学期《算法分析与设计》练习14
      Python 中 Selenium 的 send_keys() 函数
      基于霍夫曼(Huffman)图像编码的图像压缩和重建-含Matlab代码
      算法练习第六十四天
    • 原文地址:https://blog.csdn.net/loop222/article/details/126893154