3.6. 電子學基礎¶
要從 GPIO 接腳驅動任何外部裝置,接腳的另一端都需要一個電路。基礎電子學中的三個概念——電壓、電流,以及兩者透過電阻所建立的關係——會出現在每一個這類電路裡。
3.6.1. 電壓、電流、電阻¶
電壓(伏特,V)是電路中兩點之間的電位差。晶片的供電軌相對於接地可能為 3.3 V;被驅動為高電位的 GPIO 接腳同樣處於 3.3 V。
電流(安培,A,或毫安培,mA)是電荷在導線中的流動。電流總會回到它的源頭,因此要讓任何電流流動,電路必須形成一個從供電端回到接地端的完整迴路。
電阻(歐姆,Ω)代表路徑對電流流動的阻礙程度。電阻的作用是在已知電壓下將電流設定為一個已知的值。
歐姆定律將三者連結在一起:
歐姆定律的三種形式。¶
用文字表達:電阻兩端的電壓等於流過它的電流乘以電阻值。已知三者中的任意兩個,便可透過代數運算求得第三個。
3.6.2. 二極體¶
二極體是一種雙端元件,它只在一個方向(從陽極到陰極)導通電流,並在另一個方向阻擋電流。
二極體只會從陽極往陰極導通。LED 是一種在導通時會發光的二極體。¶
二極體還有一個順向電壓(Vf)——當電流在導通方向流動時,它兩端的電壓降。一旦施加的電壓達到 Vf,二極體的行為就大致像一條導線;低於該值時,幾乎沒有電流流動。
3.6.3. LED¶
發光二極體(LED)是一種將其導通電流轉換為可見光或紅外光的二極體。亮度會隨電流增減;色彩則由 LED 的化學成分決定,而非由驅動方式決定。
典型的 LED 順向電壓:
紅色:1.8 -- 2.2 V
綠色或黃色:2.0 -- 2.4 V
藍色或白色:2.8 -- 3.4 V
指示用 LED 的合適工作電流為 5 -- 20 mA。較高的電流會更亮,但會縮短 LED 的壽命,也可能超出 GPIO 接腳的驅動上限。
3.6.4. 限流電阻¶
將 LED 直接接在 GPIO 接腳與接地之間,會讓幾乎不受限制的電流流過:一旦達到順向電壓,LED 看起來就近乎短路。在接腳與 LED 之間加入一個串聯電阻,可將電流設定在安全值。
串聯電阻設定 LED 的電流。¶
供電電壓在電阻與 LED 之間分配:LED 降下其順向電壓,電阻降下其餘的部分。根據歐姆定律:
R = (Vsupply - Vf) / If
對於由 3.3 V GPIO 接腳以 10 mA 驅動的紅色 LED(Vf ≈ 2.0 V):
R = (3.3 - 2.0) / 0.010 = 130 Ω
實務上,選取最接近且較大的標準值(150 Ω 或 220 Ω)。結果是 LED 略微暗一些,但有更健康的安全裕度。當不在意確切亮度時,以 200 -- 470 Ω 作為合理的預設值是個明智的選擇。
3.6.5. 為何每個部分都重要¶
每個 GPIO 輸出電路的樣貌,都源自上述四個概念:
電壓決定接腳上可用的能量。3.3 V 的 GPIO 有 3.3 V 可以分配給接在它與接地之間的任何元件。
二極體(在此例中為 LED)會以其順向電壓降的形式消耗掉一部分電壓,並拒絕在錯誤方向導通——它決定了方向以及固定的分配份額。
限流電阻消耗掉剩餘的電壓,並將剩下的預算轉換為受控的電流。少了它,LED 會抽取接腳所能供應的任何電流——通常足以摧毀其中之一或兩者。
歐姆定律使得電阻值可以被計算出來:在已知剩餘電壓與所需電流的情況下,
R可透過代數運算求得。
電壓、電流、電阻、二極體,以及一條重新整理過的方程式,就足以設計出每一個基本的 GPIO 輸出級。
這些相同的元件一直都藏在板載 LED 的背後。machine.LED("LED_RED").on() 之所以能點亮 LED,是因為相機的電路板早已提供了它周圍的一切——限流電阻、通往接地的導線、LED 本身——而這個類別只是切換它們背後晶片上的 GPIO。「一行程式碼點亮一顆 LED」的說法是對的;它只是「驅動那個電路」的一種簡短說法。把這層抽象剝開,剩下的正是上面的那個電路。
machine.Pin 就是同一塊晶片,只是沒有周圍那些元件被暴露出來。指令碼直接控制接腳的電壓;你則自行提供電阻(依歐姆定律決定大小)、LED,以及通往接地的回流路徑。這四個相同的概念,會以略有不同的組合形式,再次出現在開關防彈跳、PWM 濾波以及馬達驅動的背後。