检测交流中的零交叉?

电器工程 力量 交流 过零
2022-01-13 21:46:50

我需要检测软启动器的过零。很久以前,我使用一个 1 兆欧电阻直接连接到一侧的微控制器和另一侧的带电电源。我成功了,但这是否可取?还有什么其他方法可以便宜可靠地做到这一点?

4个回答

我使用 PIC16C74A/F77 处理器设计了软启动器。如果您还必须在嘈杂的环境中工作,过零可能会很棘手。

如果您不需要将处理器与线路隔离,则为 CPU 引脚供电的几个高阻值电阻没有任何问题。出于鲁棒性的考虑,我会使用几个shottky二极管来增强内部保护二极管,但它会正常工作。如果需要隔离,请使用晶体管输出光隔离器。注意光电的开关速度,尽量减少晶体管集电极电流,以最大限度地提高开关速度。

话虽如此,让我们继续讨论噪音。如果您要对电阻加热以外的任何东西进行相位控制,您将需要处理噪声,这意味着您很可能需要处理过零噪声。不要犯将过零输入馈送到中断引脚的新手错误;当处理器试图处理大量中断时,这将使您的软件变成一堆令人讨厌的东西。(我根据经验说话。)在线路上投入 RC 或更高级的低通滤波器只会引入相移。如果您可以使用它,那就太好了。如果不是(我必须处理 50/60 和 400Hz 系统),那么您必须尝试其他方法。

在我自己的设计中,我在软件中通过轮询线路并基本上制作了一个忽略瞬态的投票例程来处理它。相移在我可以处理的范围内,速度很快,即使在嘈杂的噪音中也不会出错。(在他们从感应炉中移除过滤器盖的设施中进行了测试,我以前从未见过如此嘈杂的线路!)如果我要重新设计它,我想我可能会尝试一个涉及一次性的外部解决方案“锁存”过零,然后微控制器会在设置下一个中断之前对其进行确认。

总而言之,我认为在任何实际情况下可靠地找到真正的零交叉点是软启动器设计中比较棘手的部分之一。关闭控制回路是次要的,但主要只是调整。这似乎是一件非常简单的事情,但在那段时间里我学到了很多关于理论和实践之间的区别的知识。:-)

编辑以描述“投票”例程:

如果我没记错的话,我有一条 I/O 线,当该线高于零时为高电平,当该线低于零时为低电平。投票例程只是轮询那条线,如果最后 3 个样本中有 2 个是相同的,我接受了这条线已经越过零的事实。它与检测标记和空格的 UART 投票电路非常相似。像这样的电路的好处是您的相移是固定的(2*采样率),您可以根据您遇到的噪声类型对其进行调整。我不记得轮询有多快,但如果我冒险猜测,我会说 8kHz,因为这个数字在我脑海中突出。

为什么不使用光耦合器?Vishay 的SFH6206有两个反并联的 LED,因此它可以在电源电压的整个周期内工作。如果输入电压足够高,则输出晶体管导通,集电极处于低电平。然而,在过零附近,输入电压太低而无法激活输出晶体管,其集电极将被拉高。因此,您在每次过零时都会收到一个正脉冲。

Microchip 第 3 页的应用笔记建议使用 20 MOhms 电阻器。

我认为您可以使用具有过零检测器的MOC3061 。

但是您可以在这里看到很多设备型号

我在以下处理链上取得了成功:

  1. 电阻分压器网络(使用 MOhm 值电阻器)和光耦合器将信号与源耦合和隔离
  2. 一个运算放大器比较器,用于将来自光耦合器的信号轨到已知电压范围
  3. 使用运算放大器的非常紧凑的多级带通滤波器(可能还需要一些增益来解决滤波器损耗)
  4. 运算放大器移相器电路,用于调整滤波中引入的任何相位偏移(+/-360 度是一个很好的设计容差,所需的相移可以用电位计和示波器校准)
  5. 另一个比较器,用于将信号转换为微控制器的干净数字输出