使用PD/PPS的USB類型C充電器的接口
該項目起源於與GmbH的共同作品。
他們在
那裡有一些有趣的董事會來觸發USB C型電源輸送源。例如zy12pdn。
您可以在Manuel BL上找到許多細節。這些模塊允許您介入可用的固定配置文件,其中包括5 V,9 V,12 V,15 V,15 V和20 V.那裡有許多其他固定配置文件。有些其他,有些通過電阻或跳線具有可選的電壓。
我設法接觸了Hynetek的HUSB238芯片。使用I2C可以通過電阻或微控制器進行編程。
不幸的是,這遠低於PD 3.0符合PD的功能。所有這些模塊僅使用所謂的固定配置文件。但是有PPS模式(可保證電源)。這使用了增強配置文件。增強輪廓從3.3 V到21 V,最多5 A.可以以20 mV步長選擇電壓,並且可以以50 mA步長選擇最大電流。
這是我的想法:您是否曾經使用過那些矮胖的實驗室電源在桌子上吃掉大多數空間?這些電源通常範圍從0-30 V和0-5A。就我而言,我主要在幾個放大器上使用5-15 V。
如果我們可以使用此增強配置文件模仿實驗室電源怎麼辦?我們需要一個能夠從適合PPS的C型C型電源中要求此配置文件的芯片。
好吧,有一個簡單和艱難的方法:
簡單的方法是告訴一些芯片請求所需的電壓形式。
這樣的芯片是二極管公司可獲得的AP33772。您可以獲得專門的評估委員會表格二極管或其他製造商,例如。微型。這是USB-C接收器2點擊形式microe: 
該芯片已被標記為NRND,並被AP33772所取代。 “ S”版本甚至更容易使用,但缺點很大:它僅允許100 mV和250 mA步驟。
困難的方法是使用其中一種USB-C PD物理。他們為電源提供OSI 0 + 1接口。必須在SW中實施更高的級別。最常用的芯片似乎是半導體上的FUSB302形式。該芯片用於原始ZY12PDN。
在這裡是: 
這是Ryan MA脫離的PD-Micro。它是Aruduino Pro Micro,具有FUSB302,一些LED,電源開關和電壓調節器。瑞安(Ryan)使選擇適當的配置文件變得容易。 Kai Clemens Liebich對Ryan的Fusb302 Lib做出了一些改進。
唯一的問題是電壓穩定性。即使使用5 A USB C電纜,電壓下降也很重要。因此,我們可能需要測量輸出電壓以罰款調整電源電壓。有些想法是將內部ADC與外部2.048 V電壓遞減。問題是,這只是10位ADC,但是我們需要測量最多21 V的電壓。假設我們以20.48 V的夾子夾,我們的分辨率為20 mV。這似乎就足夠了,但是我們可以做得更好。當使用專用ADC時,例如INA219
我們可以將精度提高到4 mV。這遠低於20 mV步驟。一個我們在頂部得到當前傳感器。
警告當前傳感器ACS712
ACS 712是一種易於使用的隔離電流傳感器。但:
現在,我們可以設置電壓,啟用輸出並測量輸出電壓和電流。因此,我們可以編寫幾行代碼來實現恆定電壓 /電流源。遠程響應時間將受到電源速度的限制,但它在USB電源的合理限制範圍內。我的PS是一個過時的Ugreen Nexode 2,其100W在〜40 .. 50毫秒內切換。
但是電壓和電流夾具如何?好吧,我們可以使用串行接口和計算機來“遠程控制”電路。但是,LCD作為UI呢?
這使我進入了我的第一個原型。

這是與左上方的順時針開頭的組件。

這是電壓和電流傳感器。分流電阻已減少到R015,以獲得5個全尺度讀數。
板上有一個串行EEPROM 24C256。這用於參數存儲。我本可以在芯片EEPROM上使用Atmel的,但這具有較小的耐磨性。我不知道需要多少個寫週期,所以我選擇了一個外部EEPROM

這是電路的核心。
PD -Micro的USB -C端口被電源佔據。 USB接口不能用於通信。因此,HW串行界面與FT232 USB連接到串行芯片。

這是我的LCD庫中所述的20x4 HD44780與PCF8574兼容顯示,電壓逆變器和當前的對比度。
左至顯示屏上有一個KY-040旋轉編碼器開關。就在開關上方,只有一個I2C和VCC總線桿。
實驗室電源需要什麼功能?












在啟動時,系統將在主菜單開始之前顯示版本和構建消息。
PD/PPS-Controller
====================
Ver. : 3.3 nbl
Build: mmm dd yyyy
初始化完成後,將顯示主菜單
Mode (x:...) [UI^] !
UU.UU V I.II A
OUT UU.UU V I.II A
[i i i i i] (i)
最後一行I:菜單圖標
要選擇菜單項按按鈕,將出現光標。轉動旋轉開關,直到光標處於所需物品的位置。再次按按鈕選擇菜單。在此菜單中,第二行中的“ V”和“ A”也是菜單項。選擇要調整所需的電壓或電流。
此菜單用於選擇所需的PD配置文件。
# 1 / n (...)
U= UU.UU V - UU.UU V
I= I.II A max
[i i i] (i)
最後一行I:菜單圖標
要選擇一個配置文件,按按鈕導航到第一行中的“#”符號,然後再次按以輸入配置文件選擇。轉彎將跨越Avalabla配置文件。要選擇一個配置文件再次按下,然後導航到對接行中的複選標記,或選擇“ x”以中止。
此菜單用於更改操作模式或校準值。
(i)=auto (*)=. *
(i)=auto
(i)=auto
[i i i x] (i)
[i]或(i)括號中的圖標
I= I.III A: I.III A
[i i i x] (i)
[i]或(i)括號中的圖標
要調整當前的測量校準,可以通過負載進行輸出,並使用校準的安培儀表測量電流。
輸入設置菜單,然後轉到校準菜單。輸入測得的電流並選擇該檢查標記,以選擇盡可能高的電流以獲得最大的精度。
AVR SW用Arduino IDE編寫。在開發SW時,我發現了有關該系統的幾件事:
最初的成功後,迅速遇到了Flash和Ram的問題。您可能可以運行AVR代碼,但我建議您降低免費內存功能。
這使我使用AtSAMD21G18進行了第二個原型。
AVR文件夾中的軟件是原樣的。這將不再是該分支機構的進一步發展。這是一種工作,但要自行使用。它僅在沒有啟動加載程序的情況下編譯,您需要將boards.local.txt文件從配置文件夾添加到
C:Users_user_AppDataLocalArduino15packagesarduinohardwareavr1.8.6
(至少在Windows機器上),然後從可用板中選擇帶有啟動加載程序的Arduino Leonardo 。
您將需要Avrdude和Usbasp
提示:購買一個廉價克隆時要小心。他們經常帶有過時的SW,並且無法正常工作。更新這些都沒有問題,但是您需要一個工作的USBASP適配器。
程序員閃爍SW。對於非CLI用戶:Avrduess是Avrdude的絕佳GUI。
您不妨將Arduino Uno用作USB到ISP橋。
挫折之後,我嘗試了一個Arduino零。該板使用ATSAMD21G18,該ATSAMD21G18是以48 MHz運行的Cortex M0+ ARM控制器。它具有256 kb的閃光燈和32 kb ram和許多接口。快速端口表明,SW可以從AVR上移植到手臂,幾乎沒有問題。
這是我們決定啟動第一個自定義PCB的地步,避免了第一個原型遇到的所有問題。
一些頭痛會導致VCC供應。大多數雄鹿轉換器電路都需要一些電壓淨空才能操作並“功能”欠壓鎖定電路。但這對於這個電路來說是不可能的。它需要低至3.3 V VBU。我們需要一個欠壓旁路凝管,以確保在3.3 V VBUS處操作。否則,當VBU掉落到閾值以下時,電路將鎖定,通常在3.3 V輸出時4 V -4.7 V。
這個問題被略有工程化解決。我們使用了兩個3.3 V調節器,這些調節劑由理想的二極管進行。
TPS62932配置為輸出3.45 V. UVLO設置為4.55 V,並且將啟用設置為5.06 V.這可以保證降壓轉換器在5 V以上操作,並且輸出略高於3.3 V,因此3.3 V LDO可保存butsible。 LDO是NCV2951ACDMR2G設置為3.3 V.輟學電壓為100 mA時最大450 mV。電路的當前消耗量低於50 mA,因此我們的最大液落估計為300 mV。
當輸入電壓高於5.06 V時,LDO是空閒的,VCC為3.45V。當輸入伏特降至4.55 V以下降低4.55 v時,降壓轉換器被禁用,LDO降低了3.3 V的VCC,導致輸入Voltoge繼續降低,VCC將降低到3.3 V V vbus的〜3 V v v v vbus。
CPU將根據BrownOut設置保存至2.7 V。
PCBA:
工作原型:
Current Calibration
internal I.III A
reference I.III A
[i i i x] (i)
當前的讀數和參考值已重組。
SW已被重構,現在是USB-PD2。在第一個SW中,電源的控制是在菜單類中實現的。這已移至自己的控制器類。
添加了托多德提醒的標題,已經添加了電源測試類以進行測試配置文件更改。
為了首次刷新SW,您將需要JTAG調試接口,例如
您可以使用Atmel Studio或Arduino IDE刷新Arduio零引導加載程序。
您也可以使用眨眼演示。選擇草圖 - >導出二進制。 IDE將創建一個文件xxx.ino.with_bootloader.arduino_zero.bin。只需刷一下文件即可。您可能需要從Arduino Zero中復制保險絲鑽頭。
保險絲文件夾中有一些樣本。一些保險絲是工廠調整的,不能被覆蓋。
Bootloader工作後,您可以使用SAM-BA引導加載程序閃爍SW。 Microchip提供的SW具有一個CLI,適用於所有支持SAM-BA的SAM設備,因此使用有些棘手。一個更簡單的工具是Shumatech的Bossa。
我的充電器支持5 V / 9 V / 12 V / 15 V @ 3A和20 V @ 5A固定配置文件和3.3 V -21 V @ 5 A增強配置文件。請小心許多標有100W(甚至Ugreen)的充電器只能支撐65 W PPS(3.25 A),電壓範圍有限。它們可能不會在3.3 V以下的反向電壓。有些人甚至具有兩個具有不同網絡 /電流等級的PPS輪廓。
Ugreen Nexode 2端口100W PD-Charger(CD254#50827)支持的配置文件:
Ugreen Nexode 100W桌面充電器(CD328#90928)支持配置文件:
Anker Powerport I 30W PD
支持的個人資料:
Ilepo USB C快速充電器65 W
支持的配置文件
Iniu Power Bank 20000mah,22.5W
支持的配置文件
當沒有繪製電流時,某些功率似乎可以重置功率。
我的“ Nexode 100W台式充電器” P/N 90928在不加載的情況下重置〜1 h。其他充電器沒有。
我的INIU電力庫重置〜10s之內沒有負載
使用LOAD 20R日誌
0006: FUSB302 ver ID:B_revA
0118: USB attached CC1 vRd-3.0
0172: RX Src_Cap id=1 raw=0x53A1
0172: obj0=0x2A01912C
0172: obj1=0x0002D0E9
0172: obj2=0x0003C096
0172: obj3=0xC076323C
0172: obj4=0xC0DC3228
0172: [0] 5.00V 3.00A
0172: [1] 9.00V 2.33A
0172: [2] 12.00V 1.50A
0172: [3] 5.00V-5.90V 3.00A PPS *
0172: [4] 5.00V-11.00V 2.00A PPS
0176: TX Request id=0 raw=0x1082
0176: obj0=0x42022628
0186: RX GoodCRC id=0 raw=0x0121
0192: RX Accept id=2 raw=0x05A3
0210: RX PS_RDY id=3 raw=0x07A6
0212: PPS 5.50V 2.00A supply ready
0214: Load SW ON
5214: TX Request id=1 raw=0x1282
5214: obj0=0x42022628
5222: RX GoodCRC id=1 raw=0x0321
5228: RX Accept id=4 raw=0x09A3
5246: RX PS_RDY id=5 raw=0x0BA6
5246: PPS 5.50V 2.00A supply ready
10248:TX Request id=2 raw=0x1482
10248: obj0=0x42022628
10256:RX GoodCRC id=2 raw=0x0521
10262:RX Accept id=6 raw=0x0DA3
10280:RX PS_RDY id=7 raw=0x0FA6
10280:PPS 5.50V 2.00A supply ready
...
沒有負載的日誌:
0006: FUSB302 ver ID:B_revA
0118: USB attached CC1 vRd-3.0
0172: RX Src_Cap id=1 raw=0x53A1
0172: obj0=0x2A01912C
0172: obj1=0x0002D0E9
0172: obj2=0x0003C096
0172: obj3=0xC076323C
0172: obj4=0xC0DC3228
0172: [0] 5.00V 3.00A
0172: [1] 9.00V 2.33A
0172: [2] 12.00V 1.50A
0172: [3] 5.00V-5.90V 3.00A PPS *
0172: [4] 5.00V-11.00V 2.00A PPS
0176: TX Request id=0 raw=0x1082
0176: obj0=0x42022628
0186: RX GoodCRC id=0 raw=0x0121
0192: RX Accept id=2 raw=0x05A3
0210: RX PS_RDY id=3 raw=0x07A6
0212: PPS 5.50V 2.00A supply ready
0214: Load SW ON
5214: TX Request id=1 raw=0x1282
5214: obj0=0x42022628
5222: RX GoodCRC id=1 raw=0x0321
5228: RX Accept id=4 raw=0x09A3
5248: RX PS_RDY id=5 raw=0x0BA6
5248: PPS 5.50V 2.00A supply ready
10250:TX Request id=2 raw=0x1482
10250: obj0=0x42022628
10258:RX GoodCRC id=2 raw=0x0521
10264:RX Accept id=6 raw=0x0DA3
10284:RX PS_RDY id=7 raw=0x0FA6
10284:PPS 5.50V 2.00A supply ready
==> The Power bank resets and defaults to 5V only.
0006: FUSB302 ver ID:B_revA
0118: USB attached CC1 vRd-3.0
0352: TX Get_Src_Cap id=0 raw=0x0087
0704: TX Get_Src_Cap id=0 raw=0x0087
1056: TX Get_Src_Cap id=0 raw=0x0087