test1

Page 1

Mr. Deng

///

CONTENT 目录

Deng FOC是适用于三相无刷直流电机和永

磁同步电机的高集成度FOC驱动器。

Deng FOC驱动器支持驱动大电流电机,

可以实现FOC位置、速度、力矩闭环控

制。

基于功能强大、性能稳定的开源项目ODrive,

我们进一步优化电路、缩小体积,优化接口,

提高驱动器整体的可扩展性。

编码器方面则支持ABZ模式和SPI模式

(板载),并能够实时检测驱动器温度。

Deng FOC预留了多种接口,包括USB

CAN、UART以及FPC串口接口(可实

现屏幕显示或无线控制),让大家尽可 能自由开发。

更重要的是,我们也进一步压缩成本,

致力于打造性价比最高,大家都能一起

来玩的高性能FOC电机驱动器!

一、概述
01 02

输入电压 12V-24V

工作电流 30A

峰值电流 50A

支持电机类型 直流无刷电机

尺寸 42mm*42mm

制动方式 功率耗散电阻

板载编码器类型 AS5047P

支持编码器信号 ABI SPI PWM HALL

USB CAN UART Step/Dir

a b

通信接口

模拟输入

SWD程序下载/调试

其他

电源指示VCC

DRV故障状态指示(nFault)

03 04
二、简介

其中,⑦的2*7P GPIO引脚示意如下:

Pin1 Pin3 Pin5 Pin7

对于编码器,Deng FOC 有两种型号,可在 淘宝页面选购。

UART.TX Step 数字输入

Pin2 Pin4 Pin6 Pin8 UART.RX Dir 数字输入

05 06
///
PWM
数字输入
输入
PWM
SWDIO
3.3V 模拟
CLK G 5 SWCLK GND 5V
输入 DIO 3 A3
数字
3.3V
07 08 ///

每块Deng FOC发货前都经过仔细的外观检

查以及例程测试,因此一般都不会出现问题, 但在包装运输过程中难免可能会产生损伤,

因此建议收到后在上电前进行一般检查。

【使用前检查】完成后,就可以开始准备后 文所述的硬件进行首次的上电检测。

三、检查 09 10
/// ///

硬件清单

✓ Deng FOC

✓ 12V-24V DC直流稳压源

第一步 接入Type-C数据线,板上蓝灯(电源

指示灯)和红灯(DRV故障指示灯)

✓ Type-C 数据线 (注意区分

数据线和充电线)

✓ 1.14寸LCD显示屏(可选)

耗散电阻(可选)

11 12
均亮起。

第二步

如果选配屏幕,在驱动板背面的FPC连接器上

连接屏幕。将FPC连接器两边的黑色锁扣轻轻

往外拉出,按照下图的方向插入屏幕排线,确

13 14
屏幕详情信息如下: ◼ 状态 ◼ 模式 ◼ 力矩 ◼ 电流q/d ◼ 速度 ◼ 位置 ◼ 电压 ◼ 电流 ◼ MOS温度 ◼ 当前值 ◼ 目标值 屏幕 显示 信息:
保金手指完全进入连接器后,再将锁扣按进连 接器。

四、环境配置

第一步 接入DC_BUS电源(先

插入XT30接口,再打开 电源开关),红灯熄灭。

Odrivetool是python的一个模块,可以用来

配置和调试odrive和Deng FOC。在使用它 之前,需要先配置好python

的环境。

第二步 检查稳压电路的输出5V,以及数字供电3.3V 和模拟供电3.3V

已安装好可以跳过这一步。我们推荐使用 anaconda,因为他包含了很多工具,并且 用虚拟环境配置不至于弄乱原有的环境。

以下以安装anaconda为例:

15 16

下载anaconda

官网网址:

https://www.anaconda.com/products/ individual ,选择适合自己的版本。这里

选择的是64-Bit Graphical Installer

(477 MB)

C 注意要取消勾选“Add Anaconda to my PATH environment Variable

等后面安装完成后手动配置。

B 选择安 装路径:

未完,接后页……

17 18 A

安装完成后,在开始界面找到并打开

Anaconda Prompt(Anaconda3),

输入“conda info”验证是否安装成功。

配置环境变量。

详情见右页

控制面板->系统和安全->系统->高级系统设

置->环境变量->用户变量->PATH 中添加

anaconda的安装目录的Scripts文件夹。查

看自己安装anaconda的路径,找到Scripts

文件夹,我这里的路径是(anaconda安装路

径)\Scripts。

19 20 D
E

B

打开命令行cmd,创建虚拟环境:

conda create -n python39 python=3.9

激活刚刚新建的环境

conda activate python39

C 安装 odrivetool

pip install odrive==0.5.1.post0

21 22
A

输入 odrivetool 测试是否安装成功。

pip install pywin32 == 225

(不更新)

23 24 D
E
如果出现以下错误: 执行:
A 以 管理员权限 运行zadig-2.5 B 弹出更新提醒,选择no

C 选择 Options 中的 List All Devices

E 选择上下箭头,选择 libusb-win32(v 1.2.6.0),点击

Repalce Driver

D 下拉菜单中,选择 Odrive 3.5 Native Interface(Interface 2)

25 26
F 等待驱动替换完成

G 完成后,关闭 Zadig 窗口

C 在 Python39 环境中连接 odrivetool,

输入命令:odrivetool

D 出现 ”Connected to ODrive xx as odrv0”,代表连接成功。

xx 是

Odrive 的主板序列号

A 插入USB,板上的蓝灯亮起

B 激活环境(

Python39)

27 28

五、开始使用

电机轴粘上磁铁:(磁铁必须为 径向磁铁 ,

硬件清单

✓ Deng FOC ✓ 电机

✓ ABI编码器(带板载编码器

型忽略)

✓ 12V-24V 直流电源

✓ Type-C 数据线

✓ 1.14寸LCD显示屏(可选)

✓ 耗散电阻(可选)

已随板附赠)

若使用的是板载编码器型,固定DengFOC

板子和电机,使DengFOC背面的编码器对

准磁铁,间隔1-3mm左右。

❖ 若使用的是外接编码器型,则固定编码器

模块和电机,使编码器芯片对准磁铁,同

样距离1-3mm左右。

29 30

接上USB,电机以及电源。下图为板

载编码器型的连接示意。图中的模型

可在售后群下载自行打印。

USB连接电脑(电源可以先不打开,只 需连接USB),激活odrivetool所在的 conda环境,输入”odrivetool”。出现

odrv0.erase_configuration()

31 32
连接成功的提示:
开始新的配置前建议清除现有配置,在 odrivetool上执行指令:

Deng FOC 准备了 python 程序可以一

键配置参数和校准。在程序的开头说明

并定义了所需的基本参数可按实际情况

修改,运行后即可配置所有参数,并进 行校准。

针对不同电机,主要 需要设置耗散电阻

值、制动回流电流值、电机的极对数,

KV值以及编码器的位置读取模式、CPR

值(暂时只支持选择 AS5047P 的ABI 模

式和 SPI 模式)。其他参数可详细参考

5.2部分及第六章。程序中参数设置的位

置如右图:

33 34
/// /// ///

在设置完所需的参数后,我们就可以对 电机进行参数配置和参数校准了。

A 在终端中激活 4.1 中安装 odrive

的 python 环境

B 在 python 程序所在的目录下运行

程序

C ABI模式下按照提示进行参数配置

与校准,如右图所示

35 36

针对于板载编码器型:由于ODrive 对

SPI 编码器的支持存在一点问题,如果

需要使用AS5047P 的 SPI 模式,则需

要按照一下步骤执行:

首先先配置参数,但不要校准电机、编

码器以及进入闭环模式,然后保存设置, 重启。

第二步:再次执行程序

第一步:执行程序

37 38 D
不再次配置参数,而是进行校准步骤。

如果在参数设置过程中出现错误,程序 会停止操作并打印出错误原因,如下图

当极对数设置不正确,导致编码器校准 出错。

根据实际情况修改以下参数(具体的参数说 明可以看第6章)

按照所使用的电机修改具体参数。以

SUNNYSKY

V4008 KV380电机为例, 该电机参数为:

39 40 E
41 42
由于Deng
, 所以以AS5047P的ABI模式和SPI模式为例介
则相应地在配置程序中所设置的参数为:
FOC的板载编码器型号为AS5047P
绍配置参数。

另外,因为外接编码器仅支持ABI

模式,所以如果需要配置其他的编码器,

也可以使用上面的”5047_ABI”进行配

置,修改相应的cpr等参数即可。

在控制器设置中,首先设置如速度限制的 基本参数:

需要说明的是,AS5047P-ABI模

式每次上电必须进行运动校准,而使用

AS5047P-SPI的优势在于可以选择只要

校准一次编码器,后续上电就可以不进

行编码器运动校准,缩短的校准时间,

避免校准运动对其他部件的影响。但使

用AS5047P-SPI会比较容易出错。

Deng FOC可以实现电机的速度/位置/力 矩运动控制,每种运动控制支持多种输入 模式,如直接输入,爬升模式等。每种模 式会有对应的参数配置,如梯形轨迹的位 置模式下需要设置梯形轨迹的速度限制, 梯形轨迹的加减速度限制等。

43 44
///

➢ 方便起见,程序设置了6种模式可以

进行配置,分别包括:

5:力矩爬升模式

一键配置和校准程序已经包含了电机的校

准的程序。在首次使用某种电机时或清除

配置后,必须进行校准。

校准程序包括分别执行的电机的校准、编 码器校准,以及电机位置闭环测试,如下:

校准程序同样默认保存了不同的编码 器读取模式下不同的开机启动流程。

编码器读取模式为ABI模式时,上电开

机时必须进行编码器校准,所以所设

置的开机模式为电机预校准 (即无

“哔”一声),开机校准编码器(即

开机校准后电机会来回转一下0),然

后进去位置闭环模式。

45 46 0:速度直接模式
3
1:速度爬升模式 2:位置直接模式
:位置梯形轨迹模式 4:力矩直接模式

编码器读取模式为SPI绝对编码器模式时,

在首次使用时校准过一次后,后续则不

不再需要重新校准编码器,所以所设计

的开机模式为开机校准电机(即“哔”

一声),预校准编码器(即不会来回

转),然后进入位置闭环模式。

设置位置直接或梯形轨迹位置模式,运行一键 配置程序并校准完电机后,打开在 conda 中

打开 odrivetool,输入

odrv0.axis0.controller.input_pos = [位置目标值]

实现位置控制,同时可以在屏幕上看到实时变化。

设置速度直接或速度爬升模式,运行一键配置

程序并校准完电机后,打开在 conda 中打开

odrivetool,输入

odrv0.axis0.controller.input_vel = [速度目标值]

实现转速控制,同时可以在屏幕上看到实时变化。

设置力矩直接或力矩爬升置模式,运行一键配 置程序并校准完电机后,打开在 conda 中打

开 odrivetool,输入

odrv0.axis0.controller.input_torque = [位置目标值]

实现力矩控制,同时可以在屏幕上看到实时变化。

47 48

六、参数说明

Deng FOC 可以通过 ODrive Tool,对

axis0进行参数配置。

odrv0.config.enable_brake_resistor

如果要使用耗散电阻,就将其设置为

True。用电池电源的话一般可以不设置。

如果不想使用,保持为默认值即可。另外 因为接线和端子可能也会存在一些电阻,

所以如果刹车时有什么问题,可以试试将 这个参数增加0.05Ω。

odrv0.config.dc_max_positive_current[A]

odrv0.config.brake_resistance [Ω]

odrv0.config.dc_max_negative_current[A] 即电源可以吸收的最大电流值。

一般为负值。默认保守设置为10mA。

如果在用功率电阻的情况下出现

DC_BUS_OVER_REGEN_CURRENT 的错误,就稍微提高这个参数。

49 50

而在不用功率电阻时想将电流回流到电

源的话,就将这个参数设置为电源的安

全范围内,这个时候该参数应该高于电

机的电流限制+电流限制余量。

odrv0.config. dc_bus_undervoltage_trip_level [V]

odrv0.config. dc_bus_overvoltage_trip_level [V]

Deng FOC支持电压范围是12-24V,建议

设置为26V。

odrv0.config.max_regen_current[A]

如果用的是直流稳压源,不具备回收电能,

就配置为0。如果是电池供电,可以按照电

池实际承受的回流电流进行设置。高于该

参数的回流电流会由耗散电阻消耗掉。

odrv0.axis0.motor.config.pole_pairs

电机的磁极数除以2。

odrv0.axis0.motor.config.motor_type

目前支持两种类型:

❖大电流电机

MOTOR_TYPE_HIGH_CURRENT

❖云台电机

MOTOR_TYPE_GIMBAL

注意:不要在非云台电机上选择

MOTOR_TYPE_GIMBAL,可能导致电机

或者Deng FOC过热。

51 52

电机类型的选择:

❖如果100mA的电流噪声对电机来说

算“小”的,那就可以选择大电流电机

❖如果100mA的电流噪声对电机来说

算“大”,同时电机转速不需要很高,

电机内阻大于1Ω,就选云台电机

出于安全的考虑,可以先开始设置10A的电流 限制,确保Deng FOC稳定运行。后面配置

好后,再修改合适的电机电流限制。(注意: 电机电流和电源电流并不是一回事,简单来 说电机的转速越高,电源电流和电机电流就 越接近)。

odrv0.axis0.motor.config.torque_constant

通常设置为8.27/KV值,这是每1A电流流到

电机所产生的力矩的比值。如果你想以电流A

为单位设置力矩,就将此参数设置为1。

odrv0.axis0.motor.config.calibration_current [A] 设置最大的校准电流。如果电机有负载,设 太小电机不够力去旋转校准,就需要加大校 准电流来实现完整正确的电机校准。

odrv0.axis0.motor.config.current_lim [A].

odrv0.axis0.motor.config.resistance_calib_max_voltage[V] 电机相电阻小,该参数设太高就会导致过流保护 的错误。具体可以通过欧姆定律来大概设置。

53 54

odrv0.axis0.controller.config.vel_limit [turn/s].

odrv0.axis0.motor.config. requested_current_range[A]

55 56
顾名思义,用于限制电机的速度。
以AMS5047P的ABI模式和SPI模式的 设置来说明。 指令 ABI模式 SPI模式 编码 器类 型 odrv0.axis0.en coder.config.m ode ENCODER_MODE _INCREMENTAL MODE_SPI_ ABS_AMS 编码 器 CPR odrv0.axis0.en coder.config.c pr 4000 16384 SPI 模式 CS 引脚 odrv0.axis0.en coder.config.a bs_spi_cs_gpio _pin 8 带宽 odrv0.axis0.en coder.config.b andwidth 3000

odrv0.axis0.controller.config.control_mode

常用的控制模式包括:

❖ 力矩控制

CONTROL_MODE_TORQUE_CONTROL

❖ 速度控制

CONTROL_MODE_VELOCITY_CONTROL

❖ 位置控制 CONTROL_MODE_POSITION_CONTROL

输入模式有很多种,以下列举常用的输入模式, 以及说明每种输入模式需要相应设置的参数:

❖ 关闭输入- INPUT_MODE_INACTIVE

❖ 直接控制- INPUT_MODE_PASSTHROUGH

在这种输入模式下,根据所设置的控制模式 control_mode来控制电机,指令包括

input_pos/input_vel/input_torque,输入指

令后电机直接运转至目标值。

❖ 速度爬升- INPUT_MODE_VEL_RAMP

这种输入模式下,驱动器需要在速度控制模式 下,并会从当前的速度值逐渐爬升/下降到输入

到 input_vel 的目标速度值。在这种模式下,

odrv0.axis0.controller.config.control_mode

需要配置

57 58

◼ 爬升速率

odrv0.axis0.controller.config.vel_ramp_rate[turn/sec]

◼ 负载惯量

odrv0.axis0.controller.config.inertia[Nm/(turn/s²)]

❖ 梯形轨迹- INPUT_MODE_TRAP_TRAJ 这种输入模式下,驱动器需要在

在这种模式下,需要配置

◼ 梯形轨迹下的速度限制

odrv0.axis0.trap_traj.config.vel_limit

◼ 梯形轨迹下的加速度限制

odrv0.axis0.trap_traj.config.accel_limit

◼ 梯形轨迹下的加速度限制

odrv0.axis0.trap_traj.config.dccel_limit

机按照加速

度变化轨迹为梯形,位置变化接近曲线。

❖ 力矩爬升- INPUT_MODE_TORQUE_RAMP

这种输入模式下,驱动器需要在力矩控制模式下,

并会从当前的力矩值逐渐爬升/下降到输入到

input_tor的目标速度值。在这种模式下,需要 配置

◼ 力矩爬升速度

odrv0.axis0.controller.config.torque_ramp_rate

59 60
位置控制模 式下,通过 input_pos 输入目标位置值,电
-匀速-减速到达设定位置,即速

odrv0.axis0.controller.config.vel_gain

odrv0.axis0.controller.config.vel_integrator_gain

odrv0.axis0.controller.config.pos_gain

位置环积分

odrv0.axis0.controller.config.pos_integrator_gain

61 62
❖ 速度环增益 ❖ 速度环积分 ❖ 位置环增益 ❖
七、常见问题及其解决

(1)LM5109损坏

(2)AUX_H和AUX_L短路

(3)功率耗散电路下管损坏

(4)逆变电路MOS管损坏

(1) 断电测量AUX_H和AUX_L是否短路,

短路则问题为AUX_H和AUX_L短路

(2) 若无问题,断电测量下管DS是否导通,

导通则问题为功率耗散电路下管损坏

(3) 若无问题,拆除耗散电路两只MOS管,

上电后依旧闪灭则问题为逆变电路故障,若

不再闪灭则问题为功率耗散电路故障

◼ 若依旧闪灭,则按组拆除逆变电路A/B/C三 相的上下管,直到不再闪灭,更换该组

MOS即可

◼ 若不再闪灭,同时测量耗散电路上管下管G

极信号,观察是否会导致上下管同时导通,

或更换耗散电路MOS管,若存在同时导通

的可能或者依旧闪灭,则问题为LM5109损

坏,更换LM5109即可

63 64

逆变电路MOS G极虚焊

(1)USB母座焊接问题

(2)CAN收发器损坏

(3)晶振损坏

(1) 测试USB母座DP与DM是否短接,测试

USB母座DM与DP、DM/DP与单片机

PA11/PA12之间的电阻,短路、阻值远大

于22Ω,则问题为USB母座焊接问题

(2) 使用示波器观察晶振是否起振,若未能

观察到8MHz的正弦波,则判定晶振损坏,

应尝试更换晶振,若问题依旧,应检查

VCC/AVCC是否为3.3V,若电压正常,则继 续更换晶振

(3) 使用VS code进行调试,调用堆栈为

MX_FREERTOS_Init”函数、

construct_objects”函数、

“MX_CAN1_Init”函数,问题定位至CAN

收发器损坏,更换CAN收发器即可

65 66
67 68 (1)DRV8303损坏 (2)DEV8303的EN_GATE虚焊 测量GVDD/AVDD/DVDD,观察其是否 分别为11V/6V/3.3V左右,若近乎为0, 则应检查EN_GATE虚焊是否虚焊,若无 虚焊,应尝试更换DRV8303后重新测试
电机接触不良 用手压实连接器重新进行电机校准和编码 器校准,若有所改善,则问题为电机接触 不良,更换连接器或者直接焊线即可

检查三相线与板子是否接触良好。

“ERROR_CPR_POLEPAIRS_MISMATCH”

使用示波器观察AVCC,若纹波过大,这

判定为

LP5907

损坏,更换LP5907即可

(1)电机极对数设置错误

(2)编码器模式或CPR设置错误

(3)使用SPI模式没有按照5.2配置

(4)电机磁铁距离编码器过远,要求距离为1-3mm

“ERROR_PHASE_RESISTANCE_OUT_OF_RANGE”

69 70
LP5907损坏
一般为电机端接线接触不良
按照上述可能原因逐一排查。

Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.