大家還記得我的定時炸彈造型電子鐘嗎?為延長電池續航力,我陸續加了光敏電阻改成浴室開燈才顯示、也試過擴充成三顆 18650 電池,第三版則啟用 EPS 晶片特有的 DeepSleep 功能在關燈期間休眠,每隔五秒喚醒偵測燈光決定啟動或繼續休眠,但效果仍不夠理想,主要原因是休眠期間 5V、3.3V PIN 腳仍會供電,連接 LED 顯示器、RTC 時鐘等裝置即使沒運作也會耗用超過 10mA 電流。我甚至靠少得可憐的電子學知識用兩顆電晶體接輸出 PIN 硬幹了一個電子式電源開關,即便花了這麼多工夫,休眠耗電離我期望的 μA 級仍十分遙遠。

前陣子在 YouTube 無意看到工科男孫老師的科普影片,認識一個好東西 - MOS 管,當成開關用比電晶體簡單直覺。原本想在網拍買幾根回來玩,但發現更好玩的東西 - 給 Arduino 用的 MOS 管模組(關鍵字「大功率MOS管」):

thumbnail

使用方法很簡單:

  1. 電源輸入 (5V-36V)
  2. 電源輸出 (5V-36V,15A,400W)
  3. 訊號接地(GND) (一大兩小,三個相通 PIN 腳)
  4. 開關訊號(Trigger) 電壓大於 3.3V 到 20V 時導通(也支援用 PWM 脈波寬度調節模擬電壓)

用起來超簡單,重點是比 MOS 管零件還便宜,只要 14-50 元(一模一樣的電子零件價差三四倍很常見,不知其中有什麼玄機),二話不說,立刻入手一塊嚐鮮。

簡單測試 OK 後,就是研究如何串接光敏電阻實現「有光時開啟電源、全黑時關閉」,我的應用情境算單純,浴室無窗,即使白天有沒有開燈差很大,光敏電阻值是 100K 與 10K 的差別,不需太精準就能識別。

最開始的想法很簡單,光敏電阻串一顆 68K 歐姆電阻,兩端接 5V 跟地線,中間點取得分壓接 Trigger。

依分壓公式,開燈時 5V * 68 / (10 + 68) = 4.35V (> 3.3V,開啟)、關燈時 5V * 68 / (100 + 68) = 2V (< 3.3V,關閉),在電源輸出接了 LED 實測,還真的開燈環境時 LED 亮、關燈 LED 滅,這麼簡單就搞定了?自己都不敢相信。

果然,代誌不像憨人所想得哈尼那甘單,這個電路驅動耗電十幾 mA 的 LED 沒問題,當接上耗電 100mA 的 ESP 開發板就不行了。

依我貧乏的電子學知識難以斷定原因,但猜想 MOS 導通後部分電流分流進 Trigger,流經 68K 電阻的電流量變小,產生的電壓差下降到不足以驅動 MOS。最簡單的解決方法是加顆電晶體做成 Trigger 供電與否的開關,在零件盒挖到一顆 2222A NPN 電晶體,也不管規格合不合適,測了再說:

改良版用電晶體 E 極接 Trigger, 可穩穩驅動 MOS 為 ESP 開發板供電,這次是真的成功了。在麵包板驗證完成,開始正式組裝。為求簡單,我直接把電阻、電晶體、光敏電阻焊在 MOS 模組上,讓它變身成光控開關。不算工錢,所有材料成本不超過 30 元,一舉解決我苦惱多時的閒置期間省電難題,非常值得。

thumbnail

接上 ESP 開發板到浴室實測,開發板電源如預期隨燈光開啟關閉,程式也都正確執行,通過驗收測試:

開燈檔感應測試

最後,是我最最關心的耗電問題,到底這個精簡版光控開關在關閉狀態下會消耗多少電呢?答案揭曉,只有 2μA! 我非常滿意。

耗電測試

測試過程發現一個已知問題,當亮度剛好介於開啟或開關臨界值,供電不穩可能導致 ESP 開發板當機。不過在浴室環境開燈關燈亮度差異極大,二者距離臨界值很遠,實務上發生機率不高,另一方面,就算當機,關燈再開 ESP 重啟後又是一條好漢。

休眠省電問題解決,下一步我想再簡化電子鐘程式,省略偵測亮度、反覆休眠喚醒,專心處理電子鐘顯示,或許再能再減少一些耗電,至於實際結果如何,未來再報告。

趕在最後一天,用今年最後一個土砲作品為 2021 劃上句點, 也祝大家新年快樂。


Comments

# by player

我把電子學都快忘光了 尤其是二專的這部分是上原文書 用電晶體實作放大器電路 如果只是拿來當開關用途或許還好 不然還得計算阻抗匹配與小信號分析 超麻煩的 https://zh.wikipedia.org/wiki/%E6%94%BE%E5%A4%A7%E5%99%A8%E9%9B%BB%E8%B7%AF

Post a comment