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.

[参考译文] DRV8316:输出占空比不匹配输入

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

https://e2e.ti.com/support/motor-drivers-group/motor-drivers/f/motor-drivers-forum/1073095/drv8316-output-duty-cycle-doesn-t-match-input

部件号:DRV8316
“线程: 测试”中讨论的其它部件,

运行校准程序时,DRV8316输出似乎与输入占空比不匹配。

我正在使用6x PWM (不是电流限制模式);我已通过 SPI 配置设备,当前的默认值不是 OCP_dg (0x2:1.1 us)和 OCP_LVL (0x1:24A)。 我的 PWM 为20kHz,根据数据表中列出的标称停机时间,HA/LA 之间的停机时间为500ns。 (请注意,缺省情况下 AAR 和 ASR 处于关闭状态)

为了校准相电阻,我使用简单的 PI 回路强制设定电流量(3A)通过特定电动机相1秒钟,并根据请求的调制记录估计相电压。 电流正确,测量电流为2.95A;但是,PI 控制器应用于达到该电平的 PWM 占空比意味着比电动机相上的实际调制要高得多。

我尝试使用驱动器延迟补偿来使输出占空比更接近 PWM 输入,它确实可以减少占空比失真。 但是,即使使用3.2 us 的最高延迟目标(0xF),输出仍会严重失真,导致校准明显不同于预期。

我附上了一些示波器轨迹的拉链,其中显示了延迟和占空比失真。 如果有人对我如何使应用占空比更准确地与输入 PWM 类似有任何想法,我会非常感激!

谢谢,

埃里克

 e2e.ti.com/.../DRV8316_5F00_PWM_5F00_distortion.zip

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

    埃里克,您好!

    我仔细查看了您的波形,我认为您在配置最高延迟目标值之前是正常的。  

    看看旧波形,您的 INHx 输入与 OUTx 输出的长度匹配。 箭头长度相同,因此 INHx 长度和 OUTx = VM 长度匹配。 箭头前后的紫色“蓝”是内部 MOSFET 的主体二极管捕捉,它等于 FET 切换之间的死时间。 这不是输出占空比的一部分。  


    相反,当启用并最大化延迟补偿时,这会在 INHx 输入和 OUTx 输出之间产生太多的可变延迟,从而导致占空比不匹配。 箭头长度相同,您可以看到 OUTx 的长度比 INHx 的长度短。  

    有关设备的失效时间和延迟时间的更多信息,请参见以下应用手册: 集成 MOSFET 驱动器中的失效时间和延迟时间

    谢谢,
    亚伦

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

    感谢您的解释,该文档帮助我理解了这一错误及其发生的原因。  
    阅读完文档后,我对延迟补偿被禁用时的特定长度仍有点困惑。 你提到紫色的铁是身体二极管捕捉的,这是死时间(数据表说,通常是500 ns,但最大是750 ns);但在我对 HA 到 LA 过渡的轨迹上,“铁”在开始衰减前超过2.5 us。 在您共享的文档中,图2-10 (我认为这与我的 HA 到 LA 过渡示波器轨迹相同)指出,“跳跃”应该是您提到的停滞时间,应该限制在750 ns 的最大值。  

    您是否知道会导致这种“跳跃”/“死机”时间延长的任何原因? 我已将 PWM 配置为已内置500ns 的死机时间,这是否会导致此处的轨迹所示的任何情况?


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

    埃里克,您好!

    您可能正在使用输出转换速率设置为25 V/us (转换速率= 00B),驱动程序将输出2500ns (2.5us)的死时间。 输出失效时间将是 MCU 失效时间或驱动器失效时间的较长。  






    谢谢,
    亚伦

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

    我已经确认我使用的是200V/us 转换率(登记号0x3)

    以下是两种波形,第一种波形与我使用过的转换率(0x3)相同:

    当我只将转换速率更改为25V/us (0x0)时,还会出现另一个波形:

    使用 slw_rate = 0x3可以将死时间“跳跃”缩短约1-2 us,但它仍然远远超过数据表中列出的该转换率的最大0.75 us。  

    注意:对于这两种情况,我都启用了延迟补偿,并将其设置为1.2uS 目标(0x5)。

    为了澄清硬件问题,我将 BLDC 电机直接连接到 OUTx 引脚上,而这些网络上没有其他任何内容。 这是正确的实施方案还是我的硬件可能出现问题?

    感谢您与我一起解决这些问题!

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

    埃里克,您好!

    启用1.2us 延迟补偿意味着 OUTx 将跟随 Inha 输入提高1.2us,因此 如果死时间低于某些情况下的典型值,则添加可变延迟以匹配总延迟时间(tpd + tdut)。 我同意您的评估,尽管在雪橇=200V/us 时,这些死机时间比预期的长得多。 死时间比延迟补偿时间长,因此不匹配。  



    我联系系统,了解这是否是 DRV8316的正常行为,如果布局不是最佳的,或者在打开 LS MOSFET 前 HS MOSFET 闸门内部没有完全关闭。  

    应用程序的规格是什么? 电流和电压? 梯形电流还是正弦电流?  

    您是否介意共享应用程序的原理图和布局?

    谢谢,
    亚伦

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

    这是当前的调试配置:

    电压:12-16V

    电流:校准电流为3A (通过单相滞留*测量)

    梯形与正弦 :正弦电流



    *注意:在此校准过程中,我强制使用静态3A α(带有0A β 电流:Clarke 变换)电流,其中一个相有效吸收所有电流,而其他两个相被驱动的电流相同,每个相提供一半的凹陷电流。

    下面是示意图以及布局图像(它是一个4层电路板)。 我很高兴分享其他类型的版板文件(开放源代码),请告诉我,如果您需要的内容超出版式图像的范围,可能会有所帮助。

    e2e.ti.com/.../BladeDrive_5F00_schematic.pdf

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

    埃里克,您好!

    您的示意图和布局看起来不错,但我没有发现任何可能引起关注的原因。 我不确定3-A α 电流(通过2相获得,通过3相吸收)如何影响死时间,我已联系到相关系统。 明天我会给你一个更正式的回复。  

    谢谢,
    亚伦

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

    埃里克,您好!

    您能 为我检查几件事吗:

    是否可以使用 MCU 的<500ns 或0ns 停机时间重新运行测试? 如果电流流入相位(高压侧二极管导电),它将尝试保持“关闭”时间,而不是“打开” 时间。

     您还可以在运行测试时测量相位 A 和相位 B 吗? 这些死亡时间是否受到影响?

    谢谢,
    亚伦

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

    在我最近的示波器波形曲线中,我分享了显示转换0x0和0x3之间的差异的示波器波形,MCU 的死时间设置为~100ns。  

    今天晚上我可以测量 A 和 B 相,你是说 OUTx 网吗(我有4个通道范围,所以我无法在测量所有输出时测量 HA/LA)?

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

    嗯,好的,谢谢你让我知道。

    您能否在校准阶段测量 Inha/INFA/outa (如上),然后测量 INHB/INLB/OUTB 和 INHC/inlc/outc? 这些可以是单独的示波器激发,但理想情况下应该是在校准阶段。 我们想看看当电流 进入相位时,死时间性能是否正确(即 OUTB,outc)与 超出阶段 (outa)。

    如果需要,请将 MCU 失效时间更改为0ns,以查看失效时间是否更一致。  

    谢谢,
    亚伦

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

    以下是这三个轨迹;我将校准时间延长至10秒,以确保 PI 循环已按设定的值收敛(通常只有2秒足够)。 因此,当每次单独捕获期间所有 PWM 时间都大致相同时,应进行跟踪。

    我离开的时候和我最后一个回复的时间一样,以96纳秒的设置测量结果。 所有这些捕获的转换率都设置为200V/us (0x3)。

    **编辑:延迟目标为3.2 us (0xF)**  


    outa 和 OUTB 是相同的,正如我所期待的,outc 的长度与 A 和 B 的长度大致相同  

    我以2.46度的速度测量出了跳数,然后它开始缓慢增加,直到它开始射门。

    输出:

    公开大学:

    输出:

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

    如果您想同时查看所有 PWM 输入,我用 DSA 捕获了所有6个 PWM 信号。 我将数据附加为 Saleae 文件(https://www.saleae.com/downloads/),但如果无法打开,可以将其转换为其他文件。

    (请注意,这与上一个 POST 的固件/硬件完全相同,具有 outa/OUTB/outc 跟踪,因此 PWM 应大致匹配)

    e2e.ti.com/.../DRV8316_5F00_Calibration_5F00_INx.sal

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

    埃里克,您好!

    我的逻辑软件已经过时,目前还没有打开。 可以用其他格式共享吗?

    谢谢,
    亚伦

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

    以下是 Saleae 捕获结束时的 CSV (全文为50MB 以上的 csv),以及几个周期的屏幕截图,这些周期更易于可视化。

    e2e.ti.com/.../partial_5F00_DRV8316_5F00_Calibration_5F00_INx.csv

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

    埃里克,您好!

    感谢您的分享。  我误读了之前的一条回复,您正在 两个阶段寻找大约1.5A 的电  流,并将3A 的总电流吸入第三个阶段。  您是否能看到 OUTx 在所有三个相位上都有类似的死时间跳跃时间? DLY_target = 1.2us 时,是否有任何其他相位正确(1.2us)?

    您还可以尝试使用更小的校准电流(例如500mA + 500mA 源和1A 接收器)来查看 OUTx 死时间电流是否有改善?

    谢谢,
    亚伦

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

    以下是相同的波形,延迟目标为1.2uS,但它们看起来几乎与以前的波形相同,目标为3.2uS:  

    (之前的是3.2版,我已编辑过该帖子以澄清这一点)

    将校准电流更改为吸收1A 至 C 后,我还尝试了范围输出_C,并且没有太多的区别,在输出_C 引脚上的振铃/过冲更少。 “跳跃”的长度与3A 轨迹大致相同,略高于2US,然后开始缓慢上升。 但这些目标都没有接近1.2uS 目标  
     

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

    埃里克,您好!

    感谢您的分享。 下周,我将在深入研究后得到更正式的答复。  

    您确定上述波形是否符合您对 outa,OUTB 和 outc 的期望? 如果电流超出相位,OUTx 身体二极管电压将约为-0.7V。 如果电流进入相位,OUTx 身体二极管电压将围绕 VM+0.7V。 参见下文。  

    您以前是否曾在 DRV8316REVM 上尝试过此测试,如果是,您是否看到类似的问题? 您是否尝试在没有马达的情况下将 INHx/INLx 作为同步波形应用,以查看死时间是否正常? 不确定电机是否会影响死机时间。  

    谢谢,
    亚伦

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

    (延迟补偿设置为1.2us)

    我没有 EVM,因此我不确定是否可以看到它。 以下是一些流出物(电流打算从流出物流出)的痕迹,但未连接任何电动机。

    如果没有电动机,则当输出引脚偏高时,二极管会发出(更小)断路,当输出引脚偏低时,没有会导致更预期的传播延迟/死机时间:  

    我测量的是 INLA 偏高和出口针偏低之间的距离约为800 ns:

    随着 Inha 的发展,outa 的发展,大约有2.6度的延迟:

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

    埃里克,您好!  

    我不正确地看了上述波形中的延迟补偿是如何发生的。 我当时在看的是死时间,而不是 DRV8316插入的延迟,以匹配 INHx --> OUTx“开”时间和 INLx --> OUTx“关”以减少占空比失真。  实际上,它可以从上面的波形中正常工作,我将用您的图像重新解释。  

    由于传播延迟和电流测量(取决于 OUTx 引脚的电流方向),占空比失真是由不正确的正时引起的。 在以下两种情况下,由于 DRV8316的延迟,OUTx“开”或“关”时间可能比输入开/关时间短。 因此,在以下两种情况下,将添加 DLY_TARGET 总时间的可变延迟时间:

    1)当电流从 相位流出时,与 OUTx“开”时间匹配的 INHx“开”时间
    2)当电流进入 相位时,与 OUTx“关”时间匹配的 INLX"开"时间  

    因此,我们需要根据当前方向(而不是死亡时间)调查输入上升和输出上升/下降之间的时间。 这就是我在上面犯了错误的地方。 以上测量值是死后插入的可变延迟时间(tvar),以确保占空比的开/关时间正确匹配,因此根据当前方向,"剪切"比回转率设置的规定的死时间长。  

    让我们来看看您的 outa/OUTB/outc 波形。  

    [引用 userid="511725" url="~/support/motor-drivers-group/motor-drivers/f/motor-drivers-forume/1073095/drv8316-output-t负荷-循环-不 n-t-match-input/3976859#3976859"]

    输出:

    公开大学:

    输出:

    [/引用]


    首先,由于正极二极管如何捕捉(显示的死时断路器),电流从 C 相输出,并吸入 A 和 B 相  

    让我们从输出开始,它是输出电流。 为了确保 OUTx“开”时间与 INHx“开”时间(红色)相匹配,可以添加延迟补偿(绿色),以允许 OUTx 延迟 OUTx 输出转换。 这样,设备就有更多的时间让接收器电流计算电流,适当切换并克服传播延迟中的不匹配。 当设置为3.2us 时,我们看到驾驶员增加了可变延迟时间以消除占空比失真。  

    现在让我们来看看,它正在下沉。 为了确保 OUTx“关闭”时间与 INLX“打开”时间(红色)相匹配,可以添加延迟补偿(绿色),以允许 OUTx 延迟 OUTx 输出转换。 这样,设备就有更多的时间让接收器电流计算电流,适当切换并克服传播延迟中的不匹配。 当设置为3.2us 时,我们看到驾驶员增加了可变延迟时间以消除占空比失真。  

    希望这能有所帮助!
    亚伦

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

    你好,Aaron,

    这大大有助于我了解这项功能!

    我看到该功能在您标记的图像(延迟补偿设置为3.2uS)中的预期效果良好。  
    看图像(使用电机),当我将延迟补偿设置为1.2uS (根据我的转换率建议)时 ,波形与我在阅读您的评论后所期望的不符。 具体而言,前两个波形都是吸入电流,因此据我了解,OUTx“低”时间应该与 INLx 高时间匹配? 出于某种原因,第一个波形(outa)的波形低约 为27US,而该周期的 INLx 高约为28.6us;OUTB 大致相同。

    然后,外包电流的输出应具有与 INHx 高时间匹配的 OUTx“高”时间;但同样,输出似乎不匹配。

    基于这一点,出于某种原因,我的系统需要设置为3.2uS 的延迟补偿,以获得尽可能准确的工作周期,这是否合适?

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

    埃里克,您好!

    回到您的压缩文件中的原始波形,我同意1.2度的延迟补偿默认值对您的电动机来说是不够的,因为在 INLX 偏高和 OUTx 偏低之间的第一个间隔,OUTx 死时间很长,大约为3度。 这可能是由于电感电动机较高以及电动机切换电流的驱动器延迟时间较长。 即使第二个间隔非常短,且按编程接近1.2us,您仍需要使用至少是输入转换期间最长延迟时间的值的延迟补偿时间-在本例中,大约为3us。  



    在较低的设置下,INX 和 OUTx 之间仍然不匹配,这是您在27US 和28.6us 之间之前看到的。 因此,应该增加大约1.6 us 的延迟补偿(在1.2 us 之上),以减少 INX 和 OUTx 之间的差异。  因此,应将延迟补偿设置为最大值(3.2 us),以尽可能准确地获得工作周期。

    谢谢,
    亚伦

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

    埃里克,您好!  

    要解决此问题,请确保将控制寄存器3中的位6设置为“1”,这将消除长时间停滞的问题。 在 RTM 之前的数据表中,默认情况下,此值设置为“0”,导致较长的停机时间。 RTM 数据表将默认将此位更正为“1”。  

    谢谢,
    亚伦