[爆卦]debounce意思是什麼?優點缺點精華區懶人包

為什麼這篇debounce意思鄉民發文收入到精華區:因為在debounce意思這個討論話題中,有許多相關的文章在討論,這篇最有參考價值!作者dream4magi (dream4magi)看板Key_Mou_Pad標題[滑鼠] 滑鼠連點的...


大家好
講到滑鼠連點大部分人應該直接聯想到羅技XD
我們今天來探討一下連點的成因 跟一些解決方法


連點的發生是因為兩個觸點快速接觸(或說撞擊)後又互相彈開 然後又再度接合
所以導致兩次判定觸發
在微動開關使用久了之後內部彈力減弱
所以這個抑制彈開的力量變小了 進而產生
簡單的說就是開關的彈跳


在進入正題之前有一點我想先讓一些非電子領域的人理解
那就是這種彈跳是非常常見的 很正常的
要全然歸罪於微動開關並不合理

所以因應此現象 自然有對應的作為
也就是debounce(去抖動)

方法基本上分為兩種
1.軟體(包含韌體)
2.硬體

那為什麼明明有解決方法
在滑鼠界卻還是遍地雙擊呢?

我必須懷疑這是一個陰謀 (或是說一種生態)
長久以來大部分人都把滑鼠看作是消耗品
這或許是硬體廠商刻意塑造的

舉個例子 同是周邊的機械鍵盤就不這麼像消耗品了不是嗎?


以下是軟體(韌體)的解法:
以機械鍵盤的軸來說好了
如青軸綠軸這種有聲段落軸來說
其過段落點後所發出的click聲響
其實來自於內部白色塑膠零件彈開
造成兩邊觸點以極快速度撞擊而發出聲音(並不是塑膠發出的聲音)

這種速度(與重量 鍵盤軸的動片重量比滑鼠微動大得多)下 彈跳是可預期的
那為什麼沒有發生"雙擊"?

原因在於在鍵盤的韌體內有做debounce
近期ducky不是有推出一個可以讓使用者自行修改debounce time的功能嗎?
就是那個東西

debounce time的意義是
例如debounce time設為5ms
那個同一個按鍵在5ms內如果觸發了兩次或以上
除第一次之外其他都會被視為彈跳 進而忽略掉

同理 滑鼠也是可以做的 且不會增加硬體成本
(只是不做而已)
所以常看到有些人質疑羅技應該用更好的微動開關
其實放錯重點
羅技連不花錢的方案都不採用了...



我們不是硬體製造商 沒辦法決定要做或是不做
所以無法從軟體下手


接下來介紹硬體的解法
不是要說換新微動開關喔XD
這方法非常簡單
就只是在微動開關上有作用的兩隻腳之間加上濾波電容
(就是比較靠近微動上白點點的那兩隻腳 或是藍點點 紅點點 黃金點點)

電容的大小 0.1uF(104) ~ 1uF(105)都OK
形式的話 有腳的陶瓷電容 或是 SMD 1206貼片陶瓷電容 都很合適
(羅技的話推薦有腳的陶瓷電容
因為羅技滑鼠在微動開關下 電路板後 塑膠底殼下通常都設計有支撐柱 必須要閃過)
以下是M585作為範例
https://imgur.com/53ygcIy
(上圖的M585我另外有把中鍵輕觸開關 改微動開關,有機會再另外分享 :)


就這樣 完工
有興趣的人可以拿一隻連點的滑鼠作實驗
沒意外的話可以撐到下一次換換病發作為止...


加上濾波電容是很常見debounce的方式

以下自問自答一些問題:
Q1:加上電容後滑鼠的按鍵觸發時機會不會受影響?
A1:按下時(MouseDown)不會 ,放開(MouseUp)的時間會延後特定時間(Q2)

Q2:會影響多少時間?
A2:以電容充電至1/2電壓的時間約為0.7RC來計算
滑鼠內MCU內部的上拉電阻以30K歐姆計算
電容以0.1uF來說
0.7*30*0.1= 2.1 ms = 每秒點擊上限470次
電容以1uF來說
0.7*30*1 = 21 ms = 每秒點擊上限47次
(註:以平凡人的手速都沒問題的 你如果超越加藤鷹 或是高橋名人的話就當我沒說...)

加電容的方式只對"連點"這種現象有效
其他例如點擊沒反應
或是持續按住滑鼠 卻會中斷
這種因接點本身所產生的問題都沒效


--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 119.14.80.79 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/Key_Mou_Pad/M.1594209255.A.827.html
※ 編輯: dream4magi (119.14.80.79 臺灣), 07/08/2020 19:58:45
kanetakusan: 推 07/08 19:59
a963085200: 好文,推一個,請受我一拜 07/08 20:00
a58524andy: 推 觀念正確 解說淺白 07/08 20:02
afuu: 推!學習了 07/08 20:05
mrlucas8891: 推 雖然我還是一樣手殘不會換 07/08 20:17
dichenfong: 大師 07/08 20:29
NCKUchemRx: 推推推 學到很多知識!! 07/08 20:42
xbgskg: 濾波電容是橘色的嗎? 07/08 20:54
是喔,就是照片中橘色三顆
ping870224: 0.7RC是指數函數的ln(2)*RC=0.693嗎,電路學忘一半了 07/08 21:10
在下是資訊人,電子學這部份只是略懂,公式自然是記不住...
需要用到的時候現在網上很多計算機,看一下圖表差不多0.7RC,差不多就好XD
ping870224: ,另外記得數位電路防彈跳我印象中記得最簡單的方式 07/08 21:10
ping870224: 是用Flip flop 07/08 21:10
這種方式應該是要在設計電路時就要加上去
ping870224: 回xbg大,像樓主橘色那個常見的大部分都是陶瓷電容, 07/08 21:14
ping870224: 電子材料行買就有了很便宜 07/08 21:14
qwe19272375: 推 07/08 21:17
kiwi03: 推 手邊剛好有一個可以換 07/08 21:38
一次買一包只用到幾顆也不划算,看看有沒有廢電器拆一拆零件回收使用XD
winiel559: 強 推個~ 07/08 21:53
ayuhb: 那ASUS換微動開關是多餘的?只需要加電容就好了? 07/08 22:21
我個人看法:ASUS可換微動的意義在於體驗不同手感,並且微動除了連點之外也是有其
他損壞情況的
kidla: 請問羅技 G PRO WIRELESS 做微動或電容 是不是不好拆換 07/08 22:48
查了一下網上的拆解圖,這之微動是在子板上,換微動是OK的,但加電容不是這麼容易
因為微動電路板正下方整個包覆起來了,或許可以在子板上找地方加,但就不是如文中
這麼單純
kidla: 謝謝 先推大神 07/08 22:48
wuliou: 不在產業界 不過通常開關debounce都是做在MCU上用程式寫 07/08 22:55
wuliou: 硬體要後續調整太麻煩了 07/08 22:56
做再韌體裡面當然是最便宜 彈性又大 但製造商不做 我們也只能動硬體部份了
dsa35197: gpw一根螺絲起子就搞定 07/08 23:07
twosheep0603: 從沒想過用濾波電容這招XD 07/09 00:12
sgouki: GPW某次的韌體更新,就屬於辦法一? 07/09 01:29
韌體更新還有其他更可能的原因,個人覺得並不包含這次討論的部份,羅技慣犯了..
沒理由相信他這次從良XD
sgouki: 主要是好奇,它這個韌體更新的說明是:改善點按防彈跳演算法 07/09 03:36
sgouki: ;看到樓主的文,才猜想是不是和辦法一是同一種? 07/09 03:36
那就看看這支滑鼠之後有沒有連點的情況就知道了,微動有做debounce的話可以撐
至少數倍時間。
enyaw5215: 推推 學習新知 07/09 08:32
lovinlover: 連點我還以為首推蛇蛇... 改來研究怎麼加工我的DA了 07/09 09:23
iwillbehere: 推 07/09 10:06
Salcea: 蛇蛇拿去換了微動多撐了好久 07/09 10:31
換微動時多加一顆電容會撐到天荒地老喔XD 怕維修師傅給你白眼就是了 讓他之後沒生意
AliasKuo: 最好的方法就是不要買羅技 07/09 13:18
這已經是整個生態的問題了,不是只有羅技而已,只是羅技市佔高,自然批評聲音更多
pennymarkfox: 可我覺得鍵盤也是消秏品耶... 07/09 14:17
你確定不是換換病或是松鼠症嗎?XD
※ 編輯: dream4magi (119.14.80.79 臺灣), 07/09/2020 15:13:00
Knuckleslee: debounce當然是滑鼠MCU的標配 07/09 15:26
Knuckleslee: 不然今天碰到的就不會是2連點,是5到10連點 07/09 15:27
Knuckleslee: 會認為鍵盤壽命較長也會包含開關數量分攤壽命的影響 07/09 15:27
其時說雙擊只是一種簡單的說法,因為雙擊在OS內是一種特定滑鼠事件,事實上在發生
當下,就算是三擊或是十擊,也只會觸發滑鼠雙擊事件。如滑鼠內MCU有做debounce,
連雙擊都不該發生了。還是是一種有做,但(故意?)做得不夠好?
※ 編輯: dream4magi (119.14.80.79 臺灣), 07/09/2020 15:41:10
Knuckleslee: 也有可能是interval設得比較短,來換取更好的操作性 07/09 15:49
Knuckleslee: 另外usb的1ms polling rate也能濾掉一些過快的連發 07/09 15:49
Knuckleslee: 在這種狀況下發生雙擊,微動的狀態真的已經不太好了 07/09 15:49
我再找時間來用硬體直接串滑鼠的訊號腳位,不經過微動開關,來計算如果MCU有做
debounce,那麼debounce time是多少。
sgouki: 查了國外官網的原文說明:Improves Click Debouncing 07/09 16:37
sgouki: Algorithm 07/09 16:37
sgouki: ,看起來和樓主的辦法一好像是類似,推測是羅技在高階有這麼 07/09 16:37
sgouki: 做? 07/09 16:37
Knuckleslee: 舉個例子,我最近拆過的便宜軌跡球,主控是EM84510 07/09 16:45
Knuckleslee: datasheet直接記載了debounce interval 12ms 07/09 16:45
這算是現成的滑鼠控制解決方案,大廠會有自己的一套方案,自由度是更大的,不過這也
或許能說明常有人說某廠滑鼠連點,但雜牌滑鼠卻活得長長久久...
※ 編輯: dream4magi (119.14.80.79 臺灣), 07/09/2020 17:18:02
foulhouse: 如果用光微動或光磁微動的滑鼠應該就不用除跳了吧 07/09 18:29
lolikung: 解彈跳MCU一定是有處理過啦 07/09 19:02
waroz: 原來還有這招,之前為了換微動麻煩還自己改插拔ww 07/09 19:30
ttjerry0204: 長姿勢 07/10 03:55
spadesA: 期待中鍵改微動開關教學 以前都沒想過這問題 07/10 04:07
spadesA: 壞掉都直接丟給原廠~~ 07/10 04:08
steven800308: ㄏㄠˇㄇㄥˇㄛ 07/10 08:48
Saren: 抓0.5個vdd是少了點 通常是0.7個vdd, 用0.85RC時間比較精確 07/10 13:54
flashseal: 先推 下次連點時 再來看看 07/10 13:57
Saren: 不對 應該1.1RC左右就到0.7個Vdd了 因為1RC~=0.63Vdd 07/10 13:59
0.7Vdd的確是比較保險
show632: 謝謝 學到觀念了 07/10 14:35
s2910: 推,謝分享! 07/10 14:47
Sirine: 微動真的出事 並電容也沒用啦 乖乖換微動吧 07/10 18:40
我從沒反對換微動阿XD
※ 編輯: dream4magi (119.14.80.79 臺灣), 07/10/2020 20:08:59
iloserSD: 推 07/10 22:17
rocker12321: 推 07/11 09:01
xam: MCU作debounce會有精確度限制,sample rate又要解析度兩倍 07/11 09:52
xam: 如果要精確不誤報,又要提升效率,MCU就要更快的版本.. 07/11 09:54
lee28119: 推 07/11 12:44
i3MQJ: 長知識了 07/12 00:48
bearinwhite: 快推 不然人家以為我們看不懂! 07/12 11:40
pp688039: 深度文,推 07/12 15:06
pp688039: 這篇應該入精華XD 07/12 15:07
gn01881106: 下次加看看 直接焊在微動的兩腳上囉? 07/14 04:39
gn01881106: 比較靠近白鍵的兩隻腳 07/14 04:40
※ 編輯: dream4magi (119.14.33.105 臺灣), 04/28/2024 04:43:03

你可能也想看看

搜尋相關網站