Version 1
							
								
								
									
										
											BIN
										
									
								
								QC2_adapter_board_ATTiny.fzz
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,89 @@
 | 
			
		||||
/*
 | 
			
		||||
   ATTiny 13 Quick Charge 2.0 Powerbank Adapter Board
 | 
			
		||||
   Author: dustinbrun
 | 
			
		||||
           licensed under CC BY 4.0
 | 
			
		||||
 | 
			
		||||
   Version 03.2022
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
const int J1 = 4;
 | 
			
		||||
const int Dp_2k2 = 0;
 | 
			
		||||
const int Dp_10k = 1;
 | 
			
		||||
const int Dn_10k = 2;
 | 
			
		||||
const int load = 3;
 | 
			
		||||
 | 
			
		||||
bool active_9V = 0;
 | 
			
		||||
 | 
			
		||||
void setup()
 | 
			
		||||
{
 | 
			
		||||
  delay(500);
 | 
			
		||||
 | 
			
		||||
  pinMode(load, OUTPUT);
 | 
			
		||||
  pinMode(J1, INPUT_PULLUP);
 | 
			
		||||
 | 
			
		||||
  blink_load(2, 100);
 | 
			
		||||
 | 
			
		||||
  // Quickcharge Init
 | 
			
		||||
  pinMode(Dn_10k, INPUT);
 | 
			
		||||
  pinMode(Dp_2k2, INPUT);
 | 
			
		||||
  pinMode(Dp_10k, OUTPUT);
 | 
			
		||||
  digitalWrite(Dp_10k, HIGH);
 | 
			
		||||
  delay(2000);
 | 
			
		||||
  pinMode(Dn_10k, OUTPUT);
 | 
			
		||||
  digitalWrite(Dn_10k, LOW);
 | 
			
		||||
  delay(500);
 | 
			
		||||
  // End of Quickcharge Init
 | 
			
		||||
 | 
			
		||||
  digitalWrite(load, HIGH);
 | 
			
		||||
  delay(500);
 | 
			
		||||
  
 | 
			
		||||
  if (digitalRead(J1) == LOW) //Jumper is set, Output 9V
 | 
			
		||||
  {
 | 
			
		||||
    // Quickcharge set 9V
 | 
			
		||||
    pinMode(Dp_2k2, OUTPUT);
 | 
			
		||||
    digitalWrite(Dp_2k2, HIGH);
 | 
			
		||||
    digitalWrite(Dn_10k, HIGH);
 | 
			
		||||
    // End of Quickcharge set 9V
 | 
			
		||||
    
 | 
			
		||||
    blink_load(2, 500);
 | 
			
		||||
    active_9V = true;
 | 
			
		||||
  }
 | 
			
		||||
  else  //Jumper is not set, Output 12V
 | 
			
		||||
  {
 | 
			
		||||
    // Quickcharge set 12V
 | 
			
		||||
    pinMode(Dp_2k2, OUTPUT);
 | 
			
		||||
    digitalWrite(Dp_2k2, LOW);
 | 
			
		||||
    digitalWrite(Dn_10k, HIGH);
 | 
			
		||||
    // End of Quickcharge set 12V
 | 
			
		||||
    
 | 
			
		||||
    blink_load(1, 500);
 | 
			
		||||
    active_9V = false;
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void loop() 
 | 
			
		||||
{
 | 
			
		||||
  delay(3000);
 | 
			
		||||
 | 
			
		||||
  if (active_9V)
 | 
			
		||||
  {
 | 
			
		||||
    blink_load(2, 1000);
 | 
			
		||||
  }
 | 
			
		||||
  else
 | 
			
		||||
  {
 | 
			
		||||
    blink_load(1, 1000);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void blink_load(int x, int delaytime)
 | 
			
		||||
{
 | 
			
		||||
  for (int i = 0; i < x ; i++)
 | 
			
		||||
  {
 | 
			
		||||
    digitalWrite(load, HIGH);
 | 
			
		||||
    delay(delaytime);
 | 
			
		||||
    digitalWrite(load, LOW);
 | 
			
		||||
    delay(delaytime);
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								QC2_adapter_board_ATTiny_Leiterplatte.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 59 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								QC2_adapter_board_ATTiny_Schaltplan.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 121 KiB  | 
							
								
								
									
										280
									
								
								README.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										84
									
								
								README.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,84 @@
 | 
			
		||||
# ATTiny13 Quick Charge 2.0 Powerbank Adapter Board
 | 
			
		||||
A small adapter board which emulates a Quick Charge 2.0 (also compatible with Quick Charge 3.0) compatible device to force a power supply or a power bank to output higher voltages. Additionally this board generates a base load to prevent power banks from switching off automatically, if there is not enough load on the output.
 | 
			
		||||
 | 
			
		||||
<img src="pictures/QC2_adapter_board_ATTiny_front.jpg" width="350px">
 | 
			
		||||
<img src="pictures/QC2_adapter_board_ATTiny_back.jpg" width="300px">
 | 
			
		||||
 | 
			
		||||
# Quick Charge 2.0 specification
 | 
			
		||||
To trigger the Quick Charge feature a special init routine must be run through. I have tried this routine from different sources (which are linked down below) but all of them did not work with all my Quick Charge power supplies. So I tried to create my own routine, which was inspired by the instructions given in the TPS61088 datasheet (Page 6+7). This routine works just fine with all my Quick Charge power supplies.
 | 
			
		||||
 | 
			
		||||
After this initialization the output Voltage can be configured by applying different voltage levels to the USB data lines D+ and D-:
 | 
			
		||||
 | 
			
		||||
<img src="pictures/usb-pinout.webp" width="500px">
 | 
			
		||||
 | 
			
		||||
## Voltage Levels:
 | 
			
		||||
| D+        | D-        | output voltage    |
 | 
			
		||||
| --------  | --------  | --------          |
 | 
			
		||||
| 0,6V      | 0,0V      |  5V (default)     |
 | 
			
		||||
| 3,3V      | 0,6V      |  9V               |
 | 
			
		||||
| 0,6V      | 0,6V      | 12V               |
 | 
			
		||||
 | 
			
		||||
With this board the output voltage can be configured BEFORE startup using a jumper. The output configuration is shown by the LED attached in parallel to the load resistors:
 | 
			
		||||
- Jumper is set during startup: output 9V, LED flashes 2 times each cycle
 | 
			
		||||
- Jumper is not set during startup: output 12V, LED flashes 1 time each cycle
 | 
			
		||||
 | 
			
		||||
# Hardware
 | 
			
		||||
## Schematic
 | 
			
		||||
<img src="QC2_adapter_board_ATTiny_Schaltplan.png" width="700px">
 | 
			
		||||
 | 
			
		||||
## PCB Layout
 | 
			
		||||
<img src="QC2_adapter_board_ATTiny_Leiterplatte.png" width="300px">
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
## ATtiny-Pinout
 | 
			
		||||
<img src="pictures/attiny-pinout.png" width="40%">
 | 
			
		||||
<br>(Source: https://cdn.sparkfun.com/assets/f/8/f/d/9/52713d5b757b7fc0658b4567.png)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# Software
 | 
			
		||||
 | 
			
		||||
## Program the ATtiny
 | 
			
		||||
### 1. Upload `ArduinoISP` sketch to the Arduino
 | 
			
		||||
   You can find it in the Examples folder of the Arduino-IDE
 | 
			
		||||
 | 
			
		||||
### 2. wiring
 | 
			
		||||
   I use a Arduino Nano to program the ATtiny, but also a Arduino UNO will do fine. Hook up the ATtiny like it is shown in the schematic:
 | 
			
		||||
 | 
			
		||||
   <img src="pictures/Program_ATtiny_Steckplatine.png" width="50%">
 | 
			
		||||
 | 
			
		||||
   The capacitor is important because it prevents the Arduino from resetting itself while programming the ATtiny.
 | 
			
		||||
 | 
			
		||||
### 3. Download ATtiny13 support for the IDE
 | 
			
		||||
   Add the URL `http://drazzy.com/package_drazzy.com_index.json` to the Additional Boards Manager URLs in the IDE Preferences. After that open the Boards-Manager, search for "DIY Attiny" and install it. Now you should find the Attiny13 and some other Attiny Boards in the Board menu.
 | 
			
		||||
 | 
			
		||||
### 4. Uploading
 | 
			
		||||
  Open the code in the Arduino IDE and select the Attiny13 as the Board.
 | 
			
		||||
  Select the following settings:
 | 
			
		||||
  <br><img src="pictures/ide_settings.png" width="40%">
 | 
			
		||||
  
 | 
			
		||||
  It is important to set "Arduino as ISP" (**NOT Arduino ISP**) as the programmer. 
 | 
			
		||||
   
 | 
			
		||||
   **After that Press `Burn Bootloader` to make sure that these Settings are applied.**
 | 
			
		||||
 | 
			
		||||
   Now you can upload the code by simply pressing **Upload**.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# Sources
 | 
			
		||||
- For the init routine: TPS61088 datasheet (Page 6+7) https://www.ti.com/lit/ug/tidu917/tidu917.pdf
 | 
			
		||||
- Voltages levels to configure the output: https://www.mouser.com/datasheet/2/328/chiphy_family_datasheet-269468.pdf
 | 
			
		||||
- USB pinout: https://www.electroschematics.com/wp-content/uploads/2010/01/usb-pinout.jpg
 | 
			
		||||
- other tested init routine + schematic inspiration: https://create.arduino.cc/projecthub/PSoC_Rocks/hacking-qualcomm-quick-charge-qc-2-0-3-0-with-attiny85-b7627d
 | 
			
		||||
- other tested init routine: https://github.com/septillion-git/QC2Control
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<br>
 | 
			
		||||
 | 
			
		||||
### I hope you like this project!
 | 
			
		||||
 | 
			
		||||
<br>
 | 
			
		||||
<p xmlns:dct="http://purl.org/dc/terms/" xmlns:cc="http://creativecommons.org/ns#" class="license-text">This work by <span property="cc:attributionName">Dustin Brunner</span> is licensed under <a rel="license" href="https://creativecommons.org/licenses/by/4.0">CC BY 4.0<img style="height:15px!important;margin-left:3px;vertical-align:text-bottom;" src="https://mirrors.creativecommons.org/presskit/icons/cc.svg?ref=chooser-v1" /><img style="height:15px!important;margin-left:3px;vertical-align:text-bottom;" src="https://mirrors.creativecommons.org/presskit/icons/by.svg?ref=chooser-v1" /></a></p>
 | 
			
		||||
 | 
			
		||||
<a rel="license" href="http://creativecommons.org/licenses/by/4.0/"><img alt="Creative Commons Lizenzvertrag" style="border-width:0" src="https://i.creativecommons.org/l/by/4.0/88x31.png" /></a><br />Dieses Werk von <span xmlns:cc="http://creativecommons.org/ns#" property="cc:attributionName">Dustin Brunner</span> ist lizenziert unter einer <a rel="license" href="http://creativecommons.org/licenses/by/4.0/">Creative Commons Namensnennung 4.0 International Lizenz</a>.
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								pictures/Program_ATtiny_Steckplatine.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 159 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								pictures/QC2_adapter_board_ATTiny_back.jpg
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 225 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								pictures/QC2_adapter_board_ATTiny_front.jpg
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 147 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								pictures/attiny-pinout.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 49 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								pictures/ide_settings.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 31 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								pictures/usb-pinout.webp
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 25 KiB  |