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



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)



(完)

  • 11
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
STM32是一款广泛应用于嵌入式系统开发的微控制,而ODrive是一款开源的高性能电机驱动。将STM32和ODrive进行移植,可以让ODriveSTM32上进行高效稳定的运行。 首先,进行STM32和ODrive的硬件连接。需要连接STM32的通信接口(例如SPI、UART等)和ODrive的通信接口,确保二者可以进行正常的数据传输和控制信号交互。接着,可以根据ODrive的驱动程序进行调试和测试,确保STM32与ODrive硬件连接的正确性。 其次,进行STM32和ODrive的软件移植。这包括将ODrive的控制算法和驱动程序移植STM32的开发环境中,并针对STM32的处理架构进行优化。需要编写STM32的驱动程序和控制算法,确保这些软件能够在STM32上正常运行并且与ODrive硬件连接良好。 同时,需要对ODrive的外设(如编码、电机、传感等)进行适配,以确保STM32可以正确识别和控制这些外设。这样,STM32就可以完全代替原有的控制,实现对ODrive的全面控制。 最后,进行功能测试和性能优化。通过对STM32和ODrive的联合工作进行测试,确保其性能和稳定性能够达到预期的要求。同时,可以根据测试结果对软件进行优化,提高系统的效率和稳定性。 总之,STM32和ODrive移植是一项涉及硬件连接和软件移植的复杂任务,需要充分理解和熟悉两者的工作原理和规范,才能够完成移植工作并取得良好的效果。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值