《Youtube》滑鼠連點的原因與解決方案-實作修復G102滑鼠(便宜有效無須更換微動開關)

工作熊在前一篇文章開始的地方有閒聊了一會,自己修理滑鼠按鍵連點的問題,當時只是稍微提到自己在滑鼠微動開關的兩根引腳之間焊接了一顆0.1uF的陶瓷電容。這次,我們就稍微深入地來討論一下自己是如何修理好滑鼠連點的問題,不過我自己並非電子專業,所以討論的內容也會比較粗淺,如果有路過的專家也請幫忙指點一下。

如果你只想知道,如何在滑鼠內焊接一顆電容來解決按鍵連點的問題,那就請直接跳後面實作的部分吧!前面我會先稍微說明一下,滑鼠發生連點的原因,也會稍微說明解決連點的一些思路與原理。

在前一篇文章中,我有說過自己新買的幾隻L牌滑鼠都用了不到半年,按鍵就開始陸續出現連點的問題,之所以會發現,是因為我最近比較常玩遊戲,單擊滑鼠後卻出現連點,使得遊戲出現誤動作,才覺得滑鼠連點真的是個大問題。其實,我自己使用滑鼠的經驗,通常都是用到滑鼠點擊不良或滑動不順了,才會更換滑鼠,一般如果是文書處理,就算真的出現連點,應該也不會造成太大的問題,但玩遊戲就真的就不能出現連點的問題。

總之,滑鼠出現了連點,確實給我帶來了麻煩,於是,我就開始在網路上搜尋解決的方法,結果還真的發現有一堆人在YouTube上面分享,如何更換微動開關(micro switch),來幫滑鼠續命的大招。原來,滑鼠連點是個常見的問題啊,而且這可能還是滑鼠廠商的陽謀,一個變相強迫消費者更換新滑鼠的[不能說的秘密]。否則,一隻滑鼠用個五年不壞,廠商應該會少賺很多錢吧。

話說回來,拆開滑鼠不難,但問題是更換微動開關可就沒那麼簡單了。如果沒有適當的吸錫工具,或是有多次解焊經驗的老手,想要從PCB上拆下微動開關,還真的有點給它麻煩呢。而要將一顆新的微動開關焊接到PCB上,還得留意不可以有浮起問題,否則按鍵的行程就會受到影響,還會影響到觸感。

後來,我在PTT上看到,有人分享了一個解決滑鼠連點的妙招,只要在微動開關作動的兩隻引腳之間,接上一顆0.1uF(法拉)~1.0uF(法拉)的濾波電容,就是比較靠近微動開關正面白色或藍色按鈕的那兩隻腳,這樣就能增加按鍵的去抖動時間(debounce time),也就可以減少因為按壓簧片開關,機械接觸不穩而產生的連點問題。

按鍵按壓抖動問題

這裡要先說明一下,所謂的”抖動(bounce)”,也就是彈跳,指的是在我們按下電源開關或是鍵盤按鍵時,理論上,這時候電壓應該要從0伏特直接上升到Vdd(裝置工作電壓),但實際上,卻會因為種種因素而使得電壓在0與Vdd之間來來回回震盪好幾次,等到震盪越來越小,最後訊號才會趨於穩定。而這段訊號震盪的時間就稱為”抖動時間”。

簧片開關

另外,也要稍微解釋一下,一般微動開關的構造,大多是用塑膠外殼來包覆住一個金屬簧片(metal switch),在簧片的正上方會有一個活動的壓柄,連接到零件外部,當成按鈕,如果是常開端子,在自然狀態下,微動開關兩腳間的線路為開路,當按壓下壓柄也就相當按壓下金屬簧片時,就會導通微動開關兩腳間的線路。使用金屬簧片會比較有按壓及反彈的真實觸感,而一般金屬簧片的壽命也比較長,所以很多強調觸感及壽命的產品大多會採用金屬簧片的按鍵設計。

除了金屬簧片外,其他常見的還有薄膜簧片(poly dome)經常用在許多平面的按鈕上,比如工具機程式控制器上的按鈕,老實說這種薄膜簧片的按壓觸感不怎麼舒服,而我們一般使用的電腦鍵盤內也是使用這種薄膜簧片,只是它搭配了橡膠的彈性及塑膠硬殼後,也可以起到一定的按壓反彈觸感。另外,還有一種直接使用橡膠+碳粉的按鍵也經常被使用,這種按鍵按壓的觸感比金屬簧片軟一點點,反彈力道也比較柔軟,我們經常可以在遙控器上發現這種按鈕。

按鍵開關發生抖動的原因

我們接著回來說,這種加一顆電容去抖動的方法聽起來不錯,而且比其他人建議換整顆微動開關簡單多了。這也讓我回想起,以前公司的產品好像也有出現過類似按鍵連點的問題,而這類問題,其實~不只會出現在簧片開關的按鍵上,它其實也很容易出現在比較大顆的按鍵上,比如[Enter]鍵,這是因為機構上為了要確保使用者在按壓大按鍵的任何一個角落時,都要確保可以觸發功能,所以就會在電路上設計至少兩個以上的按鍵線路接觸點,只是這麼一來,就容易出現按壓時兩個接觸點在極短時間內先後被觸發,讓系統誤判為按鍵連點的訊號問題。而簧片開關(metal dome switch)在使用一段時間後,也很容易因為彈性疲乏、偏移、磨損、氧化、或沾汙等因素而使得簧片與線路接觸不穩,而出現抖動的問題。

解決微動開關抖動可以分成軟體韌體、硬體兩種方案

而當時我們的處理方式,好像是分成兩部分,而這兩部分也是大多數去抖動都會使用的方法。針對那些已經出貨給客戶與已經躺在庫房內的成品,只透過修改軟體(一般是韌體)來解決抖動問題,而對於半成品與還未生產的產品,則修改硬體來解決。

韌體去抖動的方法

透過韌體來解決抖動的好處,是這樣就可以不用動到硬體,也就不需要拆開產品機殼、動到烙鐵,只需要重新下載韌體或patch就可以了。比較簡單的方法,就是在系統檢測到有按鍵作動時,先等待一小段時間,比如說10ms,之後才再次檢查按鍵狀態,因為一般按鍵的抖動都發生在剛剛觸發的10ms內,之後就會有一大段穩定的按鍵接觸時間,所以~只要忽略掉這段容易發生抖動的時間再檢測按鍵的訊號就可以避免因為抖動而造成的誤判。當然,韌體解法一定會有些不盡如人意的地方,因為每個人的使用習慣不同,總會有那麼少數人在按壓按鍵時產生與別人不一樣的抖動情形,所以有可能需要調整很多次才會找到一個韌體解決方法的最佳參數值。再說了~各家產品的使用特性也都不盡相同,所以,韌體的解法也不會只有一種,建議最好多方嘗試後選擇一個適合自己產品的最佳解決方案。

也不知道這是不是我個人的感覺,韌體的解法似乎無法做到100%讓所有人滿意的地步,要是有專家路過,就幫忙指教一下,畢竟這個領域不是我的專長。

硬體去抖動的方法

而硬體去抖動,最簡單的方法是套用RC電路充放電的特性,它可以讓按鍵在被按下時候,所觸發的訊號變得較為平滑,基本上就是利用電容充放電的特性,使原本劇烈波動的訊號變得較為遲鈍,換句話說就是變得較不敏感。如果是需要穩定、高速響應的場景,則建議使用[隧道二極體]組成的所謂「施密特觸發器」來去抖動。當然,也可以同時混用硬體與軟體解方來得到一個較為穩定訊號。

如果是要解決滑鼠按鍵連點的問題,通常是左鍵,因為抖動比較單純,一般只要採用RC電路就可以了,就我個人的了解,只要在滑鼠微動開關的電源(Vdd)與接地(GND)兩隻引腳間,接上一顆適當的電容就可以達成去抖動的效果。

決定硬體去抖動的電容值

聽到了這裡,可能有人會問「不是說要套用RC電路嗎?怎麼只加了一顆電容,那電阻呢?」這是因為滑鼠按鍵的訊號要經過MCU來處理,而滑鼠內的MCU通常都會有內建的上拉電阻,這個阻值可能範圍會落在10kΩ到100kΩ之間,視不同MCU的型號而定,建議查詢個別MCU的datasheet來做確認。而G102滑鼠內使用的則是STMicroelectronics(意法)的MCU,查詢其database後,其GPIO的上拉電阻為30~40KΩ,基本上我們可以先將其電阻假設為30kΩ。

接下來我們還得把電容的充電時間列入考慮,一般我們會以電容充電電壓超過63%來當作邏輯閥值開關的參考點,這麼一來,充電時間通常就會以0.7*RC來計算,如果將邏輯閥值調高到70%,那充電時間就必須調整為1.2*RC來計算。至於為何63%是乘以0.7,而70%是乘以1.2,我就沒有深入了解了。

剩下的就是計算並選用適合的電容值了。假設我們想要去除10ms內的抖動,那麼就該選用0.47uF的電容。因為0.7*30(KΩ)*0.47(uF) = 9.87ms。

請注意,以上的計算是基於一些假設前提的,如果你滑鼠的MCU不是意法(ST)的,那GPIO的上拉阻抗可能就不會一樣,選用的容值可能就要調整一下。

至於為何RC乘積的結果會是時間,這是因為

因此,將電阻R和電容C相乘:

R*C=(V/A)⋅(C/V)=C/A

所以,R*C 的單位就是時間(秒)。

Logitech G102滑鼠連點使用硬體去抖動

接下來就是實作的時間了,我實作的滑鼠是羅技的G102,拆開滑鼠機殼不難,總共有3顆螺絲,有兩顆螺絲分別藏在兩個靠近滾輪的腳墊底下,而第三顆螺絲則藏在產品標籤底下,建議使用吹風機加熱腳墊及產品標籤後才撕開,因為加熱可以軟化黏膠,可以不破壞腳墊及標籤的情況下更輕鬆的撕開。

打開滑鼠後,內部還有5顆螺絲需要鬆開,其中有2顆是鎖住側面按鈕小板子的螺絲,另外有3顆則是鎖住滑鼠主電路板的螺絲,鬆開5顆螺絲後就可以很順利地把整個滑鼠內部的電路板連同機構從塑膠殼內拿出來了。

G102滑鼠的微動開關使用的是歐姆龍的D2FC-F-7N型號,操作時的按壓力道較輕,只是我這次並不打算更換微動開關,而只是要在電路板背面的微動開關兩隻引腳上架接一顆電容。

量了一下其引腳到引腳的距離是5.08mm標準腳距,如果計入環形焊墊(annual ring),那可以焊接的距離大約是在2.8~4.0mm,而滑鼠的塑膠底殼上通常會設計有支撐柱或塑膠柱,用來撐高電路板,以避讓通孔零件超出電路板的引腳,以及一些SMD零件,這也正好給予我們焊接一顆電容的空間,我量了一下支撐柱及肋條的高度為3.0mm,而這也正是一般機構會設計的高度。

所以,我們可以有兩種選擇,其一是選擇SMD型號1206尺寸的陶瓷電容,其標準長度為3.2mm、厚度為1.68mm,剛好可以塞進微動開關的兩引腳間,不過在焊接SMD電容時,需要特別留意烙鐵焊接時零件兩端的受力情況,如果有受力不均或焊接時過度用力,就很有可能會造成電容破裂的問題,有時候就算剛焊好的時候沒有發現破裂,但可能已經內傷,或是長期受到彎曲應力,一段時間後還是會發生破裂。

其二則是選擇傳統有腳的陶瓷電容,不過選用的時候要注意厚度,印象中會有三種厚度可以選擇,分別為2.3mm、2.6mm及3.2mm,建議不要選到3.2mm厚度的,否則焊接後可能會與滑鼠的底殼干涉。

因為我自己對焊接電容沒有信心。於是,我就跑到了電子材料行買傳統有腳的陶瓷電容,不過找了好久就是沒找到編號474的0.47uF的電容,所以最後選了編號104的0.1uF傳統電容,一顆只要台幣 2 塊錢,便宜又實惠,這可比更換微動開關簡單且便宜多了。

我原本還擔心只用0.1uF去抖動的時間會不會給它太短了,結果嘗試下來的效果還不錯,用起來一切正常,也沒有再出現連點的問題。到目前為止,我已經在三隻G102滑鼠上的左鍵各焊接了一顆0.1uF的陶瓷電容!簡直是滿血復活。

不過,工作熊還是得再強調一下,這個方法只能解決滑鼠連點問題,如果是點擊沒反應,或是持續按住滑鼠拖曳中斷的這種因本身接觸不良所產生的問題就沒效了。

最後~偷偷說一下,網路上好像也可以找到攔截滑鼠動作的應用程式,它的主要目的是滑鼠修改器,不過也可以設置滑鼠去抖動的時間,不過~這是第三方的程式,可能存在風險,建議要謹慎使用。


YouTube影片:滑鼠連點的原因與解決方案-實作修復G102滑鼠

Podcast:滑鼠連點的原因與解決方案-實作修復G102滑鼠


延伸閱讀:

 
 
訪客留言內容(Comments)

No comments yet.


訪客留言注意事項:
1.首次留言通過審核後內容才會出現在版面上,請不要重覆留言。
2.留言時請在相關主題文章下留言,與主題不相關的留言將會被視為垃圾留言,請善加利用【搜尋框】尋找相關文章,找不到主題時請在「水平選單」的「留言板」留言。
3. 留言前請先用【搜尋框】尋找相關文章,自己做一點功課後再留言。沒有前因後果的內容,工作熊不一定會瞭解你在說什麼,就更無法回答你的問題。  
4. 工作熊並非某一方面的專家,所以回答的內容或許會有不正確的地方,服用前還請三思。如果您想詢問關於電路板方面的工程問題,請前先參考這篇文章【詢問工程問題,請提供足夠的資訊以利有效回答】 把自己的問題想清楚了再來詢問,並且請提供足夠的資訊,這樣才能有效回答問題。
5. 工作熊每則留言都會看,但不會每則留言都回答,尤其是只有問候之類的內容。  
6. 留言詢問時請注意您的態度,工作熊不是你的「細漢」,更沒有拿你的薪水,所以不接受吆喝工作熊的態度來回答你的問題。  
7. 原則上工作熊不接受私下電子郵件、電話、私訊、微信或任何即時通聯絡。  
8. 自2021年7月起Google將停止最新文章電子郵件通知,如果你想隨時接收部落格的最新文章可以參考這裡

您有話要說(Leave a comment)

(required)

(required)