PD/PPS가있는 USB 유형 C 충전기의 인터페이스
이 프로젝트는 Embres GMBH와 공동 작업으로 시작됩니다.
그들은 훌륭한 일을했습니다
USB Type C 전원 전달원을 트리거하기위한 흥미로운 보드가 있습니다. zy12pdn과 같은.
Manuel BL에서 많은 세부 사항을 찾을 수 있습니다.이 모듈을 사용하면 5V, 9V, 12 V, 15 V 및 20 V를 포함한 사용 가능한 고정 프로파일을 밟을 수 있습니다. 다른 많은 것들이 있으며 일부는 저항기 또는 점퍼를 통해 선택 가능한 전압을 가지고 있습니다.
Hynetek의 HUSB238 칩을 사용하여 손을 대었습니다. 이것은 I2C를 사용하는 저항 또는 마이크로 컨트롤러를 통해 프로그래밍 가능합니다.
불행히도 이것은 PD 3.0 호환 전원 공급 장치의 기능보다 훨씬 낮습니다. 이 모든 모듈은 소위 고정 프로파일 만 사용합니다. 그러나 PPS 모드 (porgramble 전원 공급 장치)가 있습니다. 이것은 증강 프로파일을 사용합니다. 증강 프로파일은 3.3V에서 21V 및 최대 5 A로 공동으로 공간화됩니다. 전압은 20mV 단계로 선택할 수 있으며 최대 전류는 50 MA 단계에서 선택할 수 있습니다.
그리고 여기에 내 생각이 있습니다. 책상에서 대부분의 공간을 먹는 청키 한 실험실 전원 공급품 중 하나를 사용한 적이 있습니까? 이 전원 공급 장치는 종종 0-30 V 및 0-5 A입니다. 내가 염려하는 한, 나는 대부분 몇 가지 앰프에서 5-15V를 사용합니다.
이 증강 프로파일을 사용하여 실험실 전원 공급 장치를 모방 할 수 있다면 어떨까요? 적절한 PPS 유능 USB 유형 C 전원 공급 장치 에서이 프로파일을 요청할 수있는 칩이 필요합니다.
쉽고 어려운 방법이 있습니다.
쉬운 방법은 일부 칩에 원하는 전압 형태의 전원 공급 장치를 요청하도록하는 것입니다.
이러한 칩은 Diodes Incorporated에서 사용할 수있는 AP33772입니다. 전용 평가 보드 양식 다이오드 또는 기타 제조업체를 얻을 수 있습니다. 마이크로. 이것은 USB-C 싱크 2입니다. 양식 microe를 클릭하십시오 . 
이 칩은 NRND로 표시되었으며 AP33772S로 대체되었습니다. "S"버전은 사용하기 쉽지만 큰 단점이 있습니다. 100mV와 250 MA 단계 만 허용합니다.
어려운 방법은 USB-C PD Phys 중 하나를 사용하는 것입니다. 전원 공급 장치에 OSI 0 + 1 인터페이스를 제공합니다. SW에서 더 높은 레벨을 구현해야합니다. 가장 일반적으로 사용되는 칩은 반도체의 FUSB302 형태 인 것 같습니다. 이 칩은 원래 zy12pdn에 사용되었습니다.
그리고 여기에 : 
이것은 Ryan Ma가 퇴치 한 PD-Micro입니다. FUSB302, 일부 LED, 전원 스위치 및 전압 조절기가있는 Aruduino Pro Micro입니다. Ryan은 적절한 프로파일을 쉽게 선택할 수 있도록했습니다. Kai Clemens Liebich는 Ryan의 FUSB302 Lib를 약간 개선했습니다.
유일한 문제는 전압 안정성입니다. 5 개의 USB C 케이블을 사용하더라도 전압 강하가 상당히 중요합니다. 따라서 출력 전압을 측정하여 전원 공급 장치 전압을 미세 조정해야 할 수도 있습니다. Frist 아이디어는 외부 2.048 v 전압 eference와 함께 내부 ADC를 사용하는 것이 었습니다. 문제는 이것이 10 비트 ADC에 불과하지만 최대 21V까지 전압을 측정해야한다는 것입니다. 20.48 V에서 클립을 가정하면 20mV의 해상도가 있다고 가정합니다. 이것은 충분한 것처럼 보이지만 우리는 쉽게 더 잘할 수 있습니다. 전용 ADC를 사용할 때 예를 들어 INA219
우리는 정밀도를 4 mV로 향상시킬 수 있습니다. 이것은 20mV 계단보다 훨씬 낮습니다. A는 현재 센서를 위에 얻습니다.
현재 센서 ACS712에 대한 경고
ACS 712는 사용하기 쉬운 분리 된 전류 센서입니다. 하지만:
이제 전압을 설정하고 출력을 활성화하며 출력 전압 및 전류를 측정 할 수 있습니다. 따라서 일정한 전압 / 전류 소스를 구현하기 위해 몇 줄의 코드를 작성할 수 있습니다. 재 전원 응답 시간은 전원 공급 장치의 속도에 의해 제한되지만 USB 전원 공급 장치에 대한 합리적인 한도 내에 있습니다. 내 PS는 ~ 40 .. 50ms로 전환되는 100W가있는 오래된 Ugreen Nexode 2입니다.
그러나 전압과 전류 슬 펙트는 어떻습니까? 우리는 일련의 인터페이스와 컴퓨터를 사용하여 회로를 "원격 제어"할 수 있습니다. 그러나 UI와 같은 로터리 스위치 LCD는 어떻습니까?.
그리고 이것은 저의 첫 번째 프로토 타입으로 이어집니다.

다음은 다음에 왼쪽 상단과 시계 방향으로 구성된 구성 요소가 있습니다.

이것은 전압 및 전류 센서입니다. 션트 저항기는 R015로 감소하여 5 A 본 스케일 판독 값을 얻었습니다.
보드에는 연쇄 eeprom 24c256이 있습니다. 이것은 매개 변수 저장에 사용됩니다. 나는 칩 eeprom의 Atmel 's를 사용할 수 있었지만 이것은 내마모성이 적습니다. 나는 얼마나 많은 쓰기주기가 필요한지 몰랐으므로 외부 eeprom을 선택했습니다.

이것은 회로의 핵심입니다.
PD -Micro의 USB -C 포트는 전원 공급 장치에 의해 점유됩니다. USB 인터페이스는 통신에 사용할 수 없습니다. 따라서 HW 직렬 인터페이스는 FT232 USB에서 직렬 칩에 연결됩니다.

이것은 LCD 라이브러리에 설명 된 대비 대비 대비 PCF8574, 전압 인버터 및 현재 소스가있는 20x4 HD44780 호환 디스플레이입니다.
디스플레이에는 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 프로파일을 통해 진행됩니다. 프로파일을 선택하려면 다시 누르고 Buttom 라인의 확인 표시로 이동하거나 "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을 사용하여 RHE 두 번째 프로토 타입으로 이어집니다.
AVR 폴더의 소프트웨어는 그대로입니다. 이 지점에서는 더 이상 발전하지 않을 것입니다. 그것은 일종의 일이지만 당신 자신의 위험에 사용합니다. Bootloader없이 컴파일하면 구성 폴더에서 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 Zero를 시도했습니다. 이 보드는 48MHz에서 실행되는 피질 M0+ 암 컨트롤러 인 ATSAMD21G18을 사용합니다. 256KB 플래시와 32KB RAM 및 많은 인터페이스가 있습니다. 빠른 포트는 SW가 거의 아무런 문제없이 AVR에서 ARM으로 쉽게 포팅 될 수 있음을 보여주었습니다.
이것은 우리가 첫 번째 포트 타입과 관련된 모든 문제를 피하기 위해 첫 번째 커스텀 PCB를 시작하기로 결정한 시점이었습니다.
일부 두통은 VCC 공급을 유발합니다. 대부분의 벅 컨버터 회로는 작동하려면 전압 헤드 룸이 필요하며 저전압 잠금 회로를 "기능"합니다. 그러나 이것은이 회로에 대한 것이 아닙니다. 3.3 v VBUS만큼 낮게 작동해야합니다. 3.3 V VBUS에서 작동을 보장하려면 저전압 바이 패스 커커스가 필요합니다. 그렇지 않으면 VBUS가 3.3V 출력에서 4V -4.7V 인 임계 세트 아래로 떨어지면 회로가 잠그게됩니다.
이 문제는 약간 과도하게 해결되었습니다. 우리는 이상적인 다이오드에 오염 된 2 개의 3.3 v 레귤레이터를 사용했습니다.
TPS62932는 출력 3.45 V로 구성되어 있습니다. UVLO는 4.55V로 설정되고 활성화는 5.06V로 설정됩니다. 벅 컨버터가 5V 이상으로 작동하고 3.3V 이상의 출력을 보장하므로 3.3 V LDO가 저장됩니다. LDO는 3.3V로 설정된 NCV2951ACDMR2G입니다. 드롭 아웃 전압은 100mA에서 최대 450mV입니다. 회로의 현재 소비는 50mA 미만이므로 최대 최대 드롭 아웃은 300mV입니다.
입력 전압이 5.06 v 이상인 경우 LDO는 유휴 상태이고 VCC는 3.45V입니다. 입력 전압이 4.55 v 미만으로 떨어지면 벅 컨버터가 비활성화되고 LDO가 OVE를 사용하여 3.3V의 VCC가 계속 떨어질 때 VCC는 3.3 vbus에서 ~ 3V로 떨어집니다.
CPU는 브라운 아웃 설정에 따라 2.7V까지 절약됩니다.
PCBA :
작업 프로토 타입 : 
Current Calibration
internal I.III A
reference I.III A
[i i i x] (i)
현재 판독 값과 기준 값이 재구성되었습니다.
SW는 리팩토링되었으며 현재 USB-PD2입니다. 첫 번째 SW에서는 메뉴 클래스에서 전원 공급 장치의 제어가 구현되었습니다. 이것은 자체 컨트롤러 클래스로 이동되었습니다.
TODO 알림 헤더가 추가되었습니다. 전원 공급 장치 테스트 클래스가 프로파일 변경 사항을 테스트하기 위해 추가되었습니다.
처음으로 SW를 플래시하려면 JTAG 디버그 인터페이스가 필요합니다.
Atmel Studio 또는 Arduino IDE를 사용하여 Arduio Zero Bootloader를 플래시 할 수 있습니다.
깜박임 데모도 사용할 수 있습니다. 스케치 -> 내보내기 바이너리를 선택하십시오. IDE는 파일을 생성합니다. 파일을 플래시하십시오. Arduino Zero에서 퓨즈 비트를 복사해야 할 수도 있습니다.
Fuses 폴더에는 일부 샘플이 있습니다. 퓨즈 중 일부는 공장으로 조정되어 덮어 쓸 수 없습니다.
부트 로더가 작동하면 Sam-Ba Bootloader를 사용하여 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)로 표시된 많은 충전기는 전압 범위가 제한된 65W PP (3.25 a) 만 지원합니다. 3.3V 미만의 전압을 지원하지 않을 수 있습니다. 일부는 다른 PPS 프로파일이 다른 전압 / 전류 등급을 갖는 2 개의 PPS 프로파일을 가질 수 있습니다.
Ugreen Nexode 2 Port 100W Pd-Charger (Model CD254 #50827) 지원 프로파일 :
Ugreen Nexode 100W 데스크탑 충전기 (모델 CD328 #90928) 지원 프로파일 :
Anker Powerport I 30W Pd
지원되는 프로파일 :
Ilepo USB C Fast Charger 65 W.
지원되는 프로파일
INIU POWER BANK 2000MAH, 22.5W
지원되는 프로파일
어떤 전원은 전류가 그려지지 않을 때 전원을 재설정하는 것처럼 보입니다.
내 "Nexode 100W 데스크탑 충전기"P/N 90928은 하중없이 ~ 1 시간 후에 재설정됩니다. 다른 충전기는 그렇지 않습니다.
내 iniu 파워 뱅크는 ~ 10 초 이내에 부하없이 재설정
로그 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