Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Herstellungsprozess

Qualcomm (Quick Charge) QC 2.0/3.0 mit ATtiny85 hacken

Komponenten und Verbrauchsmaterialien

Mikrochip-Technologie ATtiny85
× 1
SparkFun LM1117 3,3-V-Regler
× 1
SparkFun USB-Stecker A
× 1
Widerstand 10k Ohm
× 2
Widerstand 2,21 kOhm
× 1
Arduino Proto Shield
× 1
SparkFun Drucktastenschalter 12 mm
× 1
QC-Powerbank oder -Ladegerät
× 1
Generischer Pullover (0.1")
× 8
Male-Header 36 Position 1 Row- Long (0,1")
× 1
Widerstand 0,05 Ohm
× 10
Arduino UNO
× 1
Überbrückungsdrähte männlich/weiblich
× 7
LED (generisch)
× 1
Widerstand 22,1 kOhm
× 1

Notwendige Werkzeuge und Maschinen

Lötkolben (generisch)

Apps und Onlinedienste

Arduino-IDE

Über dieses Projekt

Einführung

Viele USB-betriebene Unterhaltungselektronikgeräte verfügen über eine integrierte Qualcomm QC-Lösung (Quick Charge) zum schnellen Aufladen mit unterschiedlichen Spannungen anstelle der üblichen 5,0 Volt. Dies ermöglicht die Verwendung von QC-kompatiblen Powerbanks für Projekte, die mehr Leistung oder höhere Spannungen wie 9/12 Volt benötigen.

Der Zweck dieses Projekts besteht darin, ein Gerät zu entwickeln, das das QC-Protokoll hacken kann und es Bastlern, Entwicklern und Ingenieuren ermöglicht, ihre Powerbanks für mehr Spannung / Leistung für ihr nächstes stromhungriges Projekt zu verwenden.

Die obigen Bilder zeigen 5, 9, 12 Volt Ausgang von einem QC 2.0 kompatiblen Powerback, der einen 10 Ohm 5 Watt Widerstand versorgt.

Entwicklung des Hack * Geräts

Das ganze Gerät verfügt über zwei aktive Komponenten - den LM1117 3.3V Spannungsregler und die ATtiny85 MCU zur Steuerung. Alle anderen Teile sind Widerstände, Druckschalter, Stecker, Jumper, Header, Terminal, Protoboard usw.

Um das Gerät zu bauen, werden zuerst Komponenten in einem sauberen Layout platziert und dann verlötet. Einige 0-Ohm-Kurzverbindungen werden verwendet, um verschiedene Teile miteinander zu verbinden.

Es gibt Jumper, um die Onboard-Schaltung zu deaktivieren und die Programmierung zu aktivieren. Da die Programmierleitung (SPI - MOSI, MISO, SCK) auch während des Gerätebetriebs als GPIO fungiert.

ATtiny85 mit ISP programmieren

Vor dem Programmieren des ATtiny85 wird es von der IC Base entfernt und auf ein Steckbrett gelegt. Um ATtiny85 zu programmieren, wird ein Arduino UNO-Board in einen ISP-Programmierer umgewandelt, indem das "ArduinoISP" aus Datei> Beispiel> ArduinoISP hochgeladen wird skizzieren. Diese Skizze ist in der Arduino IDE verfügbar.

Die Programmierung von ATtiny85 erfordert folgende Schritte:

  • Installation der ATtiny-Unterstützung für Arduino IDE (Danke an David A. Mellis)
  • Brennen des Bootloaders für ATtiny85 mit Arduino UNO als ISP
  • Code mit Arduino UNO als ISP entwickeln und hochladen

Folgende Schaltung ist für die Programmierung des ATtiny85 vorbereitet:

ISP = im Systemprogrammierer

Alternativ kann der ATtiny85 so programmiert werden, dass er auf dem Gerät bleibt, indem alle Jumper um ihn herum entfernt werden.

Gerätebetrieb

Um das Gerät zu verwenden, muss es zuerst mit einer QC-kompatiblen Powerbank (oder einem Ladegerät) verbunden werden. Standardmäßig beträgt die Spannung des USB der QC Power Bank 5,0 Volt.

Alle Jumper müssen nach dem Hochladen des Codes verbunden werden, damit die MCU über D+/- mit der QC-Quelle kommunizieren kann.

Der 3,3-V-Regler LM1117 wird eingeschaltet und versorgt ATtiny85 mit Strom. Diese MCU beginnt mit der Ausführung des Codes. 4 I/O-Pins von ATtiny85 sind mit den Spannungsteilerwiderständen verbunden, die als High- und Low-Ausgang verwendet werden. Ein weiterer I/O-Pin ist mit einem Schalter verbunden, der als Eingang Pull Up initialisiert wird. Dieser Schalter benötigt Benutzereingaben, um die Spannung der QC-Quelle zu ändern.

Bevor Sie ins Detail gehen, ist es wichtig zu wissen, wie sich die Ausgabe ändert. Jede Art von USB hat mindestens 4 Leitungen/Drähte (USB A, B, C, 1.1, 2.0, 3.0+).

Das sind :-

  • VBUS (Vcc +5V standardmäßig)
  • D +
  • D -
  • Boden

In normalen Ladegeräten/Powerbanks ist VBUS fest eingestellt, daher wird die Stromabgabe durch den Strom begrenzt, der 500 mA, 1 A, 2 A jeweils 2,5 Watt, 5 Watt und 10 Watt ergeben kann.

Aber in QC-Stromquellengeräten gibt es einen internen Aufwärtswandler, der die Spannung je nach Anforderung des Stromempfangsgeräts (PD) hochpumpen kann !!!

QC 2.0 (auch 3.0) verwendet D+ und D- von USB, um mit PD zu kommunizieren. PD sendet Spannungssignale an D+ und D- und das QC-Ladegerät liefert entsprechend Strom, indem es die VBUS-Spannung ändert. Gemäß diesem CHY-Datenblatt ist hier eine Tabelle, die erklärt, welches Signalpaar auf D+/D- von PD den QC dazu bringt, welche Spannungsausgabe zu liefern:

Die QC 2.0-Unterstützung beginnt, wenn die Spannungen an D+ und D- den Werten in der 4. Zeile dieser Tabelle entsprechen und mindestens 1,25 Sekunden bleiben. Wenn D+ 0,0 Volt beträgt (tatsächlich unter 0,325 Volt), wird die QC-Unterstützung beendet und der Ausgang beträgt 5,0 Volt. Durch Einstellen der Spannungen gemäß dieser Tabelle kann die Ausgabe auf VBUS geändert werden.

Hier sind die 4 Ausgänge von ATtiny85 mit 2 Spannungsteilernetzwerken verbunden, die aus zwei 10k- und zwei 2,2k-Widerständen bestehen, um diese Spannungssignale für D+/D- Leitungen zu erzeugen.

Um beispielsweise 3,3 V an D+ zu erzeugen, werden sowohl der obere als auch der untere Widerstand, der mit zwei ATtiny85-Ausgangspins PB3 und PB4 verbunden ist, vom Code auf High gesetzt.

Um 0,6 V auf D- zu erzeugen, werden sowohl der obere als auch der untere Widerstand, der mit den anderen beiden ATtiny85-Ausgangspins (PB1 und PB3) verbunden ist, auf High bzw. Low gesetzt.

Auf diese Weise erhält das QC 2.0-Ladegerät/die Powerbank eine Spannungsänderungsanforderung und ändert sich entsprechend. Der Push Switch ist als Input PULLUP konfiguriert, während er nicht gedrückt wird, wird er von der MCU auf HIGH gelesen und Codeausführungen werden in der While-Schleife gehalten, um jede Änderung der eingestellten Spannung zu verhindern. Wenn der Benutzer den Druckschalter drückt, wird die Schleife unterbrochen und die nächste Spannung eingestellt. Andererseits tritt die Codeausführung in die nächste while-Schleife ein, um die aktuelle VBUS-Spannung aufrechtzuerhalten.

Es gibt eine LED, die schwach (5V), mild (9V) und hell (12V) leuchtet, um dem Benutzer die Ausgangsspannung visuell darzustellen.

Mögliche Anwendungen

  • Fahren mit 12-V-LED-Streifen
  • Versorgung von HF-Sendern/Empfängern für größere Reichweite
  • Antreiben von 12-V-Relais, Motoren usw.
  • Erhalte eine Spannung zwischen 1,25 und 10 Volt mit einem LM317 oder LM2596
  • 9-V-IR-Fernbedienung
  • Roboter-Auto-Power
  • Laden des Laptops mit 20 V
  • Jedes System mit bis zu 18 Watt wie WLAN, LTE, S2E-Geräte für IoT-Anwendungen
  • Backup-Strom für Remote-Systeme
  • Die meisten LCD-, LED-Monitore, Drucker, Scanner
  • Tragbarer PC mit geringem Stromverbrauch

Unterstützung für andere QC-Klassen

Da QC 2.0 Klasse B, QC 3.0 und QC 4.0 abwärtskompatibel mit QC 2.0 Klasse A sind, funktioniert dieses Gerät möglicherweise mit allen neuesten Ladegeräten und Powerbanks. Die Spannungsoptionen sind jedoch 5,0, 9,0 und 12,0 Volt. Wenn andere Ausgangsspannungen benötigt werden, lesen Sie bitte die Datenblätter von CHY 100, 101, 103 und ändern Sie den Code entsprechend.

Achtung!

  • Hoch Qualität QC-Powerbank oder -Ladegerät mit Kurzschlussschutz muss verwendet werden, extern Lasten dürfen 18 Watt nicht überschreiten . Dies kann sichergestellt werden durch Leistungsbewertungsetikett prüfen auf Geräten laden.
  • Die Ausgabe von 20 Volt muss vermieden werden seit 1117 3v3-Regler kann Belasten Sie maximal 15 Volt , dies sollte von der vermieden werden MCU-Code von D+ und D- Leitung niemals gleichzeitig mit 3,3 Volt zulassen .
  • In Fall 20-Volt-Ausgang erforderlich (unterstützt von QC 2.0 Klasse B und QC 3.0, QC 4.0 ) muss ein Spannungsregler (LM317 konfiguriert für 3,3 V) verwendet werden, der mehr als 20 Volt verarbeiten kann. Andernfalls werden sowohl der Regler als auch die MCU zerstört !!!!
  • Aufmerksamkeit sollte geschenkt werden zum Polarität der Ausgangsspannung, +ve angezeigt durch ROT und -ve angezeigt durch BLAU kleine Drähte neben dem Ausgangsanschluss.
  • Lose Verbindung um USB männlich-weiblich Kopplung muss sein Vermeidet oder Als Folge des Kontaktwiderstands wird Wärme erzeugt und Die Energieeffizienz wird sinken.
  • Während der ISP-Programmierung müssen alle Jumper entfernt werden zum Isolieren der MOSI-, MISO-, SCK-, VCC-, GND-, RESET-Pins von den restlichen Schaltungen auf der Platine zu Interferenzen bei der Programmierung vermeiden.
  • Codeänderung Darf nicht durchgeführt werden ohne Das QC-Ladeprotokoll klar verstehend, ist dieses Design hauptsächlich Für QC 2.0 (Klasse A) Stromquellen vorgesehen aber kann teilweise sein gebraucht für Höher QC Standards
  • Hack Könnte Nicht Arbeit mit einigen QC-Ladegeräten/Powerbanks
  • GPIO-Umschaltung muss fertig sein in Richtige Reihenfolge zu Kündigung vermeiden von Hochspannungsmodus

Hinweis: Es wird empfohlen, dieses Projekt nicht zu replizieren, wenn die obigen Punkte nicht verstanden werden von jemand, sonst Risiko von Feuer Gefahr oder Verlust von Ausrüstung könnte vorkommen!

Es ist möglich, die Spannungen manuell zu ändern, ohne einen Mikrocontroller zu verwenden. Es sind nur 4 Überbrückungsdrähte erforderlich, um die Bedingungen der D+/D- Tabelle nachzuahmen, indem Sie in der richtigen Reihenfolge an Vcc (3,3 V) und Gnd (0 V) an die Widerstände anschließen. Denn die Verwendung von mcu kann für solche einfachen Übergänge schließlich ein Overkill sein.

Referenzen

  • https://www.mouser.com/ds/2/328/chiphy_family_datasheet-269468.pdf
  • https://de.wikipedia.org/wiki/Quick_Charge
  • http://www.ti.com/lit/ug/tidu917/tidu917.pdf

Code

  • ATtiny85-Code
ATtiny85-CodeC/C++
QC-Controller
///=========================Algorithmus ========================/// /* Verbinden Sie zuerst den D+-Pin mit einer Spannung von 0,325 bis 2 Volt und halten Sie den D- schwebend, dann warten Sie mindestens 2 Sekunden. Während dieser 2 Sekunden passieren zwei Aktionen:Die D+ und D- Spannung entsprechen einer Spannung zwischen 0,325 und 2 Volt für 1,25 Sekunden. (weil die D+ und D- Pins zuerst im CHY100 miteinander verbunden sind) Dann bleibt D+ auf einer Spannung zwischen 0,325 bis 2 Volt und die D- Spannung sinkt auf Null. (weil die D+ und D- Pins getrennt sind und ein Widerstand im CHY100 das D- entlädt)*** CHY100 ist ein QC 2.0 Protocol Interface Chip in Powerbank/Ladegerät ........ andere QC 2.0 Chips sind wahrscheinlich ähnlich Stellen Sie zuerst D+ über 3,0 V her und verbinden Sie dann D- mit einer Spannung zwischen 0,325 und 2 Volt. Der VBUS springt auf 9V. Während Sie die D-Verbindung mit einer Spannung zwischen 0,325 und 2 Volt halten, stellen Sie D+ auf eine Spannung zwischen 0,325 und 2 Volt ein. Der VBUS springt auf 12V. (da die D+ und D- Spannung zwischen 2V und 0,325V liegen) Trennen Sie den D+ von einer Spannung zwischen 0,325 und 2 Volt. VBUS springt auf 5V, weil der QC2.0 den Spannungsänderungsmodus verlässt und VBUS auf den Standardwert 5V geht. beginnen Sie von vorne, wenn Sie QC2.0 erneut eingeben müssen)*/// ============WICHTIGER HINWEIS ================//// *** Die Reihenfolge der Pins HIGH und LOW ist wichtig // *** Wenn D+ während des Übergangs aufgrund einer falschen GPIO-Schaltsequenz unter 0,325 V fällt // *** QC 2.0 verlässt den Hochspannungsmodus und VBUS geht zurück auf 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); // Jetzt QC-Handshake einleiten, indem D+ 0,6 v gemacht wird, D- auf Gnd Init_QC();}void loop(){ //// 5V //// while (digitalRead(PUSH_SWITCH) ==1) {} delay(250 .) ); //// 9v //// Set_9V(); while (digitalRead (PUSH_SWITCH) ==1) {} Verzögerung (250); //// 12v //// Set_12V(); while (digitalRead(PUSH_SWITCH) ==1) {} delay(250); // Set_5V();} ///************************ Funktionen ********************** ///void Init_QC () {//pinMode (Dn_2k2, INPUT); // PinMode (Dn_10k, INPUT); pinMode (Dp_2k2, AUSGANG); pinMode (Dp_10k, AUSGANG); digitalWrite (Dp_2k2, LOW); digitalWrite (Dp_10k, HIGH); Verzögerung (3000); // jetzt ist das QC-Protokoll aktiv}void Set_9V () {pinMode (Dp_2k2, OUTPUT); pinMode (Dp_10k, AUSGANG); digitalWrite (Dp_10k, HIGH); digitalWrite (Dp_2k2, HIGH); pinMode (Dn_2k2, AUSGANG); pinMode (Dn_10k, AUSGANG); digitalWrite (Dn_2k2, LOW); digitalWrite (Dn_10k, HIGH);}void Set_12V() {pinMode (Dp_2k2, OUTPUT); pinMode (Dp_10k, AUSGANG); pinMode (Dn_2k2, AUSGANG); pinMode (Dn_10k, AUSGANG); digitalWrite (Dn_2k2, LOW); digitalWrite (Dn_10k, HIGH); digitalWrite (Dp_10k, HIGH); digitalWrite (Dp_2k2, LOW);}void Set_5V() {pinMode (Dp_2k2, OUTPUT); pinMode (Dp_10k, AUSGANG); digitalWrite (Dp_10k, HIGH); digitalWrite (Dp_2k2, LOW); pinMode (Dn_2k2, AUSGANG); pinMode (Dn_10k, AUSGANG); digitalWrite (Dn_2k2, LOW); digitalWrite(Dn_10k, LOW);}void Set_20V(){// Spannungsregler ändern !!!// auf eigene Gefahr }

Schaltpläne

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

Herstellungsprozess

  1. Qualcomm steigert den Drohnennutzen mit 5G- und KI-fähiger Drohnenplattform
  2. Kurzanleitung zum Versiegeln von FDM mit Insight
  3. Hardware-Hacking mit Markforged Mark Two bei MakeMIT
  4. Gyroskop-Spaß mit NeoPixel-Ring
  5. Wolkenkostüm
  6. Einfacher Hindernissensor mit Arduino
  7. Minimales MIDI-Drum-Kit mit 3D-Drucker
  8. Spracherkennung und -synthese mit Arduino
  9. Externes S-Meter bei Icom-Funkgeräten mit CI-V-Anschluss
  10. Mini-Stereo-Radio mit RDA5807