硬件消抖(電容式)原理根源分析(注意同時體會軟件消抖)

在這裏插入圖片描述
前言:
(開發板上四個管腳的獨立按鍵真實存在的現象)由於機械觸點的彈性作用,一個按鍵開關在閉合時不會馬上穩定地接通,在斷開時也不會一下子斷開。因而在閉合及斷開的瞬間均伴隨有一連串的抖動,抖動時間的長短由按鍵的機械特性決定,一般爲5ms~10ms。這是一個很重要的時間參數,在很多場合都要用到。
消抖目的:按鍵穩定閉合時間的長短則是由操作人員的按鍵動作決定的,一般爲零點幾秒至數秒。鍵抖動會引起一次按鍵被誤讀多次。爲確保CPU對鍵的一次閉合僅作一次處理,必須去除鍵抖動
在這裏插入圖片描述
在這裏插入圖片描述
所以怎樣才能保證CPU對鍵的一次閉合僅僅做一次處理,因爲管腳的輸入(四組並行雙向IO口,可以輸入可以輸出)只有高低電平之分,所以只要保證其相應管腳的高低電平可以保持實現理性波形時的高低電平情況就不會出現多次一次按鍵被多次誤讀;
【補充】
一般來講,對於5V電源的單片機來說,低電平在1.3V以下,高電平在3.7V以上,數字信號儘量不要使用1.3—3.7V這個區間,這有可能會造成單片機無法識別或識別錯誤。
【分析】
①上圖所示,最開始狀態時按鍵未按下時,電容肯定先是已經被充滿電然後開路,又因爲電容C1左極板與接地,所以左右極板電位0v/5v,又因爲沒有按下按鍵,所以電路處於開路,單片機管腳P02處於高電平5v(電路開路與VCC相連/也與電容右極板相連);
②當按鍵按下時,有一段時間的機械抖動,此時按鍵SW1右邊節點的電位是5v(也是單片機管腳P02的電位爲5v),又因爲按鍵與電容形成迴路,所以電容會進行放電(電容是一個非線性元件,放電需要時間),但是機械抖動的時間和電容放電的時間不是完全一致,所以當電容放電放一部時間(假設可能放到4.5v時)機械抖動就已經結束,那麼管腳的電平卻是始終都是表現爲高電平,所以CPU識別還是高電平未變,當按鍵徹底按下穩定接觸後,很快就會將放電完畢將電容短路(左右極板的電位變成0v/0v),然後按鍵SW1右邊節點電位接地(也就是管腳P02因爲接地電勢爲0v),所以此時單片機管腳P02爲低電平,這也是教學視頻說因爲放電延時;
③當按鍵要鬆開時,按鍵有個鬆開時的抖動時間,只有你有鬆開的可能,按鍵這條支路就會開路而電容開始充電,電容就開始充電,但是充電需要時間在抖動的時間內電容右極板不會瞬間達到5v的電位,也就是按鍵SW1右邊的節點電位不會一下子達到高電平(可能在這個抖動時間內電容才充電充了0.5v),所以該節點依然保持低電平(也就是CPU識別的管腳P02爲低電平),當按鍵徹底鬆開穩定後,按鍵那條支路斷開電容也充滿電(兩條支路都是開路),按鍵SW1右邊節點和管腳的電位就是高電平(與直流電源VCC相連)這也是教學視頻說因爲充電延時
【結論】
①具體分析也要參照實際電容充放電時間和加速度與抖動時間的比較;
②我上面的分析符合實際波形的高低高的波形情況;
③但是一般不提倡硬件消抖,會給電路增加較多電容電阻,所以選擇軟件消抖(軟件消抖的程序實際上就是按照波形圖進行實際編寫的);
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章