精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

開關抖動及消除設計

硬件攻城獅 ? 來源:CSDN技術社區 ? 2022-12-26 16:25 ? 次閱讀

當按下和釋放微動按鍵時,會由短時間的抖動現象才會到達想要的狀態。如下圖所示:

49d0ca52-84f0-11ed-bfe3-dac502259ad0.jpg

從上圖可知。按鍵抖動時間大概為150us。

在一些對按鍵抖動敏感的情況下需要進行消抖設計,目前常見的消抖設計如下:

濾波電容

關于去抖硬件最簡單的方式并聯一顆100nF陶瓷電容,進行濾波處理。

49e863ce-84f0-11ed-bfe3-dac502259ad0.jpg

RC濾波+施密特觸發器

要想更嚴謹設計消抖電路,會增加施密特觸發器,更大程度的保證后端不受按鍵抖動影響,電路如下:

49fa8d9c-84f0-11ed-bfe3-dac502259ad0.jpg

分別來看按鍵閉合斷開時電路狀態:

4a11d312-84f0-11ed-bfe3-dac502259ad0.jpg

開關打開時:

電容C1通過R1 D1回路充電,Vb電壓=Vcc-0.7為高電平,后通過反向施密特觸發器使Vout輸出為低。

開關閉合時:

電容C1通過R2進行放電,最后Vb電壓變為0,通過反向施密特觸發器使Vout輸出為高。

當按下按鍵出現快速抖動現象時,通過電容會使Vb點電壓快速變成Vcc或GND。在抖動過程時對電容會有輕微的充電或放電,但后端的施密特觸發器有遲滯效果不會導致Vout發現抖動現象。

此電路中D1的使用使為了限制R1 R2一起給C1供電,增加充電時間影響效果。如果減小R1的值會使電流增加,功耗較高。

專用消抖芯片

一些廠家會提供專用芯片,避免自搭電路的不穩定性, 如美信-Max6816:

4a25d0d8-84f0-11ed-bfe3-dac502259ad0.jpg

軟件濾波

軟件消除抖動也是很常見的方式,一般形式是延時查詢按鍵狀態或者中斷形式來消除抖動。

下面是Arduino的軟件消抖代碼:

/* SoftwareDebounce

*

* At each transition from LOW to HIGH or from HIGH to LOW

* the input signal is debounced by sampling across

* multiple reads over several milli seconds. The input

* is not considered HIGH or LOW until the input signal

* has been sampled for at least "debounce_count" (10)

* milliseconds in the new state.

*

* Notes:

* Adjust debounce_count to reflect the timescale

* over which the input signal may bounce before

* becoming steady state

*

* Based on:

* http://www.arduino.cc/en/Tutorial/Debounce

*

* Jon Schlueter

* 30 December 2008

*

* http://playground.arduino.cc/Learning/SoftwareDebounce

*/

int inPin = 7; // the number of the input pin

int outPin = 13; // the number of the output pin

int counter = 0; // how many times we have seen new value

int reading; // the current value read from the input pin

int current_state = LOW; // the debounced input value

// the following variable is a long because the time, measured in milliseconds,

// will quickly become a bigger number than can be stored in an int.

long time = 0; // the last time the output pin was sampled

int debounce_count = 10; // number of millis/samples to consider before declaring a debounced input

void setup()

{

pinMode(inPin, INPUT);

pinMode(outPin, OUTPUT);

digitalWrite(outPin, current_state); // setup the Output LED for initial state

}

void loop()

{

// If we have gone on to the next millisecond

if(millis() != time)

{

reading = digitalRead(inPin);

if(reading == current_state && counter > 0)

{

counter--;

}

if(reading != current_state)

{

counter++;

}

// If the Input has shown the same value for long enough let's switch it

if(counter >= debounce_count)

{

counter = 0;

current_state = reading;

digitalWrite(outPin, current_state);

}

time = millis();

}

}

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 開關
    +關注

    關注

    19

    文章

    3127

    瀏覽量

    93497
  • 濾波電容
    +關注

    關注

    8

    文章

    457

    瀏覽量

    39988
  • 抖動
    +關注

    關注

    1

    文章

    69

    瀏覽量

    18847
  • 按鍵
    +關注

    關注

    4

    文章

    223

    瀏覽量

    57572

原文標題:開關抖動及消除

文章出處:【微信號:mcu168,微信公眾號:硬件攻城獅】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    如何實現軟件與硬件的開關抖動設計

    開關、磁性開關和磁簧開關以及繼電器等。所有開關都有一個共同點:就是有抖動。這就是它們的工作方式。 通常情況下,這種
    的頭像 發表于 03-04 14:03 ?4261次閱讀

    verilog寫cpld的程序如何消除按鍵的抖動

    verilog寫cpld的程序如何消除按鍵的抖動
    發表于 04-02 09:22

    消除按鍵抖動的兩種方法分享

      按鍵也是機械裝置,在按下或放開的一瞬間會產生抖動,如下圖:    消除方法有兩種:  軟件除抖和硬件除抖,其中硬件除抖是應用了電容對高頻信號短路的原理。  軟件除抖是檢測出鍵閉合后執行一個延時
    發表于 09-02 17:52

    如何通過軟件編程實現消除鍵盤的抖動

    如何通過軟件編程實現消除鍵盤的抖動?記文本答:由于按鍵是機械開關結構,所以當用手按下其中-一個鍵時,往往會出現所按鍵在閉合位置和斷開位置之間發生跳幾下后才會穩定到閉合狀態的情況。在釋放- .個鍵
    發表于 07-22 08:24

    如何消除無刷電機的靜態抖動

    換相脈寬采集是什么?無刷電機PID的運算時間如何定?如何消除無刷電機的靜態抖動
    發表于 08-09 06:52

    單片機如何消除按鍵抖動

    單片機如何消除按鍵抖動
    發表于 10-21 09:29

    如何消除按鍵抖動的影響

    按鍵抖動:在機械按鍵的觸點閉合和斷開時,都會產生抖動,為了保證系統能正確識別按鍵的開關,就必須對按鍵的抖動進行處理。按鍵的抖動對于人類來說是
    發表于 01-17 07:46

    運用外部中斷函數消除按鍵抖動

    目的實現:按鍵數碼管數字加減,運用外部中斷函數,消除按鍵抖動***仿真c代碼#includecode unsigned char SEG[]={0XC0
    發表于 03-02 06:31

    sr鎖存器是如何消除脈沖抖動的?

    數電分析,電平從高到低再到高的過程,sr鎖存器是如何消除脈沖抖動的?
    發表于 04-26 11:00

    請問sr鎖存器是如何消除脈沖抖動的?

    數電分析,電平從高到低再到高的過程,sr鎖存器是如何消除脈沖抖動的?
    發表于 05-10 15:03

    模擬開關型防抖動電路

    模擬開關型防抖動電路
    發表于 09-11 14:14 ?10次下載
    模擬<b class='flag-5'>開關</b>型防<b class='flag-5'>抖動</b>電路

    按鍵抖動消除verilog設計

    按鍵作為一種機械開關,在進行按鍵操作時,機械接觸點的彈性及電壓突變等原因,在機械開關合閉的時候會出現電壓抖動,因此在實際的應用當中需要做一定的處理。
    的頭像 發表于 04-27 09:55 ?1663次閱讀
    按鍵<b class='flag-5'>抖動</b><b class='flag-5'>消除</b>verilog設計

    rs觸發器消除按鍵抖動的原因

    按鍵抖動是指由于按鍵接點的不完美接觸而導致的按鍵信號在短時間內多次跳變的現象。在電子設備的設計與制造中,消除按鍵抖動是非常重要的一個問題。為了解決這個問題,工程師們引入了RS觸發器。 第一部分:按鍵
    的頭像 發表于 11-17 15:53 ?1974次閱讀

    FPGA如何消除時鐘抖動

    在FPGA(現場可編程門陣列)設計中,消除時鐘抖動是一個關鍵任務,因為時鐘抖動會直接影響系統的時序性能、穩定性和可靠性。以下將詳細闡述FPGA中消除時鐘
    的頭像 發表于 08-19 17:58 ?1036次閱讀

    CDCM7005高性能時鐘同步器和抖動消除器數據表

    電子發燒友網站提供《CDCM7005高性能時鐘同步器和抖動消除器數據表.pdf》資料免費下載
    發表于 08-21 11:44 ?0次下載
    CDCM7005高性能時鐘同步器和<b class='flag-5'>抖動</b><b class='flag-5'>消除</b>器數據表