[Arduino] Arduino開發板 - 外接LED電壓電流量測
![]() |
Arduino with LED circuit. |
基本上,每個玩Arduino開發板的人,都碰到爛掉的經典案例,就是"LED Blink" (LED閃爍)。而此一案例也是被Arduino官方給寫進程式範例中。
以上圖來說,整個電路就是由3號pin進行電力輸出,串接經過一個220 Ω的降壓電阻後,電力進入LED,再到接地pin (GND)。
Arduino程式燒錄後,LED燈開始閃爍。結束。
相當基本,好像就這樣而已。少了點樂趣?
那到底LED那裏的電壓跟電流到底怎麼變化?
其實我們是沒看到的,該如何去看到,就是本文的內容了。
若使用三用電表去量測電壓及電流,那可能需要兩支表分別量,或是一支表量兩次。這也是一種測試方式。不過三用電表的反應時間及量測精確度,可能會造成看不到合理數據。
既然前陣子入手了示波器,還有相關的電流急急棒,那就有戲了。
接下來將會使用示波器來量測外接LED的的電壓及電流變化。
這是個好機會,可以看到實際的量測效果。
Arduino與示波器接線圖
Arduino板與LED及降壓電阻的串聯電路,維持不變。
示波器的電壓跟電流探棒偵測點,請參考下圖。其中電壓探棒以紅線表示,藍線表示電壓探棒的GND端,箭頭處表示測點。而電流探棒以黑線表示,圈圈處表示探棒勾住電線的位置。
![]() |
示波器電壓及電流探棒偵測點示意圖。 |
Arduino code
Arduino板的程式碼如下所示。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
Sketch name: Blink_LED_via_a_Specific_Pin | |
Suggested board: Arduino UNO | |
Purpose: | |
1. Blink the LED via a specific pin. | |
2. The output pin for the LED can be changed conveniently via the int variable "LED_pin." | |
Suggested system setup: | |
The LED is in series with a 220 ohm resistor for avoiding the destruction of the LED. | |
Date: 25 June 2021 | |
Author: Dr. Hsien-Ching Chung | |
ORCID: https://orcid.org/0000-0001-9364-8858 | |
*/ | |
int LED_pin = 3; // LED output pin | |
// The setup function runs once when you press reset or power the board. | |
void setup() { | |
pinMode(LED_pin, OUTPUT); // Set the output pin for LED | |
} | |
// The loop function runs over and over again forever. | |
void loop() { | |
digitalWrite(LED_pin, HIGH); // Turn the LED on (HIGH is the voltage level) | |
delay(1000); // wait for 1000 ms | |
digitalWrite(LED_pin, LOW); // Turn the LED off by making the voltage LOW | |
delay(2000); // Wait for 1000 ms | |
} |
示波器量測圖
量測出來的電壓變化大約為1.9 V。提供1.9 V電壓給LED一秒後休息2秒,再重新提供電壓。
電流變化則是15 mA。
結果吻合Arduino code的設定。
![]() |
示波器量得外接LED的電壓及電流變化。 |
量測數據與規格比較
由於使用的是爛大街的紅光LED,因此手頭上沒有該LED的datasheet。
但可由網路上取得一般對紅光LED的技術描述。
本次測試的數據(1.9 V@15 mA)與LED的I-V curve相比,數據合理。
參考資料:
LEDs - Light 'em, Without Smokein'em!
The Light Emitting Diode
示波器調整建議
以下有一些調整建議,可以使示波器獲得較好的數據。
- 使用[Horiz]選擇Roll模式
- 使用[Acquire]選擇High Res模式
在判別電流值時,示波器的調整扮演了很重要的腳色。以下示範一些沒調整好的狀況。
Acquisition
如果Acquisition沒開High resolution時,電流分布範圍過大,非常難以判別數值。如下圖所示。
![]() |
電流分布範圍過大(綠色區域),非常難以判別數值。 |
此電流範圍過大問題,勉強可以調整電流顯示檔位,來變更顯示圖面,但仍是不準。
![]() |
調整電流顯示檔位,來變更顯示圖面,但仍是不準。 |
Roll模式
若在一般模式,會看到波形從左邊到右邊,一路變化過去,看起來好像data漸漸被洗過去。
有的人會覺得,沒差啊,反正只要對好時間,就可以看到變化圖了。
這裡有個小魔鬼。
雖然,確實在螢幕上可以看到正在洗過去的全屏圖,但是示波器所擷取的圖檔,卻只會儲存剛洗過去的那部分,舊的部分會消失。
此時得小心,若想要的data在螢幕上,但你發現左側已經有新的data洗過來了,那麼請用外部相機照相的方式來保留數據圖吧。
![]() |
只有剛出現的新data會被截取(左半邊),舊data就是一片全黑(右半邊)。 |
感想
這是一個很好的經驗,來同時驗證Arduino設計及示波器量測的基本功。同時,也練習將量測數據與資料進行比對,確認數據可信度。
感謝
感謝好友阿峪提供示波器,讓獻慶有機會來自己做測試,並解決開發上的困擾。
感謝超倍能科技林榮豐董事長鼎力相挺,提供獻慶許多資源與時間去學習示波器,及其相關配件。
GOOD! ^_^
回覆刪除