ODrive踩坑(五)ODrive驱动云台电机、低齿槽转矩电机实现高精度定位

2023-11-16

前几篇介绍了ODriveWindows下的使用环境搭建,驱动3508 / 5008无刷电机、TLE5012BAS5047P的ABI编码器配置、AS5047P-SPI绝对值编码器配置。

ODrive踩坑(一)windows下使用环境的搭建,odrivetool及USB驱动的安装
ODrive踩坑(二)电机和编码器参数配置、校准、位置闭环模式转动电机(TLE5012B - ABI)
ODrive踩坑(三)ODrive配置使用AS5047P磁编码器的ABI接口
ODrive踩坑(四)ODrive配置AS5047P-SPI绝对值磁编码器,不需每次上电校准无刷电机,直接上电可用


一、航模无刷电机空载的定位精度问题


  先前用ODrive驱动的电机,都是些航模无刷电机,高压 高转速 大功率,响应迅速并且能很好的进行闭环控制。不过使用的体验并没那么完美。差的地方主要体现在空载的定位精度不好,即使PI调节的很细致,空载时也多少有那么一点静差。而且效果因电机而异:尺寸小的电机,一般KV值大,定位效果也不好;尺寸大的电机,KV小,定位效果相对较好。

  使用普通航模电机,引起空载时定位精度差的主要原因有:电机磁极对数较少齿槽转矩过大

  • 电机磁极对数较少 这个好理解,查电机的磁瓦数量呗,多就是多少就是少,像航模电机大多数都喜欢使用7对极。也通常与电机尺寸有关,大尺寸电机更容易安放更多的磁极,相对的磁极越多KV值也就越小。

  • 齿槽转矩 指的是 永磁电机绕组不通电时,永磁体铁芯之间相互作用产生的转矩。它的产生来源于永磁体和铁芯,这种力试图将它们对齐。轻轻转一下电机轴,就能判断一个电机齿槽转矩的大与小。

  航模电机 的 齿槽转矩通常较大。用手转动的 挫顿感 越强,齿槽转矩就较大,也就越不适合用在需要 空载高精度定位 的场合。


  对于运动阻尼小需要高精度定位 的应用,可以选用专门设计的电机,像云台电机。这类电机一般 磁极对数较多相电阻偏大、磁极或者绕组可能特意优化过,以降低齿槽转矩,可以实现更高精度的定位。一般为扁平的外形,便于直驱载荷。不经过减速,就没有机械回差的影响。



二、云台电机测试


  从最近收到的一批云台电机说起,起初购买是图它尾部自带的磁钢,想着 配合磁编码器芯片进行闭环位置定位。以前都是拿普通电机在轴的尾部用胶水粘贴强磁,同心度完全看天意,而且也说不定哪天就掉了。而换成这种带磁铁安装卡座的电机,就没了安装上的顾虑,使用起来更为方便。

  经过一番测试,电机意外的好用。特点与上面说的一致,相电阻大、所需的驱动电流小,低转速大扭矩。最关键的是齿槽转矩小,小到几乎没有 挫顿感 ,进而运行起来异常丝滑,没有大电机的那种空载一卡一卡的情况,定位非常精准,闭环稳定后几乎没有静差。

  起初想看看里面的磁瓦数量,来确定极对数。但从外面很难看到里面,想卸掉底部的磁极和卡座,然后把转子卸下来。结果轴的尾部是设计过的,有一块突起,想要卸下转子只能从上面将轴敲下来。搞不定,不过勉强从缝隙中能看到转子的磁极,根本没有瓦片,是一整个环状…整个人傻了

  无奈,只能换一种方法。将一相通直流电,转动转子,转一周有7个卡顿的位置,也就是说它是7对极。

在这里插入图片描述
在这里插入图片描述


安装在以前的 万能电机转接板上,再将三相FPC排线转换成2.54的插针,便于引出。
在这里插入图片描述

  打个小广告。

  为了方便测试 AS5047P-SPI绝对值编码器,也便于扩展不同的电机,就有了下面这块万能转接板,支持 2208、2212、3508、5008、6010、6374、42步进、57步进 等不同电机的定位安装。

  图中AS5047P转接板购买链接,我的淘宝小店AS5047P SPI磁编码器 3206云台无刷电机 带径向磁铁 Odrive电机

  店铺详情内有安装孔位、原理图、教程、资料,手机端可能因没做适配看不到,建议用电脑打开。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述


  根据选择的 编码器类型,选择合适的接线方式,我用的是 AS5047P-SPI绝对值磁编码器,接线及配置方法参照本专栏第(四)章节。

  既然也是7对极,那电机参数和控制器参数也先按照之前的配置。测试后发现控制效果竟然出奇的好,之前调出来的真是万能参数。๑乛◡乛๑嘿嘿
在这里插入图片描述


三、ODrive配置


  • 首先根据自己的 编码器类型,照着本专栏的的(二)(三)或(四)撸一遍配置。
    例如:
    TLE5012B-E1000,ABI接口,按照(二)配置。
    AS5047P,ABI接口,按照(三)配置。
    AS5047P,SPI接口,按照(四)配置。(可在校准一次编码器后直接上电使用,不用像ABI编码器要每次上电都校准)

  • 仅进行其中的 主板参数配置电机参数配置编码器参数配置控制器参数配置 即可,电机和编码器校准要另外配置。


  • 进行电机和编码器校准前,需要先更改云台电机的电流电机类型
# 配置过流保护阈值(A)
odrv0.config.dc_max_positive_current = 6.0

# 配置电机0的电流采样阈值(A)
odrv0.axis0.motor.config.requested_current_range = 10

# 配置电机0的限制电流(A)(根据自己电机的额定电流更改)
odrv0.axis0.motor.config.current_lim = 3

# 配置电机0校准时的电流阈值(根据自己电机的负载状况酌情配置)(A)
odrv0.axis0.motor.config.calibration_current = 3

# 配置电机0类型。
# 目前支持两种电机:大电流电机(MOTOR_TYPE_HIGH_CURRENT)和云台电机(MOTOR_TYPE_GIMBAL)
odrv0.axis0.motor.config.motor_type = MOTOR_TYPE_GIMBAL

# 保存参数
odrv0.save_configuration()

# 重启驱动器
odrv0.reboot()

四、电机和编码器校准


校准云台电机的编码器。

# 测试AS5047P-SPI磁编码器能否正常读数(手动拨动下电机)
odrv0.axis0.encoder.shadow_count

# 如上述读数始终为0,建议断电重启,再重新检查编码器读数是否正常

# 进行校准,(运行后,电机会正转一圈再反转一圈)
# 注意这个指令跟先前用的都不一样
odrv0.axis0.requested_state = AXIS_STATE_FULL_CALIBRATION_SEQUENCE

之后进入闭环模式,电机会保持位置,用手扭动电机,电机会产生反抗并回到原来位置:

# 配置电机为闭环模式
odrv0.axis0.requested_state = AXIS_STATE_CLOSED_LOOP_CONTROL

测试运动。电机会按照之前设置的梯形轨迹运行到指定位置:

# 控制电机运行到10圈的位置
odrv0.axis0.controller.input_pos = 10

# 控制电机运行到0圈的位置
odrv0.axis0.controller.input_pos = 0

经过上面的校准后,ODrive已经能够驱动云台电机,并用AS5047P磁编码器进行闭环控制。

但并不会在重启后自动进入闭环,仍需在重启后手动进入闭环,略有不便。下面设置上电自动进入闭环运行。

# 设置电机预校准。(不用每次上电都哔~的一声)
# 驱动器会将本次校准值保存,避免上电启动后自动校准,以加快启动速度。
odrv0.axis0.motor.config.pre_calibrated = True

# 设置编码器预校准。(不用每次上电都右转一圈又左转一圈)
# 驱动器会将本次校准值保存,避免上电启动后自动校准,以加快启动速度。
odrv0.axis0.encoder.config.pre_calibrated = True

# 设置ODrive上电启动时,自动进入闭环模式
odrv0.axis0.config.startup_closed_loop_control = True

# 保存参数
odrv0.save_configuration()

# 重启驱动器
odrv0.reboot()

运动过程丝滑流畅,齿槽转矩小的体验就是不一样。定位效果超级好,稳定后几乎没有静差。

不过跟先前的几个电机一样,闭环运行时的噪音较大,估计参数还要再重调一次。



五、错误修复、注意事项


多用odrv0.axis0.error去检错,多用odrv0.axis0.motorodrv0.axis0.encoder去检查参数。

odrv0.axis0.encoder.shadow_count可以测试AS5047P-SPI磁编码器能否正常读数。

odrv0.vbus_voltage:检查ODrive的供电电压。

如果你的ODrive无法正常工作,用如下查看错误列表:
dump_errors(odrv0) 查看错误
dump_errors(odrv0, True) 清除错误(如果报错ODrive不会继续执行电机旋转指令)


如需重新对 AS5047P 进行软硬件设计,有以下文章可供参考:
AS5047P磁编码器应用设计大全解:硬件电路设计、SPI通信时序、逻辑波形分析、注意事项

相关传感器:
TLE5012B 硬件电路设计、4线SPI通信,驱动完美兼容4线SPI不用改MOSI开漏推挽输出

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ODrive踩坑(五)ODrive驱动云台电机、低齿槽转矩电机实现高精度定位 的相关文章

  • 怎么检查PCB layout?!推荐一款避坑神器

    原文来自公众号 工程师看海 公众号私信获取资料 DFM 对于硬件工程师而言 最紧张的时间节点就是发板前夕 画好的PCB要出Gerber文件给工厂 这Gerber文件是一定要仔仔细细检查 以前我一直用CAM350 这种检查纯靠 眼力 简单的板
  • 一分钟带你快速认识S参数

    S 参数是SI与RF领域工程师必备的基础知识 大家很容易从网络或书本上找到S Y Z参数的说明 但即使如此 在相关领域打滚多年的人 仍然可能还是会被一些问题困扰着 你懂S参数吗 不懂的话 那么请继续往下看 S参数简介 S参数 也就是散射参数
  • 什么是LDO的线性调整率和负载调整率?

    原文来自公众号 工程师看海 后台回复 LDO仿真文件 LDO是常见的电源架构 线性调整率和负载调整率是两个重要的参数 线性调整率 line regulation 指的是 在特定负载电流条件下 当出入电压变化时 引起的对应输出电压的变化量 从
  • 树莓派RP2040开发板自制24通道 逻辑分析仪

    目录 前言 1 准备工作和前提条件 1 1 Raspberry Pi Pico RP2040板子一个 1 2 Firmware LogicAnalyzer 5 0 0 0 PICO uf2固件 1 3 LogicAnalyzer 5 0 0
  • Windows平台下 USRP E310 基础环境配置

    原创声明 作者 Billyme 詩 博客园 https www cnblogs com billyme CSDN https blog csdn net horizon08 Github https billyas github io 本文
  • 什么是TDD?

    作为手机硬件开发者来说 TDD问题的debug绝对是最有意思的一件事情 即使你有再丰富的手机行业开发经验 在前期的设计中都不一定能完美的排掉这个雷 同时在后期发现问题的debug中 也会走很多弯路 所以TDD问题一直是手机开发者头疼的问题
  • UDIMM和RDIMM内存条区别

    那什么是RDIMM 什么又是UDIMM呢 RDIMM registered DIMM Registered Dual In line Memory Module 带寄存器的双线内存模块 表示控制器输出的地址和控制信号经过Reg寄存后输出到D
  • 基于滑模控制的永磁同步电机直接转矩控制学习

    导读 针对传统的DTC存在的问题进行 本期主要介绍基于滑模控制的永磁同步电机直接转矩控制 如果需要文中的仿真模型 关注微信公众号 浅谈电机控制 获取 传统DTC采用两个 Bang bang 控制器分别对转矩和磁链幅值进行控制 响应快速 对系
  • 【深度学习工作站】CUDA + cuDNN + Tensorflow-gpu

    安装有两种路径 1 Anaconda简便安装 不需要安装CUDA和cuDNN 即使装了 Conda环境还是会重装CUDA和cuDNN 在清华镜像下载Anaconda3 新建环境后conda install tensorflow gpu 1
  • Verilog HDL 语言笔记

    目录 一 基本语法 1 模块的结构 1 模块声明 2 端口定义 3 数据类型说明 4 逻辑功能描述 2 语言要素及数据类型 2 1语言要素 2 2 常量 2 3 变量和数据类型 2 4 参数 2 5 向量 2 6 存储器 2 7 运算符 3
  • 电阻噪声的基础知识和一个有趣的小测试

    作者 TI 专家 Bruce Trump 翻译 TI信号链工程师 Tom Wang 王中南 放大电路的噪声性能受到输入电阻和反馈电阻Johnson噪声 热噪声 的影响 大多数人似乎都知道电阻会带来噪声 但对于电阻产生噪声的细节却是一头雾水
  • 电巢携手武昌工学院工程能力实训顺利开班!

    为深化校企合作 产教融合打造新工科建设 提升学生工程实践能力 电巢工程能力实训班按照不同岗位类别 匹配对应的企业岗位任职能力要求对学生开展分级培养 以产业需求为导向 培养创新型 应用型人才 6月6日下午4时 深圳电巢联合武昌工学院信息工程学
  • 基于电流采样运放的DCDC电源输出线损补偿电路的详细推导计算

    基于电流采样运放的DCDC电源输出线损补偿电路的详细推导计算 作者 TI 工程师 Kevin Zhang 当DCDC电源输出需要经过一根长线缆才能到达负载时 由于线缆的阻抗产生压降 会导致负载端电压小于实际DCDC输出电压 为保证负载端电压
  • 基于STM32F4单片机对步进电机的控制(有代码)

    步进电机简介 步进电机是将电脉冲控制信号转变为角位移或线位移的一种常用的数字控制执行元件 又称为脉冲电机 在驱动电源的作用下 步进电机受到脉冲的控制 其转子的角位移量和速度严格地与输入脉冲的数量和脉冲频率成正比 步进电机每接收一个电脉冲 转
  • STM32的串口中断详解

    目录 中断配置 中断服务函数 1 中断服务函数名称查找 2 中断服务函数 3 可以选择的串口中断类型 extern u8 USART RX BUF USART REC LEN extern u16 USART RX STA 中断配置 使能接
  • PCB设计笔记

    系列文章目录 1 元件基础 2 电路设计 3 PCB设计 4 元件焊接 5 板子调试 6 程序设计 7 算法学习 8 编写exe 9 检测标准 10 项目举例 11 职业规划 文章目录 前言 一 PCB板上的 地 1 详解电路设计中单点接地
  • 如何理解电容的阻抗-频率曲线

    B站视频讲解 https www bilibili com video BV1vz4y197kP p 3 今天我们来说一说电容的阻抗频率曲线 首先呢 为什么要讲这个呢 那是因为这个非常重要 对我们使用电容有很大的指导意义 电容阻抗 频率曲线
  • 计算机科学丛书(2014-2018.Q1)

    ISBN 名称 作者 出版时间 978 7 111 53451 8 数学设计和计算机体系结构 原书第2版 美 戴维 莫尼 哈里斯 莎拉 L 哈里斯著 978 7 111 44075 8 嵌入式计算系统设计原理 美 Marilyn Wolf著
  • [keil5] 中有关“TOOLS.INI-Section ‘[C51]‘ : missing ‘PATH‘ enty “错误

    在安装vdmagdi后 打开keil5 uVision5出现 gt gt gt TOOLS INI Section C51 missing PATH enty lt lt lt 错误 原因如下 双击运行vdmagdi exe文件 选择了AG
  • 2022年 大学生工程训练比赛[物料搬运]

    本人和团结参加了2022年大学生工程训练 简称工训赛 校赛选拔 准备了几个月的时间和花费了较多的资金 由于疫情等多种情况 很遗憾未能参加湖南省省赛 过了这么久还是写个博客记录参赛准备和调试过程 目录 一 比赛要求 二 整体思路 三 硬件模块

随机推荐