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.
您好!
我正在尝试实现小型11V BLDC 电机的 spining。 它是一个 TrackStar 17.5T。
我将要介绍实验2c。 InstSpin ID 成功、但电机发出噪音、转子不旋转。 在实验5中、它也不会转弯。 当我将 Idq_Kp 更改为0.21、将 Idq_Ki 更改为0.8时、我可以将其旋转、它开始以显著的热量旋转。
请查看我的 User.h 我在那里做了一些错误的事情。
谢谢你。
此致、
Edward。
#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_定义结束
您好 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。