산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Manufacturing Technology >> 제조공정

ATtiny85로 Qualcomm(Quick Charge) QC 2.0/3.0 해킹

구성품 및 소모품

Microchip Technology ATtiny85
× 1
SparkFun LM1117 3.3V 조정기
× 1
SparkFun USB 남성 A
× 1
저항 10k 옴
× 2
저항 2.21k 옴
× 1
Arduino Proto Shield
× 1
SparkFun 푸시버튼 스위치 12mm
× 1
QC 파워 뱅크 또는 충전기
× 1
일반 점퍼(0.1")
× 8
남성 헤더 36 위치 1 행 길이(0.1")
× 1
저항 0.05옴
× 10
Arduino UNO
× 1
남성/여성 점퍼 와이어
× 7
LED(일반)
× 1
저항 22.1k 옴
× 1

필요한 도구 및 기계

납땜 인두(일반)

앱 및 온라인 서비스

Arduino IDE

이 프로젝트 정보

소개

많은 USB 전원 소비자 전자 장치에는 일반적인 5.0볼트가 아닌 다양한 전압에서 급속 충전을 위한 Qualcomm QC(빠른 충전) 솔루션이 내장되어 있습니다. 이를 통해 더 많은 전력 또는 9/12볼트와 같은 더 높은 전압이 필요한 프로젝트에 QC 호환 전원 은행을 사용할 수 있습니다.

이 프로젝트의 목적은 QC 프로토콜을 해킹할 수 있는 장치를 개발하고 취미 생활자, 개발자, 엔지니어가 다음 번 전력 소모가 많은 프로젝트를 위해 더 많은 전압/전력을 위해 보조 배터리를 사용할 수 있도록 하는 것입니다.

위의 이미지는 10 Ohms 5 Watt 저항에 전원을 공급하는 QC 2.0 호환 전원 백에서 5, 9, 12 볼트 출력을 보여줍니다.

해킹 * 장치 개발

전체 장치에는 제어할 LM1117 3.3V 전압 조정기와 ATtiny85 MCU의 두 가지 활성 구성 요소가 있습니다. 다른 모든 부품은 저항기, 푸시 스위치, 커넥터, 점퍼, 헤더, 터미널, 프로토보드 등입니다.

장치를 만들기 위해 첫 번째 구성 요소는 깔끔한 레이아웃에 배치된 다음 납땜됩니다. 일부 0옴 짧은 링크는 서로 다른 부품을 상호 연결하는 데 사용됩니다.

온보드 회로를 비활성화하고 프로그래밍을 활성화하는 점퍼가 있습니다. 따라서 프로그래밍 라인(SPI - MOSI, MISO, SCK)은 장치 작동 중에 GPIO 역할도 합니다.

ISP로 ATtiny85 프로그래밍

ATtiny85를 프로그래밍하기 전에 IC Base에서 제거하고 브레드보드에 놓습니다. ATtiny85를 프로그래밍하기 위해 파일> 예제> ArduinoISP에서 "ArduinoISP"를 업로드하여 Arduino UNO 보드를 ISP 프로그래머로 변환합니다. 스케치. 이 스케치는 Arduino IDE에서 사용할 수 있습니다.

ATtiny85를 프로그래밍하려면 다음 단계가 필요합니다.

<울>
  • Arduino IDE용 ATtiny 지원 설치(David A. Mellis 덕분)
  • <울>
  • Arduino UNO를 ISP로 사용하여 ATtiny85용 부트로더 굽기
  • <울>
  • Arduino UNO를 ISP로 사용하여 코드 개발 및 업로드
  • 다음 회로는 ATtiny85를 프로그래밍하기 위해 준비되었습니다.

    ISP = 시스템 프로그래머

    또는 주변의 모든 점퍼를 제거하여 ATtiny85를 장치에 유지하도록 프로그래밍할 수 있습니다.

    장치 작동

    장치를 사용하려면 먼저 QC 호환 보조 배터리(또는 충전기)에 연결해야 합니다. 기본적으로 QC Power Bank의 USB 전압은 5.0볼트입니다.

    MCU가 D+/-를 통해 QC 소스와 통신할 수 있도록 코드를 업로드한 후 모든 점퍼를 연결해야 합니다.

    LM1117 3.3V 레귤레이터는 전원을 켜고 ATtiny85에 전원을 공급합니다. 이 MCU는 코드 실행을 시작합니다. ATtiny85의 4개의 I/O 핀은 출력 높음 및 낮음으로 사용되는 전압 분배기 저항에 연결됩니다. 다른 I/O 핀은 입력 풀업으로 초기화될 스위치에 연결됩니다. 이 스위치는 QC 소스의 전압을 변경하기 위해 사용자 입력을 받습니다.

    이제 세부 사항으로 들어가기 전에 출력이 어떻게 변경되는지 아는 것이 중요합니다. 모든 종류의 USB(USB A, B, C, 1.1, 2.0, 3.0+)에 공통적인 최소 4개의 라인/와이어가 있습니다.

    이것들은:-

    <울>
  • VBUS(기본적으로 Vcc +5V)
  • <울>
  • D +
  • <울>
  • 디 -
  • <울>
  • 그라운드
  • 일반 충전기/전원 은행에서 VBUS는 고정되어 있습니다. 그 이유는 전력 공급이 500mA, 1A, 2A에서 각각 2.5W, 5W 및 10W를 생산할 수 있는 전류에 의해 제한되기 때문입니다.

    그러나 QC 전원 장치에는 수전 장치(PD) 요청에 따라 전압을 펌핑할 수 있는 내부 부스트 컨버터가 있습니다!!!

    QC 2.0(또한 3.0)은 USB의 D+ 및 D-를 사용하여 PD와 통신합니다. PD는 D+ 및 D-에 전압 신호를 보내고 QC 충전기는 VBUS 전압을 변경하여 그에 따라 전력을 공급합니다. 이 CHY 데이터시트에 따르면 PD의 D+/D-에서 어떤 신호 쌍이 QC에서 어떤 전압 출력을 제공하는지 설명하는 표입니다.

    QC 2.0 지원은 D+ 및 D-의 전압이 이 표의 4번째 행에 있는 값과 동일하고 1.25초 이상 유지될 때 시작됩니다. D+가 0.0볼트가 되면(실제로 0.325볼트 미만) QC 지원이 중단되고 출력은 5.0볼트가 됩니다. 이 표에 따라 전압을 설정하면 VBUS의 출력을 변경할 수 있습니다.

    여기에서 ATtiny85의 4개 출력은 2개의 10k 및 2개의 2.2k 저항으로 구성된 2개의 전압 분배기 네트워크에 연결되어 D+/D- 라인에 대한 이러한 전압 신호를 생성합니다.

    예를 들어 D+에서 3.3V를 생성하려면 두 개의 ATtiny85 출력 핀 PB3 및 PB4에 연결된 상단 및 하단 저항이 모두 코드에서 High로 설정됩니다.

    마찬가지로 D-에서 0.6V를 생성하려면 다른 두 ATtiny85 출력 핀(PB1 및 PB3)에 연결된 상단 및 하단 저항을 각각 High 및 Low로 설정합니다.

    이런 식으로 QC 2.0 충전기/파워 뱅크는 전압 변경 요청을 수신하고 그에 따라 변경됩니다. 푸시 스위치는 입력 PULLUP으로 구성되며, 눌리지 않으면 MCU에 의해 HIGH로 읽히고 코드 실행은 설정 전압의 변경을 방지하는 while 루프에서 유지됩니다. 사용자가 Push Switch를 누르면 while 루프가 끊어지고 다음 전압이 설정됩니다. 그런 다음 다시 코드 실행은 현재 VBUS 전압을 유지하기 위해 다음 while 루프로 들어갑니다.

    사용자에게 출력 전압을 시각적으로 나타내기 위해 희미한(5V), 약한(9V) 및 밝은(12V)으로 빛나는 LED가 있습니다.

    가능한 응용 프로그램

    <울>
  • 12V LED 스트라이프 구동
  • <울>
  • 장거리 RF 송신기/수신기 전원 공급
  • <울>
  • 12V 릴레이, 모터 등 구동
  • <울>
  • LM317 또는 LM2596을 사용하여 1.25V에서 10V 사이의 전압 얻기
  • <울>
  • 9V IR 원격 드라이브
  • <울>
  • 로봇 자동차 파워
  • <울>
  • 20V로 노트북 충전
  • <울>
  • IoT 애플리케이션용 WiFI, LTE, S2E 장치와 같은 최대 18와트의 모든 시스템
  • <울>
  • 원격 시스템을 위한 백업 전원
  • <울>
  • 대부분의 LCD, LED 모니터, 프린터, 스캐너
  • <울>
  • 저전력 휴대용 PC
  • 다른 QC 클래스 지원

    QC 2.0 클래스 B, QC 3.0 및 QC 4.0은 QC 2.0 클래스 A와 역호환되므로 이 장치는 모든 최신 충전기 및 보조 배터리와 함께 작동할 수 있습니다. 그러나 전압 옵션은 5.0, 9.0 및 12.0볼트입니다. 다른 출력 전압이 필요한 경우 CHY 100, 101, 103 데이터시트를 읽고 그에 따라 코드를 수정하십시오.

    경고!

    <울>
  • 높음 품질 QC 보조 배터리 또는 충전기 단락 보호 은(는) 외부에서 사용해야 합니다. 부하는 18와트를 초과해서는 안 됩니다. <엠>. 이것은 에 의해 보장될 수 있습니다. 전력 등급 라벨 확인 로드 장치에서.
  • <울>
  • 20볼트 출력은 피해야 함 1117 3v3 레귤레이터 이후 최대 15볼트 처리 , MCU 코드 작성자 동시에 3.3볼트를 사용하는 D+ 및 D- 라인을 절대 허용하지 않음 .
  • <울>
  • 케이스 20볼트 출력 필요 (QC 2.0 클래스 B 및 QC 3.0, QC 4.0에서 지원 ) , 20V 이상을 처리할 수 있는 전압 조정기(3.3V용으로 구성된 LM317)를 사용해야 합니다. 그렇지 않으면 레귤레이터와 MCU가 모두 파괴됩니다 !!!!
  • <울>
  • 주의를 기울여야 합니다. 출력 전압 극성, 출력 단자 옆에 있는 +ve는 빨간색으로 표시되고 -ve는 파란색으로 표시된 작은 전선으로 표시됩니다.
  • <울>
  • 느슨한 연결 시간 USB 남성-여성 커플링 반드시 되다 회피 또는 접촉 저항의 결과로 열이 발생하고 전력 효율성이 떨어집니다.
  • <울>
  • ISP 프로그래밍 중에는 모든 점퍼를 제거해야 합니다. MOSI, MISO, SCK, VCC, GND, RESET 핀 분리 보드의 나머지 회로에서 프로그래밍에 대한 간섭을 피하십시오.
  • <울>
  • 코드 수정 해서는 안 되는 일 없이 QC 충전 프로토콜을 명확하게 이해하는 이 디자인은 주로 QC 2.0(클래스 A) 전원용 하지만 할 수 있습니다 부분적으로 중고 높음 품질 관리 표준
  • <울>
  • 해킹 가능성 아니요 일부 QC 충전기/전원 은행
  • <울>
  • GPIO 전환 필수 완료 적절한 순서 ~으로 해지 방지 / 고전압 모드
  • 참고: 위의 사항을 이해하지 못하는 경우 이 프로젝트를 복제하지 않는 것이 좋습니다. 작성 누군가, 그렇지 않으면 위험 발사 위험 또는 손실 장비 할 수 있음 발생!

    마이크로컨트롤러를 사용하지 않고 수동으로 전압을 변경할 수 있습니다. Vcc(3.3V) 및 Gnd(0V)를 저항에 적절한 순서로 연결하여 D+/D- 테이블의 조건을 모방하려면 4개의 점퍼 와이어만 필요합니다. mcu를 사용하는 것은 결국 그러한 간단한 전환에 과도할 수 있기 때문입니다.

    참조

    <울>
  • https://www.mouser.com/ds/2/328/chiphy_family_datasheet-269468.pdf
  • <울>
  • https://en.wikipedia.org/wiki/Quick_Charge
  • <울>
  • http://www.ti.com/lit/ug/tidu917/tidu917.pdf
  • <섹션 클래스="섹션 컨테이너 섹션 축소 가능" id="코드">

    코드

    <울>
  • ATtiny85 코드
  • ATtiny85 코드C/C++
    QC 컨트롤러<사전>///========================================================================================================/// /* 먼저 D+ 핀을 0.325~2V 전압에 연결하고 D-를 부동 상태로 유지한 다음 2초 이상 기다립니다. 이 2초 동안 두 가지 동작이 발생합니다. D+ 및 D- 전압은 1.25초 동안 0.325~2V 사이의 전압과 같습니다. (처음에는 D+와 D- 핀이 CHY100 내부에서 함께 연결되기 때문에) 그러면 D+는 0.325~2V 사이의 전압을 유지하고 D- 전압은 0으로 감소합니다. (D+ 및 D- 핀이 분리되고 CHY100 내부의 저항이 D-를 방전하기 때문에)*** CHY100은 파워 뱅크/충전기 내부의 QC 2.0 프로토콜 인터페이스 칩입니다........ 다른 QC 2.0 칩은 아마도 유사 D+를 먼저 3.0V 이상으로 만든 다음 D-를 0.325~2V 사이의 전압에 연결합니다. VBUS는 9V로 점프합니다. D- 연결을 0.325~2V 사이의 전압으로 유지하면서 D+를 0.325~2V 사이의 전압으로 만듭니다. VBUS는 12V로 점프합니다. (D+와 D- 전압이 2V ~ 0.325V이기 때문에) 0.325 ~ 2V 사이의 전압에서 D+를 분리합니다. QC2.0이 전압 변경 모드를 종료하고 VBUS가 기본값 5V로 이동하기 때문에 VBUS가 5V로 점프합니다. QC2.0을 다시 입력해야 할 때 처음부터 시작)*/// ==============================//// *** 핀을 HIGH 및 LOW로 만드는 순서가 중요합니다.// *** 잘못된 GPIO 스위칭 순서로 인해 전환 중에 D+가 0.325V 아래로 떨어지면// *** QC 2.0은 고전압 모드를 종료하고 VBUS는 5로 돌아갑니다. 볼트 // ===============================================/ /#define PUSH_SWITCH 0#define Dp_2k2 4#define Dp_10k 3#define Dn_2k2 2#define Dn_10k 1int Press_Detect =0;void setup(){ pinMode(PUSH_SWITCH, INPUT_PULLUP); // 이제 Gnd에서 D-를 유지하여 D+ 0.6 v를 만들어 QC 핸드셰이크를 시작합니다. Init_QC();}void loop(){ //// 5V //// while (digitalRead(PUSH_SWITCH) ==1) { } delay(250 ); //// 9v //// Set_9V(); 동안 (digitalRead(PUSH_SWITCH) ==1) { } 지연(250); //// 12v //// Set_12V(); while (digitalRead(PUSH_SWITCH) ==1) { } delay(250);// Set_5V();}///************************ 함수 **********************///void Init_QC(){ //pinMode(Dn_2k2, INPUT); //핀모드(Dn_10k, 입력); 핀모드(Dp_2k2, 출력); 핀모드(Dp_10k, 출력); 디지털 쓰기(Dp_2k2, LOW); 디지털 쓰기(Dp_10k, 높음); 지연(3000); // 이제 QC 프로토콜이 활성화됨}void Set_9V(){ pinMode(Dp_2k2, OUTPUT); 핀모드(Dp_10k, 출력); 디지털 쓰기(Dp_10k, 높음); 디지털 쓰기(Dp_2k2, 높음); 핀모드(Dn_2k2, 출력); 핀모드(Dn_10k, 출력); digitalWrite(Dn_2k2, LOW); digitalWrite(Dn_10k, HIGH);} 무효 Set_12V(){ pinMode(Dp_2k2, OUTPUT); 핀모드(Dp_10k, 출력); 핀모드(Dn_2k2, 출력); 핀모드(Dn_10k, 출력); digitalWrite(Dn_2k2, LOW); digitalWrite(Dn_10k, HIGH); 디지털 쓰기(Dp_10k, 높음); digitalWrite(Dp_2k2, LOW);} 무효 Set_5V(){ pinMode(Dp_2k2, OUTPUT); 핀모드(Dp_10k, 출력); 디지털 쓰기(Dp_10k, 높음); 디지털 쓰기(Dp_2k2, LOW); 핀모드(Dn_2k2, 출력); 핀모드(Dn_10k, 출력); digitalWrite(Dn_2k2, LOW); digitalWrite(Dn_10k, LOW);}void Set_20V(){// 전압 조정기 변경 !!!// 위험은 스스로 }

    회로도

    https://circuits.io/circuits/5830928-qc-chargeing-hack

    제조공정

    1. Qualcomm, 5G 및 AI 지원 드론 플랫폼으로 드론 활용도 향상
    2. Insight로 FDM을 밀봉하는 빠른 가이드
    3. MakeMIT에서 Markforged Mark Two를 사용한 하드웨어 해킹
    4. NeoPixel Ring으로 재미있는 자이로스코프
    5. 구름 의상
    6. Arduino를 사용한 간단한 장애물 센서
    7. 3D 프린터가 포함된 최소 MIDI 드럼 키트
    8. Arduino를 사용한 음성 인식 및 합성
    9. CI-V 포트가 있는 Icom 라디오의 외부 S-Meter
    10. RDA5807이 있는 미니 스테레오 라디오