你是否还在为单片机引脚资源少而感到苦恼!

你是否还在为节省引脚资源而感到绞尽脑汁!

没错!这篇博客将为大家提供一种在设计按键时节省引脚的思路!

朋友们大家好,咱们这个开场白套路熟不熟悉~

也是非常的营销

        言归正传,这篇文章的主题是通过串联电阻分压的特性来设计一组AD按键,咱们本质的目的就是节省引脚。下面简单介绍一下AD按键

在阅读下文时,朋友们要熟悉串联电阻分压原理和单片机的ADC采集功能

传送门给朋友们放下面了

硬件学习笔记——电阻(实战中的电阻艺术)

一、啥是AD按键呢?

顾名思义,就是通过AD采集电压值来判断按键是否被按下。

在下面这个电路图中,是一个典型的串联电阻分压电路,不过在接地之前接了一个按键。

为了方便讲解将电路图分为两个部分

        假设我们这个单片机的AD采集精度是10位 ,输入电压为 0-5V (不同的单片机采集的精度和输入电压不同,需要根据使用单片机情况自行调试修改)。

        当按键没有按下时:相当于2号部分开路,1号部分上拉电阻接到ADKEY引脚,由于采集精度为10位,此时单片机AD检测值为1023。如果输入电源不是精确的5V可能会略微少于1023。我们可以判断这个状态下是没有按键按下的。

        当按键按下后:1号和2号部分接通,此时形成典型的串联分压电路,此时ADKEY采集的电压为   R1/(R1+R2)* 5 = 2.5V,AD检测的值在512左右。由于AD采集是有一定的浮动,我们就可以判断 (512-40,512+40)这个区间都标志着按键1被按下了。

按照这个原理我们可以加入不同的电阻,计算不同的分压值,从而实现多按键的逻辑。

二、他和正常的按键检测优势在哪呢,又有啥劣势?

咱们平时使用按键通常就是一个IO连接一个按键或者采用矩阵按键这两种方式。

显然第一种方式特别占用引脚资源,本来就没几个IO还全整按键上了,你说这找谁说理去。

        第二种方式只有在外部按键需求特别多时,它节省引脚的优势才能体现出来。况且,采用行列扫描的方式就导致了随着外部按键的增加其检测的实时性会大幅度降低。

有些朋友就要问了难道就没有更好的方式吗? 有的朋友 有的

那就是采用AD按键的方式,我们只需要使用一个AD采集引脚,就可以连接多个按键

如下图所示

        看到这个图,有些朋友可能还是会迷惑,这么多按键我到底该如何判断那个按键按下了呢,又该如何判断那个按键前放置多大的电阻呢?

不急,咱们来一一回答

首先,我们知道不同的按键按下后,会采集不同的电压值,当按键1按下后,AD按键值为零,因为通过0Ω电阻直接接地了,按键2按下后 AD按键值为:337左右,咋算的呢?这里为了方便大家计算总结一个公式:

计算公式  :(2 ^ AD采集位数 - 1)  * ( 对应按键电阻/(1号区电阻 + 对应按键电阻 ) )

看着有点懵,对吧,不要怕,咱们算一个,以咱们的为例:AD采集精度是10位

   

按键1: (2^10 -1 ) * (0/(10000+0))  = 1023*0 = 0

按键2: (2^10 -1 ) * (5000/(10000+5000))  = 1023* 1/3  = 337

按键3: (2^10 -1 ) * (10000/(10000+10000))  = 1023* 1/2  = 512

按键4: (2^10 -1 ) * (20000/(10000+20000))  = 1023* 2/3  = 682

同样的因为ad采集时是有浮动的所以要采集一个区间,至于具体是多少,需要自己调试。一般情况左右40就非常稳定了

其实明白了串联电阻分压原理上面的公式很简单,就是 采集区间*分压比。

选择电阻时最少要让两个按键的AD采集值相差100。目的是提高AD按键的稳定性。

根据这条原则我们反推电阻值不就可以了,把上面公式反过来,这里就自己计算吧,我有点懒。

AD按键的缺点是设计过程略有些复杂,如果设计的不合理会出现串键的情况。

串键:按下A按键后,B按键响应

要谨记选择电阻时,最少要让两个按键的AD采集值相差100。

在硬件设计完成后,最好是通过串口打印出不同按键AD检测值,调整合适的电压区间

就能避免串键的问题发生。

到这里咱们这篇文章也就结束嘞。

具体的实现还需要朋友们自己动动手,动动脑。只要理解文章内容,设计起来非常简单。

回顾这篇文章,首先咱们介绍了什么是AD按键以及AD按键的实现原理,其次又说明了AD按键检测方式相比于其他按键检测方式的优势,最后演示了AD按键硬件设计思路和方法以及设计时注意事项。

都看到这了还请朋友们 点赞,收藏,加关注 !!!

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐