ODrive的CAN通信



SimpleFOC、ODrive和VESC 教程链接汇总:请点击

一、硬件准备

在这里插入图片描述

ODrive 购买链接:https://item.taobao.com/item.htm?ft=t&id=644329838237,图锐科技
电机购买链接:https://item.taobao.com/item.htm?ft=t&id=643573104607,图锐科技


在这里插入图片描述

二、代码说明


ODrive的CAN通信采用标准帧格式,也就是11bit。Address = node_ID | cmd_ID。
节点ID(node_ID)为高6bit,设置范围1 — 0x3F,一个ODrive的M0/M1需设置为不同的node_ID。
命令ID(cmd_ID)为低5bit,目前共有26个指令,如下图。


在这里插入图片描述

ODrive默认CAN通信ID为0,默认波特率为250K。上电后CAN接口以0.1秒为周期发送心跳包。

在这里插入图片描述

三、通信操作

3.1、设置ID和波特率

odrv0.axis0.config.can_node_id = 2   //ID=2
odrv0.can.set_baud_rate(250000)      //设置波特率250K
odrv0.save_configuration()
odrv0.reboot()

节点地址为2,合成指令时需左移5位,
上电后上传的心跳 cmd_ID=0x01(MSG_ODRIVE_HEARTBEAT),msgID = (node_ID<<5) | cmd_ID = 0x041,

在这里插入图片描述

3.2、读取电压


读取当前电压值(MSG_GET_VBUS_VOLTAGE)cmd_ID=0x17,msgID = (node_ID<<5) | cmd_ID = 0x057,发送后没有反应,看代码需要rtr为1,打勾。

在这里插入图片描述
在这里插入图片描述

3.3、完整操作指令

假如已经通过USB口配置电机参数并保存。

下面通过CAN指令校准、进入闭环模式并设置目标位置。

设置Axis请求状态(MSG_SET_AXIS_REQUESTED_STATE)cmd_ID = 0x07,Adress=(node_ID<<5)|(cmd_ID)=0x047。

047 01 00 00 00 00 00 00 00 //AXIS_STATE_IDLE
047 02 00 00 00 00 00 00 00 //AXIS_STATE_STARTUP_SEQUENCE
047 03 00 00 00 00 00 00 00 //AXIS_STATE_FULL_CALIBRATION_SEQUENCE
047 04 00 00 00 00 00 00 00 //AXIS_STATE_MOTOR_CALIBRATION
047 05 00 00 00 00 00 00 00 //AXIS_STATE_SENSORLESS_CONTROL
047 06 00 00 00 00 00 00 00 //AXIS_STATE_ENCODER_INDEX_SEARCH
047 07 00 00 00 00 00 00 00 //AXIS_STATE_ENCODER_OFFSET_CALIBRATION
047 08 00 00 00 00 00 00 00 //AXIS_STATE_CLOSED_LOOP_CONTROL
047 09 00 00 00 00 00 00 00 //AXIS_STATE_LOCKIN_SPIN
047 0A 00 00 00 00 00 00 00 //AXIS_STATE_ENCODER_DIR_FIND
047 0B 00 00 00 00 00 00 00 //AXIS_STATE_HOMING

在这里插入图片描述

在这里插入图片描述

设置目标位置(MSG_SET_INPUT_POS)cmd_ID = 0x0C,Adress=(node_ID<<5)|(cmd_ID)=0x04C。

在这里插入图片描述

前4个字节为目标位置,
后2个字节限制最大速度,最后2个字节为限制最大力矩,如果之前已经通过USB配置过,此处可以设置为0。

设置目标位置为5,浮点数转为16进制0x40A00000,如下:

在这里插入图片描述
在这里插入图片描述

设置目标位置为0,如下:
在这里插入图片描述

3.4、其它指令

在这里插入图片描述

在这里插入图片描述


(完)


  • 7
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值