首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

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

  • 23-09-28 04:01
  • 3412
  • 7965
blog.csdn.net

目录

  • 一、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,
    在这里插入图片描述

 

1.1、 github下载

  • 0.5.4之前的版本可以直接下载编译,但是最新版的直接下载编译会报错。下图:
    在这里插入图片描述
    在这里插入图片描述

 

  • 需要用git下载软件。下图:
    在这里插入图片描述
    上图,小软件的详细安装使用方法请百度。
     
    在这里插入图片描述

 
下载后编译通过,下图:
在这里插入图片描述

 

二、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、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的代码改动最多。

在这里插入图片描述

ODrive 购买链接:某宝购买

 

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秒亮灭一次

在这里插入图片描述

 
 
 
(完)
 
 
 

注:本文转载自blog.csdn.net的loop222的文章"https://blog.csdn.net/loop222/article/details/132623366"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2492) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

101
推荐
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2025 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top