目录
ODrive、VESC和SimpleFOC 教程链接汇总:请点击
一、ODrive简介
-
官方网站:https://odriverobotics.com/
-
github网站:https://github.com/odriverobotics/ODrive
-
官方使用说明:https://docs.odriverobotics.com/v/latest/guides/getting-started.html,
在左下角选择对应的版本,比如ODrive-V3.6的当前最新版本是0.5.6,
1.1、 github下载
- 0.5.4之前的版本可以直接下载编译,但是最新版的直接下载编译会报错。下图:
- 需要用git下载软件。下图:
上图,小软件的详细安装使用方法请百度。
下载后编译通过,下图:
二、ODrive官方版本的问题
驱动板购买链接:https://item.taobao.com/item.htm?ft=t&id=644329838237,图锐科技
ODrive在驱动大功率电机,特别是双路大功率电机时,会明显容易报错。我觉得官方的板子有两个问题:
1、DRV8301集成了电源+驱动+运放,集成的功能太多,可能会对板子设计要求高一些,否则容易受到干扰,
2、两个DRV8301芯片的SPI接口和引出的SPI接口排针共用,这可能会导致干扰。
如果官方版本用一个独立的电源芯片降压供电,同时引出的SPI接口与DRV使用的SPI接口分开,或者不再引出(比如把编码器设计到驱动板上),这样可以最大限度的降低干扰。
官方最新款的驱动器ODrive Pro和ODrive S1都是单路驱动器,并且做了隔离设计,估计抗干扰能力会更强。
三、国产化方案
3.1、版本0.5.1与0.5.6的区别
两个版本的功能和性能基本相同,区别主要是架构调整,
1、架构的改动非常大,就像换了一个开发人员,
2、0.5.1的代码看起来更吃力,中断功能分散,run_control_loop()函数的频繁使用,让人抓不住重点,
3、0.5.6把代码功能集中到TIM8更新中断中处理,简化了结构,思路更清晰,
4、操作上的改动,最大的变化就是无感电机的操作指令变化,其它指令变化不大,
3.2、移植说明
本人已经移植过0.5.1和0.5.6两个版本的代码,本文以0.5.6为例说明。
硬件上用国产芯片代替进口芯片,所以移植主要是根据硬件的改动修改代码,
其中用分立元件代替DRV8301的改动最大,所以围绕DRV8301的代码改动最多。
驱动板购买链接:https://item.taobao.com/item.htm?ft=t&id=644329838237,图锐科技
3.2.0、修改“tup.config.default”文件名为“tup.config”,打开屏蔽“v3.6-56V”,
3.2.1、修改死区时间,
TIM_APB1_DEADTIME_CLOCKS 为刹车电路的死区时间,
不同的驱动芯片和 MOS 管需要不同的死区时间,请以实际电路为准。
3.2.2、修改采样电阻,
本店的单排 MOS 限制采样电流范围为 60A,使用了 1mΩ 的采样电阻,
双排 MOS 限制采样电流范围为 120A,所以使用了 0.5mΩ 的采样电阻,
采样电阻上有阻值标注,请根据实际阻值修改。
3.2.3、修改电源电压的检测电路系数,
官方电路使用的是 18k+1k,借鉴 VESC 的设计选择 39k+2.2k。
因为电阻有误差,所以实际运行中读取的电源电压有 0.2V 左右的误差。
3.2.4、修改两路 PWM 的相位差,
相位差与死区时间和实际 MOS 的开关速度相关,这是整个代码中最难调的一步。
3.2.5、设置采样电流范围
采样电流范围与采样电阻和运放放大倍数相关,驱动器的运放倍数固定为 20 倍,所以采样电流范围只与采样电阻相关。
详细分析请看这篇文章:ODrive 运放电路的分析和替代方案
3.2.6、修改 drv8301 的相关代码,
本次移植用 FD6288 代替 DRV8301,没有 SPI 通信,需将所有 DRV8301 的配置删除,涉及多个文件,也是本次移植过程中代码修改最多的部分,不再一一列举,请以实际代码为准。
3.2.7、屏蔽版本判断
以上修改完毕后编译下载,驱动板上电后死机,查找原因,发现卡死这这个地方,屏蔽
3.2.8、增加LED指示灯
TIM1更新中断频率16KHz,每0.5秒亮灭一次
驱动板购买链接:https://item.taobao.com/item.htm?ft=t&id=644329838237,图锐科技
电机 购买链接:https://item.taobao.com/item.htm?ft=t&id=643573104607,图锐科技
欢迎加入技术交流群:923734429 (入群申请写:CSDN)
(完)