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.
器件型号:DRV8312-69M-KIT
因此、我目前正在尝试为 DRV8312 EVM 套件设置电机。
使用的电机是一个 Premotec BL21EE (此处提供数据表)
当我尝试运行 motorware lab02b 或 lab02c 时、我会得到一 个非常高或非常低的 USER_MOTOR_LS_d
我取决于用于识别电机的电流
如果我使用类似的东西
#define USER_MOTOR_RES_EST_CURRENT (0.1)
#define USER_MOTOR_IND_EST_CURRENT (-0.1)
我将得到以下值:
或者、如果我使用0.25等更高的电流-我将获得与以下类似的更高 LSQ_H:
两个值都将触发任一错误
USER_ErrorCode_ctrlFreq_Hz_Low
或
USER_ErrorCode_ctrlFreq_Hz_High
由于它在量表的不同端结束、我会怎么做?
电机在识别过程中运行、从我的12V PSU 汲取的电流约为0.34-0.4A。
是否应该设置一些以前的值?
这是我的电机防御:
//! 简要介绍用户电机和 ID 设置 // //! \brief 使用唯一的名称和 ID 号// BLDC & SMPM 电机 #define Estun_EMJ_04APB22定义每个电机 101 #define Anaheim_BLY172S 102 #define teknic_2310P 108 #define My_Motor103 // IPM 电机 //如果用户提供单独的 Ls-d、Ls-q //否则使用用户或已识别的平均 Ls #define Belte_Drive_W垫 圈_IPM 处理 SPM 201 // ACIM 电机 #define Marathing_5K33GN2A 301 //! \brief 取消注释编译 //时应包含的电机! \brief 然后、这些电机 ID 设置和电机参数可供控制系统使用 //! \brief 确定理想设置和参数后、请更新此处的电机部分、使其以二进制代码 //#define USER_MOTOR_Estun_EMJ_04APB22 //#define USER_MOTOR_Anaheim_BLY172S #define USER_MOTOR_My_MOTOR//#define USER_MOTOR_GET_LEMOTOR_INMOTOR_INMOTOR_INMOTOR_INTE= #define AP0232A #define AP_MOTOR_MOTOR_MOTOR_EMJ=#define APJ_MOTOR_TOMENT_TOUN_TOTOR_TOUN_TOMENS //名称必须与电机#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 #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_RATGED_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.4051206) #define USER_MOTOR_LS_d (0.0006398709) #define USER_MOTOR_LS_q (0.0006398709) #define USER_MOTOR_RATed_FLUX (0.03416464) #define USER_MOTOR_磁 化电流(NULL) #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) #define USER_MOTOR_FREQ_LOW(10.0)// Hz -建议设置为额定电机频率的10% #define USER_MOTOR_FREQ_HIGH(100.0)// Hz -建议设置为额定电机频率 的100%#define USER_MOTOR_FREQ_MAX(120.0)// Hz -建议设置为 USER_MOTOR_FREQ_MAX ( #define 3.0)// VOLT 的120%VOLT -建议设置为额定电机电压 #define USER_MOTOR_VOLT_MAX(18.0)//伏特-建议设置为额定电机电压 #Elif (USER_MOTOR== My_Motor) #define USER_MOTOR_TYPE 的100% Motor_Type_Pm #define USER_MOTOR_NUM_POLE_PAIRS (6) #define USER_MOTOR_RR (空) #define USER_MOTOR_Rs (30.2) #define USER_MOTOR_LS_d (空) #define USER_MOTOR_LS_q (空) #define USER_MOTOR_RATed_VLUX (空) #define USER_MOTOR_磁 化电流(空) #define USER_MOTOR_RES_EST_CURRENT (0.1) #define USER_MOTOR_IND_EST_CURRENT (-0.1) #define USER_MOTOR_MAX_CURRENT (0.3) #define USER_MOTOR_FLUX_EST_FREQ_Hz (40.0) #define USER_MOTOR_FREQ_LOW(10.0)// Hz -建议设置为额定电机频率的10% #define USER_MOTOR_FREQ_HIGH(500.0)// Hz -建议设置为额定电机频率 的100%#define USER_MOTOR_FREQ_MAX(600.0)// Hz -建议设置为 USER_MOTOR_FREQ_MIN (3.0V/V)//额定 电机频率的120%VOLT -建议设置为额定电机电压 的15%#define USER_MOTOR_VOLT_MAX(12.0)//伏特-建议设置为额定电机电压的100%
将 USER_MOTOR_FLUX_EST_FREQ_Hz 增加 到(100.0)会使其运行速度更快、结果更加一致、但仍会更改位-
LS_q + LS_d = 0.000960171339
USER_MOTOR_Rated 磁通 = 0.0103878221
-它在初始识别期间运行正常-但是、在完成识别之后、当我再次启用它来测试新参数时、它运行不良(跳转、不运行)
编辑:
此外、在该过程中的速度斜升阶段、 gMotorVars.Speed_KRPM 从大约20RPM 到最高1000RPM 的转速看起来正常-因此它可以测量它的运行速度-当我在识别后再次启用闭环时、它在开始运行时遇到问题。
编辑#2:
我继续进行实验3A、只是使用新参数测试其他参数-在实验3A 中、我得到了极高的偏移:
#define I_A_offset (-8.453097522)
#define I_B_OFFSET (-8.430110574)
#define I_C_OFFSET (-8.489150584)
据我所见、其他的大约为-0.4至-0.8 -而非-8
这是否表示硬件已启动或仍是软件设置?
编辑#3:
我刚刚尝试使 lab1b 正常工作、在步骤2a 中、我在 DAC1和 DAC2上获得输出、但 DAC3只是恒定的"高电平"而不改变。
我在论坛上找到了有关 DAC3 GPIO 的以下主题:
现在、我让 DAC 用于实验1b -但它不会改变2c 中的任何内容
尊敬的 Chris:感谢您的帮助、我已经创建了 User.h 文件-
IM 使用 C :\ti\motorware\motorware_1_01_00_18\sw\solutions\instaspin_foc\boards\drv8312kit_revD\f28x\f2806xF\projects\ccs 中找到的文件
我有 DRV8312EVM 板+ F28069X ISO 控制卡-(应为 DRV8312-69M-KIT)
控制卡上的开关为:
SW3 -打开
SW2 -(标签上无、因此位置为高电平或低电平)低电平
SW1 -打开
在 DRV8312 EVM 板上:
RSTA = MCU
RSTB = MCU
RSTC = MCU
JP2 =已放置
JP1 =+12V (外部 PSU 在12V 和 AUX-12V 之间连接)
M1 = H
测量测试点 IA、IB、IC-FB 和 I-TOTAL 时、看起来全部偏置在1.6-1.66V 左右、并且随电机运行而变化。
Br. Martin
编辑#
现在获得了更好的偏移-0.8xxxxx。 不知道哪个参数适用于这种情况、但该部件还可以-电机仍然无法识别正确-在识别时运行正常、但在识别后不会立即运行-
就我所读出的内容而言、电机将以开环模式启动、然后转换到闭环模式-是否有任何参数可以对其进行任何调整? 电机在移动时运转正常、但无法脱离开环状态。 -
是否有任何电阻器可以替换或并联放置另一个电阻器、以便为低电感电机提供更好的灵敏度? 我的最大电压为12V、因此我不需要电路板上的66V 范围、而且仅消耗0.4A 电流、因此该范围也可以降低?
通过这些设置、我将得到:
RS 28.9881992
LSD 0.00173767947
LSQ 0.00173767947
磁通 VpHz 0.0125429649
使用这些设置、电机运行得更好-如果我将速度提高到大约1.2KRPM、电机将在某个时候启动大约1-2秒、但随后再次失速。
最终目标是以500RPM 的转速稳定运行电机。
对于新的偏移值:
I_bias 全部为3、大约 为-0.8455632925
V_bias 全部为3、大约 为0.4889110327
运行另一个时间
LSD 更改为 0.0001672
和
磁通0.01534
这样、它可以在10-15秒内运行1300-1600RPM、但反馈 gMotorVars.Speed_kRPM 是跳跃+- 400RPM、有时一个小的尖峰会使它-0.6左右
我无法在实验3a 中再次使用这些值、因为我得到 CTRL freq LOW 错误
(我已经实现了我在另一个线程中找到的修复程序
if ((((float_t) USER_CTRL_FREQ_Hz <=(USER_MOTOR_Rs /(USER_MOTOR_LS_d + 1e-9)/ MATH_two_PI)))||
(((float_t) USER_CTRL_FREQ_Hz <=(USER_MOTOR_Rs /(USER_MOTOR_LS_q + 1e-9)/ MATH_two_PI)) )))
电机将在 IND_EST_CURRENT 设置为-0.02的情况下开始旋转、但在开环斜升期间的第一秒内不会平稳运行-从-0.03开始、在开环期间一直运行良好
我会使用这些
RS 28.9881992
LSD 0.00173767947
LSQ 0.00173767947
磁通 VpHz 0.0125429649
我认为您现在面临的问题只是速度控制器调优。
尝试运行在扭矩控制(无速度环路)下运行的 lab05a、看看它是否稳定。
如果是、请继续进行下一个实验、并了解如何调整控制器。
我刚刚尝试了实验5a -电机转动非常缓慢、但如果我稍微推动一下、它将持续稳定地旋转、
将尝试继续执行另一个 lab5b、但我对此有一个小问题
电机太弱、无法使用"弹簧"调优方法、因此我必须进行数学计算、但我似乎找不到一些变量-
其中包括 Tau、Fs (采样频率)、但我将尝试使用该日来查找有关该主题的任何内容
编辑。
我想我将首先尝试使用实验5h 中的阶跃响应对其进行调整-但我无法使其在速度模式下工作、因为它只是跳跃而不是运行
我还必须将 USER_IQ_FULL_SCALE_CURRENT_A 缩放到(1.5)、因为我遇到 USER_ErrorCode_iqFullScaleCurrent_A_High 错误
请勿更改 USER_IQ_FULL_SCALE_CURRENT
将其设置回硬件的默认值、否则将无法正常工作
如果您在 errorCheck 上遇到错误、您可能只需注释掉该代码即可通过。
我认为 errorCheck 只是认为 RoverL 频率(~16KHz) 大于您的电流环路频率。
因此 、可以选择将 PWM 频率更改为(40.0)、将节拍从3更改为(2.0)、从而提供有效 的20KHz 电流环路、而不是45/3 = 15KHz。
然后将当前处于(15)的节拍值更改为(20)、以获得新的有效1KHz 速率。
看看这是否清除了错误。
这是一种非常不同的电机类型、具有与 LS 相关的巨大 Rs。 该电机不是为闭环电流控制而设计的、而是为开环稳定性而设计的。 您所使用的硬件扩展都是针对电机要求而设计的。 这将有所帮助。
我们可能接近使用此硬件和该特定电机时可以显示的内容。
嗨 、ChristiClearman - 2个简短的问题。
因此、我能够调整 PID 电流和速度控制器、以获得稳定的阶跃响应、如下所示:
总之、我现在有2个问题:
1.在哪里保存新找到的 Ki、Kp、KI_SPD 和 KP_SPD 值? 在 USER.h 文件中找不到空间。
2.我的电机运行仍有1个问题-启动! -
我需要电机运行、我必须用手指滑动电机以使其运行、如果我幸运的话、它将"抓住它"、然后让它在基准处运行 速度。 如果我不这么做、电机会振动一点、如果我启用力角、它会向后移动一点、但永远不会加速-我是否可以进行任何校准/调整、以便在我不帮助的情况下让它自行启动?
到目前为止,非常感谢!
不能只将它们添加到用户文件中。 您必须编写/编辑代码示例。
只要您不限制速度控制器的输出(通过设置 MAX_CURRENT 过小或采用其他一些方法)、速度控制器就应该继续增加转矩控制器的 IqRef_A、以使电机启动。
启用 ForceAngle 并不是完全必要的、但在某些应用中它可能会有所帮助。
但是、您应该在首次启动之前执行 RsRecal、这应该有助于实现一致的启动。
我回到办公室、一直在玩一个游戏-我返回并将 #define USER_IQ_FULL_SCALE_CURRENT_A 设置 为10 (默认)
我尝试将 t #define USER_MOTOR_MAX_CURRENT 增加 到5.0、但它没有影响? 我可以在该参数中允许多大的值? 我的电机的额定电流为0.3A、现在是5.0A? 在启动方面、还有什么会影响速度控制器?
我当前的电机定义为:
#Elif (USER_MOTOR== My_Motor) #define USER_MOTOR_TYPE Motor_Type_Pm #define USER_MOTOR_NUM_POLE_PAIRS (6) #define USER_MOTOR_RR (空) #define USER_MOTOR_Rs (29.8624153) #define USER_MOTOR_LS_d (0.000345120265) #define USER_MOTOR_LS_q (0.000345120265) #define USER_MOTOR_RATed_FLUX (0.0110681299) #define USER_MOTOR_磁 化电流(NULL) #define USER_MOTOR_RES_EST_CURRENT (0.07) #define USER_MOTOR_IND_EST_CURRENT (-0.07) #define USER_MOTOR_MAX_CURRENT (5.0) #define USER_MOTOR_FLUX_EST_FREQ_Hz (100.0) #define USER_MOTOR_FREQ_LOW(50.0)// Hz -建议设置为额定电机频率 的10%#define USER_MOTOR_FREQ_HIGH(560.0)// Hz -建议设置为额定电机电频率 #define USER_MOTOR_FREQ_MAX(670.0)的100%// Hz -建议设置为额定电机电频率 #define USER_MOTOR_VOLT_MIN(1.8)的120%//伏特-建议设置为额定电机电压 #define USER_MOTOR_VOLT_MAX (12.0)的15%/建议设置为电压 设置为额定电机电压的100%
我的 KI_Idq 为1.5、KP_Idq 为3.5 -对于速度控制器:
KP_SPD = 0.0539
KI_SPD = 0.00011992 (在未获得包含峰值的异常阶跃响应的情况下、不能增加这2个值中的任何一个)
我对速度的阶跃响应如下所示:
就在它增加速度之前、RPM 会下降-这是否意味着电流过小?
我一直在想的另一件事-我的 RS 在29-30 (欧姆 I 预载)左右相当稳定-在我的电机的数据表中、它说相间为39欧姆、从相到 GND 为19、5欧姆-我是否应该做任何更改?
我会增加
USER_MOTOR_RES_EST_CURRENT (0.2)
以查看 Rs 值 ID 是否发生变化
此设置没有问题。 这不会执行任何命令、只会限制 max IqRef_a 命令。 这不是电机实际消耗的功率。
USER_MOTOR_MAX_CURRENT (5.0)
在两个相位之间使用万用表来测量 Rs。 除以2、这应该是您在 user.h 中使用的值
如果 Rs 值不正确(尤其是高于实际 Rs 的值)、则会导致启动行为不良。 因此、请研究该领域。
两相之间的电阻(使用万用表测量)为42.8欧姆、因此 DRV8312套件的测量结果应为21.4欧姆左右、 但始终为我提供介于28-30欧姆之间的值-我尝试 将 USER_MOTOR_RES_EST_CURRENT 从0.03 (额定电流的10%)和高达0.3 (100%电流)-所有这些都为我提供了大致相同的结果-如果我低于0.03、我会得到大约3000欧姆、 电机不会旋转。
手动输入21.4Ohm、使实验5h 运行起来稍微"平滑"-调整 PID 值会更容易一些、电机看起来会尝试更好地启动-但仍然没有启动。
看起来它也没有检测到 RPM -如果电机停止运转、它仍将报告目标 RPM 附近的值、电机将振动-但如果我现在只稍微轻一下、电机就会启动。
除电流外、什么参数会影响电阻估算? 我可以做些什么来使它检测到 RPM 更好吗?
另外,这是否是硬件扩展问题? 我注意到 ADC 全范围电压为66V、我的电机将在500RPM 时产生大约0.6V 的电压(例如、ADC 范围的1%)?
编辑:因此、我一直在手动播放电机模型、如果我将 USER_MOTOR_LS_d 和 q 设置为0.035并将 Rs 保持在21.4、 然后、7h 中的自动估算 Kp og Ki 值将在几秒钟内启动电机-但环路对于阶跃响应不稳定、无法以超过1500 RPM 的转速运行。 如果我根据阶跃响应调整2个环路、则电机随后稳定运行、并且具有良好的阶跃响应、但无法通过自身启动。 KP 和 KI SPD 的自动估算值约为1.8和0.006、当我调节时、它大约为0.01和0.00025