你的位置:首頁(yè) > 電路保護(hù) > 正文

當(dāng)軟件去抖動(dòng)不合適時(shí),如何實(shí)現(xiàn)開(kāi)關(guān)和繼電器硬件去抖動(dòng)?

發(fā)布時(shí)間:2021-03-04 來(lái)源:Clive "Max" Maxfield 責(zé)任編輯:lina

【導(dǎo)讀】在電氣和電子工程中,開(kāi)關(guān)是一種能夠“接合”或“斷開(kāi)”電路的組件,從而中斷電流或?qū)㈦娏鲝囊粋€(gè)導(dǎo)體轉(zhuǎn)到另一個(gè)導(dǎo)體。正如工程師們所知,開(kāi)關(guān)有許多不同的類(lèi)型,包括撥動(dòng)開(kāi)關(guān)、搖臂開(kāi)關(guān)、按鈕開(kāi)關(guān)、微動(dòng)開(kāi)關(guān)和限位開(kāi)關(guān)、磁性開(kāi)關(guān)和磁簧開(kāi)關(guān)以及繼電器等。所有開(kāi)關(guān)都有一個(gè)共同點(diǎn):就是有抖動(dòng)。這就是它們的工作方式。
    
在電氣和電子工程中,開(kāi)關(guān)是一種能夠“接合”或“斷開(kāi)”電路的組件,從而中斷電流或?qū)㈦娏鲝囊粋€(gè)導(dǎo)體轉(zhuǎn)到另一個(gè)導(dǎo)體。正如工程師們所知,開(kāi)關(guān)有許多不同的類(lèi)型,包括撥動(dòng)開(kāi)關(guān)、搖臂開(kāi)關(guān)、按鈕開(kāi)關(guān)、微動(dòng)開(kāi)關(guān)和限位開(kāi)關(guān)、磁性開(kāi)關(guān)和磁簧開(kāi)關(guān)以及繼電器等。所有開(kāi)關(guān)都有一個(gè)共同點(diǎn):就是有抖動(dòng)。這就是它們的工作方式。
 
通常情況下,這種抖動(dòng)對(duì)電路幾乎沒(méi)有影響,但如果是數(shù)字電路,只要速度足夠快,就能檢測(cè)到多次抖動(dòng)并對(duì)之作出響應(yīng),并因此造成嚴(yán)重后果。工程師的任務(wù)就是要避免或減輕這種抖動(dòng)的影響,或者給開(kāi)關(guān)“去抖動(dòng)”。雖然業(yè)界長(zhǎng)期以來(lái)一直都在采取硬件去抖動(dòng),但直到最近才轉(zhuǎn)向基于軟件的去抖動(dòng)方式。然而,在某些情況下,硬件去抖動(dòng)是更好的選擇。
 
本文解釋了什么是抖動(dòng),并討論了去抖動(dòng)的軟件和硬件方法。然后用實(shí)例證明硬件去抖動(dòng)是更好的選擇,并闡述如何實(shí)現(xiàn)該方法。最后以來(lái)自 NKK Switches、ON Semiconductor、Texas Instruments、Maxim Integrated 和 LogiSwitch 等公司的產(chǎn)品為例,展示了幾個(gè)具體的開(kāi)關(guān)器件和硬件去抖動(dòng)組件。
 
什么是開(kāi)關(guān)抖動(dòng)?
 
當(dāng)開(kāi)關(guān)或繼電器翻轉(zhuǎn)或撥動(dòng),或者每次設(shè)備改變狀態(tài)時(shí),人們通常視之為瞬間單一反應(yīng),但實(shí)際上可能涉及 100 個(gè)以上的接合或斷開(kāi)動(dòng)作,這些動(dòng)作持續(xù)幾千分之一秒,最后接觸才會(huì)穩(wěn)定下來(lái)。
 
例如像 NKK 的 M2011SS1W01 這樣的單刀單擲 (SPST) 常開(kāi) (NO) 面板安裝撥動(dòng)開(kāi)關(guān)。假設(shè)該開(kāi)關(guān)的一側(cè)(可視為輸入端)連接到地(0 伏),而另一側(cè)(在本例中為輸出端)通過(guò)上拉電阻 (R1) 連接到 5 伏電源(顯示為 +ve)(圖 1)。
 
當(dāng)軟件去抖動(dòng)不合適時(shí),如何實(shí)現(xiàn)開(kāi)關(guān)和繼電器硬件去抖動(dòng)?
 
觀察到開(kāi)關(guān)抖動(dòng)在開(kāi)關(guān)啟動(dòng)(閉合)和停用(打開(kāi))時(shí)都可能發(fā)生。有時(shí)抖動(dòng)可能會(huì)全程跨越兩個(gè)電源軌,即不是邏輯 0 就是邏輯 1 狀態(tài)。在這種情況下,這些都是“干凈”的抖動(dòng)。相比之下,如果信號(hào)只達(dá)到一個(gè)中間電壓,這些被稱(chēng)為“臟”抖動(dòng)。
 
對(duì)于像 NKK 的 M2012SS1W01-BC 這樣的單刀雙擲 (SPDT) 面板安裝撥動(dòng)開(kāi)關(guān),在常開(kāi) (NO) 和常閉 (NC) 端子上都可能發(fā)生抖動(dòng)(圖 2)。在這種情況下,為了簡(jiǎn)單起見(jiàn),只顯示了“干凈”的抖動(dòng)。
 
當(dāng)軟件去抖動(dòng)不合適時(shí),如何實(shí)現(xiàn)開(kāi)關(guān)和繼電器硬件去抖動(dòng)?
 
在許多情況下,這種信號(hào)抖動(dòng)持續(xù)是沒(méi)有影響的。當(dāng)一個(gè)開(kāi)關(guān)連接到一個(gè)電子設(shè)備上時(shí),如果這個(gè)設(shè)備的速度足夠快,可以檢測(cè)到多次抖動(dòng)并做出響應(yīng),那么就會(huì)引起問(wèn)題。需要做的是,在電子設(shè)備對(duì)開(kāi)關(guān)發(fā)出的信號(hào)進(jìn)行響應(yīng)前就對(duì)其進(jìn)行去抖動(dòng)。
 
軟件與硬件去抖動(dòng)比較
 
在 20 世紀(jì) 60 年代和 70 年代,開(kāi)關(guān)去抖動(dòng)采用了各種硬件技術(shù),從與 SPST 開(kāi)關(guān)一起使用的簡(jiǎn)單電阻電容 (RC) 延遲電路到更復(fù)雜的置位/復(fù)位 (SR) 鎖存器功能。
 
最近,由于許多系統(tǒng)都采用了微處理器單元 (MPU) 或微控制器單元 (MCU),因此使用軟件技術(shù)來(lái)消除來(lái)自任何開(kāi)關(guān)的信號(hào)已經(jīng)變得很普遍。然而,軟件去抖動(dòng)并不總是最好的方法。有一些采用小型、低性能、存儲(chǔ)空間有限的處理器的應(yīng)用,其代碼空間和/或時(shí)鐘周期有限,就無(wú)法實(shí)現(xiàn)去抖動(dòng)例程。在這些情況下,硬件實(shí)現(xiàn)可能是一個(gè)更好的解決方案。
 
另外,很多軟件開(kāi)發(fā)人員對(duì)開(kāi)關(guān)的物理特性并不熟悉,比如開(kāi)關(guān)的去抖動(dòng)特性除了在不同的激活方式下會(huì)有不同的變化外,還可能受到溫度、濕度等環(huán)境條件的影響。
 
軟件開(kāi)發(fā)人員缺乏開(kāi)關(guān)專(zhuān)業(yè)技術(shù),加上現(xiàn)有關(guān)于開(kāi)關(guān)抖動(dòng)的文獻(xiàn)往往是混亂和矛盾的,進(jìn)一步加劇了這一問(wèn)題的嚴(yán)重性。例如,我們通常讀到開(kāi)關(guān)在激活或停用后 1 毫秒 (ms) 就會(huì)停止抖動(dòng)。然而,知名嵌入式系統(tǒng)專(zhuān)家 Jack Ganssle 對(duì)各種類(lèi)型的開(kāi)關(guān)進(jìn)行了實(shí)證測(cè)試,將每個(gè)開(kāi)關(guān)激活 300 次,并記錄下了觸點(diǎn)打開(kāi)和關(guān)閉的最小和最大抖動(dòng)量。據(jù)其報(bào)告記錄,平均抖動(dòng)持續(xù)時(shí)間為 1.6 ms,最大抖動(dòng)持續(xù)時(shí)間為 6.2 ms。一些工業(yè)和軍事“最佳實(shí)踐”建議在初始激活后等待 20 ms,然后再假設(shè)開(kāi)關(guān)已經(jīng)停止抖動(dòng);另一些人則主張?jiān)谧罱K檢測(cè)到抖動(dòng)后等待 20 毫秒再觸發(fā)任何動(dòng)作。
 
此外,還有很多簡(jiǎn)單的無(wú)處理器的系統(tǒng)也需要消除開(kāi)關(guān)抖動(dòng)。舉幾個(gè)這類(lèi)系統(tǒng)的例子:驅(qū)動(dòng)七段式顯示器對(duì)來(lái)自繼電器的脈沖進(jìn)行計(jì)數(shù)的二進(jìn)制計(jì)數(shù)器;用作門(mén)或閘電機(jī)控制裝置的555 單次定時(shí)器的觸發(fā)輸入;以及采用鍵控輸入的基于寄存器的有限狀態(tài)機(jī) (FSM)。還有電子微調(diào)電位器 (Pot),其值是用開(kāi)關(guān)輸入(加、減,有時(shí)是存儲(chǔ))修改的,這時(shí)開(kāi)關(guān)抖動(dòng)就會(huì)有問(wèn)題。
 
所有這些例子都清楚地表明,掌握一些如何進(jìn)行硬件去抖動(dòng)的知識(shí)對(duì)任何設(shè)計(jì)人員或開(kāi)發(fā)人員都是有用的。
 
用 RC 網(wǎng)絡(luò)對(duì) SPST 開(kāi)關(guān)進(jìn)行硬件去抖動(dòng)
 
一個(gè)最簡(jiǎn)單的基于硬件的開(kāi)關(guān)去抖動(dòng)方案就是將電阻電容 (RC) 網(wǎng)絡(luò)與 SPST 開(kāi)關(guān)結(jié)合起來(lái)使用。這種電路有很多變型。其中一個(gè)較通用的實(shí)現(xiàn)方案是采用兩個(gè)電阻和一個(gè)二極管(圖 3)。
 
當(dāng)軟件去抖動(dòng)不合適時(shí),如何實(shí)現(xiàn)開(kāi)關(guān)和繼電器硬件去抖動(dòng)?
 
當(dāng)開(kāi)關(guān)啟動(dòng)(閉合)時(shí),電容 C1 通過(guò)電阻 R2 放電。如果這個(gè)電路中省略了二極管 D1,那么當(dāng)開(kāi)關(guān)停用(打開(kāi))時(shí),C1 將通過(guò)電阻 (R1 + R2) 充電。但是,D1 的存在意味著 C1 只能通過(guò) R1 充電。
 
在某些情況下,人們只關(guān)注開(kāi)關(guān)的激活(即觸發(fā)動(dòng)作發(fā)生),在這種情況下,D1 可以省略。但是,如果要在開(kāi)關(guān)被激活和停用時(shí)觸發(fā)動(dòng)作,并且要考慮將延遲降到最低,建議增加 D1。
 
觀察電容器電壓 VC 所表現(xiàn)出的指數(shù)充放電曲線(xiàn)。將此信號(hào)直接送入下游數(shù)字邏輯功能的輸入端并不是一個(gè)好主意,因?yàn)橄掠螖?shù)字邏輯功能不會(huì)喜歡看到一個(gè)在“好”的邏輯 0 和邏輯 1 值之間的未定義區(qū)域徘徊的信號(hào)。相反,該信號(hào)應(yīng)被送入帶有施密特觸發(fā)器輸入的緩沖器的輸入端。此外,通常要使用反相緩沖器,如 Texas Instruments 的 CD74HC14M96 的一個(gè)通道,因?yàn)榉聪喙δ艿那袚Q速度比非反相功能快。
 
用 SR 鎖存器對(duì) SPDT 開(kāi)關(guān)進(jìn)行去抖動(dòng)
 
在 SPDT 開(kāi)關(guān)情況下,常見(jiàn)的硬件去抖動(dòng)方案是采用 SR 鎖存器。自從 20 世紀(jì) 60 年代 IBM 等公司將這種技術(shù)應(yīng)用于大型計(jì)算機(jī)的開(kāi)關(guān)面板后,這種方法就被認(rèn)為是簡(jiǎn)單硬件去抖動(dòng)解決方案中的精華。這種鎖存器可以使用兩個(gè)背對(duì)背的雙輸入 NAND 門(mén)形成;例如,采用 Texas Instruments 的 SN74HC00DR 四路雙輸入 NAND IC 的兩個(gè)通道(圖 4)。
 
當(dāng)軟件去抖動(dòng)不合適時(shí),如何實(shí)現(xiàn)開(kāi)關(guān)和繼電器硬件去抖動(dòng)?
 
當(dāng)開(kāi)關(guān)的 NC 端子接地時(shí),如圖 4 上半部分所示,這將迫使門(mén) g2 的輸出變?yōu)檫壿?1。反過(guò)來(lái),門(mén) g1 輸入端的兩個(gè)邏輯 1 又迫使其輸出端變?yōu)檫壿?0。相比之下,當(dāng)開(kāi)關(guān)的 NO 端子接地時(shí),如圖 4 下半部分所示,這就迫使門(mén) g1 的輸出變?yōu)檫壿?1。反過(guò)來(lái),門(mén) g2 輸入端的兩個(gè)邏輯 1 又迫使其輸出端變?yōu)檫壿?0。
 
這個(gè)電路之所以工作得這么好,是因?yàn)楫?dāng)它的兩個(gè)輸入都處于不活動(dòng)的邏輯 1 狀態(tài)時(shí),SR 鎖存器會(huì)記住它以前的值。請(qǐng)記住,如圖 2 所示,當(dāng)一個(gè) SPDT 開(kāi)關(guān)被撥動(dòng)時(shí),在該時(shí)刻,無(wú)論其哪一個(gè)端子接地,都會(huì)發(fā)生抖動(dòng)。由于這些抖動(dòng)信號(hào)在其原值(邏輯 0)和新值(邏輯 1)之間,所以對(duì) SR 鎖存器的當(dāng)前狀態(tài)沒(méi)有影響。只有在這個(gè)端子停止抖動(dòng)后,其相對(duì)的端子才開(kāi)始抖動(dòng),此時(shí) SR 鎖存器才會(huì)改變其狀態(tài)。
 
用專(zhuān)用設(shè)備對(duì) SPST 開(kāi)關(guān)進(jìn)行去抖動(dòng)
 
前面的解決方案有一個(gè)問(wèn)題,就是很多設(shè)計(jì)者喜歡使用 SPST 開(kāi)關(guān),因?yàn)樗鼈兊某杀酒毡榈陀?SPDT。市場(chǎng)上有很多有名的專(zhuān)用 SPST 去抖動(dòng)器件,如 ON Semiconductor 的 MC14490DWG 和 Maxim Integrated 的 MAX6818EAP+T。
 
另一家制造商 LogiSwitch 也提供了一套三通道、六通道和九通道的去抖動(dòng)解決方案,同時(shí)采用通孔和表面貼裝 (SMD) 封裝。例如,考慮使用 LogiSwitch LS18-S 器件的電路(圖 5)。
 
當(dāng)軟件去抖動(dòng)不合適時(shí),如何實(shí)現(xiàn)開(kāi)關(guān)和繼電器硬件去抖動(dòng)?
 
與 LogiSwitch 產(chǎn)品家族所有成員一樣,LS18-S 支持 2.5 至 5.5 伏的工作電壓范圍(供電電壓值不影響器件的響應(yīng)時(shí)間)。此外,與其他一些專(zhuān)用 IC 解決方案不同,LogiSwitch 去抖動(dòng)器件不需要任何額外的元件,如外部時(shí)鐘、RC 時(shí)序網(wǎng)絡(luò)或輸入或輸出上的上拉電阻。
 
LS18-S 采用 LogiSwitch 專(zhuān)有的自適應(yīng) NoBounce(無(wú)抖動(dòng))技術(shù),實(shí)現(xiàn)了高水平抗噪能力。在啟動(dòng)或終止一個(gè)周期時(shí)禁止小于 20 ms 持續(xù)時(shí)間的噪聲尖峰,然后在開(kāi)關(guān)激活和釋放的最后一次抖動(dòng)后,無(wú)論抖動(dòng)持續(xù)時(shí)間長(zhǎng)短,輸出都會(huì)延遲 20 毫秒。
 
結(jié)語(yǔ)
 
開(kāi)關(guān)有很多不同的類(lèi)型,包括撥動(dòng)開(kāi)關(guān)、搖臂開(kāi)關(guān)和按鈕開(kāi)關(guān),這些開(kāi)關(guān)都可能會(huì)抖動(dòng)。如果開(kāi)關(guān)抖動(dòng)不得到緩解,就會(huì)導(dǎo)致微處理器和其他電子電路將一次開(kāi)關(guān)激活視為多個(gè)事件。
 
人們常常利用微控制器中運(yùn)行的軟件對(duì)開(kāi)關(guān)發(fā)出的抖動(dòng)信號(hào)進(jìn)行消抖。如上所述,雖然這是一種低成本的解決方案,但它可能并不是所有情況下的最佳選擇。這些情況包括:系統(tǒng)基于性能和存儲(chǔ)空間有限的微控制器,軟件開(kāi)發(fā)人員缺乏開(kāi)關(guān)相關(guān)問(wèn)題專(zhuān)業(yè)知識(shí),或者系統(tǒng)實(shí)現(xiàn)沒(méi)有微控制器。
 
作為替代選擇,我們可以使用各種方法在硬件中進(jìn)行去抖動(dòng),具體方法包括電阻電容網(wǎng)絡(luò)、SR 鎖存器以及專(zhuān)用集成電路。
(來(lái)源:Digi-Key,作者:Clive "Max" Maxfield)
 
 
免責(zé)聲明:本文為轉(zhuǎn)載文章,轉(zhuǎn)載此文目的在于傳遞更多信息,版權(quán)歸原作者所有。本文所用視頻、圖片、文字如涉及作品版權(quán)問(wèn)題,請(qǐng)電話(huà)或者郵箱聯(lián)系小編進(jìn)行侵刪。
 
 
推薦閱讀:
硬件工程師必看:包地與串?dāng)_
火爆!5場(chǎng)行業(yè)千人會(huì),50+技術(shù)論壇,三月ITES開(kāi)講!
速看!工程師技術(shù)福利:汽車(chē)電子技術(shù)專(zhuān)家在此吹響“集結(jié)號(hào)”
單片機(jī)控制步進(jìn)電機(jī)PMW的驅(qū)動(dòng)與放大
分光測(cè)色儀硬件設(shè)計(jì)方案
要采購(gòu)開(kāi)關(guān)么,點(diǎn)這里了解一下價(jià)格!
特別推薦
技術(shù)文章更多>>
技術(shù)白皮書(shū)下載更多>>
熱門(mén)搜索
?

關(guān)閉

?

關(guān)閉