Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Productieproces

Quick Charge QC 2.0/3.0 hacken met ATtiny85

Componenten en benodigdheden

Microchip-technologie ATtiny85
× 1
SparkFun LM1117 3.3V-regelaar
× 1
SparkFun USB Male A
× 1
Weerstand 10k ohm
× 2
Weerstand 2.21k ohm
× 1
Arduino Proto Shield
× 1
SparkFun Drukknopschakelaar 12 mm
× 1
QC Powerbank of oplader
× 1
Algemene jumper (0.1")
× 8
Mannelijke kop 36 Positie 1 rij - lang (0,1")
× 1
Weerstand 0,05 ohm
× 10
Arduino UNO
× 1
Mannelijke/Vrouwelijke doorverbindingsdraden
× 7
LED (generiek)
× 1
Weerstand 22,1k ohm
× 1

Benodigde gereedschappen en machines

Soldeerbout (algemeen)

Apps en online services

Arduino IDE

Over dit project

Inleiding

Veel consumentenelektronica met USB-voeding heeft een ingebouwde Qualcomm QC-oplossing (Quick Charge) voor snel opladen bij verschillende spanningen in plaats van de gebruikelijke 5,0 volt. Dit biedt de mogelijkheid om QC-compatibele Power Banks te gebruiken voor projecten die meer vermogen of hogere spanningen zoals 9/12 volt vereisen.

Het doel van dit project is om een ​​apparaat te ontwikkelen dat het QC-protocol kan hacken en waarmee hobbyisten, ontwikkelaars en ingenieurs hun powerbanks kunnen gebruiken voor meer spanning/vermogen voor hun volgende energieverslindende project.

Bovenstaande afbeeldingen tonen een output van 5, 9, 12 volt van een QC 2.0-compatibele voeding die een weerstand van 10 ohm van 5 watt voedt.

Het Hack * Device ontwikkelen

Het hele apparaat heeft twee actieve componenten - de LM1117 3.3V spanningsregelaar en de ATtiny85 MCU om te bedienen. Alle andere onderdelen zijn weerstanden, drukschakelaar, connectoren, jumpers, headers, terminal, protoboard enz.

Om het apparaat te bouwen, worden eerst componenten in een nette lay-out geplaatst en vervolgens gesoldeerd. Er worden korte verbindingen van 0 ohm gebruikt om verschillende onderdelen met elkaar te verbinden.

Er zijn jumpers om het onborad-circuit uit te schakelen en programmering in te schakelen. Aangezien de programmeerlijn (SPI - MOSI, MISO, SCK) ook als GPIO fungeert tijdens de werking van het apparaat.

ATtiny85 programmeren met ISP

Voordat de ATtiny85 wordt geprogrammeerd, wordt deze van de IC Base verwijderd en op een breadboard geplaatst. Om ATtiny85 te programmeren, wordt een Arduino UNO-bord geconverteerd naar ISP-programmeur door de " ArduinoISP" te uploaden van Bestand> Voorbeeld> ArduinoISP schetsen. Deze schets is beschikbaar in Arduino IDE.

Het programmeren van ATtiny85 vereist de volgende stappen:

  • ATtiny-ondersteuning voor Arduino IDE installeren (met dank aan David A. Mellis)
  • Burning Bootloader voor ATtiny85 met Arduino UNO als ISP
  • Code ontwikkelen en uploaden met Arduino UNO als ISP

Het volgende circuit is voorbereid om de ATtiny85 te programmeren:

ISP = in systeemprogrammeur

Als alternatief kan de ATtiny85 worden geprogrammeerd om op het apparaat te blijven door alle jumpers eromheen te verwijderen.

Apparaatbediening

Om het apparaat te gebruiken, moet het eerst worden aangesloten op een QC-compatibele powerbank (of oplader). Standaard is de spanning van de USB van de QC Power Bank 5,0 volt.

Alle jumpers moeten worden aangesloten na het uploaden van de code, zodat MCU via D+/- kan communiceren met de QC-bron.

De LM1117 3.3 V-regelaar zal opstarten en stroom leveren aan ATtiny85. Deze MCU begint de code uit te voeren. 4 I/O-pinnen van ATtiny85 zijn verbonden met de spanningsdelerweerstanden die worden gebruikt als uitgang hoog en laag. Een andere I/O-pin is verbonden met een schakelaar die zal initialiseren als input Pull Up. Deze schakelaar vereist gebruikersinvoer om de spanning van de QC-bron te wijzigen.

Nu, voordat we in details treden, is het belangrijk om te weten hoe de output zal veranderen. Er zijn minstens 4 lijnen/draden gemeenschappelijk voor elk type USB (USB A, B, C, 1.1, 2.0, 3.0+).

Dit zijn:-

  • VBUS (standaard Vcc +5V)
  • D +
  • D -
  • Grond

In de gewone oplader/powerbank is VBUS vast, omdat de vermogensafgifte wordt beperkt door de stroom die 500 mA, 1 A, 2 A respectievelijk 2,5 watt, 5 watt en 10 watt kan opleveren.

Maar in QC-stroombronapparaten is er een interne boost-converter die de spanning kan verhogen, afhankelijk van het verzoek van het stroomontvangende apparaat (PD) !!!

QC 2.0 (ook 3.0) gebruikt D+ en D- van USB om met PD te communiceren. PD stuurt spanningssignalen naar D+ en D- en de QC-lader levert dienovereenkomstig stroom door de VBUS-spanning te wijzigen. Volgens dit CHY-gegevensblad is hier een tabel waarin wordt uitgelegd welk signaalpaar op D+/D- van PD ervoor zorgt dat de QC welke uitgangsspanning levert:

QC 2.0-ondersteuning wordt gestart wanneer de spanning op D+ en D- gelijk is aan de waarden op de 4e rij van deze tabel en blijft ten minste 1,25 seconden. Als D+ 0,0 volt wordt (in feite minder dan 0,325 volt), stopt de QC-ondersteuning en wordt de output 5,0 volt. Door de spanningen in te stellen volgens deze tabel, kan de output op VBUS worden gewijzigd.

Hier zijn de 4 uitgangen van ATtiny85 verbonden met een 2 spanningsdelernetwerk bestaande uit twee 10k en twee 2.2k weerstanden om deze spanningssignalen voor D+/D-lijnen te genereren.

Als u bijvoorbeeld 3,3 V op D+ wilt genereren, worden zowel de bovenste als de onderste weerstanden die zijn aangesloten op twee ATtiny85-uitgangspinnen PB3 en PB4, beide hoog gemaakt op basis van code.

Evenzo, om 0,6 V op D- te genereren, worden zowel de bovenste als de onderste weerstanden die zijn aangesloten op andere twee ATtiny85-uitgangspinnen (PB1 en PB3) respectievelijk Hoog en Laag gemaakt.

Op deze manier ontvangt de QC 2.0-oplader/powerbank een verzoek om een ​​spanningswijziging en verandert dienovereenkomstig. De drukschakelaar is geconfigureerd als Input PULLUP, terwijl hij niet wordt ingedrukt, wordt hij door de MCU als HOOG gelezen en de code-uitvoeringen blijven in de while-lus, waardoor elke wijziging van de ingestelde spanning wordt voorkomen. Wanneer de gebruiker op de drukschakelaar drukt, terwijl de lus breekt en de volgende spanning wordt ingesteld. Nogmaals, de uitvoering van de code gaat de volgende while-lus in om de huidige VBUS-spanning op peil te houden.

Er is een LED die zwak (5V), mild (9V) en helder (12V) oplicht om de gebruiker een visuele weergave van de uitgangsspanning te geven.

Mogelijke toepassingen

  • Aansturen van 12V LED-stripes
  • RF-zenders/-ontvangers van stroom voorzien voor een groter bereik
  • Aansturen van 12V-relais, motoren enz.
  • Krijg een spanning tussen 1,25 en 10 volt met een LM317 of LM2596
  • 9V IR-afstandsbediening
  • Robotautokracht
  • Laptop opladen met 20V
  • Elk systeem tot 18 watt zoals WiFI-, LTE-, S2E-apparaten voor IoT-toepassingen
  • Back-upvoeding voor externe systemen
  • De meeste LCD-, LED-monitoren, printers, scanners
  • Low Power draagbare pc

Ondersteuning voor andere QC-klassen

Aangezien QC 2.0 Klasse B, QC 3.0 en QC 4.0 achterwaarts compatibel zijn met QC 2.0 Klasse A, werkt dit apparaat mogelijk met alle nieuwste opladers en powerbanks. Maar de spanningsopties zijn 5,0, 9,0 en 12,0 volt. Als andere uitgangsspanningen nodig zijn, lees dan de CHY 100, 101, 103 datasheets en pas de code dienovereenkomstig aan.

Waarschuwing!

  • Hoog Kwaliteit QC Powerbank of oplader met Beveiliging tegen kortsluiting moet worden gebruikt, extern Belastingen mogen niet hoger zijn dan 18 watt . Dit kan worden gegarandeerd door Label stroomverbruik controleren op Laad apparaten.
  • Het leveren van 20 volt moet worden vermeden sinds 1117 3v3-regelaar kan Behandel maximaal 15 volt , dit moet worden vermeden met de MCU-code door Nooit toestaan ​​dat D+ en D-lijn tegelijkertijd 3,3 volt hebben .
  • In case 20 Volt output is vereist (ondersteund door QC 2.0 Klasse B en QC 3.0, QC 4.0 ) moet een spanningsregelaar (LM317 geconfigureerd voor 3,3 V) worden gebruikt die meer dan 20 Volt aankan. Anders worden zowel Regulator als MCU vernietigd !!!!
  • Aandacht moet worden besteed naar de Polariteit uitgangsspanning, +ve aangegeven met ROOD en -ve aangegeven met BLAUWE kleine draden naast Uitgang.
  • Los verbinding op USB Man-vrouw koppeling moeten wees Vermeden of Er wordt warmte gegenereerd als gevolg van contactweerstand en Energie-efficiëntie zal afnemen.
  • Tijdens ISP-programmering moeten alle jumpers worden verwijderd om MOSI-, MISO-, SCK-, VCC-, GND-, RESET-pinnen te isoleren van de rest van de circuits op het bord naar Vermijd interferentie met programmeren.
  • Code wijzigen Mag niet worden gedaan zonder Een goed begrip van het QC-oplaadprotocol, dit ontwerp is voornamelijk Bedoeld voor QC 2.0 (Klasse A) stroombronnen maar kan gedeeltelijk zijn gebruikt voor Hoger QC Standaarden
  • Hacken Misschien Niet Werk met sommige QC-opladers/powerbanks
  • GPIO-switching moet klaar zijn in Juiste volgorde naar Beëindiging vermijden van Hoogspanningsmodus

Opmerking: Het wordt aangeraden dit project niet te repliceren als bovenstaande punten niet worden begrepen door iemand, anders Risico van Vuur Gevaar of Verlies van Apparatuur misschien gebeurt!

Het is mogelijk om de spanningen handmatig te wijzigen zonder een microcontroller te gebruiken. Er zijn slechts 4 jumperdraden nodig om de condities van de D+/D-tabel na te bootsen door Vcc (3,3V) en Gnd (0V) in de juiste volgorde aan te sluiten op de weerstanden. Omdat het gebruik van mcu toch een overkill kan zijn voor dergelijke eenvoudige overgangen.

Referenties

  • 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

Code

  • ATtiny85-code
ATtiny85-codeC/C++
QC-controller
///=========================Algoritme ========================/// /* Sluit eerst de D+ pin aan op een spanning van 0,325 tot 2 volt en houd de D- zwevend, wacht dan minstens 2 seconden. Tijdens deze 2 seconden gebeuren er twee acties:De D+ en D- spanning zijn gelijk aan een spanning tussen 0,325 en 2 volt gedurende 1,25 seconden. (omdat de D+ en D- pinnen eerst met elkaar verbonden zijn in de CHY100) Dan houdt de D+ een spanning tussen 0,325 tot 2 volt en de D- spanning daalt tot nul. (omdat de D+ en D- pinnen loskoppelen en een weerstand in de CHY100 de D- ontlaadt)*** CHY100 is een QC 2.0 Protocol-interfacechip in de Powerbank/oplader ........ andere QC 2.0-chips zijn waarschijnlijk soortgelijk Maak eerst D+ boven 3,0 V en sluit dan de D- aan op een spanning tussen 0,325 en 2 volt. De VBUS springt naar 9V. Houd de D-verbinding met een spanning tussen 0,325 en 2 volt, maak D+ een spanning tussen 0,325 en 2 volt. De VBUS springt naar 12V. (omdat de D+ en D- spanning tussen 2V en 0,325V liggen) Koppel de D+ los van een spanning tussen 0,325 tot 2 volt. VBUS springt naar 5V, omdat de QC2.0 de spanningswijzigingsmodus verlaat en VBUS naar de standaardwaarde 5V gaat. begin vanaf het begin wanneer u QC2.0 opnieuw moet invoeren)*/// ============BELANGRIJKE OPMERKING ================//// *** Volgorde van het maken van pinnen HOOG en LAAG is belangrijk// *** Als D+ tijdens de overgang onder 0,325V daalt vanwege een verkeerde GPIO-schakelvolgorde// *** QC 2.0 verlaat de hoogspanningsmodus en VBUS gaat terug naar 5 Volt // ==============================================/ /#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); // Nu QC-handshake starten door D+ 0,6 v te maken met D- op Gnd Init_QC();}void loop(){ //// 5V //// while (digitalRead(PUSH_SWITCH) ==1) {} vertraging (250 ); //// 9v //// Set_9V(); terwijl (digitalRead (PUSH_SWITCH) ==1) {} vertraging (250); //// 12v //// Set_12V(); while (digitalRead(PUSH_SWITCH) ==1) {} vertraging (250);// Set_5V();}///************************* Functies *********************///void Init_QC(){ //pinMode(Dn_2k2, INPUT); //pinMode (Dn_10k, INPUT); pinMode (Dp_2k2, UITGANG); pinMode (Dp_10k, UITGANG); digitalWrite (Dp_2k2, LAAG); digitalWrite (Dp_10k, HOOG); vertraging (3000); // nu is het QC-protocol actief} void Set_9V () {pinMode (Dp_2k2, OUTPUT); pinMode (Dp_10k, UITGANG); digitalWrite (Dp_10k, HOOG); digitalWrite (Dp_2k2, HOOG); pinMode (Dn_2k2, UITGANG); pinMode (Dn_10k, UITGANG); digitalWrite (Dn_2k2, LAAG); digitalWrite(Dn_10k, HIGH);}void Set_12V(){ pinMode(Dp_2k2, OUTPUT); pinMode (Dp_10k, UITGANG); pinMode (Dn_2k2, UITGANG); pinMode (Dn_10k, UITGANG); digitalWrite (Dn_2k2, LAAG); digitalWrite (Dn_10k, HOOG); digitalWrite (Dp_10k, HOOG); digitalWrite(Dp_2k2, LOW);}void Set_5V(){ pinMode(Dp_2k2, OUTPUT); pinMode (Dp_10k, UITGANG); digitalWrite (Dp_10k, HOOG); digitalWrite (Dp_2k2, LAAG); pinMode (Dn_2k2, UITGANG); pinMode (Dn_10k, UITGANG); digitalWrite (Dn_2k2, LAAG); digitalWrite(Dn_10k, LOW);}void Set_20V(){// spanningsregelaar wijzigen !!!// doe op eigen risico }

Schema's

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

Productieproces

  1. Qualcomm verbetert drone-hulpprogramma met 5G en AI-enabled drone-platform
  2. Beknopte handleiding voor het afdichten van FDM met Insight
  3. Hardware hacken met Markforged Mark Two bij MakeMIT
  4. Gyroscoopplezier met NeoPixel Ring
  5. Cloud-kostuum
  6. Eenvoudige obstakelsensor met Arduino
  7. Minimale MIDI-drumkit met 3D-printer
  8. Spraakherkenning en synthese met Arduino
  9. Externe S-Meter op Icom-radio's met CI-V-poort
  10. Ministereoradio met RDA5807
  11. IoT4Car