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.

[参考译文] MSP430FR6047:USS 水流问题

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1276490/msp430fr6047-uss-water-flow-questions

器件型号:MSP430FR6047

您好!

我尝试使用  MSP30FR6047EVM 修订版2和 DN25管道构建水表传感器、其中传感器的距离约为80毫米、我有一些问题。

1.以下设置和 ADC 采集是否正常? 我是否需要进行任何更改?

2.完成 EVM 配置后、我会将配置设置传递到  具有相同管道和收发器距离的定制 MSP30FR6047板上。 除了仪表常数和仪表校准参数外、还有其他事项需要更改吗?

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

    尊敬的 Panagiotas:

    1.您的 ADC 捕获看起来非常好。 屏幕截图中的所有设置看起来也很好。 只要您已经验证波形窗口(dToF、atof、VFR)与您测试环境中的实际值准确无误、我想说这些值看起来也不错(看起来这是用零流量或接近零流量捕获的?)。

    2.不、我认为、一旦您更改了仪表常数和校准参数、就应该很好。

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

    它是用零流量进行捕获的。 如何计算环境中的 dToF 和 atof? 此外、有时 ADC 计数会出现+/- 100波动、这是问题吗? 当 VFR 应该存在时、它几乎始终低于0值、如何改善 VFR?

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

    如果您知道流量为零、则应观察"Waveforms"选项卡中的数据显示的飞行时间差非常小(实际上是这样)、并且您的绝对飞行时间非常接近且保持恒定(它们是恒定的)、这证明您的飞行时间数据准确无误。

    此器件会计算 dToF 和 aToF。 您可以通过找到信号的飞行路径并将其除以水中的超声波速度(大约为1500m/s)来计算 atof。 这可用于验证 GUI 显示的值。 如果知道流速为零、那么 dToF 理论上也应该为零。 图像中的值几乎为零加上一些噪声、因此看起来不错。

    您能否用一两张屏幕截图来演示您看到的 ADC 计数波动并在此处发布? 根据您的简短描述、我无法判断这是否是问题、因此一些其他说明会有所帮助。

    所示的 VFR 非常低。 将很难使其更接近零。 一般而言、降低环境中的噪声、确保您的测试设置实际上具有零流量、检查换能器的精度以及仔细的配置可以提高精度。 测试环境的确切设置(管道材料、换能器布置)也会影响您的数据。 在我们的 产品页面上 、您可以找到一些有关换能器选择和硬件设置的文档。 不过、我想您会发现、显著提高准确度会很困难。 在屏幕截图中、您的读数看起来都很好。

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

    这里是第二个 ADC 采集、其振幅较低(我错误地使用了 ADC 计数、我不知道它们是否相同)

    此外、我还将 Δ ToF 偏移更改为5。 您认为保留哪一种更好? 0或5?

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

    Panagiotis,

    您的 ADC 采集效果仍然良好。 振幅当然比其他屏幕截图中的稍低一些、但仍然看起来很好并且在可接受的值范围内。 只要你没有看到任何其他问题,你的读数,我认为这是可以的。  

    我认为您对 dToF 偏移所做的更改很好、因为它似乎将信号以每小时0升为中心。 我想说你应该保留它。

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

    很好、很高兴听到。

    我还有几个问题。  

    在什么单位 algRes->volumeFlowRate 中、以及此公式的区别是什么:return (float)(((float) g_ResultsOfLastMeasurement.Last_flowrate *
    (float) Rate)/((float) millisions_in_hour);?

     仪表常数在哪个变量中使用? volumeFlowRate 或 volumeFlowRateNoCalib?

    此处引用的问题是否仍然存在? MSP430FR6047:EVM430-6047音量添加- MSP 低功耗微控制器论坛- MSP 低功耗微控制器- TI E2E 支持论坛

    使用我设置的包络交叉阈值(26)、将锁定哪个波瓣?

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

    1)以升/小时为单位的 volumeFlowRate。 它在一定程度上由您粘贴的公式确定。  如果您导航到 hmi.c 源文件 hmi_current() Algorithm_Update 函数,您可以看到 volumeFlowRate 是 Results_Update()函数的参数。  在该函数中、volumeFlowRate 用于计算 g_ResultsOfLastMeasurement.Last_FlowRate 。 然后、该值将与 GAP_UPS_UPS 一同使用以确定值: G_ResultsOfLastMeasurement.Last_volume。  

    简而言之、volumeFlowRate 是一个参数、用于确定您提到的算法中的一个值。

    2) 2) 两者均使用仪表常数。  

    体积流速=(体积比例因子*附加体积比例因子)* dTOF /(absTOFUPS * absTOFDNS)

    如果查看 ussSwLibVFRCalib.c、您可以看到 volumeFlowRateNoCalib 的值与 volumeFlowRate 相同、或者 volumeFlowRate*addlScaleFactor 的值取决于您的配置。

    3) 3)我 已经看到这篇文章中提到的解决方案是将 UPS0到 UPS1的间隙增加到200ms。 我手头有一个器件、我已通过 《USS 设计中心用户指南》中更接近最小值的间隙 获得了准确的测量值、并获得了准确的测量值。 因此,我认为这一问题已经解决。 不过、我想补充一点、如果将时间过短、可能会导致其他问题、具体取决于您的实施情况。 UPS0到 UPS1间隙非常低会导致传感器振铃和先前信号的反射出现问题。 因此、即使您在实现中使用的值可能低于上述值、您也不一定要尽可能减小该值。 最后、您可以自行决定哪些值适用于您的实现、因为硬件和环境特征会对您收集的测量结果产生很大影响。

    4) 4)包络交叉阈值是峰值波瓣的百分比。 包络交叉阈值和峰值用于确定将哪个波瓣视为信号的起点、并用于计算飞行时间等因素。 所选旁瓣将是执行 ADC 捕获时幅度最接近峰值26%的旁瓣。

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

    太好了,感谢您的帮助!!!

    如果我还有任何问题、我还会再来这里

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

    大家好、我还有一个问题

    如果您查看 ussSwLibVFRCalib.c,您可以看到 volumeFlowRateNoCalib 的值与 volumeFlowRate 相同,或者 volumeFlowRate*addlScaleFactor 的值取决于您的配置。

     USS_scaleVolumeFlowRate 函数仅在 USS_VFR_LARGE_PIPE_Addl_sf_enable 为 true 时使用、后者又由该 USS_VFR_LARGE_PIPE_Addl_SF 决定 。 这是什么  USS_VFR_LARGE_PIPE_Addl_sf? 在我的示例中、其值为1、我认为这是默认值、因此 USS_VFR_LARGE_PIPE_Addl_sf_enable 设置为 false。

    校准器件的步骤是什么?

    我们首先确定 34l/h 流量下的水常数、然后进行校准流参数。 当我们找到正确的 水常数时、未校准的 VFR 接近参考点34l/h 、但当我们传递新的  校准流量参数时、未校准的 VFR 会发生很大变化、并且比参考 点要远得多。 为什么会发生这种情况? 如果我的理解正确、 校准流量参数不应影响未校准的 VFR。

    由于 USS_scaleVolumeFlowRate 未启用、因此仪表常数也不应影响未校准的 VFR、但会影响。

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

    尊敬的 Panagiotis:

    USS_VFR_LARGE_PIPE_ADDL_SF 旨在用于以下情况:体积比例因子的第一个值不够大、无法考虑整个值。 因此、如果管道非常大、则可以使用并启用此定义来进一步增大体积流速。

    有关如何校准器件的步骤、请访问 我们的  水计量学院和《USS 水流速校准指南》

    至于您的最后一点、您是正确的、因为校准流参数不应更改未校准的 VFR。 但是从代码来看、当您禁用校准(在您提到的函数中)时、volumeFlowRateNoCalib 的值与 volumeFlowRate 相同。 但如果您仅更改仪表常数、我认为这 应该会 更改 volumeFlowRateNoCalib。 我认为仪表部分被视为配置的一部分、而不是您收集的校准数据、因此它将计入体积流速、 而与您收集的 VFR 校准数据无关。 我建议您访问我在上面链接过的水计量学院、因为这些步骤可以很好地帮助您正确校准和测试器件。

    编辑-请注意:下次有新问题时创建新问题、而不是继续另一个主题的旧问题

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    校准流参数不应更改未校准的 VFR。 但是从代码来看、当您禁用校准(在您提到的函数中)时、volumeFlowRateNoCalib 的值与 volumeFlowRate 相同。 [/报价]

    但从未调用 USS_scaleVolumeFlowRate、因为 USS_VFR_LARGE_PIPE_ADDL_sf_ENABLE 设置为 false、因此    在 应用校准流参数之前、volumeFlowRateNoCalib 获取 USS_calibrateVFRFlow 中 volumeFlowRate 的值。 那么、如果我不更改仪表常数、当唯一改变的是校准流量参数时、34lph 时未校准的 VFR 如何从0.6%误差变为22.2%?

    我还没有完成 传感器长度校准。 这可能是导致波动的原因吗?

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

    Panagiotis,

    我现在看到了。 我误解了您关于设置仪表常数的说法。  

    我确信您注意到、该算法的许多功能都是隐藏的/专有的。 因此、很难确定我们在使用此器件时遇到的一些问题的根本原因。 这看起来像 volumeFlowRateNoCalib 通常由我们算法的隐藏部分确定的方式、并且我之前读取的部分只是我们在  USS_VFR_LARGE_PIPE_ADDL_sf_ENABLE 为真时有时会应用的缩放。 我已经联系了我们团队的另一位成员、看看我是否能解释为什么在调整您的校准值时此值会发生变化。 我会在本周结束前向您介绍最新情况。

    我不确定您说换能器长度校准时的意思、能否让我指出您要讨论的文章部分? 我在上面链接的 USS 学院中提到了所有必要的校准。  

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

    Panagiotis,

    似乎最初的假设, volumeFlowRateNoCalib 不应该改变,如果你没有改变仪表常数,是正确的。

    您能否为我提供一些屏幕截图或视频、以显示测量中的错误?  

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

    您好!  

    温度变化可能会导致这些波动。 我目前正在测试这是否是原因。 根据您的经验、有多大的温度差异可以保证误差增加2%?

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

    温差肯定会导致误差大幅增加。  《USS 水流速校准应用报告》中的图2-3和2-4 对此提供了帮助。  

    图2-3显示了在两个不同温度下表与实际流速相比的测量误差。 如您所见、30lph 附近的误差百分比变化可能非常大、当然接近2%。  

    图2-4显示了超声波信号在不同温度下通过水的传播速度的变化。 传播速度似乎可以改变近10%。 这也会对测量产生非常重大的影响。

    我个人没有进行过温度测试。 不过、我知道当您在温度确实发生变化的环境中运行时、温度校准非常重要。 显然、温度变化越大、误差越大。  

    请告诉我您可以从温度测试中找到什么。

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

    您好,Dylan,

    我不确定你说换能器长度校准时的意思,你能不能指出你所谈论的文章的章节?

    我在 b.: https://software-dl.ti.com/msp430/msp430_public_sw/mcu/msp430/USSSWLib/USSSWLibWater/latest/exports/USSLib_02_40_00_00/docs/UserGuide/UserGuide/ch_calibration.html#general-calibration 中讨论这一点。

    因为我们现在没有热水器,所以我们正等待着太阳来加热水。 在我们进行的几次测量中、我们发现从16度到17度的1度简单变化可以使误差增加1%、而3度变化(从17到14)可以使误差增加5%

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

    感谢您指出这一点。

    我认为跳过此校准可能会影响您的测量。 但是、我认为只有当水流的温度发生变化时、才会出现这种情况。 如果水温是恒定的、那么我认为您的测量值也不应改变。

    根据我在上述图中所示的信息、1度的变化似乎会导致1%的误差增加、3可能导致5%的变化。 如果您执行温度和换能器长度校准、但仍然看到这些错误、请创建新螺纹、我将继续与您搜索解决方案。

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

    如果我理解正确、如果我有一个用于测量水温度的外部温度传感器、那么 我就不需要进行传感器长度校准 、因为我可以在这里 USS_setTemperature 设置温度、而不是在这里进行 USS_computeTemperature 计算 。 我是对吗?

    另外、温度估算算法的精度有多高?

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

    尊敬的 Panagiotis:

    我相信这是正确的。  USS 水计量学院的"在不同温度和流速下进行校准"部分详细介绍了使用外部温度感应来校准器件。 如果您选择这条路线、那么是的、我认为您的答案是正确的、因为您不需要进行单独的换能器长度校准。

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

    您好!  

    我正在尝试通过 传感器长度校准获取温度读数、但值不正确。  在 17、2 C 时、I 得到~-42 C

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

    我无法看到您添加到您的帖子的图像。 但是、我感到困惑、因为看起来换能器长度校准应该只提供计算出的仪表常数和换能器长度。 您可以详细说明一下吗?

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

    为了进行传感器长度校准、我必须启用"使用 ToF 计算温度"、这会 在代码中将 USS_ALG_ENABLE_ASSES估算_TEMPERATURE 设置为 true。 此定义用于使用 USS_computeTemperature 函数计算温度、因此根据我的理解、 传感器长度校准会直接影响温度的计算方式。

    当我 以16摄氏度进行换能器长度校准时、我得到照片中的长度不正确、因为真实长度为~8、2cm、而温度计算得出的结果为~-42 摄氏度

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

    您是否可以尝试以其他方式上传您的图像? 我无法再看到它。

    我还看了您对换能器长度校准的看法、这直接影响了温度的计算方式。 代码中也对此进行了说明、但温度是使用 UPS ToF 和 DNS ToF 以及传感器之间的长度计算得出的。 这三个部分用于计算超声波信号的速度、然后使用该值在查找表中搜索正确温度。

    因此、要计算温度、器件需要传感器长度、而要计算传感器长度、器件需要温度。

    您可以尝试在计算温度的代码中放入一个断点。 这样做时、您可以检查 UPS 和 DNS ToF、由器件计算出的速度以及温度。 一旦您检查了这些内容并发现了哪些地方错了、您就可以更好地了解问题的来源。 根据您提供的信息、我不确定问题是什么。

    我还认为应注意的是、我们一开始是因为您在测量中看到了误差。 误差可能是由其他原因引起的、现在该误差也会影响这种情况。

    归根结底、未经校准的 VFR 的误差为0.6%至3.4%、误差相对较小。 此外、在未校准的 VFR 中看到这一误差量也并不少见。 如果您按照 USS Academy 中所述执行校准、我希望校准后的 VFR 更准确、且未校准的 VFR 仍可能存在相对较大的误差。

    我还想知道您是否仍然可以为我提供显示错误的图像。 我早就问过它们、但我们走错了。

    谢谢