主题中讨论的其他器件:DRV8301
在过去的几天里、我一直在努力让电机识别在我拥有的电机上工作。 我已经使用 DRV8301 BoosterPack 使电机能够正确识别以下参数、这些参数与电机数据表非常匹配。 我们创建了定制硬件来支持 以45V 电压运行此电机。
电机数据表: www.anaheimautomation.com/.../L010229 - BLWS23系列产品 Sheet.pdf
参数由 BoosterPack 确定
#Elif (USER_MOTOR== Small Motor)//名称必须与电机#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 (2)//对、而不是总极数。 仅用于根据转子 Hz 计算用户 RPM
#define USER_MOTOR_RR (NULL)//仅感应电机、否则为 NULL
#define USER_MOTOR_Rs (0.918600857)//在 Y 等效电路中确定的相位到中性点电阻(欧姆、浮点)
#define USER_MOTOR_LS_d (0.00124775141)//对于 PM、确定的平均定子电感(亨利、浮点数)
#define USER_MOTOR_LS_q (0.00124775141)//对于 PM、确定的平均定子电感(亨利、浮点数)
#define USER_MOTOR_Rated 磁通(0.0330157317)//确定转子和定子之间的总磁链(V/Hz)
#define USER_MOTOR_磁 化电流(NULL)//仅感应电机、否则为 NULL
#define USER_MOTOR_RES_EST_CURRENT (0.15)//在电机识别期间、用于 Rs 估算的最大电流(安培、浮点数)、10-20%额定电流
#define USER_MOTOR_IND_EST_CURRENT (-0.15)//在电机识别期间、用于 LS 估算的最大电流(负电流、浮点数)、只需足够的时间即可启用旋转
#define USER_MOTOR_MAX_CURRENT (1.0)//关键:在 ID 和运行时使用、设置所提供速度 PI 控制器向 IQ 控制器输出的最大电流命令的限制
#define USER_MOTOR_FLUX_EST_FREQ_Hz (20.0)//在电机识别期间、最大命令速度(Hz、浮点)、额定电流~10%
使用的 user_j5.h 文件为:
#ifndef _user_J5_H_ #define _USER_J5_H_ // //包括 //! //! //! defgroup 用户// ! //@{ #ifdef __cplusplus extern "C"{ #endif //********* //定义 //! 简要介绍电流和电压 // //! \brief 定义 IQ 变量的满量程频率、Hz //! \brief 根据与该值的比率// 将所有频率转换为(pu)! \brief 此值必须大于您期望电机 #define USER_IQ_FULL_SCALE_FREQ_Hz 的最大速度 (200.0)// 800示例、具有缓冲器、用于8极6 krpm 电机在场强减弱时运行到10 krpm;Hz =(RPM *极)/ 120 //! \brief 定义系统内部 IQ30电压变量的满量程值 //! \brief 根据与该值的比率// 将所有电压转换为(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 值、尤其是在运行速度高于额定速度 的高反电动势电机中//! \brief 警告:如果您知道反电动势常数的值、并且您知道由于磁场减弱而以多种速度运行、请确保将此值设置为高于预期反电动势电压 //! 简要建议从比 USER_ADC_FULL_SCALE_VOLTGE_V 大~3倍的值开始、如果 Bemf 计算可能超过这些限制、则增加到4-5倍 //! \brief 此值也用于计算最小磁通值:USER_IQ_FULL_SCALE_VOLTAGE_V/USER_EST_FREQ_Hz/0.7 #define USER_IQ_FULL_SCALE_VOLTAGE_V (24.0)//针对 boostxldrv8301_RevB 典型用法和 Anaheim 电机的24.0示例 //! \brief 定义 AD 转换器输入端的最大电压 //! 将由最大 ADC 输入(3.3V)和转换(0FFFh)表示的值简述 //! 简要说明与硬件相关、这应基于 ADC 输入 #define USER_ADC_FULL_SCALE_VOLTGE_V 的电压检测和缩放 (26.314) // 26.314 boostxldrv8301_RevB 电压调节 //! \brief 定义 IQ 变量的满量程电流、a //! \brief 根据与该值的比率// 将所有电流转换为(pu)! \brief 警告:此值必须大于预期的电机最大电流读数、否则读数将回滚至0、从而导致控制问题 #define USER_IQ_FULL_SCALE_CURRENT_A (20.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 定义使用的电流传感器数量 //! \brief 由硬件功能确定// ! \brief 可以是(2)或(3) #define USER_NUM_CURRENT_SENSORS (3)//为在全速范围内实现最佳性能而首选的3种设置,允许100%占空比 //! \brief 定义电压(相位)传感器的数量 //! \brief 必须为(3) #define USER_NUM_VOLTGE_SENSORS (3)//需要3 //! \简述 A、B 和 C 相的 ADC 电流偏移 //! 简要说明与硬件相关的一次性、但也可以在运行时进行校准 //! \brief 在电路板初始校准后,这些值应针对您的特定硬件进行更新,以便在以二进制文件进行编译后可用于加载到控制器 #define I_A_offset (0.8299074769) #define I_B_offset (0.8320138454) #define I_C_offset (0.8149240017) //! \简述 A、B 和 C 相的 ADC 电压偏移 //! 简要说明与硬件相关的一次性、但也可以在运行时进行校准 //! \brief 在电路板初始校准后、应针对您的特定硬件更新这些值、以便在编译为二进制文件后将其加载到控制器 #define V_A_offset (0.5201388597) #define V_B_offset (0.5231893659) #define V_C_offset (0.5166065693) //! 简要时钟和计时器 //********* //! \brief 定义脉宽调制(PWM)频率、kHz //! 简单的 PWM 频率可以直接在这里安全地设置为30KHz (在某些情况下最大值为60KHz) //! 简要对于更高的 PWM 频率(对于低电感、高电流纹波电机、典型值为60 KHz 以上)、建议使用 ePWM 硬件 //! 简要介绍可调节的 ADC SOC、以抽取控制系统的 ADC 转换完成中断、或使用软件请求示例。 //! \brief 否则您可能会丢失中断并中断控制状态机#define USER_PWM_FREQ_kHz 的时序 (15.0)//30.0示例、典型值8.0 - 30.0KHz;极低电感、高速电机可能需要45-80KHz //! \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 定义每个 ISR 时钟节拍的 PWM 时钟节拍数 //! 注意:有效值仅为1、2或3 #define USER_NUM_PWM_TICKS_PER_ISR_TICK (1) //! \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运行;例如30KHz PWM、15KHz 控制 //! \brief 定义每个电流控制器时钟节拍 的控制器时钟节拍数//! 控制器时钟速率与电流控制器(FOC)速率 的简要关系#define USER_NUM_CTRL_TICKS_PER_CURRENT_TICK (1) // 1典型的正向 FOC 电流控制器(IQ/ID/IPark/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 定义要在 Id 参考 中应用的最大负电流//! \brief 仅用于磁场减弱、这是一个安全设置(例如防止退磁) //! \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 定义 R/L 估算频率、Hz //! 简要介绍用户低电感电机的较高值和较低电感值 //! 简要介绍电机。 这些值的范围为100Hz 至300Hz。 #define USER_R_OVER L_EST_FREQ_Hz (100) //默认为300 //! \brief 定义磁通积分器的低速限值、pu //! \brief 这是 ForceAngle 对象处于活动状态的速度范围(CW/CCW),但仅当启用 //时! \brief 在该速度之外-或者如果禁用- ForcAngle 将永远不会被激活、并且该角度仅由 FAST 提供 #define USER_ZEROSPEEDLIMIT (0.5/USER_IQ_FULL_SCALE_FREQ_Hz) // 0.002pu、1-5 Hz 典型值;Hz = USER_ZEROSPEEDLIMIT * USER_IQ_FULL_SCALE_FREQ_Hz //! \brief 定义力角频率、Hz //! \ForceAngle 对象使用的定子矢量旋转频率 //! \brief 可以是正或负 #define USER_FORCE_ANGE_FREQ_Hz (2.0 * USER_ZEROSPEEDLIMIT * USER_IQ_FULL_SCALE_FREQ_Hz) // 1.0典型强制角启动速度 //! 简要杆 数// //! \brief 定义模拟电压滤波器极点位置、Hz //! \brief 必须与 VPH #define USER_VOLTGE_FILTER_POLE_Hz (364.682)// 364.682的硬件过滤器匹配,boostxldrv8301_RevB 硬件值 //! 简要介绍用户电机和 ID 设置 // //! \brief 使用唯一的名称和 ID 号// BLDC & SMPM 电机 #define Estun_EMJ_04APB22定义每个电机 101 #define Anaheim_BLY172S 102 #define Teknic_M2310PLN04K 104 #define my_motor113 #define SMall_Motor114 // IPM motors //如果用户提供单独的 Ls-d、Ls-q //否则使用用户或已识别的平均 Ls #define Belte_Drive_洗衣机_IPM 处理为 SPM 201 #define Anaheim_F凸 极 202 // ACIM 电机 #define Marathing_5K33GN2A 301 //! \brief 取消注释编译 //时应包含的电机! \brief 然后、这些电机 ID 设置和电机参数可供控制系统使用 //! \简述 确定理想设置和参数后、请更新此处的电机部分、以便在二进制代码 #define USER_MOTOR_SMIT_MOTOR_ESTUN_EMJ_04APB22 //#define USER_MOTOR_ANAINH_BLY172S //#define USER_MOTOR_TEKINICT_M2310PLN04K // define USER_MOTOR_TOTOR_TOTOR_INAINEL #define ANAINALO_MOTOR_TOTOR_TOTOR_GE= #define KANELARM/#define KANE_MOTOR_MOTOR_TOTOR_TOTOR_TOUN_TOUN_TOUN_GE //名称必须与电机#define #USER_MOTOR_TYPE 相匹配 Motor_Type_Pm // Motor_Type_Pm (全部同步:BLDC、PMSM、SMPM、IPM)或 Motor_Type_Induction (异步 ACI) #define USER_MOTOR_NUM_POLE_PAIRS (2) //对、而不是总极数。 仅用于根据转子 Hz 计算用户 RPM #define USER_MOTOR_RR (0.0) //在 Y 等效电路中确定的相位到中性点(欧姆、浮点) #define USER_MOTOR_Rs (2.23560095) //在 Y 等效电路中确定的相位到中性点(欧姆、浮点) #define USER_MOTOR_LS_d (0.00867422018) //对于感应、确定的平均定子电感(亨利、浮点数) #define USER_MOTOR_LS_q (0.00867422018) //对于感应、确定的平均定子电感(亨利、浮点数) #define USER_MOTOR_RATed_磁 通 (0.383046627)// sqrt (2/3)*额定电压(线路)/额定频率(Hz) #define USER_MOTOR_磁 化电流(NULL) //为感应电机识别的磁化电流、否则为 NULL #define USER_MOTOR_RES_EST_CURRENT (1.0) //在电机识别期间、用于 Rs 估算的最大电流(安培、浮点数)、10-20%额定电流 #define USER_MOTOR_IND_EST_CURRENT (-0.2) //不用于归纳 #define USER_MOTOR_MAX_CURRENT (2.0) //严重:在 ID 和运行时使用、设置所提供速度 PI 控制器到 IQ 控制器 #define USER_MOTOR_FLUX_EST_FREQ_Hz 的最大电流命令输出的限制 (10) //在电机识别期间、最大指令速度(Hz、浮点)。 应始终使用5Hz 进行感应。 #else #error 未指定电机类型 #endif #ifdef __cplusplus } #endif // extern "C" //@}// ingroup #endif //_user_J5_H_定义的末尾
此行在 user.h 文件中也进行了更改:
#define USER_MAX_ACCEL_Hzps (10.0) //默认值20.0
在这个设置中、除了加速度变化之外、主要变化是增加 USER_MOTOR_RES_EST_CURRENT 并将 USER_MOTOR_FLUX_EST_FREQ_Hz 减少为10。
切换到自定义硬件时、我们将使用以下 user_j5.h 文件:
#ifndef _USER_J5_H_ #define _USER_J5_H_ //! //! //! defgroup 用户// ! //@{ #ifdef __cplusplus extern "C"{ #endif //********* //定义 //! 简要介绍电流和电压 // //! \brief 定义 IQ 变量的满量程频率、Hz //! \brief 根据与该值的比率// 将所有频率转换为(pu)! \brief 此值必须大于您期望电机 #define USER_IQ_FULL_SCALE_FREQ_Hz 的最大速度 (200.0)// 800示例、具有缓冲器、用于8极6 krpm 电机在场强减弱时运行到10 krpm;Hz =(RPM *极)/ 120 //! \brief 定义系统内部 IQ30电压变量的满量程值 //! \brief 根据与该值的比率// 将所有电压转换为(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 值、尤其是在运行速度高于额定速度 的高反电动势电机中//! \brief 警告:如果您知道反电动势常数的值、并且您知道由于磁场减弱而以多种速度运行、请确保将此值设置为高于预期反电动势电压 //! 简要建议从比 USER_ADC_FULL_SCALE_VOLTGE_V 大~3倍的值开始、如果 Bemf 计算可能超过这些限制、则增加到4-5倍 //! \brief 此值也用于计算最小磁通值:USER_IQ_FULL_SCALE_VOLTAGE_V/USER_EST_FREQ_Hz/0.7 //#define USER_IQ_FULL_SCALE_VOLTAGE_V (24.0)// 24.0 boostxldrv8301_RevB 典型用法和 Anaheim 电机 #define USER_IQ_FULL_SCALE_VOLTAGE_V 示例 (70.0)//针对 boostxldrv8301_RevB 典型用法和 Anaheim 电机的24.0示例 //! \brief 定义 AD 转换器输入端的最大电压 //! 将由最大 ADC 输入(3.3V)和转换(0FFFh)表示的值简述 //! 简要说明硬件相关、这应基于 ADC 输入的电压检测和调节 //#define USER_ADC_FULL_SCALE_VOLTGE_V (26.314) // 26.314 boostxldrv8301_RevB 电压调节 #define USER_ADC_FULL_SCALE_VOLT_V (62.01886) // 26.314 boostxldrv8301_RevB 电压调节 //! \brief 定义 IQ 变量的满量程电流、a //! \brief 根据与该值的比率// 将所有电流转换为(pu)! \brief 警告:此值必须大于预期的电机最大电流读数、否则读数将回滚至0、从而产生控制问题 //#define USER_IQ_FULL_SCALE_CURRENT_A (20.0)// boostxldrv8301_RevB 典型用法 #define USER_IQ_FULL_SCALE_CURRENT_A 的20.0示例 (4.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 电流调节 #define USER_ADC_FULL_SCALE_CURRENT_A (4.125)// 33.0 boostxldrv8301_RevB 电流调节 //! \brief 定义使用的电流传感器数量 //! \brief 由硬件功能确定// ! \brief 可以是(2)或(3) #define USER_NUM_CURRENT_SENSORS (3)//为在全速范围内实现最佳性能而首选的3种设置,允许100%占空比 //! \brief 定义电压(相位)传感器的数量 //! \brief 必须为(3) #define USER_NUM_VOLTGE_SENSORS (3)//需要3 //! \简述 A、B 和 C 相的 ADC 电流偏移 //! 简要说明与硬件相关的一次性、但也可以在运行时进行校准 //! \brief 在电路板初始校准后,这些值应针对您的特定硬件进行更新,以便在以二进制文件进行编译后可用于加载到控制器 #define I_A_offset (0.8299074769) #define I_B_offset (0.8320138454) #define I_C_offset (0.8149240017) //! \简述 A、B 和 C 相的 ADC 电压偏移 //! 简要说明与硬件相关的一次性、但也可以在运行时进行校准 //! \brief 在电路板初始校准后、应针对您的特定硬件更新这些值、以便在编译为二进制文件后将其加载到控制器 #define V_A_offset (0.5201388597) #define V_B_offset (0.5231893659) #define V_C_offset (0.5166065693) //! 简要时钟和计时器 //********* //! \brief 定义脉宽调制(PWM)频率、kHz //! 简单的 PWM 频率可以直接在这里安全地设置为30KHz (在某些情况下最大值为60KHz) //! 简要对于更高的 PWM 频率(对于低电感、高电流纹波电机、典型值为60 KHz 以上)、建议使用 ePWM 硬件 //! 简要介绍可调节的 ADC SOC、以抽取控制系统的 ADC 转换完成中断、或使用软件请求示例。 //! \brief 否则您可能会丢失中断并中断控制状态机#define USER_PWM_FREQ_kHz 的时序 (15.0)//30.0示例、典型值8.0 - 30.0KHz;极低电感、高速电机可能需要45-80KHz //! \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 定义每个 ISR 时钟节拍的 PWM 时钟节拍数 //! 注意:有效值仅为1、2或3 #define USER_NUM_PWM_TICKS_PER_ISR_TICK (1) //! \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运行;例如30KHz PWM、15KHz 控制 //! \brief 定义每个电流控制器时钟节拍 的控制器时钟节拍数//! 控制器时钟速率与电流控制器(FOC)速率 的简要关系#define USER_NUM_CTRL_TICKS_PER_CURRENT_TICK (1) // 1典型的正向 FOC 电流控制器(IQ/ID/IPark/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 定义要在 Id 参考 中应用的最大负电流//! \brief 仅用于磁场减弱、这是一个安全设置(例如防止退磁) //! \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 定义 R/L 估算频率、Hz //! 简要介绍用户低电感电机的较高值和较低电感值 //! 简要介绍电机。 这些值的范围为100Hz 至300Hz。 #define USER_R_OVER L_EST_FREQ_Hz (100) //默认为300 //! \brief 定义磁通积分器的低速限值、pu //! \brief 这是 ForceAngle 对象处于活动状态的速度范围(CW/CCW),但仅当启用 //时! \brief 在该速度之外-或者如果禁用- ForcAngle 将永远不会被激活、并且该角度仅由 FAST 提供 #define USER_ZEROSPEEDLIMIT (0.5/USER_IQ_FULL_SCALE_FREQ_Hz) // 0.002pu、1-5 Hz 典型值;Hz = USER_ZEROSPEEDLIMIT * USER_IQ_FULL_SCALE_FREQ_Hz #define USER_ZEROSPEEDLIMIT (0.01) // 0.002pu、1-5 Hz 典型值;Hz = USER_ZEROSPEEDLIMIT * USER_IQ_FULL_SCALE_FREQ_Hz //! \brief 定义力角频率、Hz //! \ForceAngle 对象使用的定子矢量旋转频率 //! \brief 可以是正或负 #define USER_FORCE_ANGE_FREQ_Hz (2.0 * USER_ZEROSPEEDLIMIT * USER_IQ_FULL_SCALE_FREQ_Hz) // 1.0典型强制角启动速度 //#define USER_FORCE_ANGE_FREQ_Hz (2.0 * USER_ZEROSPEEDLIMIT * USER_IQ_FULL_SCALE_FREQ_Hz) // 1.0典型强制角启动速度 //! 简要杆 数// //! \brief 定义模拟电压滤波器极点位置、Hz //! \brief 必须与 VPH #define USER_VOLTGE_FILTER_POLE_Hz (364.682)// 364.682的硬件过滤器匹配,boostxldrv8301_RevB 硬件值 //! 简要介绍用户电机和 ID 设置 // //! \brief 使用唯一的名称和 ID 号// BLDC & SMPM 电机 #define Estun_EMJ_04APB22定义每个电机 101 #define Anaheim_BLY172S 102 #define Teknic_M2310PLN04K 104 #define my_motor113 #define SMall_Motor114 // IPM motors //如果用户提供单独的 Ls-d、Ls-q //否则使用用户或已识别的平均 Ls #define Belte_Drive_洗衣机_IPM 处理为 SPM 201 #define Anaheim_F凸 极 202 // ACIM 电机 #define Marathing_5K33GN2A 301 //! \brief 取消注释编译 //时应包含的电机! \brief 然后、这些电机 ID 设置和电机参数可供控制系统使用 //! \简述 确定理想设置和参数后、请更新此处的电机部分、以便在二进制代码 #define USER_MOTOR_SMIT_MOTOR_ESTUN_EMJ_04APB22 //#define USER_MOTOR_ANAINH_BLY172S //#define USER_MOTOR_TEKINICT_M2310PLN04K // define USER_MOTOR_TOTOR_TOTOR_INAINEL #define ANAINALO_MOTOR_TOTOR_TOTOR_GE= #define KANELARM/#define KANE_MOTOR_MOTOR_TOTOR_TOTOR_TOUN_TOUN_TOUN_GE //名称必须与电机#define #USER_MOTOR_TYPE 相匹配 Motor_Type_Pm // Motor_Type_Pm (全部同步:BLDC、PMSM、SMPM、IPM)或 Motor_Type_Induction (异步 ACI) #define USER_MOTOR_NUM_POLE_PAIRS (2) //对、而不是总极数。 仅用于根据转子 Hz 计算用户 RPM #define USER_MOTOR_RR (0.0) //在 Y 等效电路中确定的相位到中性点(欧姆、浮点) #define USER_MOTOR_Rs (2.23560095) //在 Y 等效电路中确定的相位到中性点(欧姆、浮点) #define USER_MOTOR_LS_d (0.00867422018) //对于感应、确定的平均定子电感(亨利、浮点数) #define USER_MOTOR_LS_q (0.00867422018) //对于感应、确定的平均定子电感(亨利、浮点数) #define USER_MOTOR_RATed_磁 通 (0.383046627)// sqrt (2/3)*额定电压(线路)/额定频率(Hz) #define USER_MOTOR_磁 化电流(NULL) //为感应电机识别的磁化电流、否则为 NULL #define USER_MOTOR_RES_EST_CURRENT (1.0) //电机识别期间、用于 Rs 估算的最大电流(安培、浮点数)、10-20%额定电流// #define USER_MOTOR_IND_EST_CURRENT (-0.2) //不用于归纳 #define USER_MOTOR_MAX_CURRENT (2.0) //严重:在 ID 和运行时使用、设置所提供速度 PI 控制器到 IQ 控制器 #define USER_MOTOR_FLUX_EST_FREQ_Hz 的最大电流命令输出的限制 (10) //在电机识别期间、最大指令速度(Hz、浮点)。 应始终使用5Hz 进行感应。 #else #error 未指定电机类型 #endif #ifdef __cplusplus } #endif // extern "C" //@}// ingroup #endif //_user_J5_H_定义的末尾
对于我们的硬件、我们尝试复制 BoosterPack 设计中的大部分内容。
我们使用3个100V/V 的 INA240A3s、而不是具有8m Ω 感应电阻器的 BoosterPack 中的板载电流感应放大器。 用于电压检测的分压器的增益为0.05321V/V 标称 Vbus 为48V。
在 Rs 估算之后的电机 ID 开始时、Rs=0.00253250124欧姆的值肯定不正确。
当运行电机识别时、电机确实会非常缓慢地上升到速度并且不会达到速度。 一旦 ID 和额定磁通级大幅振动、则停止旋转、同时继续振动。
这些用户文件是否看起来合理、以及我们应该尝试更改哪些参数以使该电机识别?