VESC操作入门(二)——双轮毂电机控制和CAN通信

本文详细介绍了如何使用VESC驱动轮毂电机,包括硬件准备、接线、电机校准和设置。接着讲解了CAN通信的硬件连接、指令发送,以及如何通过CAN总线控制双轮毂电机。此外,还探讨了VESC作为USB转CAN模块的可能性。



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

一、VESC驱动轮毂电机

1.1、硬件准备

序号名称数量
1VESC41
28寸轮毂电机1
336V电源1
4USB延长线1

在这里插入图片描述

在这里插入图片描述

1.2、硬件接线

在这里插入图片描述

VESC 购买链接:https://item.taobao.com/item.htm?ft=t&id=684760394070,图锐科技

1.3、校准电机

打开 vesc_tool_3.00 ,这个版本与5.02的固件版本最匹配。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

校准大概需要1分钟,校准后的参数每次都有误差,不必大惊小怪。
注意 VESC ID 是随机的,CAN通信会使用这个ID,下图:
在这里插入图片描述

上一步,点击“OK”后等待5秒钟,切换到如下界面:
点击“Fwd”电机向前转动,点击“Rev”电机向后转动。Finish。
在这里插入图片描述

1.4、设置爬升率和最小速度


1.4.1、键盘控制

左右键控制电机以较低的速度正反转动,上下键控制电机以较高的速度正反转。
轮毂电机不能使用上下键控制,大概是设置速度太高电机容易报错。
注意图中的速度单位是ERPM,对于15对极的轮毂电机,1000ERPM = 66.7RPM = 1.1圈/秒。

在这里插入图片描述

1.4.2、直接设置目标速度

不用键盘控制,还可以左下角直接设置速度

在这里插入图片描述

1.4.3、设置爬升率

没有爬升率的情况下,电机启停都比较突然,体验非常不好。找到爬升率的设置,下图:

在这里插入图片描述


找到代码中的爬升率判断,下图:

在这里插入图片描述


VESC中会限制电机的最小速度,修改了限制后,虽然可以设置更小的速度,但是电机有抖动,尝试修改了PID,作用不大,电机齿槽效应导致的抖动,PID无能为力。
只是对比键盘控制电机启停非常丝滑,但输入目标速度的方式,启停有时就非常不流畅。
PID应该还可以再优化。

在这里插入图片描述

二、CAN通信

2.1、硬件连接

在这里插入图片描述

VESC 购买链接:https://item.taobao.com/item.htm?ft=t&id=684760394070,图锐科技

2.2、代码说明

VESC和ODrive的CAN通信类似,都只有简单的指令,大部分操作都需要通过USB事先配置好。
VESC的CAN波特率默认500K,默认使能,接线既可使用,不需要任何配置。
下图代码的枚举可以看出,设置速度的指令是“3”。两外四个状态 “STATUS” 会在上电主动上传,

在这里插入图片描述

2.3、发送指令

CAN通信的ID就是校准结束后的VESC ID,下图:
在这里插入图片描述

如果没有保存校准结果,还可以在这里查看,下图:
在这里插入图片描述

VESC的CAN ID是 “指令+ID” 的格式,下图:
在这里插入图片描述

电机反转,发送指令,下图:
在这里插入图片描述


上传的4个status含义如下:
没有注明的是我不太确定,留给大家研究。

在这里插入图片描述


三、双轮毂电机

一个VESC只能接一个电机,所以需要两个VESC,利用CAN总线控制。

3.1、校准第二个电机参数

这个 VESC ID 是1,其它参数与第一个略有误差,请无视。
在这里插入图片描述

3.2、硬件连接

can盒的位置需要接入120Ω电阻,vesc1和vesc2可以不接入电阻。
在这里插入图片描述

在这里插入图片描述

VESC 购买链接:https://item.taobao.com/item.htm?ft=t&id=684760394070,图锐科技

3.3、CAN总线发送指令

3.3.1、canable发送指令

VESC需要每隔1000ms发送一次指令,而CANable一次只能发送一个指令,所以不能实现两个电机同时转动。

在这里插入图片描述

3.3.2、ESP32发送指令

要想让两个电机同时转动,需要在1000ms内连续发送两个指令,手工操作CAN盒的方式肯定达不到。只能通过代码的方式,而能够在最短的时间内实现这个功能的代码,非arduino莫属。
技术细节,请点击这篇文章:ESP32的CAN通信

在这里插入图片描述

VESC 购买链接:https://item.taobao.com/item.htm?ft=t&id=684760394070,图锐科技

在这里插入图片描述

在这里插入图片描述

四、把VESC做为USB转CAN模块

这是研究VESC的CAN通信时的意外收获,

在这里插入图片描述


在这里插入图片描述
VESC3需要接入120Ω电阻,VESC1和VESC2可以不用,

在这里插入图片描述

VESC 购买链接:https://item.taobao.com/item.htm?ft=t&id=684760394070,图锐科技

这样接的问题是一次只能发送一个指令,与CANable的功能和毛病完全一样。



(完)

### VESC CAN协议配置与故障排查 VESC( Vedder ESC )是一种开源的电子速度控制器,支持多种通信协议,其中包括CAN协议。通过CAN协议,用户可以实现对VESC控制器的高效控制状态监控。以下是对VESC CAN协议配置及故障排查的相关信息。 #### 1. CAN协议基础 CAN(Controller Area Network)是一种广泛应用于汽车工业领域的串行通信协议。VESC默认支持CAN通信,波特率为500Kbps,并且无需额外配置即可启用[^2]。这意味着在大多数情况下,只需正确连接硬件并设置软件参数,即可实现基本的CAN通信功能。 #### 2. 硬件连接 为了确保VESC CAN通信的正常运行,需要正确连接相关硬件。根据引用内容,以下是典型的硬件连接步骤: - 将电机三相线接入VESC的三相线接口。 - 将编码器连接线接入VESC的SENSE接口。 - 使用USB线将VESC主板连接到PC。 - 将MKS CANable V1.0模块的CANLCANH引脚分别连接到VESC主板对应的引脚[^3]。 此外,还需要确保电源已正确连接至VESC主板,上电后PWR指示灯应点亮以确认供电正常。 #### 3. 软件准备 为了测试配置VESCCAN通信,可以使用专为Windows系统设计的`cangaroo_0_2_3_win64`软件。该软件提供了图形化界面,方便用户快速配置CAN通信参数,如波特率、节点ID等[^1]。以下是软件的基本操作流程: - 下载并解压`cangaroo_0_2_3_win64`软件。 - 启动软件并选择对应的CAN通道。 - 配置波特率为500Kbps(默认值)。 - 设置节点ID以区分不同的VESC控制器。 #### 4. 命令与数据格式 VESCCAN通信命令相对简单,大部分操作可以通过发送特定的CAN帧来完成。例如,设置速度的指令为“3”,而状态信息会主动上传至主机。以下是常见的CAN帧格式: - **标准帧ID**:通常由VESC节点ID消息类型组合而成。 - **数据字段**:包含具体的命令或状态信息。 以下是一个简单的Python代码示例,用于通过CAN总线设置VESC的速度: ```python import can # 配置CAN总线 bus = can.interface.Bus(bustype='socketcan', channel='can0', bitrate=500000) # 定义CAN消息 message = can.Message( arbitration_id=0x200, # 节点ID + 消息类型 data=[3, 0, 0, 0, 0, 0, 0, 0], # 设置速度的指令 is_extended_id=False ) # 发送消息 bus.send(message) ``` #### 5. 故障排查 如果在配置或使用过程中遇到问题,可以参考以下常见故障及其解决方法: - **无法通信**:检查硬件连接是否正确,确保CAN线电源线均已正确连接[^3]。 - **波特率不匹配**:确认软件中设置的波特率与VESC默认值一致(500Kbps)[^2]。 - **节点ID冲突**:确保每个VESC控制器的节点ID唯一,避免通信冲突。 - **软件异常**:尝试重新安装或更新CAN测试工具,确保软件版本兼容。 ---
评论 6
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值