Skip to content

基於 USB PD 供電的可程式直流電源供應器研究

因為最近在開發 ErgoSNM v4 的核心板,但是手邊沒有可調直流電源供應器,所以想說來研究一下使用 USB PD(Power Delivery)來自己做一個看看。

現成

市面上已經有一些透過 USB PD 來供電的可調直流電源供應器,例如:

但我看不到這些商業化產品的內部是如何實現的,所以我需要找找 GitHub:

以 PocketPD 為例,它基本上就是一個 PD PPS(Programmable Power Supply)Sink,並直接向上游的 PD Source(即充電器)要求電壓和電流,這樣做有個好處就是不用實作複雜的電壓電流環控制器,通通交給上游的 PD Source 就好,壞處就是你要有支援 PD PPS 的充電器,且它要能夠提供符合你預期的電源。它所使用的關鍵零件如下:

RP2040 透過 I2C 控制 AP33772 來向 PD Source 協商電源,AP33772 有自帶電流感測但這裡沒用,AP33772 有帶 Gate driver 可以外接 FET 用來關斷 VBUS 但這裡沒用(而是靠 LM7310)。兩顆 LM3710 負責關斷電源路徑,由 RP2040 控制。INA226 透過一個 5mOhm 的 Shunt 來讀取電壓,透過 I2C 報給 RP2040,它有一個 ALERT pin 可用在故障時快速切斷 LM3710 但是這裡沒有這麼做。一個簡單的電阻分壓用來量測輸入電壓。

我的方案

可以的話儘可能滿足這些規格:

MCU

MCU 如果有 USB 可以方便從電腦控制:

但是因為考慮 PD 供電和電腦之間可能不共地,所有需要做隔離保護。最直接的方式應該是直接對要接電腦的 USB 做隔離,但是就算是 USB 2.0 12Mbps 的隔離 IC 也很貴,一個更便宜的方案是 USB 進來後先透過 USB-to-TTL 轉成 UART,再透過 UART 隔離 IC 接到 MCU,UART 隔離 IC 的價格比 USB 隔離 IC 便宜很多。如果是這樣的話那 MCU 就不用 USB PHY 了。如果需要單一通道的訊號隔離也可以透過光耦完成。

方案 A

首先最簡單的方案就是和 PocketPD 這些專案一樣,直接找個 PD Sink controller,把控制電壓電流甚至相關保護的事情都交給上游的 PD 變壓器,我們只需要負責送出協商命令即可。這樣的話基本上只需要一個 PD Sink controller 就可以了,但是畢竟目標是實驗用的電供,保護措施最好還是在前端加一下,我覺得至少 SCP 快速關斷可能要加。

找了一些看起來不錯的 PD Sink controller:

eFuse 可以用來提供快速的 SCP:

在這個方案中,我會選擇 TPS25751 + TPS1663 的組合,RCP 由前者提供,後者就專心處理 SCP 即可,另外 TPS1663 有 SHDN pin 可以由 MCU 控制,可以可以打從電供上的 OUTPUT 按鈕功能。

這個方案的優點是簡單,因為真正的電壓電流控制都不是我們做,所以實際上的可用配置要看上游,而且也會要求上游 PD 要支援 PPS 功能。一個比較明顯的問題是可調電壓範圍,有些 PD PPS 變壓器的範圍是 5.0-20V,有些是 3.3-20V,但是 3.3V 的輸出電壓對我來說可能不夠低,我希望至少可以到 1.8V。

方案 B

由於方案 A 的電壓控制範圍完全看上游的供電控制能力,且低電壓不夠低,因此另一個方案就是由我們來控制電壓,為此我們需要一個高功率 DC/DC Converter。大部分的 Buck-boost Converter 都是直接用 Feedback 分壓電阻來控制輸出電壓,但是因為我們要可程式電壓,雖然也有利用數位電位器或 DAC 的方案,但是我還是找了有 I2C 的 IC。這些其實都是 PD PPS Source,且有內建一定的保護功能:

在這個方案中我會選擇 MP4245,因為它有明確的說到它有定電流(CC)模式,如果負載電流超過設定電流上限,則會開始控制並降低電壓,在 TI 的那兩個型號中對於 CC 的具體行為沒有更詳細的描述。

設計

最後我選擇了方案 B。PD Sink 使用 CH224 來向上游要求供電,透過一個用於 RCP 的 SS54 Schottky 連接到 MP4245,MC4245 會負責將電壓和電流控制在設定值,輸出直接接到連接器,就沒再加針對輸出的 RCP 了。MCU 使用 STM32F030C8T6,一組 UART 透過 ADuM1201AR 隔離 IC 可以用來連接電腦,沒加板載 USB-to-TTL IC 所有要外掛。MCU 的供電是從 CH224 之後的 VBUS 提供,透過 TPS5431 Buck 降壓到 3.3V,選它是因為很便宜。

如果想監控電壓和電流的話,MC4245 有 I2C Reg 可以讀。

對於 MC4245 可能的 FB 電阻組合:

Schematic 1
Schematic 1
Schematic 2
Schematic 2

大功率走線都直接鋪銅,但是這個線寬在 1oz 的 PCB 上跑 3A 其實還是不太夠。

PCB Layout
PCB Layout

雖然 PCB 是畫好了,但是我暫時沒有生產測試的打算,也不確定現在這個方案是不是真的可以運作,就先做個記錄,如果未來真的要做下去的話再分享。

GitHub repo: https://github.com/ziteh/pd-power-supply

Footnotes

  1. TPS25751: Do I need to supply 5v if sinking only? - Power management forum - Power management - TI E2E support forums

  2. [FAQ] TPS25750: How do I create a Sink-Only USB-C PD port to replace a legacy Barrel Jack Connector? - Interface forum - Interface - TI E2E support forums


一種 TrueNAS/ZFS-to-S3 的備份工具概念