fbpx

自作鍵盤入門 – 機械鍵盤的基本電路

歡迎來到 [鍵入佳境] 自作鍵盤系列的入門文章,今天我們來介紹機械鍵盤的基本電路。

機械鍵盤

機械鍵盤是以機械元件的動作來判斷按鍵是否有壓下。以紅軸的機械動作為例,在紅軸的機械軸當中有兩片金屬,當按下軸的時候,壓到底,就會讓兩片金屬 “碰” 到一起,形成了所謂 “導通” 狀態。

switch-red
紅軸

機械鍵盤的電路

電路是電子元件的線路。每一個電子元件之間需要互向溝通,譬如我們要將字元 ‘A’ 從 CPU 傳遞到記憶體,就需要將 CPU 與記憶體透過電路的方式連接。

corne_part_back-2
Corne 電路板
Mint60_keyboard_example_10
Mint60

機械軸其實只是開關

機械鍵盤的軸,其實只是一個開關,原理就跟一般開關一樣,其實沒有什麼特別,就像你按下電視遙控器,電視會打開一樣。當你按下按鍵的時候,就是一個開關被觸發。

按鍵未壓下的狀態

當你按下開關之後,就會變成一個導通的狀態,也就是連接,像一條導通的電路一樣。

按鍵壓下的狀態 – EasyEDA
基本按鍵電路圖 – EasyEDA 製作

VCC 就是電源,GND 是接地,當開關沒有被按下的時候,控制器會偵測 (偵測點 1) 到高電位,按下開關之後,偵測點 1 會直接呈現接地狀態,所以控制器會偵測到低電位,也就是當低電位時,代表按鍵被按下了 (此電路只是提供一個簡單的範例)。

鍵盤矩陣 (Keyboard Matrix)

控制器會需要一個 I/O 腳偵測每一個按鍵的開或關狀態,那如果我們有 104 顆按鍵,不就需要 104 個 I/O 嗎?多數的控制器都沒有這麼多 I/O 腳,所以我們利用鍵盤矩陣的方式,將電路分成行與列,利用交錯的方式來偵測按鍵是否有按下:

透過行與列的方式,所以我們只需要一個 5×5 的矩陣,就能控制 25 個按鍵,看你需要幾個按鍵,就設計矩陣的 I/O 腳位即可。

基本按鍵原理與鬼鍵 (Ghost Key)

基本按鍵原理

鍵盤矩陣的運作方式是透過掃描的方式逐一掃瞄行與列,利用改變行電位,然後偵測哪一個列的電位有改變,就知道哪一個鍵被按下。

掃描時,首先會設定 Column 1 變成高電位,我們用 VCC 來表示, 所以當按下 SW2 的時候,Row 1 就會收到高電位訊號,若是 SW2 是 ‘A’ 這個按鍵,控制器會送給電腦 “A” 按下,控制器會紀錄 SW2 是按下狀態。

接下來 Column 1 會回復成低電位,Column 2 會變成高電位,若是 SW3 被按下,Row 1 就會是高電位,若是 SW5 被按下,Row 2 會是高電位,一直如此到所有 Column 掃描過。

接者又重新來到 Column 1 變成高電位,若這時 SW2 放開了,Row 1 會是低電位,控制器因為先前紀錄 SW2 是按下狀態,現在低電位表示被放開了,控制器會送給電腦 “A” 放開,控制器又紀錄了 SW2 是釋放狀態。一直重複這個循環,所以當你按下按鍵時,其實電腦會收到按下與釋放的兩個狀態喔!

SW2 被按下時

所有按鈕的 Column 與 Row 的狀態如下:

Column 1 HIGH + ROW 1 HIGH = SW2 被按下 
Column 1 HIGH + ROW 2 HIGH = SW4 被按下
Column 2 HIGH + ROW 1 HIGH = SW3 被按下
Column 2 HIGH + ROW 2 HIGH = SW5 被按下 

那什麼是鬼鍵呢? 如下狀況時,這兩個狀況都會造成控制器認為 SW5 被按下。

雖然有了鍵盤矩陣,但因為電流是會亂跑得,只要是導通的線路上,電流會充滿整個電路,於是就會發生所謂的鬼鍵!造成誤判 SW5 被按下。

機械鍵盤的基本電子零件

二極體

使用二極體就能防止鬼鍵!因為二極體會限制電流的方向,讓電流只能朝單獨的方向前進,就不會發生鬼鍵的問題。

二極體有多種樣式,在自作鍵盤的時候最常會用到的應該是插件式的元件,如圖:

Mint60 Install Diode
Mint60

鍵盤常用的二極體編號是 1N4148 ,分為插件式 (DIP) 與貼片式 (SMD),插件式地的一般表面可能會寫 T4 或是 T3 等字樣,會有一條線來區別級性,從左到右是二極體的電子元件圖、 插件式 (DIP) 與貼片元件 (SMD) 。插件式與貼片式都有明顯標示了一條線,就跟元件圖的方向一樣:

最後加上二極體後,就不會出現鬼鍵了:

完整的基本鍵盤電路圖

控制器

控制器可以想像成鍵盤的 CPU,就是主要的心臟。我們會在控制器當中安裝 QMK 軟體,控制器就會開始偵測每一個按鍵的狀況,當按見被按下時,就會依照設定值送出訊號給電腦。

一般常見的控制器有 Arduino Pro Micro 與 Teensy 2.0 兩種。像是 ErgoDox 系列的經典鍵盤,左手使用的是一個 I/O 擴展 IC,MCP23018,透過右手的 Teensy 2.0 來發送訊號給左手 MCP23018 來掃描左手按鍵,再回傳電腦。

後期大家將左右手都改為 Arduino Pro Micro,方便購買與更加便宜。

外殼

自作鍵盤的外殼如果不是自己使用 3D 列印或是購買現成的話,一般來說都會使用壓克力來當作外殼。

壓克力外殼

壓克力一般會使用 3mm 到 5mm 的壓克,有兩種,一種是使用約 5 層的 3mm 壓克力,將整個 PCB (電路板) 包起來,整個鍵盤會很堅固,但是也會很重,像是 ErgoDox。另一種是只有底座跟一片定位版,中間透過銅柱的方式支撐,而 PCB 會藉由軸與定位版的方式固定,PCB 像是夾漢堡一樣,例如 ErgoDash。使用壓克力的好處是便宜,並且透光,你也可以選擇壓克力的顏色。

PCB 材質的外殼

還有一種比較高級的外殼,直接使用 PCB 當作定位版與底座,優點是材質特殊,看起來非常漂亮,但是缺點是若是你的鍵盤有底光或是背光,就看不到摟,Crone/crkbd 有 PCB 定位版與外殼。

結論

對自己做鍵盤有更深的認識了嗎?下次我們會來講一些基本工具,如果喜歡我們的文章,記得訂閱喔!有問題可以留言詢問!

Show CommentsClose Comments

Leave a comment