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.

[参考译文] DRV8323:早期过流故障

Guru**** 2373240 points
Other Parts Discussed in Thread: DRV8323, BOOSTXL-DRV8323RH, LAUNCHXL-F280025C
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/motor-drivers-group/motor-drivers/f/motor-drivers-forum/1494544/drv8323-early-over-current-fault

器件型号:DRV8323
主题中讨论的其他器件:LAUNCHXL-F280025C

工具/软件:

您好、

我的系统 设计为处理~80A 电流 、但当电流(IS_A)达到~28A 时、会触发软件过流故障(faultMtrNow.bit.moduleOverCurrent = 1)、未报告故障状态1和 VGS 状态2、我多次检查了系统设置、不 知道是什么原因导致的?  

随附我的自定义电路板设置

01.增益设置为20 v/v (drvicVars_M1.ctrlReg06.bit.CSA_GAIN = DRV8323_Gain_20VpV)
02. OCP 控制寄存器-> VDS_LVL = 1001b = 0.75V
03. CSA 控制寄存器->SEN_LVL = 11b = SENSE OCP 1V
04.分流电阻为0.001 1m Ω
05.#define USER_M1_ADC_FULL_SCALE_CURRENT_A (165.0f)
06. objSets->maxPeakCurrent_A = 78.375 (full_SCALE * 0.475)
07. objUser->Current_sf = 0.0402832031
08. objSets->currentInv_sf = 24.8242416
09. objSets->overCurrent_A =设置为45A

基于上述设置、当我的油门为45A (IsSet_A = 45)时、 dacCMPValH 仅为3162、远低于其最高截止点。

谢谢、

Danny

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

    您好、

    请查找附件 PDF 文件 是在1秒间隔内导出的数据

    我的电源可提供最大1.5A 的电压、电压为28V  

    增益为20V/V

    USER_M1_ADC_FULL_SCALE_CURRENT_A   (165.0f)

    分流电阻为0.001 Ω

    我不知道 ADC 测量值为什么这么高?  

     

    peak_is_A 只是 ISR 例程内对比较函数进行采样

    if (obj->adcData.I_A.value[0] > obj->IpeakMax_A)
    {
       obj->IpeakMax_A = obj->adcData.I_A.value[0];
    }
    if (obj->adcData.I_A.value[1] > obj->IpeakMax_A)
    {
       obj->IpeakMax_A = obj->adcData.I_A.value[1];
    }
    if (obj->adcData.I_A.value[2] > obj->IpeakMax_A)
    {
       obj->IpeakMax_A = obj->adcData.I_A.value[2];
    }

    e2e.ti.com/.../report_2D00_001.pdf

    Danny

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

    您好、Danny、

    很抱歉耽误你的时间。  

    您能否进一步解释报告的结果? 当您的阈值设置为80A 时、软件会在~40A 时触发? 您是否能够解释报告中显示的变量?

    很好奇、您是否尝试过交换电路板上的元件? 例如:移除 SNx 和 SPX 之间的电容、更改 Rsense 等的值?

    此外、您能否澄清一下器件本身正在报告故障、还是仅在您的软件中触发了这种情况?

    谢谢您、

    Joseph

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

    您好、Joseph:

    感谢您的快速答复。

    当您的阈值设置为80A 时、软件将在~40A 时触发?

    如果软件 阈值设置得更高、例如80A  

    objSets->maxPeakCurrent_A = 80A
    objSets->overCurrent_A = 80A  

    不会触发系统过流故障位(faultMtrNow.bit.moduleOverCurrent)、因为它位于  objSets->dacCMPValH 和 objSets->dacCMPValH  区域内。

    您是否能够解释报告中显示的变量?

    peak_is_A 是最高的 ADC 测量相电流:adcData.I_A.value[0]、 adcData.I_A.value[0]、adcData.I_A.value[2]、并在 __interrupt void motor1CtrlISR (void)例程内完成、我添加了该捕获是为了检查 ePWM 跳闸区是否产生过流

    另外、您能否说明设备本身是否报告了故障、还是仅在您的软件中触发了此操作?

    它由软件触发、我的意思是在 MCU 侧、而不是 DRV8323

    当 adcData.I_A.value[x]在预定义的 dacCMPValH 和 dacCMPValL 区域内测得的相电流时、它会触发 EPWM 跳闸区、并更新过流故障位->  faultMtrNow.bit.moduleOverCurrent = 1……

    在 DRV8323侧、 未  报告 VDS_LVL 或 SEN_LVL!!

    我很好奇、您是否尝试过交换电路板上的组件? 例如:移除 SNx 和 SPX 之间的上限、更改 Rsense 等的值?

    遥感器您指的是分流电阻器吗? 或者我会焊接另一块板、看看是否有硬件故障?

    参见下面的 ipeak 视频: IsSet_A 映射到油门,全范围设置为10A,甚至可以看到 IsSet_A (油门) 逐渐加速,突然间 IPeakMax_A (adcData.I.A.value[x]测量得非常高。

    e2e.ti.com/.../ipeak_5F00_capture.mp4

    我的6英寸马达

    e2e.ti.com/.../6648.motor.mp4

    最大电源 电流3A  

    e2e.ti.com/.../powersupply.mp4

    下面是我今晚的路试、全油门上山、全油门 IsSet_A 设为30 A  

    您可以看到@ 23秒、系统捕获的最高相电流跳至83A  

    e2e.ti.com/.../roadtest_2D00_20250402_2D00_01.mp4

    Danny

     

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

    您好、Danny、

    感谢您提供所有这些信息。  

    您是否能够查看通常是  adcData.I_A.value[0]、[1]还是[2]、它们记录的值较高? 我想、如果问题只是一个阶段、则可能会缩小搜索范围。 或者如果它出现在所有相位上、也是有用的信息。

    我认为其中一个 ADC 通道可能有问题、因为 MCU 只看到错误、并且 DRV 器件不会引发标志。 这是一个"假的"价值权利? 相电流实际上不会达到80A。

    谢谢您、

    Joseph

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

    您好、Joseph:

    感谢您的伟大建议!  

    您是否能够查看通常是  adcData.I_A.value[0]、[1]还是[2]、这是记录高值? 我想、如果问题只是一个阶段、则可能会缩小搜索范围。 或者如果它出现在所有阶段也是有用的信息。

    刚刚修改了我的代码以 捕获每个 Phase 的峰值。

       if (obj->adcData.I_A.value[0] > obj->IpeakMax_A[0])
        {
            obj->IpeakMax_A[0] = obj->adcData.I_A.value[0];
        }
        if (obj->adcData.I_A.value[1] > obj->IpeakMax_A[1])
        {
            obj->IpeakMax_A[1] = obj->adcData.I_A.value[1];
        }
        if (obj->adcData.I_A.value[2] > obj->IpeakMax_A[2])
        {
            obj->IpeakMax_A[2] = obj->adcData.I_A.value[2];
        }

    并且 显示的所有 ADC 通道都是偶数(最上面一行是 Phase 的峰值、第二行是实时相电流) 、没有任何特定的 ADC 通道似乎出现故障。  

    e2e.ti.com/.../phase_5F00_abc_5F00_peak.mp4

    我认为其中一个 ADC 通道可能有问题、因为 MCU 只看到错误并且 DRV 器件不会引发标志。 这是一个"假的"价值权利? 相电流实际上不会达到80A?

    是的、您是对的、随附 DRV 寄存器设置、VDS 和 SEN 电平均设置为最低值。

    CSA 控制寄存器(地址0x06) = 576  
    SEN_LVL =  0.25V (最低)  

    OCP 控制寄存器(地址0x05)= 36
    VDS_LVL =  0.06V

    您认为这是由尖峰引起的吗? 噪音? 如果是、如何防止? 我记得当我使用 Launchxl-F280025C + Boostxl-DRV8323RH 组合时(我现在还没有它)它的作用相似、但那时我只专注于编码而不关注 ADC 读数、所以你能帮助澄清你是否有 Launchxl-F280025C + Boostxl-DRV8323RH 吗?  

    下面看一下原理图、它基于 TI 参考设计、您认为是否可以调整低通滤波器器件?  

    Danny

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

    您好、Danny、

    是的、我认为您可能 是对的、我认为峰值和噪声信号的组合可能会提高 ADC 的本底噪声并导致所记录的值更高。

    SOA、SOB、SOC 中检测到的实际电流不会导致 DRV 器件出现故障、所以我认为 MCU 的路径可能有噪声? 不过、所有 ADC 通道都显示该问题、这正是我认为 MCU 路径成为问题的原因。

    我也很好奇。。。 您的系统运行正常吗? 它只是针对过流设置该软件标志。 如果是这种情况、也许可以实现代码解决方案、比如查看电流是否在一定时间内保持高电平? 如果是、则抛出标志、以避免随机尖峰标记它

    让我知道您的想法

    谢谢您、

    Joseph

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

    您好、Joseph:

    只需订购一些电容器来调优检测 网络的低通滤波器、希望它能有所帮助!

    我也想知道。 您的系统运行正常?

    是的、除了 ADC 测量之外、我的系统正常。  

    只是为过流设置此软件标志。 如果是这种情况、也许可以实现代码解决方案、比如查看电流是否在一定时间内保持高电平? 如果是、则抛出标志、以避免它被随机尖峰
    标记

    如果我将检查代码放在 HAL_readMtr1ADCData 例程中、会每隔1/15KHz 进行一次检查? 您认为 VDS 可以保护而不是软件保护吗? 如果通过比较器实现旁路过流保护(dacCMPValH 和 dacCMPValL)  

    Danny

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

    您好、Danny、

    感谢您提供的信息。 请告诉我滤波是否对软件 ADC 测量有影响。

    我想说的是、依赖设备 VDS 是安全的。 我建议您可以 在不同情况下测试响应、以了解 器件如何为系统提供保护的确切行为。 为了确保器件保护功能按预期工作、人们通常会为其系统测试这些故障阈值。

    谢谢您、

    Joseph

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

    您好、Joseph:

    感谢您的持续关注。  

    通过调整 RC 电路、尤其是电容器值、它可以 大幅抑制 ADC 噪声、我会使用 VDS 来对系统进行最终保护、前线仍然依赖于软件切断、但 要将其设置为比客户输入更高的值(dacCMPValH 和 dacCMPValL)。  

    Danny

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

    您好、Danny、

    感谢您的更新。 软件现在是否能正常工作并降低 ADC 噪声? 请告诉我此筛选是否解决了您的问题、我可以关闭该主题!

    Joseph

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

    您好、Joseph:

    "我可以确认 RC 滤波解决了我的问题。 由于 ISR 例程无法捕获的噪声尖峰、软件过流触发仅发生几次。 但是、至少报告的峰值对用户来说是合理的。 例如、在电流模式下、如果用户将 IsSet_A 设置为30A (全油门)、则报告的峰值为33.59A、35.44A、35.93A……  当软件过流切断(例如、objSets->overCurrent_A)设置为40A 时、系统需要为 dacCMPValH 和 dacCMPValL 增加大约10%的裕度。 如果启用了 FWC、我将相应地进一步增加此值。"

     

    Danny