透過Raspberry Pi使用LED和馬達:如何處理大電流

本文最初發佈在deviceplus.jp網站上,而後被翻譯成英語。

在本系列文章中,主要是透過使用Raspberry Pi打造的簡單專案來學習電子設計的原理及基礎知識。此次的分享嘉賓是伊藤尚未先生,一位媒體藝術家和作家,以講解“更深層次的原理”而聞名。上一篇文章中我們談了LED燈閃爍的原理,接著我們來學習如何透過Raspberry Pi處理稍大的電流以控制馬達。

目錄

  1. 前言
  2. LED 的結構
  3. LED 的性能
  • 兩種亮度表述方式:坎德拉和流明
  • 色溫
  • 廣角型和窄角型
  • 適配選型
  1. 嘗試透過Raspberry Pi控制馬達
  • 大電流的處理方法
  • PWM控制
  1. 結論

1. 簡介

在上一篇文章中,我們嘗試用Raspberry Pi上的GPIO來點亮LED,由於只要涉及到處理電子元件,就必須留意流過電子元件的電流,所以我們用電阻器對流過LED的電流進行了限制。

我們也探討了可以用歐姆定律來計算。如今市場中的LED琳琅滿目,所以需要仔細閱讀不同LED的額定參數表和技術規格書。在電路設計過程中,沒有比注意電壓和電流更重要的了。

電壓過高或電流過大均可造成損壞,好不容易設計出來的產品如果因為電壓電流問題功虧一簣,實在令人扼腕。

LED using the GPIO on Raspberry Pi

可能會著火甚至爆炸

但是,即使出現這種情況,也不要輕言放棄(我也有這種經歷),失敗乃成功之母,但也絕不提倡“刻意破壞”作品!除了損壞外,還有可能出現元件爆炸或過熱等情況,可能會使人受傷甚至引起火災,因此必須格外注意。

言歸正傳,接下來我們會再稍微詳細地探討一下LED的性能。

2. LED 的結構

子彈頭LED的內部結構如下圖所示:

LED setup

子彈頭LED的內部結構

實際發光元件是中間圓盤中的那個小晶片。圓盤就像一個反射器,罩殼頂部設計成透鏡形狀,方便燈光散射。

部分產品的陽極側也可能會連接一個圓盤,所以並不能全部透過內部引線框架的形狀來確定LED的結構。

3. LED 的性能

有兩種亮度表述方式:坎德拉和流明。

仔細閱讀LED的技術規格書後發現,亮度表述方式有兩種,即“cd(坎德拉)”和“lm(流明)”。兩者均採用數位的方式表示亮度,即數值越大亮度越高,但各自的含義存在本質區別。

將光源發出的光視作“線”(即光束)時,光源的發光總量用“lm(流明)”來表示。在實際應用中,某些器具因為形狀的原因,由於透鏡和反射器的作用,光線可能無法向背面散射,而是朝向一個方向發射,將單位立體角的光通量稱為光強,用“cd(坎德拉)”表示。

此外,大家可能還知道亮度單位“lx(勒克斯)”,表示光接收表面的亮度(照射在單位面積上的光通量)。基礎知識大概就這些。

LED capacity

順便提一下,這種常見的子彈頭LED,由於樹脂罩殼內的反射作用,光線多少會從背面漏出來一些。但如在功率LED的背面配置一塊鋁基板,不僅可用來散熱,也能阻擋光從背面漏出來。從具體產品看,會發現功率LED的亮度多用流明(lm)來表述,可能是考慮到這樣的產品結構而選用的單位吧。

色溫

色溫的單位為“K”(開爾文)。比如:在熔爐中敲打鐵釘時,鐵釘會逐漸變紅,並發出紅光,這種現象稱為“熱輻射”;隨著溫度升高,顏色會變黃。熱輻射規定了溫度變化引起的顏色變化,並以符號來表示。

特別是白光LED的光線顏色包從含淺白色到橙色的各種顏色,稱為燈泡色溫,色溫值越高,顏色越淺。

廣角型和窄角型

也有“半形”等表述方式,角度代表光的擴散範圍,具體取決於罩殼透鏡和引線框架的結構。例如,亮度相同的LED,如果是窄角型LED,光線中心最亮,其周圍突然變暗,而如果是廣角型LED,則光線擴散範圍較廣,而且能一定程度上均勻照亮。

適配選型

現在大家對LED已經有了一定的瞭解,以後選型時相信大家能夠選擇適合需求的LED。

例如,對於某些作品來說越亮越好,當然,也需要結合預算;但如果主要用於照明,那麼最好選用亮度較高的LED。如果主要用於顯示,則選擇亮度不高的LED也可以。比如在夜間或光線較暗的地方,如果採用亮度較大的7段LED,則會出現字母顯示模糊不清且很難看清數位的情況。

4. 嘗試透過Raspberry Pi控制馬達

接下來,我們來談談Raspberry Pi。

如何使用Raspberry Pi控制LED以外的其他設備?例如,需要的電流比LED電流更大的設備(比方說馬達),該如何控制?

說起模型製作用的直流馬達,非常有名的要數萬寶至馬達公司生產的馬達了。我們以標準的FA-130RA馬達為例來介紹吧。

DC motor

外包裝性能表上標注的電壓和電流分別為1.5V-3V和500mA,這種馬達通常多用於模型和玩具,所以一般根據乾電池電源來設置其電壓。

voltage setting

馬達透過磁場中線圈接收的力來驅動馬達旋轉。另外,由於線圈本身會產生電抗等看不見的電阻,所以難以掌握電流的情況。

暫且只能以包裝上標注的3V和500mA為准。

以2SC1815電晶體為例,由於流經電晶體集電極的電流高達150mA,所以500mA電流高於其額定電流值。這種情況該如何處理呢?

對此有幾種處理方法。

大電流的處理方法

例如,可使用馬達驅動專用擴展板或馬達驅動器IC,具體選用哪種方法取決於擴展板和IC的功能,所以可直接根據正轉、反轉和制動等使用方式來選用。

另一種方法是使用繼電器。繼電器是與線圈(即電磁體)接觸的一種機構,所以有些繼電器可能需要配備電晶體(與LED那篇一樣)等來驅動線圈單元。可以說,與開關一樣,只要在額定範圍內,電源(100V)即可正常導通和關斷。

另外,使用時會產生物理接觸,所以其使用壽命取決於使用頻率。還可採用易用性相同、由半導體組成的SSR(固態繼電器)。

SSRs Solid State Relays

圖片為透明封裝的繼電器(可看到內部線圈)

以上列出了幾種不同的方法,可能還有些我不太瞭解的方法和產品,總之我認為最好選用符合目標作品需求的方法。

現在,讓我們回到最基本的做法,用電晶體來嘗試驅動。

我選擇的是可承載較大電流的2SC2655L,其集電極額定電流高達2A,這麼高的電流這還不足以驅動這台直流馬達嗎?與LED那篇的介紹一樣,可以透過電路來連接。

connect with the same circuit as the LED

電路是用來驅動馬達的電路,從GPIO透過一個1kΩ電阻器將電晶體的基極與集電極相連接,電路示意圖如下:

circuit turns a motor

麵包板組裝示意如圖如下:

breadboard assembly

我在Scratch上使用了和上一篇文章一樣的程式,也就是說,只是改變了LED等元件,程式可以採用相同的程式。雖說如此,運行起來卻完全不同,這是因為馬達與LED不同,並不是那種可以突然開啟、突然停動的元件。

我暫且嘗試了以下的形式。聲明GPIO,將引腳4設置為輸出,然後每秒重複開關10次。

program on Scratch

我在馬達上配有風扇,暫且將它當做電風扇來用吧。可以說這是一個風扇實驗設備,可在麵包板上嘗試各種不同的配置。

透過開關的ON/OFF即可轉動馬達。

那麼,如何控制轉速呢?

最近一些電風扇能夠間歇性送微風,例如“微風模式”,我們也可嘗試實現這種模式。

PWM控制

PWM是一種常用的數位控制方法。

PWM即“脈衝寬度調製”,本質上是一種透過調節快速信號週期中的脈衝寬度來改變一個週期ON/OFF狀態的方法。如果處於ON時間長的狀態(如Fig. 2),則其電量將大於ON時間短的狀態(如Fig. 3)下的電量,換句話說,直流馬達在Fig. 2狀態下轉速較快,反之亦然。

pulse width modulation

現在,讓我們嘗試在Scratch中來構建。聲明GPIO,將引腳4設置為PWM輸出,打造變數”power4″並將初始值設置為0。

在計算模組中將”power4″輸出到GPIO4。另外,也可將螢幕中的變數顯示模式設置為滑塊顯示,透過滑動按鈕來控制風量。此時,如將滑塊最大值設置為“1023”,則風扇將全速運轉。

pulse width modulation

接下來就可以嘗試自動停止送風、重新開始送風、重複該模式的運行方式了。另外,我們還會嘗試導通LED。
還是透過PWM控制,LED也會隨風扇轉速變化而變亮和變暗。

電路圖如下所示:

circuit diagram

麵包板如下圖所示:

breadboard diagram

Scratch程式如圖所示:

scratch diagram

提高變數值,並使該狀態按最大值保持5秒;然後降低變數值,在0處保持5秒,如此重複。LED的亮度也隨之變化。

看起來我們的作品越來越像實驗設備了!

大家覺得怎麼樣?現在我們得到的是一個可以清涼一夏的風扇。

4. 結論

雖然只是一名媒體藝術家,但做實驗時我更感覺自己像個工程師,至少看起來像,構建這樣一個設備會讓人產生這種感覺。

從某種意義上說,這次我們做出了工程師才能做出來的作品。在下一篇文章中,我們將嘗試使用感測器,同時還會更深入地思考相應的原理和組裝方面的問題。

畢竟,就像作畫一樣,只有充分掌握了顏料的特性和工具的使用方法後,才能創作出藝術作品。