电子说
许多人在开始学习实用的动手电子产品时学到的第一课就是需要上拉电阻。是防止微控制器上的浮动 I/O 引脚还是通过漏极开路设计连接两个电路;上拉电阻器是一个经常需要但很少被重视的组件。那么为什么我们要使用上拉电阻,我们不能只将一根电线连接到我们设备的 V cc电源吗?您应该使用多大尺寸的电阻器?
那么,为什么我们一开始还需要麻烦上拉电阻呢?假设我们有一个瞬时常开按钮,我们不希望 I/O 引脚悬空。为什么不直接将电线连接到I/O 引脚和按钮引线之间的 V cc ?这将有助于防止微控制器的 I/O 引脚在未按下按钮时浮动——它需要一个 V cc或一个稳定的高电平。然而,一旦按下按钮,V cc 和地之间就会发生短路(图 1). 这会产生大量热量,如果设备是电池供电的,它会很快耗尽电池电量。除了阻碍与浮动微控制器 I/O 引脚相关的问题外,在使用漏极开路拓扑时,上拉电阻器也是必不可少的。我们在此Bench Talk 帖子中详细讨论了开放式排水管。
图 1:仅连接一根电线会导致短路(左)。上拉电阻器可防止浮动输入,同时防止不必要的短路(右)。(来源:作者)
那么我们如何选择合适尺寸的电阻器呢?与大多数好的工程问题一样,答案取决于您的应用。让我们从考虑极端选项 0Ω 开始,比如说 1mΩ。我们已经讨论过 0Ω 选项(小值电阻器被称为强上拉,因为它们允许大量电流流动)。电阻值太小,我们会得到太多的电流,这可能不安全,或者至少是能源效率低下。如果我们使用一个巨大的 1mΩ 电阻器会怎样?那不安全吗?大电阻值被称为弱上拉,因为它们可以防止过多的电流流动。答案是肯定的,但这是有代价的。在这种情况下,这是速度和功率之间的权衡。
将微控制器的 I/O 引脚想象成一个电容器。回想一下,电容器两端的电压不能瞬间改变。相反,它根据所谓的时间常数 (T) 充电,数学上表示为 T=RC,其中 R 是电阻器的值,C 是电容器的值。当我们添加一个非常大的电阻器时,我们会通过限制电流来增加电容器充电所需的时间。实际上,这意味着微控制器不会立即检测到按下的按钮,因为微控制器需要一些时间才能看到电压从它认为的 LOW/OFF 状态变为 HIGH/ON 状态。从用户的角度来看,这可能会导致不可接受的电路性能。该系统似乎没有及时响应。2 C 串行通信协议,大的定时常数会对 I 2 C 总线在其串行数据线 (SDA) 和串行时钟线 (SCL) 线上实现所需的波特率产生负面影响。
从数学上讲,这就是计算电阻值的方式:
R p(min)是可接受的最小电阻值,由下式给出:
R p(min) = (V cc - V OL(max) ) / I OL 由此:
V cc是电源电压。
V OL(max)是被微控制器的 I 2 C 引脚记录为低电平的最大电压。
I OL是 V OL的电流消耗
的
R p(max)是可接受的最大电阻值,由下式给出:
R p(max) = t r / (0.8473 x C b ) 其中:
t r 是 SDA 和 SCL 线路对于所需波特率可接受的上升时间。检查设计中使用的设备的数据表。
C b 是将被驱动的预期容性负载。附带说明一下,可以共享 I 2 C 总线的设备数量受印刷电路板 (PCB) 和设备输入电容之和的限制。根据标准和快速工作模式的 I 2 C 规范,此限制为 400pF。之后需要一个I 2 C缓冲芯片。这通常发生在 7 位可寻址 I 2 C 实现的 112 个设备的理论寻址限制之前。
现在根据实际经验,以下是您应该考虑在电路中测试的电阻值,以查看是否获得所需的性能:
一般用途为 1kΩ 至 10kΩ。
10kΩ 至 100kΩ,如果您有低功耗用例,例如电池供电的设备。
最后要考虑的是,许多微控制器都有可以通过代码打开的内部上拉电阻。请务必查看数据表,了解内部电阻值的大小是否适合您的应用。如果没有,您将不得不使用外部上拉电阻。
审核编辑:汤梓红
全部0条评论
快来发表一下你的评论吧 !