利用單片機的ADC端口,可以讀取多個按鈕的狀態。在設計過程中,需要綜合考慮到按扭的個數與讀取的可靠性,特別是對選擇電阻的阻值進行優化,使得不同分壓數值之間相差最大。如果按鍵面板需要通過長的引線與單片機電路相連,還需要對接口電路進行保護以提高電路的EMC特性。
01 讀取按鍵
按鍵是單片機系統中人機交互常用到的方法,通常情況下,通過普通的IO端口可以獲得按鍵開關狀態。在某些電子系統設計中,如果碰到按鈕比較多,但單片機的IO口不夠使用的時候,則需要通過端口擴展的方式來增加讀取按鈕的數量。比如通過并串轉換芯片,8-3編碼芯片等等。
今天看到 公眾號電路啊中的一篇推文:電視機的按鍵功能是用什么電路實現的?經典ADC按鍵電路[1] 介紹了在一款電視機中,采用單個ADC端口來讀取多個按鈕狀態的方法。
一、電路原理
1、電路原理圖
按鍵面板中的三個引線中,其中一個是電路地線,另外兩個是信號線,分別接入主板中MCU的兩路ADC端口。這兩條線在主板上都通過3.3kΩ的電阻接到電源(3.3V)。在面板上,有多個按鈕與電阻的串聯之后連接在信號線與地線之間。
▲ 圖1.1.1 工作原理說明圖
并聯在 一起的按鈕所串聯的電阻不同,所以每個按鈕按下之后,信號線的電壓就是上拉電阻與按鍵串聯電阻對電源的分壓。由于每個按鍵串聯電阻不同,所以對應信號線電壓也就不同了。經過單片機ADC讀取電壓值之后,在與事先確定下的每個按鍵分壓范圍進行對比,從而可以確定是哪一個按鈕被按下。
【表1-1-1 不同按鍵對應的電壓】
75 ohm | 1000 ohm | 3300 ohm | 6800 ohm |
0.07 V | 0.77 V | 1.65 V | 2.22 V |
SW1 | SW2 | SW3 | SW4 |
---|
2、按鍵個數
根據上述原理,一條ADC端口可以讀取按鈕的個數是非常多的,它的上限受到以下因素影響:
單片機ADC分辨率;
分壓信號的穩定性和噪聲范圍;
機械按鍵接觸電阻;
分壓電阻偏差與穩定性等。
為了可靠的通過ADC讀取的模擬分壓電壓來確定按鍵,需要合理選擇分壓電阻,使得每個按鍵所對應的電壓之間的間隔越大越好。在上述實際設計的電路中,每個ADC端口只讀取了四個按鈕的狀態,總共采用了兩個ADC端口讀取了7個(< 8個)按鍵狀態。
二、電路改進
1、增加接口可靠性
由于按鍵板與電路主板之間通過三根線連接,為了提高電路工作的可靠性,在按鍵電路接口中增加了R、C、TVS來消除靜電、電磁干擾對主控板的影響。
▲ 圖1.2.1 增加有提高EMC接口電路
對于電路中的RC濾波器件參數選擇,需要綜合考慮濾除噪聲的頻率范圍以及電路穩定時間。不能夠為了降低噪聲一味增加RC時間常數,還需要考慮按鍵動作時,對應的分壓信號達到穩定的過渡時間的大小。
02 更多按鍵
在前面案例中,每個ADC只讀取四個按鍵,下面給出一些可以讀取更多按鍵的方案。
一、八個按鍵
1、電路原理圖
下面是在推文經典ADC按鍵電路[2]中給出的已經批量應用的八按鍵ADC讀取電路配置方案。
▲ 圖2.1.1 被批量使用的八個按鍵方案
2、按鍵對應的電壓值
按照電路中的電阻參數,可以計算出每個按鍵對應的信號分壓電壓值:
【表2-1-1 八個按鍵對應的信號電壓】
0 ohm | 510 ohm | 680 ohm | 1000 ohm | 1200 ohm | 2200 ohm | 4700 ohm | 15000 ohm |
0.00 V | 0.32 V | 0.67 V | 1.05 V | 1.38 V | 1.79 V | 2.27 V | 2.78 V |
SW1 | SW2 | SW3 | SW4 | SW5 | SW6 | SW7 | SW8 |
---|
▲ 圖2.1.2 八個按鍵對應的信號電壓
3、方案特點
在這個電路中,后面按鍵對應的電阻值是由前面所有串聯電阻累加和。
這個電路的巧妙之處在于,按鍵具有優先級之分。假設按下了按鍵SW1,那么再按下SW2-SW8中的任何一個都是不起作用的,即SW1的優先級最高,SW2次之,以此類推。
二、組合按鍵
上面電路中不允許使用組合按鍵,即通過兩個或者兩個 以上的按摩同時按下代表更多的功能。
1、三個按鍵組合輸入
下面電路中,只使用3按鈕便可以獲得8個狀態的輸入。
▲ 圖2.2.1 利用電阻組合完成多個多個按鈕輸入
需要通過適當選擇的阻值,使得八種不同的按鍵組合,所得到的八個電壓之間的間隔最大,這樣才能夠保證ADC通過分壓數值確定狀態時更加可靠。
利用程序對進行搜索,搜索范圍(100,10k),搜索步長:50歐姆??梢垣@得一組最優電阻取值:
最小的電壓間隔為:0.152V。
下面是八種按鍵組合所得到的電壓,從小到大的電壓值。
['1.19V', '1.37V', '1.53V', '1.68V', '1.83V', '2.05V', '2.43V', '3.30V']
※ 總??結 ※
利用單片機的ADC端口,可以讀取多個按鈕的狀態。在設計過程中,需要綜合考慮到按扭的個數與讀取的可靠性,特別是對選擇電阻的阻值進行優化,使得不同分壓數值之間相差最大。
如果按鍵面板需要通過長的引線與單片機電路相連,還需要對接口電路進行保護以提高電路的EMC特性。
審核編輯:劉清
-
串聯電阻
+關注
關注
1文章
191瀏覽量
14794 -
電阻
+關注
關注
86文章
5514瀏覽量
172025 -
單片機
+關注
關注
6037文章
44558瀏覽量
635233 -
TVS
+關注
關注
8文章
786瀏覽量
60613 -
adc
+關注
關注
98文章
6498瀏覽量
544630 -
按鍵電路
+關注
關注
1文章
35瀏覽量
21774 -
分壓電阻
+關注
關注
0文章
18瀏覽量
11594
原文標題:單個端口讀取多個按鈕(ADC按鍵電路)
文章出處:【微信號:mcu168,微信公眾號:硬件攻城獅】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論