99精品伊人亚洲|最近国产中文炮友|九草在线视频支援|AV网站大全最新|美女黄片免费观看|国产精品资源视频|精彩无码视频一区|91大神在线后入|伊人终合在线播放|久草综合久久中文

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

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

3天內(nèi)不再提示

Arduino的軟件消抖代碼

GReq_mcu168 ? 來源:CSDN ? 作者:CSDN ? 2022-06-22 14:35 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

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

59b96cd8-f12c-11ec-ba43-dac502259ad0.jpg

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

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

濾波電容

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

59ca12fe-f12c-11ec-ba43-dac502259ad0.jpg

RC濾波+施密特觸發(fā)器

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

59dafd80-f12c-11ec-ba43-dac502259ad0.jpg

分別來看按鍵閉合斷開時電路狀態(tài):

59eee214-f12c-11ec-ba43-dac502259ad0.jpg

開關打開時:

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

開關閉合時:

電容C1通過R2進行放電,最后Vb電壓變?yōu)?,通過反向施密特觸發(fā)器使Vout輸出為高。

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

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

專用消抖芯片

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

59fc1204-f12c-11ec-ba43-dac502259ad0.jpg

軟件濾波

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

下面是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();

}

}

審核編輯 :李倩

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

    關注

    8

    文章

    459

    瀏覽量

    41095
  • 陶瓷電容
    +關注

    關注

    3

    文章

    457

    瀏覽量

    24483

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

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

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    微機諧裝置優(yōu)勢

    微機諧裝置(也稱為微機諧器或智能諧裝置)具有顯著優(yōu)勢。以下是其核心優(yōu)勢: 1. ?強大的諧振識別能力: ? ? 能夠?qū)崟r、精確地識別系統(tǒng)發(fā)生的多種類型的鐵磁諧振(如分頻、工頻、高頻諧振),以及
    的頭像 發(fā)表于 06-16 15:50 ?219次閱讀
    微機<b class='flag-5'>消</b>諧裝置優(yōu)勢

    《ESP32S3 Arduino開發(fā)指南》第二章 Arduino基礎知識

    地進行可開發(fā)。3、開放性Arduino的硬件原理圖、電路圖、IDE軟件及核心庫文件都是開源的,在開源協(xié)議范圍內(nèi)可以任意修改原始設計及相應代碼。4、社區(qū)和第三方支持Arduino有著眾多
    發(fā)表于 05-13 09:28

    一次諧裝置與二次諧裝置區(qū)別、一次諧器與二次諧器的區(qū)別

    一次諧器與二次諧器是電力系統(tǒng)中用于抑制諧振過電壓的不同裝置,主要區(qū)別如下: 安裝位置:一次諧器串聯(lián)于電壓互感器(PT)一次側中性點與地之間,直接承受高電壓;二次諧器并聯(lián)在PT
    的頭像 發(fā)表于 05-07 09:58 ?1173次閱讀
    一次<b class='flag-5'>消</b>諧裝置與二次<b class='flag-5'>消</b>諧裝置區(qū)別、一次<b class='flag-5'>消</b>諧器與二次<b class='flag-5'>消</b>諧器的區(qū)別

    諧裝置的作用

    諧裝置是電力系統(tǒng)中防止鐵磁諧振過電壓的關鍵設備,主要用于保護電壓互感器(PT)及電網(wǎng)安全。當系統(tǒng)因單相接地、操作過電壓或雷擊引發(fā)PT鐵芯飽和時,可能產(chǎn)生分頻、工頻或高頻諧振,導致PT過熱、絕緣損壞
    的頭像 發(fā)表于 04-24 10:23 ?746次閱讀
    <b class='flag-5'>消</b>諧裝置的作用

    微機諧器與一次諧器區(qū)別與聯(lián)系

    微機諧器與一次諧器都是用于電力系統(tǒng)中抑制諧波和消除鐵磁諧振的設備,
    的頭像 發(fā)表于 04-22 16:21 ?310次閱讀

    用于 SPI 絕對編碼器的 Arduino 示例代碼

    作者:Damon Tarry, Design Applications Engineer, Same Sky 本 Arduino 示例代碼教程旨在為用戶提供一個堅實的起點,以便通過串行外設接口
    的頭像 發(fā)表于 01-26 21:35 ?817次閱讀
    用于 SPI 絕對編碼器的 <b class='flag-5'>Arduino</b> 示例<b class='flag-5'>代碼</b>

    HAL庫在Arduino平臺上的使用

    ,適合于快速原型開發(fā)和教育。HAL(硬件抽象層)庫是一種在Arduino平臺上使用的軟件庫,它提供了一種標準化的方式來訪問硬件功能,使得開發(fā)者可以編寫更通用、更可移植的代碼。 1. 什么是HAL庫 HAL庫是硬件抽象層庫的簡稱,
    的頭像 發(fā)表于 12-02 14:04 ?1643次閱讀

    開源項目!基于 Arduino 的 MIDI 架子鼓

    使用具有非 ATmega32U4 芯片的 Arduino 型號, 用于上傳代碼Arduino IDE 第 1 步:打印 3D 模型 1、沒有特殊要求。我對所有部件都使用了標準的 15% 填充物。 3D
    發(fā)表于 11-25 12:00

    基于Arduino的串口通信項目

    基于Arduino的串口通信項目涉及多個方面,包括硬件連接、軟件編程、串口參數(shù)配置等。 一、硬件準備 Arduino開發(fā)板 :確保你有一塊Arduino開發(fā)板,如
    的頭像 發(fā)表于 11-22 09:24 ?2202次閱讀

    基于FPGA實現(xiàn)按鍵處理

    引言: 按鍵在電子產(chǎn)品中經(jīng)常用到,由于按鍵的機械特性,按鍵在閉合或松開的瞬間伴隨著一連串的抖動,這樣的抖動將直接影響設計系統(tǒng)的穩(wěn)定性。因此,必須對抖動進行處理。本文介紹如何在FPGA中實現(xiàn)按鍵處理。
    的頭像 發(fā)表于 10-24 14:54 ?1167次閱讀
    基于FPGA實現(xiàn)按鍵<b class='flag-5'>消</b><b class='flag-5'>抖</b>處理

    兩種常見的硬件實現(xiàn)方式

    由于機械按鍵在操作過程中會產(chǎn)生抖動現(xiàn)象,這種抖動信號如果不加以處理,就可能導致單片機等電子設備誤判按鍵狀態(tài),從而引發(fā)錯誤操作。本文將詳細介紹兩種常見的硬件實現(xiàn)方式:RS觸發(fā)器和電容濾波。 RS
    的頭像 發(fā)表于 09-25 16:54 ?3752次閱讀
    兩種常見的硬件<b class='flag-5'>消</b><b class='flag-5'>抖</b>實現(xiàn)方式

    為什么按鍵那么重要

    和錯誤操作。因此,進行按鍵處理顯得尤為重要。 按鍵抖動的產(chǎn)生是由于機械觸點的彈性特性所決定的。當按鍵被按下或釋放時,觸點并不會立即穩(wěn)定地接通或斷開,而是會在閉合和斷開的瞬間產(chǎn)生一連串的抖動信號。這些抖動信號
    的頭像 發(fā)表于 09-25 16:50 ?1305次閱讀
    為什么按鍵<b class='flag-5'>消</b><b class='flag-5'>抖</b>那么重要

    如何在FPGA中實現(xiàn)按鍵

    按鍵操作。因此,實現(xiàn)有效的按鍵機制對于提高系統(tǒng)的穩(wěn)定性和可靠性至關重要。以下是在FPGA中實現(xiàn)按鍵的詳細步驟和策略,包括原理、方法、代碼
    的頭像 發(fā)表于 08-19 18:15 ?3569次閱讀

    科研相機防技術-機身防和電子防

    ? 機身防鏡頭昂貴的價格催生了機身防技術。機身防(即影像傳感器防)最早由KonicaMinolta提出,后來Sony收購了Ko
    的頭像 發(fā)表于 08-14 06:29 ?1030次閱讀
    科研相機防<b class='flag-5'>抖</b>技術-機身防<b class='flag-5'>抖</b>和電子防<b class='flag-5'>抖</b>

    怎樣用Arduino測試鋰電池容量

    本文詳細介紹了如何用Arduino測量鋰電池的容量。并附有電路圖和Arduino的程序代碼
    的頭像 發(fā)表于 07-30 09:14 ?1680次閱讀
    怎樣用<b class='flag-5'>Arduino</b>測試鋰電池容量