许多人在开始学习实用的手动电子设备时学到的第一课是对上拉电阻的需求。是否防止微控制器上的浮动I / O引脚或通过漏极开路设计连接两个电路; 上拉电阻是一种经常必要但很少被人理解的元件。那么为什么我们使用上拉电阻,我们不能只将电线连接到我们设备的V cc电源?你应该使用什么尺寸的电阻?
那么为什么我们甚至需要先打扰上拉电阻呢?假设我们有一个瞬时常开按钮,我们不希望I / O引脚浮动。为什么不将电线连接到I / O引脚和按钮引线之间的V cc ?这样可以防止微控制器的I / O引脚悬空- 当按下按钮时,它需要V cc或固态HIGH。但是,只要按下按钮,V cc 和地之间就会发生短路(图1)。这会产生大量的热量,如果设备是电池供电的,它会快速耗尽电池。除了阻止与浮动微控制器I / O引脚相关的问题外,在使用开漏拓扑时,需要使用上拉电阻。我们在这篇Bench Talk帖子中详细讨论了开放式排水管。
图1:刚刚运行导线可以实现短路(左)。上拉电阻可防止浮动输入,同时防止不必要的短路(右)。(来源:作者)
那么我们如何选择合适尺寸的电阻呢?与大多数优秀的工程问题一样,答案取决于您的应用。让我们首先考虑极端选项0Ω,让我们说1mΩ。我们已经讨论过0Ω选项(小值电阻被称为强上拉,因为它们允许大量电流流动)。电阻值太小而且我们得到太多的电流,这可能是不安全的,或者至少是能量效率低的。如果我们使用一个巨大的1mΩ电阻怎么办?那不安全吗?较大的电阻值称为弱上拉,因为它们可防止过多的电流流过。答案是肯定的,但需要付出代价。在这种情况下,它是速度和功率之间的权衡。
将微控制器的I / O引脚视为电容。回想一下,电容器两端的电压不能瞬间改变。相反,它基于所谓的定时常数(T)充电,并在数学上表示为T = RC,其中R是电阻器的值,C是电容器的值。当我们添加一个非常大的电阻器时,我们通过限制电流来增加电容器充电所需的时间。实际上,这意味着微控制器不会立即检测到按下的按钮,因为微控制器需要一些时间才能看到电压从它认为是低/关状态变为高/开状态。从用户的角度来看,这可能导致不可接受的电路性能。该系统似乎没有及时作出回应。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.8473x 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Ω。
最后要考虑的是许多微控制器都有内部上拉电阻,可以通过代码打开。请务必查看数据表,以确定内部电阻值是否适合您的应用。如果没有,则必须使用外部上拉电阻。
|