这个问题已经存在了数十年,但是我在此站点上没有找到直接的答案。我想要以下内容:
该电路仅允许从微控制器内部检查按钮的状态。没有什么花哨。我的问题:
- 有什么比这个简单的设计更好的了吗?
- 100千欧姆电阻器的电阻是否足以满足当今dsPIC30FXXXX等CMOS器件的要求,而不是大功率应用?
这个问题已经存在了数十年,但是我在此站点上没有找到直接的答案。我想要以下内容:
该电路仅允许从微控制器内部检查按钮的状态。没有什么花哨。我的问题:
Answers:
首先,许多微控制器和数字信号控制器将具有内部上拉电阻。这是一个示例,Atmel ATMega164。
通常会有一个寄存器,用于打开和关闭内部上拉电阻。由于制造工艺的变化,这些内部上拉电阻的范围很广,如果您需要在超低功耗应用中非常紧密地控制电流消耗,则不是一个不错的选择。如果将组件数量保持在低水平很重要,这是一种简单的方法。使用内部上拉电阻进行硬件去抖动并不是一个好主意,因为无法预测其确切值。
100值是否足够取决于。如果只是用户会定期翻转的开关,那么100将是最小化功耗的好选择。对于将要快速切换的事物(例如旋转编码器),我要经历的过程是
因此,如果每个GPIO引脚的最大灌电流为10 mA并在5V下运行:。将此R值保持尽可能小将允许最锐利的边缘和最高的开关频率。
您可以得到比这更简单的结果。
只需在微控制器中使用内部上拉/下拉电阻即可。
100k就足够了,但是在某些MCU中内部上拉可能会低一些,例如,在AVR atmega8中,它的复位上拉为30-80kOhm,所有其他I / O引脚为20-50kOhm。
没有您未提供的特定衡量标准,就无法回答更好。在大多数情况下,您显示的拓扑很好。根据情况,可能会有两个变种“更好”:
许多微控制器在某些引脚上具有内部上拉电阻。这些正是针对这种情况。然后,该电阻位于微控制器内部,您可以在某个位置进行设置以使其启用。唯一需要的外部部件就是按钮本身。
要记住的另一个有用的变体是低功耗设计,其中按钮可能是可以长时间闭合的开关。在这种情况下,您希望通过上拉电阻的长期平均电流最小。您将其设置得尽可能大,但是这样做有其局限性,也有使其过大的缺点。取而代之的是,您一次仅将上拉开关打开几微秒即可读取按钮。如果您每隔1 ms检查一次按钮,并且上拉持续10 µs,则平均上拉电流将降低100倍。通过外部电阻,您可以使用另一个引脚来驱动上拉电阻的顶部。通过内部上拉,您可以根据需要在固件中启用/禁用它。
比那个简单的设计更好?是。盖上盖子,您将获得一个简单的硬件去抖动开关。
电容器将是常见的0.1uf陶瓷电容器。电阻为10k。该网站提供了有关原因的完整详细信息。简而言之,防抖电路可以防止微控制器在按下按钮时错误地记录多次按下。电阻/电容设置可平滑按钮的机械弹跳,使其平稳过渡。