1 逻辑电平
数字电路中,并没有严格数学意义上的 1 和 0,只有不同的电压值。
通常定义不同的 电压值范围,来表示“逻辑 1” 和 “逻辑 0”, 如下所示:
2 上拉电阻
2.1 定义
实际电路中,尤其是在单片机和一些数字逻辑器件中,常用 上拉电阻来 连接开关或按钮,表示输入的逻辑状态(1 或 0)。
如下图, 按钮打开 -> 输入为 “高电平“ (“1”); 按钮关闭 -> 输入为 “低电平“(“0”)
当按钮按下时,假如没有上拉电阻,则 GND 会直接和 VCC 连接,造成短路,这也从反面证明了上拉电阻存在的必要性。
2.2 条件
上拉电阻的值,需要满足以下两个条件:
1) 按钮关闭时,R1 控制 VCC -> GND 的电流值,因此 R1的数值不能太小 (太小则电流过大,无意义的功耗增多)
2) 按钮打开时,R1 控制输入管脚处的电压为“高电平”,因此 R1 的数值也不能过大 (太大则加在R2上的电压过小,导致无法判断输入是“1”还是“0”)
考虑上面两个条件取 R1/R2 ≈ 1/10,而单片机输入管脚处的输入电阻通常为100KΩ ~ 1MΩ,因此,上拉电阻的值一般为10KΩ
3 阻值计算
例: 假定 VCC = 5 V, 要求按下按钮时限定电流为 1mA 左右,求 R1 的数值。
根据欧姆定律得:
R1 = Vcc / IR = 5V / 1mA = 5 KΩ
另外需要注意的是,上拉电阻值越大,则当输入电压高低切换时,管脚的响应速度也越慢。
参考资料
<Foundations of Analog and Digital Electronic Circuits > chapter 5
https://learn.sparkfun.com/tutorials/pull-up-resistors/introduction
原文链接: http://www.cnblogs.com/xinxue/
专注于机器视觉、OpenCV、C++ 编程