你好,
我设置了一个超声波传感器,但它返回非常可变的响应。唯一正确的是:
在100测量的样本中,顶部10对应于正确的预期测量。
我想创建一个过滤器,它选择最高的10个超过100.然后它只会将最高10的值传递给主助手。19463331伟德国际

使用中位数,将选择错误的号码。

JSN-SR04T / AJ-SR04M防水超声波传感器模块
Nodemcu.
引脚rx和tx

ESPHOME:Nodemcu1平台:ESP8266板:Nodemcuv2 ##传感器: - 平台:Ultrasonic Trigger_pin:GPIO3 Echo_pin:GPIO1 Unit_Of_Measurement:M update_Interval:1S名称:“Distancia”Pulse_time:20米过时:20米过滤器: -  Lambda:|  -  Float Min_Value = 0.25;float max_value = 6.0;if(min_value <= x && x <= max_value)返回x;否则返回{};-  Filter_out:00.0  - 偏移:0.04  -  Filter_out:0.04

我仍然有很多超时或错误的读数。唯一正确的是最高值。

如果有人帮助我,我很欣赏。

日志:

解决了所有测量误差改变电源。

请删除帖子。

关于删除,请参见第19点:如何帮助我们帮助您 - 或者如何提出一个好问题

你好汤姆,

我的问题仍然没有回答。所以,在这个特殊的情况下,我的帖子Woudn'thelp的任何人,这就是我昨天告诉我们可以删除这篇文章的原因。

今天早上,我和一个朋友谈过的是电气工程师,他教我的是所有中性(地面)电线应该连接,以便正常工作,以防您的设备有2个不同的电源。

所以,完成如何解决我的问题:

  • 传感器上没有缺陷,
  • 接线是错误的,因为我有2个不同的电源(1对于Nodemcu,另一个用于传感器)。
  • 如果您有2个不同的电源,您应该连接接地引脚。

其他想法:
我的传感器是5V,但与Nodemcu 3V引脚完美无瑕。

不需要在结果上实现复杂的计算以过滤值。

最终的proggraming是:(为未来需要的任何人添加了##

## Sensores ###传感器: - 平台:Ultrasonic Trigger_pin:GPIO3 Echo_pin:GPIO1 Unit_Of_Measurement:CM update_Interval:1S名称:“Distancia”Pulse_time:20US超时:20M#选择米滤波器的型号距离范围: -  Lambda:|  -float min_value = 0.20;#put您的距离范围Float Max_Value = 6.0;#put您的距离范围(min_value <= && x <= max_value)返回x * 100;否则返回{};- 偏移量:3#调整结果 - 中位数:#此过滤器可能的异常值Window_size:5 send_every:3 send_first_at:3

你解决了你的问题。其他人可能有同样的问题,并希望了解你的解决方案。

是的,同意。事实上,这就是为什么我稍后做得更好的解释。
昨天我累了。

我发现在搜索中的其他干扰(2个电源)没有关于此干扰(2个电源)的答案。也许现在这可能是有用的。:咧嘴:

1就像