ODrive解析移植(一)—— 国产替代方案(VScode版移植)

目录

  • 一、ODrive简介
    • 1.1、 github下载
  • 二、ODrive官方版本的问题
  • 三、国产化方案
    • 3.1、版本0.5.1与0.5.6的区别
    • 3.2、移植说明
      • 3.2.0、修改“tup.config.default”文件名为“tup.config”,打开屏蔽“v3.6-56V”,
      • 3.2.1、修改死区时间,
      • 3.2.2、修改采样电阻,
      • 3.2.3、修改电源电压的检测电路系数,
      • 3.2.4、修改两路 PWM 的相位差,
      • 3.2.5、设置采样电流范围
      • 3.2.6、修改 drv8301 的相关代码,
      • 3.2.7、屏蔽版本判断
      • 3.2.8、增加LED指示灯


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,
    ODrive解析移植(一)—— 国产替代方案(VScode版移植)_第1张图片

1.1、 github下载

  • 0.5.4之前的版本可以直接下载编译,但是最新版的直接下载编译会报错。下图:
    ODrive解析移植(一)—— 国产替代方案(VScode版移植)_第2张图片
    ODrive解析移植(一)—— 国产替代方案(VScode版移植)_第3张图片

  • 需要用git下载软件。下图:
    ODrive解析移植(一)—— 国产替代方案(VScode版移植)_第4张图片
    ODrive解析移植(一)—— 国产替代方案(VScode版移植)_第5张图片
    ODrive解析移植(一)—— 国产替代方案(VScode版移植)_第6张图片

二、ODrive官方版本的问题


ODrive在驱动大功率电机,特别是双路大功率电机时,会明显容易报错。我觉得官方的板子有两个问题:
1、DRV8301集成了电源+驱动+运放,集成的功能太多,可能会对板子设计要求高一些,否则容易受到干扰,
2、两个DRV8301芯片的SPI接口和引出的SPI接口排针共用,这可能会导致干扰。

如果官方版本用一个独立的电源芯片降压供电,同时引出的SPI接口与DRV使用的SPI接口分开,或者不再引出(比如把编码器设计到驱动板上),这样可以最大限度的降低干扰。

官方最新款的驱动器ODrive Pro和ODrive S1都是单路驱动器,并且做了隔离设计,估计抗干扰能力会更强。

三、国产化方案

3.1、版本0.5.1与0.5.6的区别

1、两个版本的区别还是很大的,代码架构就像换了一个人设计,
2、改动主要是架构,可能是为了以后的升级,
3、操作上的改动,最大的变化就是无感电机的操作指令变化,其它指令变化不大,
4、两个版本的性能表现是完全相同的。

3.2、移植说明

本人已经移植过0.5.1和0.5.6两个版本的代码,本文以0.5.6为例说明。
硬件上主要是用分立元件代替DRV8301,所以代码也围绕DRV8301修改,
ODrive解析移植(一)—— 国产替代方案(VScode版移植)_第7张图片

ODrive 购买链接:某宝购买

3.2.0、修改“tup.config.default”文件名为“tup.config”,打开屏蔽“v3.6-56V”,

ODrive解析移植(一)—— 国产替代方案(VScode版移植)_第8张图片

3.2.1、修改死区时间,

TIM_APB1_DEADTIME_CLOCKS 为刹车电路的死区时间,
不同的驱动芯片和 MOS 管需要不同的死区时间,请以实际电路为准。
ODrive解析移植(一)—— 国产替代方案(VScode版移植)_第9张图片

3.2.2、修改采样电阻,

本店的单排 MOS 限制采样电流范围为 60A,使用了 1mΩ 的采样电阻,
双排 MOS 限制采样电流范围为 120A,所以使用了 0.5mΩ 的采样电阻,
采样电阻上有阻值标注,请根据实际阻值修改。
ODrive解析移植(一)—— 国产替代方案(VScode版移植)_第10张图片

3.2.3、修改电源电压的检测电路系数,

官方电路使用的是 18k+1k,借鉴 VESC 的设计选择 39k+2.2k。
因为电阻有误差,所以实际运行中读取的电源电压有 0.2V 左右的误差。
ODrive解析移植(一)—— 国产替代方案(VScode版移植)_第11张图片

3.2.4、修改两路 PWM 的相位差,

相位差与死区时间和实际 MOS 的开关速度相关,这是整个代码中最难调的一步。
ODrive解析移植(一)—— 国产替代方案(VScode版移植)_第12张图片

3.2.5、设置采样电流范围

采样电流范围与采样电阻和运放放大倍数相关,驱动器的运放倍数固定为 20 倍,所以采样电流范围只与采样电阻相关。
详细分析请看这篇文章:ODrive 运放电路的分析和替代方案
ODrive解析移植(一)—— 国产替代方案(VScode版移植)_第13张图片

3.2.6、修改 drv8301 的相关代码,

本次移植用 FD6288 代替 DRV8301,没有 SPI 通信,需将所有 DRV8301 的配置删除,涉及多个文件,也是本次移植过程中代码修改最多的部分,不再一一列举,请以实际代码为准。
ODrive解析移植(一)—— 国产替代方案(VScode版移植)_第14张图片

3.2.7、屏蔽版本判断

以上修改完毕后编译下载,驱动板上电后死机,查找原因,发现卡死这这个地方,屏蔽
ODrive解析移植(一)—— 国产替代方案(VScode版移植)_第15张图片

3.2.8、增加LED指示灯

TIM1更新中断频率16KHz,每0.5秒亮灭一次
ODrive解析移植(一)—— 国产替代方案(VScode版移植)_第16张图片




(完)


你可能感兴趣的:(ODrive,odrive,电机驱动器,stm32)