一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

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

Arduino的軟件消抖代碼

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

掃碼添加小助手

加入工程師交流群

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

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

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

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

濾波電容

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

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

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

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

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

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

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

開關(guān)打開時:

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

開關(guān)閉合時:

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

當(dāng)按下按鍵出現(xiàn)快速抖動現(xiàn)象時,通過電容會使Vb點(diǎn)電壓快速變成Vcc或GND。在抖動過程時對電容會有輕微的充電或放電,但后端的施密特觸發(fā)器有遲滯效果不會導(dǎo)致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)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 濾波電容
    +關(guān)注

    關(guān)注

    8

    文章

    459

    瀏覽量

    41096
  • 陶瓷電容
    +關(guān)注

    關(guān)注

    3

    文章

    457

    瀏覽量

    24486

原文標(biāo)題:開關(guān)抖動及消除

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

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

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

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

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

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

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

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

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

    諧裝置的作用

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

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

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

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

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

    HAL庫在Arduino平臺上的使用

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

    開源項(xiàng)目!基于 Arduino 的 MIDI 架子鼓

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

    基于Arduino的串口通信項(xiàng)目

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

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

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

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

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

    為什么按鍵那么重要

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

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

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

    科研相機(jī)防技術(shù)-機(jī)身防和電子防

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

    怎樣用Arduino測試鋰電池容量

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