Arduino 按钮中断在大功率开关打开时触发

Arduino button interrupt triggered on high power switch on

我有一个使用 arduino uno 的接近完成的原型。基本上它的目的是使用重型继电器打开和关闭 2000w 主交流加热负载。继电器的输入来自主电源,但使用仅在夜间 23-07 小时之间打开的特殊仪表连接到电力公司。顺便说一下,arduino 的电源是连续的,所以它一直在。

整个东西很好地构建在一个盒子里,前面有一个小液晶显示屏和一个按钮,使用 20 厘米的电线连接到 arduino 板(我使用的是 protoshield)。

按钮通过一个 10k 的电阻上拉,按下时该电阻接地。我在输入引脚 = 引脚 2 上放了一个 0.47 uF 的电容,也可以使电路稍微去抖动。在软件中,我在下降沿使用中断来检测按钮按下。整个事情都很好......除了......:

当电力公司打开负载交流输入时,这有时会被识别为按下按钮!我在想,突然的电源尖峰在 20 厘米的按钮导线中感应出电压,这被认为是下降沿。我怎样才能避免这种情况?

我有万用表、示波器、焊锡...所以我可以详细尝试任何建议。

我在构建燃油喷射流工作台时遇到了类似的问题。按下按钮会启动模拟引擎 运行 序列,为继电器供电。然后该继电器为多达 6 个喷油器供电。发生的事情是,一旦我按下按钮,喷油器​​关闭就会感应出电流并使整个系统跳闸以重新开始。我发现可行的解决方案是使用电池为喷油器提供电压,而不是使用电源本身。这通过我的继电器将 arduino 电源与喷射器电源隔离开来。问题当然是现在我需要给电池充电。我正在寻找更优雅的解决方案。

我试图在硬件上解决这个问题,但不幸的是失败了。 这些是我尝试过的选项,但没有用

  1. 为按钮使用了屏蔽电缆
  2. 在负载(输入)的 AC 上实施了 XY 降噪电容器网络 像这样:http://www.conrad.be/ce/nl/product/450571/K042201052-Ontstoringscondensator-XY-Radiaal-bedraad-01-F-250-VAC-1-stuks?ref=searchDetail

最终我实现了以下软件解决方案:

第一次按下按钮时,必须在按钮实际激活前按下 1 秒。由于 AC 打开,这永远不会发生,因为这是一个非常短暂的尖峰。我使用中断将其编程到 arduino 中以检测按钮按下,然后微延迟(在 ISR 内部)以检查 1 秒后按钮是否仍被按下。

最初按下按钮 1 秒后,按钮保持活跃 1 分钟