按鍵電路


按鍵電路在設計開始就是選擇按鍵,一般來說根據其工作的極限條件來選擇,特別是電壓和電流的極限條件。有些開關用在大電流,大電壓場合,對單片機來說,一般不需要考慮這個因素,因為一般的開關耐壓都在幾十V,電流也在1A左右,所以對單片機的按鍵挑選的也比較隨意,最多可能就是選擇貼片還是直插,還有尺寸規格方面需要考慮。

本次設計采用的是輕觸開關,下圖是其部分參數。

 

接下來就開始設計電路了,開關對於單片機來說最常見的問題來說就是按鍵抖動,一般抖動為按下和釋放的前后20ms,容易造成誤觸發。消除抖動有硬件和軟件兩種方式。下面由於是設計硬件,本次采用了硬件消除抖動的方式來設計開關。

下面一幅圖是最簡單的一種電路,兩個電路就是觸發電平不同而已,一個按下為低電平,一個按下為高電平,但沒有消除硬件抖動,若采用這種電路那勢必要在單片機軟件編程里面進行設置。下面將從硬件層面對這部分電路進行改進。

接下來就開始設計電路了,開關對於單片機來說最常見的問題來說就是按鍵抖動,一般抖動為按下和釋放的前后20ms,容易造成誤觸發。消除抖動有硬件和軟件兩種方式。下面由於是設計硬件,本次采用了硬件消除抖動的方式來設計開關。

下面一幅圖是最簡單的一種電路,兩個電路就是觸發電平不同而已,一個按下為低電平,一個按下為高電平,但沒有消除硬件抖動,若采用這種電路那勢必要在單片機軟件編程里面進行設置。下面將從硬件層面對這部分電路進行改進。

 

 

抖動一般產生在前后按下和釋放時候,而且多為毛刺,這就好比是一個高頻成分,那通過加電容進行濾波就可以實現,本質上是利用了電容充放電的原理。

那下面就是電容怎么加和取值的問題了。

抖動是按鍵產生的,那電容就應該加在按鍵所在的回路中。又由於其抖動大約為20ms,所以要確保電容充放電時間大於20ms.

 

 

該電路中充放電時間為t=RCIn[(3.3-0)/(3.3-3.3*0.7)]=RCIn(10/3)=1.2RC>20ms,

這里取R為200K,C取0.1uF   RC=20ms

其實在實際產品中一般采用軟件消抖的方式,即不采用RC濾波的方式,而是采用軟件延時的方式去判斷按鍵的有效,這也是出於成本的考慮,外加電容和電阻會提高生產成本。

說到了軟件消除抖動,那也就來順便講講這個,話不多說先直接放出兩張圖

 

 

上面兩副圖對應於按鍵操作,第一個是采用FPGA抓取信號看到按鍵信號有跳變,第二個就是單片機里按鍵處理程序,其中關鍵在於靜態變量key_flag的使用,特別重要的就是進入函數體內部時候記得寫0和將其變量作為進入函數的條件,這樣按鍵一次后就產生固定值,不會發生跳變和改變。上面這個程序可能還不夠完善,一般的來說大家在寫按鍵的時候可以采用分層的思想去實現,就是底層驅動為一層,主要就是可以拿到實際的高低電平,當然肯定是消除抖動過的,再中間一層就是對這些信號的處理,其中又可以根據這些信號長短分成不同的長按鍵信號和短按鍵信號,更有快按或者慢按,這部分可以通過狀態機實現。最上面一層就是根據這些信號其實就是應用層直接拿來用了。

最后提示一下,按鍵處理其實在實際項目中用到的特別多,也特別實用,還有類似的矩陣掃描等等。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM