在过去大量从事微控制器项目时,我了解到计算机 USB 端口可能是脆弱的东西。简单地在端口上短接几十伏电压只会杀死它们——还有很多其他创造性的方法可以破坏主板上的 USB 功能!
我在市场上看到过 USB 隔离设备,它们正好解决了这类问题(开发人员对他们的设备做得不好),但是,我从来没有真正花时间购买。它总是看起来太贵了……直到下一个 USB 端口死了。最终,您会考虑必须购买新主板,并最终意识到从长远来看这些设备可能物有所值。
话虽如此,在过去的两年里,我一直有建立自己的 USB 隔离器的想法。您可以轻松购买处理 USB 2.0 全速的数字隔离器 IC,也可以购买输出与运行电压相同的隔离电源。因此,在本文中,我将实现我拥有 USB 端口隔离设备的梦想——这当然早该实现了。
这应该是一篇相当简单的文章,讨论了一个相当简单的构建,但如果你和我一样,并且在处理项目时倾向于以新的和创造性的方式打破事物,我觉得你可能会发现这很有用。和我所有的其他项目一样,这个项目当然会在GitHub上可用并且是开源的,所以你可以随心所欲地使用它;制造一个,出售一个,或使用该设计为您自己的项目添加 USB 隔离。
对于这个项目,我又回到使用我的开源 Altium Library,所以在这个项目的 GitHub 存储库中没有包含的库文件,就像我以前的项目一样。您可以在库存储库中找到 SchLib 和 PcbLib 文件,或者如果您想在自己的项目中实现此设计,则可以获得一个免费帐户来访问该库。
我只关注 USB 2.0,因为我所有的 ARM 程序员和开发工具包都在 USB 2.0 上运行。目前,我拥有的任何东西都不能在 USB 3.0 上运行,而且 ARM JTAG/单线调试设备不需要比现有带宽更多的带宽。这在未来可能会改变,但就目前而言,USB 2.0 隔离器将提供我需要的所有隔离,希望能够避免我的 USB 端口受到进一步的伤害。
隔离电源隔离 USB 端口将是一个两个 IC/设备的过程,因为我们需要隔离电源线和数据线。开发板上烧坏的东西可能会使高电压或瞬变返回计算机并导致问题。如果我们正在研究“尚未完全实现”的 RF 板或其他具有大量潜在电气噪声的电路板,噪声也会降低电源连接并对计算机的其他外围设备造成严重破坏。
由于这些问题,我正在寻找可以提供完全电气隔离的东西,以使计算机免受我倾向于扔给它的坏东西(工程术语)的影响。在过去的项目中,我使用 Murata NXE 和 NXJ 系列电压隔离模块取得了巨大成功。它们是很好的小组件,包括完全隔离电源所需的一切。NXE2 系列特别令人感兴趣,因为额定功率为 2 瓦,它几乎能够提供 USB 2.0 规范的全部 500mA。我之前没有用开发板最大化 USB 端口,好吧,至少不是正常使用,所以我觉得这应该足够了。它们的价格合适,并且它们的隔离规格非常好。
为了提供 5V 到 5V 的隔离,我将使用 Murata NXE2S0505MC。
手册建议使用 15uH 电感和 4.7uF 电容器组合作为该稳压器型号的输入滤波器,以确保电磁兼容性,这非常重要。输出滤波器也是电压隔离器手册中推荐的,减少了我在基于 RF 的项目中重视的输出电压纹波。
为了知道什么时候出现了可怕的错误,我还在原理图中添加了两个 LED。输入端的绿色会告诉我们有来自计算机的电源,并且我们没有导致 USB 端口因过流限制而关闭。蓝色的会告诉我们我们还没有(还)杀死电压隔离器。
我将这些 LED 的电流限制为 5mA,因为开发人员工具几乎总是有令人眼花缭乱的 LED,我不希望我的电路板成为我视觉问题的一部分。这确实有一个缺点:我不能声称开发工具的 LED 太亮了,以至于我看不到我的示波器探头已经从我正在检查的焊盘上漂移并短路了 USB 线!
隔离 USB 数据将电源线隔离后,我们需要一个可以隔离 USB 数据线并仍然允许全数据速率通过它们的 IC。ADI 公司生产了一些非常好的隔离器件,其中ADUM4160BRIZ是一款专为 12Mbps 双向 USB 数据设计的器件。借助磁耦合和 5000Vrms 的隔离,即使是最有创造力的工程师也很难通过该设备破坏其 USB 端口。
我们通过 5V USB 电源为设备的两侧供电,因此 VDD 引脚需要有一个旁路/去耦电容器以稳定运行。我还拉起速度设置引脚,以便以全 USB 速度运行。
由于我希望以全 USB 速度运行,因此我们也需要在设备两侧的两条数据线上都有 24 欧姆的终端电阻。这就是隔离 USB 数据连接的全部内容 — 如此简单!
一点额外的保护将数据线和电源隔离开后,您可能会觉得是时候布置电路板了——但我们还没有完成。还有一点保护要添加到电路板上,那就是来自 Nexperia 的 USB 专用 TVS 二极管。这应该有助于防止静电放电引起问题。
我还使用 1uF 陶瓷电容器为电压线增加了一点额外的电容。隔离器的输入和输出都具有相同的 TVS 二极管。
连接器对于连接器,我为计算机端添加了一个 USB Micro-B 连接器,因为尽管 USB-C 的兴起,它可能是该设备用户可能在办公桌上使用的最常见的电缆。
对于输出端,我觉得 USB 2.0 A 连接效果最好。这将允许我使用最常用的电缆来充分利用这个隔离器。
PCB由于构建此板所需的组件很少,因此为大多数构建布局非常快速且轻松。我可以把这个板子做得更小,但是我需要移动 TVS 二极管,这可能会降低它们的效率。在非常干燥的气候中生活了几年后,我开始非常欣赏 TVS 二极管保护电子设备免受伤害的作用,所以我更希望电路板加长10 毫米 ,并最大限度地发挥TVS 二极管的功能最好的。
USB 线应具有 90Ω 差分阻抗的差分对。我们可以在层堆栈管理器中设置阻抗配置文件,但首先,我们需要设置层堆栈。我将在 0.8mm FR-4 中制作这些板,因此我将层堆叠设置为这样。
然后,我们可以使用底部的阻抗选项卡为 90Ω创建一个新的 USB 差分对。
对于像这样只有一个差分对阻抗的电路板,我发现将滤波器用于差分对类而不是特定的差分对更容易。这允许我用一个规则匹配所有差分对。应用我们在层管理器中设置的阻抗配置文件就像单击“使用阻抗配置文件”复选框一样简单。
为了保持隔离,我们还应该指定Altium Designer 20引入的新爬电距离规则。该规则将确保整个电路板上不同地平面之间的距离永远不会小于 2.5 毫米。我特别使用 2.5 毫米,因为这是板上两个隔离设备提供的最小爬电距离。
接下来,我们可以将间隙规则设置为相同的 2.5mm。新规则的优先级需要增加才能生效。在下面的屏幕截图中,您可以看到它位于列表的底部,这意味着它已被其他规则取代。
当我布置电路板时,出于美观原因,我决定将连接器移到电路板的中心线上。该新蛇路由风格的作品与像USB轨道差分对真的很棒。不幸的是,我的 USB 走线不是很完美,因为我不得不将微控制器一侧放到底层才能将其连接到隔离器引脚。这不应该影响隔离器的操作或 USB 性能,因为这是一个相当短的偏差。
USB 数据线采用蛇形布线
在这一点上,电路板看起来很完整,但是,它可以通过几个安装孔来完成。这将允许使用支架或未来的外壳来进一步防止 ESD。
在 3D 视图中,我可以看到电感器可能离安装孔太近了!
轻轻一推,一切看起来都有良好的间隙并且易于组装。
尽管这个项目很简单,但我觉得它会成为一个让我真正头疼的板子。如果您想构建自己的开发板,您可以在GitHub上找到该开发板的Altium Designer文件。我将订购一些板子,为那些倾向于使用正在开发的电子产品作为攻击计算机的武器的朋友制作一些额外的圣诞礼物。