This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] BOOSTXL-DRV8301:BLDC 电机不会旋转实验2.

Guru**** 2001725 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/570801/boostxl-drv8301-bldc-motor-does-not-spin-lab-2

器件型号:BOOSTXL-DRV8301

您好!

我正在尝试实现小型11V BLDC 电机的 spining。 它是一个 TrackStar 17.5T。

我将要介绍实验2c。 InstSpin ID 成功、但电机发出噪音、转子不旋转。  在实验5中、它也不会转弯。 当我将 Idq_Kp 更改为0.21、将 Idq_Ki 更改为0.8时、我可以将其旋转、它开始以显著的热量旋转。

请查看我的 User.h 我在那里做了一些错误的事情。

谢谢你。

此致、

Edward。

e2e.ti.com/.../7762.user.h

#ifndef _USER_H_
#define _USER_H_
/*-版权所有-、BSD
*版权所有(c) 2012、德州仪器(TI)公司
*保留所有权利。
*
*以源代码和二进制形式重新分发和使用、有无
*如果满足以下条件、则允许进行修改
符合*:
*
**源代码的重新分发必须保留上述版权
*注意、此条件列表和以下免责声明。
*
**二进制形式的再发行必须复制上述版权
*请注意、中的此条件列表和以下免责声明
*随分发提供的文档和/或其他材料。
*
**德州仪器公司的名称和名称均不相同
*其贡献者可用于认可或推广衍生产品
*未经特定的事先书面许可。
*
*本软件由版权所有者和贡献者"按原样"提供
*以及任何明示或暗示的保证、包括但不限于:
*特定适销性和适用性的隐含保证
*不承认目的。 在任何情况下、版权所有者不得或
*派遣国应对任何直接、间接、偶然、特殊、
*典型或必然的损害(包括但不限于
*采购替代货物或服务;丧失使用、数据或利润;
*或业务中断)、无论原因是什么以及任何责任理论、
*无论是合同、严格责任还是侵权行为(包括疏忽或)
*否则)因使用本软件而以任何方式产生、
*即使被告知可能会发生此类损坏。
*--/版权--*/

//! \file solutions/instaspin_foc/boards/boostxldrv8301_revB/F28x/f2802xF/src/user.h
//! \brief 包含用于 CTRL、HAL 和 EST 模块的用户初始化数据的公共接口
//!
//! (C)版权所有2012、Texas Instruments、Inc.


秘书长的报告
//包括

//模块
#include "sw/modules/types/src/types.h"
#include "sw/modules/motor/src/32b/motor.h"
#include "sw/modules/est/src/32b/est.h"
#include "sw/modules/est/src/est_states.h"
#include "sw/modules/est/src/est_Flux_States.h"
#include "sw/modules/est/src/est_Ls_states.h"
#include "sw/modules/est/src/est_rs_states.h"
#include "sw/modules/ctrl/src/32b/ctrl_obj.h"


//平台
#include "sw/modules/fast/src/32b/userParams.h"

//!
//!
//! 定义组用户用户
//!
//@


#ifdef __cplusplus
extern "C"{
#endif

秘书长的报告
//定义


//! 简要介绍电流和电压
秘书长的报告
//! \brief 定义 IQ 变量的满量程频率、Hz
//! \brief 根据与该值的比率将所有频率转换为(pu)
//! \brief 此值必须大于预期的电机最大速度
#define USER_IQ_FULL_SCALE_FREQ_Hz (800.0)// 800示例、具有缓冲器、用于8极6 krpm 电机在磁场减弱时运行至10krpm;Hz =(RPM *极)/ 120

//! \brief 定义系统内 IQ30电压变量的满量程值
//! 简要说明根据与该值的比率、所有电压均转换为(pu)
//! \brief 警告:此值必须满足以下条件:USER_IQ_FULL_SCALE_VOLTAGE_V > 0.5 * USER_MOTOR_MAX_CURRENT * USER_MOTOR_LS_d * USER_VOLTAGE_FILTER_POLE_Rps、
//! \brief 警告:否则,该值可能会饱和并翻转,从而导致值不准确
//! \brief 警告:此值通常大于测得的最大 ADC 值、尤其是在高反电动势电机的运行速度高于额定速度时
//! 简要警告:如果您知道反电动势常数的值、并且知道由于磁场减弱而以多种速度运行、请确保将此值设置为高于预期反电动势电压
//! 简要建议从比 USER_ADC_FULL_SCALE_VOLTGE_V 大~3倍的值开始、如果 Bemf 计算可能超过这些限制、则增加到4-5倍
//! \brief 此值也用于计算最小磁通值:USER_IQ_FULL_SCALE_VOLTAGE_V/USER_EST_FREQ_Hz/0.7
针对 boostxldrv8301_RevB 典型用法和 Anaheim 电机的#define USER_IQ_FULL_SCALE_VOLTAGE_V (22)// 24.0示例

//! \brief 定义 AD 转换器输入端的最大电压
//! 简要介绍将由最大 ADC 输入(3.3V)和转换(0FFFh)表示的值
//! 简要说明硬件相关、这应基于 ADC 输入的电压感应和缩放
#define USER_ADC_FULL_SCALE_VOLTGE_V (26.314)// 26.314 boostxldrv8301_RevB 电压调节

//! \brief 定义系统的电压换算系数
//! 针对整个系统中使用的换算系数(比率)进行的编译时间简短计算
#define USER_VOLTAGE_SF ((float_t)((USER_ADC_FULL_SCALE_VOLTAGE_V)/(USER_IQ_FULL_SCALE_VOLTAGE_V)))

//! \brief 定义 IQ 变量 A 的满量程电流
//! \brief 根据与该值的比率将所有电流转换为(pu)
//! \brief 警告:此值必须大于预期的电机最大电流读数、否则读数将回滚至0、从而导致控制问题
#define USER_IQ_FULL_SCALE_CURRENT_A (30.0)//针对 boostxldrv8301_RevB 典型用法的20.0示例

//! \brief 定义 AD 转换器上的最大电流
//! 简要介绍将由最大 ADC 输入(3.3V)和转换(0FFFh)表示的值
//! 简要说明硬件相关、这应基于 ADC 输入的电流感应和缩放
#define USER_ADC_FULL_SCALE_CURRENT_A (33.0)// 33.0 boostxldrv8301_RevB 电流调节

//! \brief 定义系统的当前换算系数
//! 针对整个系统中使用的换算系数(比率)进行的编译时间简短计算
#define USER_CURRENT_SF ((float_t)((USER_ADC_FULL_SCALE_CURRENT_A)/(USER_IQ_FULL_SCALE_CURRENT_A)))

//! \brief 定义使用的电流传感器数量
//! 由硬件功能定义的\brief
//! \brief 可以是(2)或(3)
#define USER_NUM_CURRENT_SENSORS (3)// 3首选设置、以在整个速度范围内实现最佳性能、允许100%占空比

//! \brief 定义电压(相位)传感器的数量
//! 简要必须为(3)
需要#define USER_NUM_VOLTGE_SENSORS (3)// 3

//! 简要介绍 A、B 和 C 相的 ADC 电流偏移
//! 简要说明与硬件相关的一次性、但校准也可以在运行时完成
//! \brief 在初始电路板校准后,这些值应针对您的特定硬件进行更新,以便在编译二进制文件后可以加载到控制器中
//#define I_A_offset (0.838126123)
//#define I_B_OFFSET (0.8377809525)
//#define I_C_OFFSET (0.8416287899)
#define I_A_offset (0.56)
#define I_B_OFFSET (0.56)
#define I_C_OFFSET (0.56)

//! 简要介绍 A、B 和 C 相的 ADC 电压偏移
//! 简要说明与硬件相关的一次性、但校准也可以在运行时完成
//! \brief 在初始电路板校准后,这些值应针对您的特定硬件进行更新,以便在编译二进制文件后可以加载到控制器中
//#define V_A_offset (0.5020326972)
//#define V_B_OFFSET (0.4998283982)
//#define V_C_OFFSET (0.4993050098)
#define V_A_offset (0.27)
#define V_B_OFFSET (0.27)
#define V_C_OFFSET (0.27)


//! 简要介绍时钟和计时器
秘书长的报告
//! \brief 定义系统时钟频率、MHz
#define USER_SYSTEM_FREQ_MHz (60.0)

//! \brief 定义脉宽调制(PWM)频率、kHz
//! 简单的 PWM 频率可直接在此处安全地设置为高达30KHz (在某些情况下最大值为60KHz)
//! 简要对于更高的 PWM 频率(对于低电感、高电流纹波电机、典型值为60 KHz 以上)、建议使用 ePWM 硬件
//! 简要介绍可调节的 ADC SOC、以抽取控制系统的 ADC 转换完成中断、或使用软件请求示例。
//! \brief 否则,您可能会丢失中断并中断控制状态机的计时
#define USER_PWM_FREQ_kHz (45)//30.0示例、典型值为8.0 - 30.0 KHz;极低电感、高速电机可能需要45-80 KHz

//! \brief 定义允许的最大电压矢量(Vs)幅度。 该值设置的输出的最大幅度
//! 简要介绍 ID 和 IQ PI 电流控制器。 Id 和 Iq 电流控制器输出为 Vd 和 Vq。
//! 简要说明 Vs、Vd 和 VQ 之间的关系为:Vs = sqrt (Vd^2 + Vq^2)。 在该 FOC 控制器中
//! \brief Vd 值设置为等于 USER_MAX_VS_MAG_USER_VD_MAG_FACTOR。 Vq = sqrt (USER_MAX_VS_MAG^2 - Vd^2)。
//! \brief 对于 SQRT (3)/2 = 86.6%占空比时峰值为正弦波、将 USER_MAX_VS_MAG 设置为0.5。 这种情况不需要电流重构。
//! 简要设置 USER_MAX_VS_MAG = 1/SQRT (3)= 0.5774、用于峰值为100%占空比的纯正弦波。 这种情况下(Lab10a-x)需要电流重构。
//! \brief 设置 USER_MAX_VS_MAG = 2/3 = 0.6666以生成梯形电压波形。 这种情况下(Lab10a-x)需要电流重构。
//! \brief 有关空间矢量过调制的信息,请参阅实验10以了解有关使 SVM 发生器能够一直运行到梯形的系统要求的详细信息。
#define USER_MAX_VS_MAG_PU (0.5)//如果不使用电流重构技术,则设置为0.5。 有关更多信息、请查看 lab10a-x 中的模块 svgen_current。

//! \brief 定义估算器句柄的地址
//!
#define USER_EST_Handle_ADDRESS (0x600)

//! \brief 定义直接电压(Vd)换算系数
//!
#define USER_VD_SF (0.95)

//! \brief 定义脉宽调制(PWM)周期(单位为微秒)
//! \brief 编译时间计算
#define USER_PWM_PERIOD_USEC (1000.0/USER_PWM_FREQ_kHz)

//! \brief 定义中断服务例程(ISR)频率、Hz
//!
#define USER_ISR_FREQ_Hz ((float_t) USER_PWM_FREQ_kHz * 1000.0 /(float_t) USER_NUM_PWM_TICKS_PER_ISR_TICK)

//! \brief 定义中断服务例程(ISR)周期(单位:微秒)
//!
#define USER_ISR_PERIOD_USEC (USER_PWM_PERIOD_USEC *(float_t) USER_NUM_PWM_TICKS_PER_ISR_TICK)


//! \brief 抽取
秘书长的报告
//! \brief 定义每个 ISR 时钟节拍的 PWM 时钟节拍数
//! 注意:有效值仅为1、2或3
#define USER_NUM_PWM_TICKS_PER_ISR_TICK (3)

//! \brief 定义每个控制器时钟节拍(软件)的 ISR 节拍数(硬件)
//! \brief 控制器时钟节拍(CTRL)是用于软件中所有时序的主时钟
//! \brief 通常情况下、PWM 频率触发器(可由 ePWM 硬件抽取以减少开销) ADC SOC
//! \brief ADC SOC 触发 ADC 转换完成
//! \brief ADC 转换完成会触发 ISR
//! \brief 这将硬件 ISR 速率与软件控制器速率相关联
//! \brief 典型地想考虑16KHz ISR 上的某种形式的抽取(ePWM 硬件、电流或 EST)、以确保中断完成并为后台任务留出时间
#define USER_NUM_ISR_TICKS_PER_CTRL_TICK (1)// 2示例、控制器时钟速率(CTRL)以 PWM/2运行;例如30 KHz PWM、15 KHz 控制

//! \brief 定义每个电流控制器时钟节拍的控制器时钟节拍数
//! \简要 说明控制器时钟速率与电流控制器(FOC)速率之间的关系
#define USER_NUM_CTRL_TICKS_PER_CURRENT_TICK (1)// 1典型值、正向 FOC 电流控制器(IQ/ID/IPART/SVPWM)以与 CTRL 相同的速率运行。

//! \brief 定义每个估算器时钟节拍的控制器时钟节拍数
//! 控制器时钟速率与估算器(FAST)速率之间的简要关系
//! 简要取决于所需的动态性能、FAST 提供了低至1KHz 的良好结果、而更动态或更高速的应用可能需要高达15KHz 的频率
#define USER_NUM_CTRL_TICKS_PER_EST_TICK (1)// 1典型值,FAST 估算器以与 CTRL 相同的速率运行;

//! \brief 定义每个速度控制器时钟节拍的控制器时钟节拍数
//! 控制器时钟速率与速度环路速率之间的简要关系
#define USER_NUM_CTRL_TICKS_PER_SPEED_TICK (15)// 15 (典型值)以匹配 PWM、例如15kHz PWM、控制器和电流环路、1KHz 速度环路

//! \brief 定义每个轨迹时钟节拍的控制器时钟节拍数
//! \控制器时钟速率与轨迹环路速率之间的简短关系
//! \brief 通常与速度相同
#define USER_NUM_CTRL_TICKS_PER_TRAJ_TICK (15)// 15 (典型值)以匹配 PWM、例如:10kHz 控制器和电流环路、1KHz 速度环路、1KHz 轨迹

//! \brief 定义控制器频率、Hz
//! \brief 编译时间计算
#define USER_CTRL_FREQ_Hz (uint_least32_t)(USER_ISR_FREQ_Hz/USER_NUM_ISR_TICKS_PER_CTRL_TICK)

//! \brief 定义估算器频率、Hz
//! \brief 编译时间计算
#define USER_EST_FREQ_Hz (uint_least32_t)(USER_CTRL_FREQ_Hz/USER_NUM_CTRL_TICKS_PER_EST_TICK)

//! \brief 定义轨迹频率、Hz
//! \brief 编译时间计算
#define USER_TRAJ_FREQ_Hz (uint_least32_t)(USER_CTRL_FREQ_Hz/USER_NUM_CTRL_TICKS_PER_TRAJ_TICK)

//! \brief 定义控制器执行周期、单位为微秒
//! \brief 编译时间计算
#define USER_CTRL_PERIOD_USEC (USER_ISR_PERIOD_USEC * USER_NUM_ISR_TICKS_PER_CTRL_TICK)

//! \brief 定义控制器执行周期(秒)
//! \brief 编译时间计算
#define USER_CTRL_PERIOD_sec ((float_t) USER_CTRL_PERIOD_USEC/(float_t) 1000000.0)


//! 简要限制
秘书长的报告
//! \brief 定义要在 Id 参考中应用的最大负电流
//! \brief 仅用于磁场减弱、这是一个安全设置(例如防止退磁)
//! 简要用户还必须注意、总电流幅度[sqrt (ID^2 + IQ^2)]应保持在任何机器设计规格以下
#define USER_MAX_NEW_ID_REF_CURRENT_A (-0.5 * USER_MOTOR_MAX_CURRENT)//-0.5 * USER_MOTOR_MAX_CURRENT 示例,进行调整以满足电机的安全需求

//! \brief 定义磁通积分器的低速限值、pu
//! \brief 这是 ForceAngle 对象处于活动状态的速度范围(CW/CCW),但仅当启用时
//! \brief 超出此速度-或者如果已禁用- ForcAngle 将永远不会被激活,并且角度仅由 FAST 提供
#define USER_ZEROSPEEDLIMIT (0.0025)//(0.5 / USER_IQ_FULL_SCALE_FREQ_Hz)// 0.002pu、1-5 Hz 典型值;Hz = USER_ZEROSPEEDLIMIT * USER_IQ_FULL_SCALE_FREQ_Hz

//! \brief 定义力角频率、Hz
//! \brief ForceAngle 对象使用的定子矢量旋转频率
//! \brief 可以是正的或负的
#define USER_FORCE_ANGE_FREQ_Hz (4)//(2.0 * USER_ZEROSPEEDLIMIT * USER_IQ_FULL_SCALE_FREQ_Hz)// 1.0典型强制角启动速度

//! \brief 定义 PowerWarp 期间 Id 轨迹的最大电流斜率
//! 简要介绍仅适用于感应电机、控制在 PowerWarp 控制下 Id 输入的变化速度
#define USER_MAX_CURRENT_SLOW_POWERWARP (0.3*USER_MOTOR_RES_EST_CURRENT_USER_IQ_FULL_SCALE_CURRENT_A/USER_TRAJ_FREQ_Hz)// 0.3*RES_EST_CURRENT / IQ_FULL_SCALE_CURRENT / TRAJ_FREQ (典型值),用于产生1秒斜坡/下降

//! \brief 定义速度系统配置的起动最大加速度和减速度、Hz/s
//! \brief 在运行时通过用户功能更新
//! 简要介绍逆变器、电机、惯性和负载将限制实际加速能力
#define USER_MAX_ACCEL_Hzps (20.0)//默认值20.0

//! \brief 定义估算速度系统配置的最大加速度、Hz/s
//! 仅在电机识别期间使用\brief (佣金)
#define USER_MAX_ACCEL_EST_Hzps (10.0)//默认为5.0,请勿更改

//! \brief 定义估算期间 Id 轨迹的最大电流斜率
#define USER_MAX_CURRENT_SLOPE (USER_MOTOR_RES_EST_CURRENT_USER_IQ_FULL_SCALE_CURRENT_A/USER_TRAJ_FREQ_Hz)// USER_MOTOR_RES_EST_CURRENT_USER_IQ_FULL_SCALE_CURRENT_A/USER_TRAJ_FREQ_Hz 默认值,请勿更改

//! \brief 定义在额定磁通估算期间要使用的 IdRated 比例
//!
#define USER_IDRATED_FRATE_TOP_RATED_FLUX (1.0)//默认为1.0,请勿更改

//! \brief 定义在电感估算期间要使用的 IdRated 比例
//!
#define USER_IDRATED_FRATE_TO_L_IDENT (1.0)//默认为1.0,请勿更改

//! \brief 定义估算期间要使用的 IdRated 增量
//!
#define USER_IDRATED_Delta (0.00002)

//! \brief 定义在电感估算期间要使用的 SpeedMax 的小数
//!
#define USER_SPEEDMAX_SPRATIFLE_TO_L_ident (1.0)//默认为1.0,请勿更改

//! \brief 定义在电感识别期间使用的磁通比例
//!
#define USER_FLUX_分数(1.0)//默认为1.0、请勿更改

//! \brief 定义用于计算 ID 参考的 PowerWarp 增益
//! 仅限于感应电机
#define USER_POWERWARP_GAIN (1.0)//默认为1.0,请勿更改

//! \brief 定义 R/L 估算频率、Hz
//! 简要介绍低电感电机的值较高、电感较高时的值较低
//! 简要介绍电机。 这些值的范围为100Hz 至300Hz。
#define USER_R_OVER L_EST_FREQ_Hz (300)//默认为300


//! 简要说明极点
秘书长的报告
//! \brief 定义模拟电压滤波器极点位置、Hz
//! \brief 必须与 VPH 的硬件过滤器相匹配
#define USER_VOLTGE_FILTER_POLE_Hz (364.682)// 364.682,bootxldrv8301_RevB 硬件的值

//! \brief 定义模拟电压滤波器极点位置、rad/s
//! \brief 编译时间计算从 Hz 到 rad/s
#define USER_VOLTGE_FILTER_POLE_Rps (2.0 * MATH_PI * USER_VOLTGE_FILTER_POLE_Hz)

//! \brief 定义用于电压和电流偏移估算的软件极点位置、rad/s
//! 不应将\brief 从默认值(20.0)更改为
#define USER_OFFSET_POLE_Rps (20.0)//默认值20.0,请勿更改

//! \brief 定义磁通估算的软件极点位置、rad/s
//! \brief 不应更改默认值(100.0)
#define USER_FLUX_POLE_Rps (100.0)//默认值为100.0,请勿更改

//! \brief 定义方向滤波器的软件极点位置、rad/s
#define USER_DIRECT_POLE_Rps (6.0)//默认值为6.0,请勿更改

//! \brief 定义速度控制滤波器的软件极点位置、rad/s
#define USER_SPEED_POLE_rps (100.0)//默认值为100.0,请勿更改

//! \brief 定义直流总线滤波器的软件极点位置、rad/s
#define USER_DCBus_POLE_rps (100.0)//默认值为100.0,请勿更改

//! \brief 定义估算器的收敛因子
//! \brief 不要更改 FAST 的默认值
#define USER_EST_KAPAQ (1.5)//默认值为1.5,请勿更改

秘书长的报告
//结束定义


//! 简要介绍用户电机和 ID 设置
秘书长的报告

//! \brief 用唯一的名称和 ID 号定义每个电机
// BLDC 和 SMPM 电机
#define Estun_EMJ_04APB22 101
#define Anaheim_BLY172S 102
#define My_Motor 104
#define hoby_3p5T 105
#define hoby_4p5T 106
#define small_hobby 107
#define teknic_2310P 108
#define hobbywing-ezrun_8p5T 109
#define eflite_Helicop_420 110
#define Bodine_34B3FEBL 114
#define Pittman_elcom_5233B599 115
#define medical_instrument 117

// IPM 电机
//如果用户提供单独的 Ls-d、Ls-q
//否则使用用户或识别的平均 Ls 视为 SPM
#define Belt_Drive_垫 圈_IPM 201

// ACIM 电机
#define Marathing_5K33GN2A 301
#define Kinetek_YDQ1p3_4 302
#define LPKF_CAD_CAM 303

//! \brief 取消注释编译时应包含的电机
//! \brief 然后、这些电机 ID 设置和电机参数可供控制系统使用
//! \brief 确定您的理想设置和参数后、请更新此处的电机部分、使其在二进制代码中可用
//#define USER_MOTOR_Estun_EMJ_04APB22
//#define USER_MOTOR_Anaheim_BLY172S
//#define USER_MOTOR_Hoby_3p5T
//#define USER_MOTOR_FHOBY_4p5T
#define USER_MOTOR_My_Motor
//#define USER_MOTOR_Small HOBby
//#define USER_MOTOR_Belt_Drive_洗衣机_IPM
//#define USER_MOTOR Marathing_5K33GN2A
//#define USER_MOTOR_Teknic_2310P
//#define USER_MOTOR_HobyWING_ezrun_8p5T
//#define USER_MOTOR_FLOITE_Helicop_420
//#define USER_MOTOR_Bodine_34B3FEBL
//#define USER_MOTORPittman_elcom_5233B599
//#define USER_MOTOR_medical_instrument
//#define USER_MOTOR_Kinetek_YDQ1p3_4
//#define USER_MOTORLPF_CAD_CAM


#if (USER_MOTOR== Estun_EMJ_04APB22)//名称必须与电机#define 相匹配
#define USER_MOTOR_TYPE MOTOR_Type_PM // Motor_Type_PM (全部同步:BLDC、PMSM、SMPM、IPM)或 Motor_Type_Induction (ACI 异步)
#define USER_MOTOR_NUM_POLE_PAIRS (4)//对、而不是总极数。 仅用于根据转子 Hz 计算用户 RPM
#define USER_MOTOR_RR (NULL)//仅感应电机、否则为 NULL
#define USER_MOTOR_Rs (2.303403)//在 Y 等效电路中确定的相位到中性点电阻(欧姆、浮点)
#define USER_MOTOR_LS_d (0.008464367)//对于 PM、确定的平均定子电感(亨利、浮点数)
#define USER_MOTOR_LS_q (0.008464367)//对于 PM、确定的平均定子电感(亨利、浮点数)
#define USER_MOTOR_RATGE_FLUX (0.38)//确定转子和定子之间的总磁链(V/Hz)
#define USER_MOTOR_磁 化电流(NULL)//仅感应电机、否则为 NULL
#define USER_MOTOR_RES_EST_CURRENT (1.0)//在电机识别期间、用于 Rs 估算的最大电流(安培、浮点数)、10-20%额定电流
#define USER_MOTOR_IND_EST_CURRENT (-1.0)//在电机识别期间、用于 LS 估算的最大电流(负电流、浮点数)、只需足够的时间即可启用旋转
#define USER_MOTOR_MAX_CURRENT (3.82)//关键:在 ID 和运行时使用、设置所提供速度 PI 控制器向 IQ 控制器输出的最大电流命令的限制
#define USER_MOTOR_FLUX_EST_FREQ_Hz (20.0)//在电机识别期间、最大命令速度(Hz、浮点)、额定电流~10%

#Elif (USER_MOTOR== Anaheim BLY172S)
#define USER_MOTOR_TYPE MOTOR_Type_PM
#define USER_MOTOR_NUM_POLE_PAIRS (4)
#define USER_MOTOR_RR (空)
//#define USER_MOTOR_Rs (0.3968007)
//#define USER_MOTOR_LS_d (0.0006708066)
//#define USER_MOTOR_LS_q (0.0006708066)
//#define USER_MOTOR_RAGED_FLUX (0.03433958)
#define USER_MOTOR_Rs (0.418200672)
#define USER_MOTOR_LS_d (0.00065584894)
#define USER_MOTOR_LS_q (0.00065584894)
#define USER_MOTOR_Rated 磁通(0.0353246517)

#define USER_MOTOR_磁 化电流(空)
#define USER_MOTOR_RES_EST_CURRENT (1.0)
#define USER_MOTOR_IND_EST_CURRENT (-1.0)
#define USER_MOTOR_MAX_CURRENT (7.5)
#define USER_MOTOR_FLUX_EST_FREQ_Hz (20.0)

#Elif (USER_MOTOR== Small HOBby)
#define USER_MOTOR_TYPE MOTOR_Type_PM
#define USER_MOTOR_NUM_POLE_PAIRS (6)
#define USER_MOTOR_RR (空)
#define USER_MOTOR_Rs (1.277921)
#define USER_MOTOR_LS_d (0.0001230481)
#define USER_MOTOR_LS_q (0.0001230481)
#define USER_MOTOR_Rated 磁通(0.004417491)
#define USER_MOTOR_磁 化电流(空)
#define USER_MOTOR_RES_EST_CURRENT (0.5)
#define USER_MOTOR_IND_EST_CURRENT (-0.5)
#define USER_MOTOR_MAX_CURRENT (5.0)
#define USER_MOTOR_FLUX_EST_FREQ_Hz (200.0)

#elif (USER_MOTOR== teknic_2310P)
#define USER_MOTOR_TYPE MOTOR_Type_PM
#define USER_MOTOR_NUM_POLE_PAIRS (4)
#define USER_MOTOR_RR (空)
#define USER_MOTOR_Rs (0.3654691)
#define USER_MOTOR_LS_d (0.0002068772)
#define USER_MOTOR_LS_q (0.0002068772)
#define USER_MOTOR_Rated 磁通(0.04052209)
#define USER_MOTOR_磁 化电流(空)
#define USER_MOTOR_RES_EST_CURRENT (1.0)
#define USER_MOTOR_IND_EST_CURRENT (-1.0)
#define USER_MOTOR_MAX_CURRENT (5.0)
#define USER_MOTOR_FLUX_EST_FREQ_Hz (20.0)

#elif (USER_MOTOR== HOBY_3p5T)
#define USER_MOTOR_TYPE MOTOR_Type_PM
#define USER_MOTOR_NUM_POLE_PAIRS (4)
#define USER_MOTOR_RR (空)
#define USER_MOTOR_Rs (0.0149275)
#define USER_MOTOR_LS_d (2.575126e-06)
#define USER_MOTOR_LS_q (2.575126e-06)
#define USER_MOTOR_Rated 磁通(0.003589415)
#define USER_MOTOR_磁 化电流(空)
#define USER_MOTOR_RES_EST_CURRENT (15.0)
#define USER_MOTOR_IND_EST_CURRENT (-5.0)
#define USER_MOTOR_MAX_CURRENT (30.0)
#define USER_MOTOR_FLUX_EST_FREQ_Hz (60.0)

#elif (USER_MOTOR== HOBY_4p5T)
#define USER_MOTOR_TYPE MOTOR_Type_PM
#define USER_MOTOR_NUM_POLE_PAIRS (4)
#define USER_MOTOR_RR (空)
#define USER_MOTOR_Rs (0.01420126)
#define USER_MOTOR_LS_d (6.466606e-06)
#define USER_MOTOR_LS_q (6.466606e-06)
#define USER_MOTOR_Rated 磁通(0.004845501)
#define USER_MOTOR_磁 化电流(空)
#define USER_MOTOR_RES_EST_CURRENT (5.0)
#define USER_MOTOR_IND_EST_CURRENT (-5.0)
#define USER_MOTOR_MAX_CURRENT (10.0)
#define USER_MOTOR_FLUX_EST_FREQ_Hz (60.0)

#elif (USER_MOTOR== HOBbyWING_ezrun_8p5T)
#define USER_MOTOR_TYPE MOTOR_Type_PM
#define USER_MOTOR_NUM_POLE_PAIRS (1)
#define USER_MOTOR_RR (空)
#define USER_MOTOR_Rs (0.01366183)
#define USER_MOTOR_LS_d (1.556967e-05)
#define USER_MOTOR_LS_q (1.556967e-05)
#define USER_MOTOR_Rated 磁通(0.009272549)
#define USER_MOTOR_磁 化电流(空)
#define USER_MOTOR_RES_EST_CURRENT (3.0)
#define USER_MOTOR_IND_EST_CURRENT (-2.0)
#define USER_MOTOR_MAX_CURRENT (10.0)
#define USER_MOTOR_FLUX_EST_FREQ_Hz (60.0)

#Elif (USER_MOTOR== eflite_Helicop_420)
#define USER_MOTOR_TYPE MOTOR_Type_PM
#define USER_MOTOR_NUM_POLE_PAIRS (3)
#define USER_MOTOR_RR (空)
#define USER_MOTOR_Rs (0.01953091)
#define USER_MOTOR_LS_d (2.998549e-06)
#define USER_MOTOR_LS_q (2.998549e-06)
#define USER_MOTOR_Rated 磁通(0.003449948)
#define USER_MOTOR_磁 化电流(空)
#define USER_MOTOR_RES_EST_CURRENT (3.0)
#define USER_MOTOR_IND_EST_CURRENT (-3.0)
#define USER_MOTOR_MAX_CURRENT (15.0)
#define USER_MOTOR_FLUX_EST_FREQ_Hz (80.0)

#Elif (USER_MOTOR== Bodine_34B3FEBL)
#define USER_MOTOR_TYPE MOTOR_Type_PM
#define USER_MOTOR_NUM_POLE_PAIRS (2)
#define USER_MOTOR_RR (空)
#define USER_MOTOR_Rs (0.1749963)
#define USER_MOTOR_LS_d (0.000843199)
#define USER_MOTOR_LS_q (0.000843199)
#define USER_MOTOR_RATIVE_FLUX (0.1139098)
#define USER_MOTOR_磁 化电流(空)
#define USER_MOTOR_RES_EST_CURRENT (1.0)
#define USER_MOTOR_IND_EST_CURRENT (-1.0)
#define USER_MOTOR_MAX_CURRENT (10.0)
#define USER_MOTOR_FLUX_EST_FREQ_Hz (20.0)

#elif (USER_MOTOR== Pittman_elcom_5233B599)
#define USER_MOTOR_TYPE MOTOR_Type_PM
#define USER_MOTOR_NUM_POLE_PAIRS (2)
#define USER_MOTOR_RR (空)
#define USER_MOTOR_Rs (0.3675933)
#define USER_MOTOR_LS_d (0.0001611779)
#define USER_MOTOR_LS_q (0.0001611779)
#define USER_MOTOR_RATGE_FLUX (0.1274101)
#define USER_MOTOR_磁 化电流(空)
#define USER_MOTOR_RES_EST_CURRENT (0.5)
#define USER_MOTOR_IND_EST_CURRENT (-0.5)
#define USER_MOTOR_MAX_CURRENT (5.0)
#define USER_MOTOR_FLUX_EST_FREQ_Hz (20.0)

#elif (USER_MOTOR== medical_instrument)
#define USER_MOTOR_TYPE MOTOR_Type_PM
#define USER_MOTOR_NUM_POLE_PAIRS (2)
#define USER_MOTOR_RR (空)
#define USER_MOTOR_Rs (0.3858043)
#define USER_MOTOR_LS_d (9.675411e-06)
#define USER_MOTOR_LS_q (9.675411e-06)
#define USER_MOTOR_Rated 磁通(0.006834516)
#define USER_MOTOR_磁 化电流(空)
#define USER_MOTOR_RES_EST_CURRENT (0.5)
#define USER_MOTOR_IND_EST_CURRENT (-0.5)
#define USER_MOTOR_MAX_CURRENT (10.0)
#define USER_MOTOR_FLUX_EST_FREQ_Hz (100.0)

#Elif (USER_MOTOR== My_Motor)
#define USER_MOTOR_TYPE MOTOR_Type_PM
#define USER_MOTOR_NUM_POLE_PAIRS (4)
#define USER_MOTOR_RR (空)
#define USER_MOTOR_Rs (0.024)
#define USER_MOTOR_LS_d (0.0023)
#define USER_MOTOR_LS_q (0.0023)
#define USER_MOTOR_Rated 磁通(0.01)
#define USER_MOTOR_磁 化电流(空)
#define USER_MOTOR_RES_EST_CURRENT (0.5)
#define USER_MOTOR_IND_EST_CURRENT (-0.5)
#define USER_MOTOR_MAX_CURRENT (4.0)
#define USER_MOTOR_FLUX_EST_FREQ_Hz (100.0)

#Elif (USER_MOTOR==皮带驱动垫圈_IPM)
#define USER_MOTOR_TYPE MOTOR_Type_PM
#define USER_MOTOR_NUM_POLE_PAIRS (4)
#define USER_MOTOR_RR (空)
#define USER_MOTOR_Rs (2.832002)
#define USER_MOTOR_LS_d (0.0115)
#define USER_MOTOR_LS_q (0.0135)
#define USER_MOTOR_Rated 磁通(0.5022156)
#define USER_MOTOR_磁 化电流(空)
#define USER_MOTOR_RES_EST_CURRENT (1.0)
#define USER_MOTOR_IND_EST_CURRENT (-1.0)
#define USER_MOTOR_MAX_CURRENT (4.0)
#define USER_MOTOR_FLUX_EST_FREQ_Hz (20.0)

#Elif (USER_MOTOR== Marathing_5K33GN2A)//名称必须与电机#define 相匹配
#define USER_MOTOR_TYPE MOTOR_Type_Induction // Motor_Type_PM (全部同步:BLDC、PMSM、SMPM、IPM)或 Motor_Type_Induction (ACI 异步)
#define USER_MOTOR_NUM_POLE_PAIRS (2)//对、而不是总极数。 仅用于根据转子 Hz 计算用户 RPM
#define USER_MOTOR_RR (5.508003)//在 Y 等效电路中确定的相位到中性点(欧姆、浮点)
#define USER_MOTOR_Rs (10.71121)//在 Y 等效电路中确定的相位到中性点(欧姆、浮点)
#define USER_MOTOR_LS_d (0.05296588)//对于感应、确定的平均定子电感(亨利、浮点数)
#define USER_MOTOR_LS_q (0.05296588)//对于感应、确定的平均定子电感(亨利、浮点数)
#define USER_MOTOR_RATGE_FLUX (0.8165*2200/60.0)// sqrt (2/3)*额定电压(线路)/额定频率(Hz)
#define USER_MOTOR_磁 化电流(1.378)//为感应电机确定的磁化电流、否则为空
#define USER_MOTOR_RES_EST_CURRENT (0.5)//在电机识别期间、用于 Rs 估算的最大电流(安培、浮点数)、10-20%额定电流
#define USER_MOTOR_IND_EST_CURRENT (NULL)//不用于感应
#define USER_MOTOR_MAX_CURRENT (2.0)//关键:在 ID 和运行时使用、设置所提供速度 PI 控制器向 IQ 控制器输出的最大电流命令的限制
#define USER_MOTOR_FLUX_EST_FREQ_Hz (5.0)//在电机识别期间、最大命令速度(Hz、浮点)。 应始终使用5Hz 进行感应。

#Elif (USER_MOTOR== Kinetek_YDQ1p3_4)
#define USER_MOTOR_TYPE MOTOR_Type_Induction
#define USER_MOTOR_NUM_POLE_PAIRS (2)
#define USER_MOTOR_RR (0.0)
#define USER_MOTOR_Rs (0.0)
#define USER_MOTOR_LS_d (0.0)
#define USER_MOTOR_LS_q (USER_MOTOR_LS_d)
#define USER_MOTOR_RAGE_FLUX (0.8165*16.0/120.0 - USER_MOTOR_LS_d* USER_MOTOR_磁 化电流*2*MATH_PI)
#define USER_MOTOR_磁 化电流(0.0)
#define USER_MOTOR_RES_EST_CURRENT (20.0)
#define USER_MOTOR_IND_EST_CURRENT (空)
#define USER_MOTOR_MAX_CURRENT (40.0)
#define USER_MOTOR_FLUX_EST_FREQ_Hz (5.0)

#Elif (USER_MOTOR== LPKF_CAD_CAM)
#define USER_MOTOR_TYPE MOTOR_Type_Induction
#define USER_MOTOR_NUM_POLE_PAIRS (1)
#define USER_MOTOR_RR (0.1832338)
#define USER_MOTOR_Rs (0.2610424)
#define USER_MOTOR_LS_d (1.370321e-09)
#define USER_MOTOR_LS_q (USER_MOTOR_LS_d)
#define USER_MOTOR_RAGE_FLUX (0.8165*30.0/1000.0 - USER_MOTOR_LS_d* USER_MOTOR_磁 化电流*2*MATH_PI)
#define USER_MOTOR_磁 化电流(3.386112)
#define USER_MOTOR_RES_EST_CURRENT (3.0)
#define USER_MOTOR_IND_EST_CURRENT (空)
#define USER_MOTOR_MAX_CURRENT (5.0)
#define USER_MOTOR_FLUX_EST_FREQ_Hz (20.0)


其他
错误未指定电机类型
#endif

#ifndef USER_MOTOR
user.h 中未定义#ERROR 电机
#endif

#ifndef USER_MOTOR_TYPE
错误:user.h 中未定义电机类型
#endif

#ifndef USER_MOTOR_NUM_POLE_PAIRS
user.h 中未定义电机极对的#ERROR 数量
#endif

#ifndef USER_MOTOR_RR
#ERROR 转子电阻未在 user.h 中定义
#endif

#ifndef USER_MOTOR_Rs
#ERROR 定子电阻未在 user.h 中定义
#endif

#ifndef USER_MOTOR_LS_d
#ERROR user.h 中未定义直流定子电感
#endif

#ifndef USER_MOTOR_LS_q
#ERROR user.h 中未定义正交定子电感
#endif

#ifndef USER_MOTOR_RATGE_FLUX
#ERROR user.h 中未定义电机的额定磁通
#endif

#ifndef USER_MOTOR_磁 化电流
#ERROR user.h 中未定义磁化电流
#endif

#ifndef USER_MOTOR_RES_EST_CURRENT
#ERROR user.h 中未定义电阻估算电流
#endif

#ifndef USER_MOTOR_IND_EST_CURRENT
#ERROR user.h 中未定义电感估算电流
#endif

#ifndef USER_MOTOR_MAX_CURRENT
#ERROR user.h 中未定义最大电流
#endif

#ifndef USER_MOTOR_FLUX_EST_FREQ_Hz
#ERROR user.h 中未定义磁通估算频率
#endif


秘书长的报告
//函数


//! \brief 设置用户参数值
//! \param[in] pUserParams 指向用户参数结构的指针
extern void user_setParams (user_Params * pUserParams);


//! 简要检查用户参数值中的错误
//! \param[in] pUserParams 指向用户参数结构的指针
extern void USER_checkForErrors (USER_Params * pUserParams);


//! \brief 获取用户参数中的错误代码
//! \param[in] pUserParams 指向用户参数结构的指针
//! 返回错误代码
extern USER_ErrorCode_e USER_getErrorCode (USER_Params * pUserParams);


//! \brief 设置用户参数中的错误代码
//! \param[in] pUserParams 指向用户参数结构的指针
//! \param[in]错误代码
extern void USER_setErrorCode (USER_Params * pUserParams、const USER_ErrorCode_e errorCode);


//! \brief 使用正确的 Q 格式重新计算电感
//! \param[in]处理控制器(CTRL)句柄
extern void USER_softwareUpdate1p6 (CTRL_Handle handle);


//! 简要更新 ID 和 IQ PI 增益
//! \param[in]处理控制器(CTRL)句柄
extern void USER_calcPIGains (CTRL_Handle handle);


//! \brief 计算将由 LD、LQ、Id 和 Iq 创建的转矩从标么值转换为 Nm 所需的换算系数
//! 返回换算系数、将转矩从(Ld - Lq)* Id * Iq 从标么值转换为 Nm (IQ24格式)
extern _iq user_computeTorte_LS_ID_IQ_pu_TO_NM_SF (void);


//! \brief 计算将磁通和 Iq 生成的转矩从标么值转换为 Nm 所需的换算系数
//! 返回换算系数、以 IQ24格式将磁通* Iq 中的转矩从标么值转换为 Nm
extern _iq user_computeTorte_Flux_IQ_pu_TO_Nm_SF (void);


//! \brief 计算从标么值转换为 WB 所需的换算系数
//! 返回换算系数、以 IQ24格式从每单位磁通转换为 Wb 磁通
extern _iq user_computeFlux_pu_TO_WB_SF (void);


//! \brief 计算所需的换算系数、以将标么值转换为 V/Hz
//! 返回换算系数、以 IQ24格式从磁通标么值转换为 V/Hz
extern _iq user_computeFlux_pu_TO_VpHz_SF (void);


//! 根据作为参数发送的换算系数、\brief 以 WB 或 V/Hz 为单位计算磁通
//! \param[in]处理控制器(CTRL)句柄
//! \param[in] SF 将磁通从标么值转换为 Wb 或 V/Hz 的换算系数
//! 根据作为参数发送的比例因子、以 IQ24格式返回 Wb 或 V/Hz 形式的磁通
extern _iq user_computeFlux (CTRL_Handle handle、const _IQ SF);


//! 简要计算扭矩、单位为 Nm
//! \param[in]处理控制器(CTRL)句柄
//! \param[in]扭矩_磁通_SF 用于将转矩从(LD - LQ)* Id * Iq 从标么值转换为 Nm 的换算系数
//! \param[in]扭矩_Ls_SF 用于将磁通* Iq 中的扭矩从标么值转换为 Nm 的换算系数
//! 以牛米为单位、以 IQ24格式返回扭矩
extern _iq user_computeTorte_Nm (CTRL_Handle handle、const _IQ Torture_Flux_SF、const _IQ Torture_Ls_SF);


//! \brief 计算 lbin 中的扭矩
//! \param[in]处理控制器(CTRL)句柄
//! \param[in]扭矩_磁通_SF 将转矩从(LD - LQ)* Id * Iq 从标么值转换为 lbin 的换算系数
//! \param[in]扭矩_Ls_SF 将磁通* Iq 中的扭矩从标么值转换为 lbin 的换算系数
//! 以 iQ24格式返回 lbin 的扭矩
extern _iq user_computeTorte_lbin (CTRL_Handle handle、const _IQ Torture_Flux_SF、const _IQ Torture_Ls_SF);


#ifdef __cplusplus

#endif // extern "C"

//@}//分组
#endif //_user_H_定义结束

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Edward:

    我已将您的帖子移至 InstaSPIN 论坛、他们应该能够在这里为您提供帮助。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    爱德华

    这是您所指的电机吗? hobbyking.com/.../turnigy-trackstar-17-5t-sensored-brushless-motor-2270kv-roar-approved.html

    如果是、该规格说明8V 是要应用的最大电机。 您是否有我可以查看的更最新规格表?

    肖恩
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Sean、

    感谢您的快速响应。 遗憾的是、我找不到数据表。

    是的、该电机以前是7.4-11.1V 电机。 现在、出于某种原因、它们将其降级至7.4或8V

    根据我在应用中的经验、它在高达15V 的电压下工作良好、可用于业余 30A ESC。  

    它每分钟消耗5秒的大电流(高达5A)。 占空比为每3分钟10秒的最大(5A)电流。  

    现在、我们从原型设计到制造阶段、我需要一个合适的系统来控制 它。  TI 解决方案看起来非常适合这种情况。  

    我可以增大电压。

    如果我将其增加至15V、  

    #define USER_IQ_FULL_SCALE_VOLTAGE_V (30)

    #define USER_ADC_FULL_SCALE_VOLTGE_V   (40)

    它是否是正确的?

    此致、

    Edward。