在大多数情况下,您确实应该考虑在传感器和计算平台之间设置某种形式的输入保护。
在我的“传感器接口初学者指南(第 1 部分) ”专栏中,我概述了您可能需要连接传感器的三种主要系统类型:
直接连接到 MCU(微控制器):直接连接到引脚(外部)和寄存器(内部)
单板计算机 (SBC):具有操作系统的更强大的处理器
Arduino 和类 Arduino 系统:具有一组标准化库函数的 MCU,使使用更容易
我们还讨论了将传感器连接到这些系统的三种方法,如下所示:
直接数字
直接模拟
基于协议
系统的另一部分通常很少被谈论,但同样重要:传感器和计算系统之间的连接。
在我们最基本的硬件乐趣尝试中,我们经常直接从传感器连接到微控制器 I/O 引脚。在理想的无噪音和无静电世界中,这将是一种合理的方法。
在此图中,我们拥有所有三种基本类型的传感器:基于协议的加速度计、直接数字按钮开关和模拟电位计。所有这些都直接连接到 Arduino。(来源:杜安·本森)
但是我们不是生活在一个理想的世界中,也不是一个没有噪音的(任何类型的)世界。传感器和系统在不同的电压下运行,我们周围的空气充满了离子和电噪声,长电线充当天线。
传感器会带来重要的环境数据,但它们也会带来很多不需要的行李。系统中的一个小尖峰和一个未受保护的微控制器——有时是一个非常昂贵的微控制器——可能会被损坏或毁坏。或者,电噪声会使传感器失明或导致其提供看似合理但完全错误的数据。
基本上,我要说的是,除了最普通的情况外,您确实应该考虑在传感器和计算平台之间提供某种形式的输入保护。
如下表所示,常见的保护方式有衰减、削波、光隔离、滤波:
常见保护方法的优缺点(来源:Duane Benson)
关于上表中的“Clipping”项,另请参见“如何阅读数据表:齐纳二极管”和“如何阅读数据表:TVS 二极管”。
当有源传感器在与微控制器不同的电压下工作时,也可能需要保护电路。
Digilent 的 Chipkit uc32(如图所示)使用 3.3-V 32 位 Microchip MCU,但与 Arduino 兼容的板位于 5-V 宇宙中。它在其模拟输入上组合实现了两种不同类型的保护:用于防止过压的削波二极管和用于限流的串联电阻。(来源:杜安·本森)
另一个电压转换需求出现在具有与主机 MCU 不同的工作电压的基于协议的传感器上,例如连接到 3-V 或 1.8-V 微控制器的基于协议的 5-V I2C 传感器(另请参见“不要让I2C 上拉电阻在总线上咬你! ”)。来自 1.8V MCU 的“高”信号可能不足以被传感器视为逻辑“1”。3-V“高”可能会通过,但您可能无法依赖它,因为并非所有逻辑“1”信号都与系统电压匹配,因此您最终可能会得到一个 2.2-V 信号,该信号被视为“由传感器的 5-V I2C 决定。
此外,来自传感器的逻辑“1”可能为 5 V 或足够接近 5 V,这可能会烧毁 3 V(当然是 1.8 V)MCU 上的 I/O 端口。与此相反的是 5V MCU 和低压传感器的风险。我已经用 5V 微控制器烧坏了更多的 3V 加速度计,这比我愿意承认的要多。
输出电压高于 MCU 的模拟传感器也会导致同样的问题。最重要的是,不匹配的传感器和 MCU 电压会像嘈杂的环境一样造成损坏。
使用基于协议的传感器,您将需要所谓的线路电平转换器来改变两个电压之间的信号电平。这些设备可以使用一些分立的晶体管来限制,但它们也可以作为特殊的集成电路使用。它们将有一个共同的接地点,并将系统分开,一侧有一个系统电压,另一侧有一个更高或更低的电压。
此原理图显示了用于 I2C 总线的 3.3V 至 5V 双向线路电平转换器。未显示连接两侧的公共地线。(来源:杜安·本森)
线路电平转换器有双向和单向版本。有些人对单向信号使用串联电阻(更像是限流系统)。如果您对系统电流有足够的了解以确保伴随的电压降足够,这可以工作。
对于工作电压高于 MCU 的模拟传感器,您或许可以使用电阻分压器来确保不会改变斜坡特性并将电压保持在危险水平以下。您的电阻选择将取决于模拟输入的电流消耗规格。
下一次,我们将重新开始工作并开始将传感器连接到微控制器。同时,如果您有任何与传感器相关的具体问题或疑虑,请在评论中告诉我。