Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Proceso de manufactura

Hackear Qualcomm (Carga rápida) QC 2.0 / 3.0 con ATtiny85

Componentes y suministros

Tecnología de microchip ATtiny85
× 1
Regulador SparkFun LM1117 3.3V
× 1
SparkFun USB macho A
× 1
Resistencia de 10k ohmios
× 2
Resistencia de 2,21 k ohmios
× 1
Arduino Proto Shield
× 1
Interruptor de botón SparkFun de 12 mm
× 1
QC Power Bank o cargador
× 1
Puente genérico (0.1 ")
× 8
Male-Header 36 Position 1 Row - Long (0.1 ")
× 1
Resistencia de 0,05 ohmios
× 10
Arduino UNO
× 1
Cables de puente macho / hembra
× 7
LED (genérico)
× 1
Resistencia 22.1k ohm
× 1

Herramientas y máquinas necesarias

Soldador (genérico)

Aplicaciones y servicios en línea

Arduino IDE

Acerca de este proyecto

Introducción

Muchos dispositivos electrónicos de consumo alimentados por USB han incorporado la solución Qualcomm QC (carga rápida) para una carga rápida a diferentes voltajes en lugar de los habituales 5,0 voltios. Esto brinda la oportunidad de usar Power Banks compatibles con QC para proyectos que requieren más energía o voltajes más altos, como 9/12 voltios.

El propósito de este proyecto es desarrollar un dispositivo que pueda piratear el protocolo de control de calidad y permitir que los aficionados, desarrolladores e ingenieros usen sus bancos de energía para obtener más voltaje / energía para su próximo proyecto hambriento de energía.

Las imágenes de arriba muestran una salida de 5, 9, 12 voltios de una fuente de alimentación compatible con QC 2.0 que alimenta una resistencia de 10 ohmios y 5 vatios.

Desarrollando el dispositivo Hack *

Todo el dispositivo tiene dos componentes activos:el regulador de voltaje LM1117 3.3V y el MCU ATtiny85 para controlar. Todas las demás partes son resistencias, pulsadores, conectores, puentes, encabezados, terminales, protoboard, etc.

Para construir el dispositivo, los primeros componentes se colocan en un diseño ordenado y luego se sueldan. Se utilizan algunos enlaces cortos de 0 ohmios para interconectar diferentes partes.

Hay un puente para deshabilitar el circuito interno y habilitar la programación. Dado que, la línea de programación (SPI - MOSI, MISO, SCK) también actúa como GPIO durante el funcionamiento del dispositivo.

Programando ATtiny85 con ISP

Antes de programar el ATtiny85, se quita de la base IC y se coloca en una placa de pruebas. Para programar ATtiny85, una placa Arduino UNO se convierte en programador ISP cargando el "ArduinoISP" desde Archivo> Ejemplo> ArduinoISP bosquejo. Este boceto está disponible en Arduino IDE.

La programación de ATtiny85 requiere los siguientes pasos:

  • Instalación de soporte ATtiny para Arduino IDE (gracias a David A. Mellis)
  • Burning Bootloader para ATtiny85 usando Arduino UNO como ISP
  • Desarrollo y carga de código usando Arduino UNO como ISP

El siguiente circuito está preparado para programar el ATtiny85:

ISP = en el programador del sistema

Alternativamente, el ATtiny85 se puede programar manteniéndolo en el dispositivo quitando todos los puentes a su alrededor.

Operación del dispositivo

Para usar el dispositivo, primero debe estar conectado a un banco de energía (o cargador) compatible con QC. De forma predeterminada, el voltaje del USB del QC Power Bank será de 5,0 voltios.

Todos los puentes deben estar conectados después de cargar el código, por lo que MCU puede comunicarse a través de D +/- a la fuente de control de calidad.

El regulador LM1117 de 3.3 V se encenderá y alimentará el ATtiny85. Esta MCU comenzará a ejecutar el código. 4 pines de E / S de ATtiny85 están conectados a las resistencias divisoras de voltaje que se utilizarán como salida alta y baja. Otro pin de E / S está conectado a un interruptor que se inicializará como entrada Pull Up. Este interruptor toma la entrada del usuario para cambiar el voltaje de la fuente de CC.

Ahora, antes de entrar en detalles, es importante saber cómo cambiará la Salida. Hay al menos 4 líneas / cables comunes a todos los tipos de USB (USB A, B, C, 1.1, 2.0, 3.0+).

Estos son:-

  • VBUS (Vcc + 5V por defecto)
  • D +
  • D -
  • Suelo

En el cargador / banco de energía ordinario, el VBUS es fijo, debido a que la entrega de energía está limitada por la corriente que puede 500 mA, 1 A, 2 A rinde 2.5 Watts, 5 Watts y 10 Watts respectivamente.

¡Pero en los dispositivos de fuente de energía QC, hay un convertidor de refuerzo interno que puede aumentar el voltaje dependiendo de la solicitud del dispositivo receptor de energía (PD)!

QC 2.0 (también 3.0) utiliza D + y D- de USB para comunicarse con PD. PD envía señales de voltaje en D + y D- y el cargador QC entregará energía en consecuencia al cambiar el voltaje VBUS. De acuerdo con esta hoja de datos de CHY, aquí hay una tabla que explica qué par de señales en D + / D- de PD hará que el control de calidad entregue qué salida de voltaje:

El soporte de QC 2.0 se inicia cuando el voltaje en D + y D- son los mismos que los valores en la cuarta fila de esta tabla y permanece al menos 1.25 segundos. Si D + se convierte en 0,0 voltios (por debajo de 0,325 voltios en realidad) el soporte de CC se detendrá y la salida será de 5,0 voltios. Al configurar los voltajes de acuerdo con esta tabla, se puede cambiar la salida en VBUS.

Aquí, las 4 salidas de ATtiny85 están conectadas a 2 redes de divisores de voltaje que constan de dos resistencias de 10k y dos de 2.2k para generar estas señales de voltaje para las líneas D + / D-.

Por ejemplo, para generar 3.3 V en D +, las resistencias superior e inferior que están conectadas a dos pines de salida ATtiny85 PB3 y PB4, ambas se convertirán en High desde el código.

De manera similar, para generar 0,6 V en D-, las resistencias superior e inferior que están conectadas a otros dos pines de salida ATtiny85 (PB1 y PB3) se establecerán en Alta y Baja respectivamente.

De esta manera, el cargador / banco de energía QC 2.0 recibe la solicitud de cambio de voltaje y cambia en consecuencia. El interruptor de empuje está configurado como entrada PULLUP, mientras no está presionado, el MCU lo lee en ALTO y las ejecuciones de código se mantienen mientras el bucle evita cualquier cambio en el voltaje establecido. Cuando el usuario presiona el interruptor pulsador, mientras el bucle se rompe y se establece el siguiente voltaje. Por otra parte, la ejecución del código ingresa al siguiente ciclo while para mantener el voltaje VBUS actual.

Hay un LED que brilla tenue (5V), suave (9V) y brillante (12V) para brindar una representación visual del voltaje de salida al usuario.

Posibles aplicaciones

  • Manejo de rayas LED de 12V
  • Alimentando transmisores / receptores de RF para un mayor alcance
  • Conducción de relés de 12 V, motores, etc.
  • Obtenga cualquier voltaje entre 1,25 y 10 voltios utilizando un LM317 o LM2596
  • Unidad remota de infrarrojos de 9 V
  • Energía robótica para automóviles
  • Carga de computadora portátil con 20 V
  • Cualquier sistema de hasta 18 vatios como dispositivos WiFI, LTE, S2E para aplicaciones de IoT
  • Energía de respaldo para sistemas remotos
  • La mayoría de los monitores LCD, LED, impresoras y escáneres
  • PC portátil de bajo consumo

Soporte para otras clases de control de calidad

Dado que QC 2.0 Clase B, QC 3.0 y QC 4.0 son compatibles con versiones anteriores de QC 2.0 Clase A, este dispositivo podría funcionar con todos los cargadores y bancos de energía más recientes. Pero las opciones de voltaje serán 5.0, 9.0 y 12.0 voltios. Si se necesitan otros voltajes de salida, lea las hojas de datos de CHY 100, 101, 103 y modifique el código en consecuencia.

¡Advertencia!

  • Alto Calidad Cargador o banco de energía QC con Protección contra cortocircuitos debe usarse, externo Las cargas no deben superar los 18 vatios . Esto puede garantizarse mediante Comprobación de la etiqueta de clasificación de potencia en dispositivos de carga.
  • Debe evitarse la salida de 20 voltios ya que el regulador 1117 3v3 puede Manejar como máximo 15 voltios , esto debe evitarse en Código MCU de Nunca permitir que las líneas D + y D- tengan 3.3 voltios al mismo tiempo .
  • En caso Se requiere una salida de 20 voltios (compatible con QC 2.0 Class B y QC 3.0, QC 4.0 ), se debe utilizar un regulador de voltaje (LM317 configurado para 3.3 V) que pueda manejar más de 20 Voltios. De lo contrario, ¡¡¡el regulador y la MCU serán destruidos !!!!
  • Se debe prestar atención al Polaridad del voltaje de salida, + ve indicado en ROJO y -ve indicado por pequeños cables AZULES al lado de la Terminal de Salida.
  • Suelto conexión en USB Hombre-Mujer acoplamiento obligatorio ser Evitado o Se generará calor como consecuencia de la resistencia de contacto y Se reducirá la eficiencia energética.
  • Durante la programación del ISP, se deben eliminar todos los puentes para aislar los pines MOSI, MISO, SCK, VCC, GND, RESET del resto de los circuitos de la placa a Evite la interferencia con la programación.
  • Modificación de código No debe hacerse sin Comprensión clara del protocolo de carga de control de calidad, este diseño es principalmente Diseñado para fuentes de energía QC 2.0 (Clase A) pero puede ser parcialmente usado para Más alto QC Estándares
  • Hackear Podría No Trabajo con algunos cargadores QC / Power Banks
  • El cambio de GPIO debe hacerse en Secuencia adecuada a Evite la rescisión de Modo de alto voltaje

Nota: Se recomienda no replicar este proyecto si no se comprenden los puntos anteriores de alguien de lo contrario Riesgo de Fuego Peligro o Pérdida de Equipo podría ¡ocurra!

Es posible cambiar los voltajes manualmente sin usar ningún microcontrolador. Solo se requieren 4 cables de puente para imitar las condiciones de la tabla D + / D- mediante la conexión a Vcc (3.3V) y Gnd (0V) a las resistencias en la secuencia adecuada. Porque usar mcu puede ser una exageración para transiciones tan simples después de todo.

Referencias

  • 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

Código

  • Código ATtiny85
Código ATtiny85 C / C ++
Controlador de QC
 /// =========================Algoritmo ========================/// / * Primero, conecte el pin D + a un voltaje de 0.325 a 2 voltios y mantenga el D- flotando, luego espere al menos 2 segundos. Suceden dos acciones durante estos 2 segundos:El voltaje D + y D- equivale a un voltaje entre 0.325 y 2 voltios durante 1.25 segundos. (porque los pines D + y D- se conectan juntos dentro del CHY100 al principio) Luego, el D + se mantiene en un voltaje entre 0.325 a 2 voltios y el voltaje D- disminuye a cero. (porque los pines D + y D- se desconectan y una resistencia dentro del CHY100 descarga el D -) *** CHY100 es un chip de interfaz de protocolo QC 2.0 dentro del cargador / banco de energía ... otros chips QC 2.0 probablemente sean similar Haga D + por encima de 3,0 V primero y luego conecte el D- a un voltaje entre 0,325 y 2 voltios. El VBUS salta a 9V. Mientras mantiene la conexión D- con un voltaje entre 0.325 y 2 voltios, haga que D + tenga un voltaje entre 0.325 y 2 voltios. El VBUS salta a 12V. (porque el voltaje D + y D- están entre 2V y 0.325V) Desconecte el D + de un voltaje entre 0.325 y 2 voltios. VBUS salta a 5V, porque el QC2.0 sale del modo de cambio de voltaje y VBUS pasa al valor predeterminado de 5V. comenzar desde el principio cuando necesite ingresar QC2.0 nuevamente) * /// ============NOTA IMPORTANTE ================//// *** La secuencia de hacer pines ALTO y BAJO es importante // *** Si D + cae por debajo de 0.325V durante la transición debido a una secuencia de conmutación GPIO incorrecta // *** QC 2.0 saldrá del modo de alto voltaje y VBUS volverá a 5 Voltios // ============================================/ / # 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); // Ahora iniciando el protocolo de enlace de QC haciendo D + 0.6 v manteniendo D- en Gnd Init_QC ();} void loop () {//// 5V //// while (digitalRead (PUSH_SWITCH) ==1) {} delay (250 ); //// 9v //// Set_9V (); while (digitalRead (PUSH_SWITCH) ==1) {} retraso (250); //// 12v //// Set_12V (); while (digitalRead (PUSH_SWITCH) ==1) {} delay (250); // Set_5V ();} /// ********************** Funciones ********************** /// void Init_QC () {// pinMode (Dn_2k2, INPUT); // pinMode (Dn_10k, ENTRADA); pinMode (Dp_2k2, SALIDA); pinMode (Dp_10k, SALIDA); digitalWrite (Dp_2k2, BAJO); digitalWrite (Dp_10k, ALTO); retraso (3000); // ahora el protocolo QC está activo} void Set_9V () {pinMode (Dp_2k2, OUTPUT); pinMode (Dp_10k, SALIDA); digitalWrite (Dp_10k, ALTO); escritura digital (Dp_2k2, ALTA); pinMode (Dn_2k2, SALIDA); pinMode (Dn_10k, SALIDA); digitalWrite (Dn_2k2, BAJO); digitalWrite (Dn_10k, HIGH);} void Set_12V () {pinMode (Dp_2k2, SALIDA); pinMode (Dp_10k, SALIDA); pinMode (Dn_2k2, SALIDA); pinMode (Dn_10k, SALIDA); digitalWrite (Dn_2k2, BAJO); digitalWrite (Dn_10k, ALTO); digitalWrite (Dp_10k, ALTO); escritura digital (Dp_2k2, BAJA);} void Set_5V () {pinMode (Dp_2k2, SALIDA); pinMode (Dp_10k, SALIDA); digitalWrite (Dp_10k, ALTO); digitalWrite (Dp_2k2, BAJO); pinMode (Dn_2k2, SALIDA); pinMode (Dn_10k, SALIDA); digitalWrite (Dn_2k2, BAJO); digitalWrite (Dn_10k, LOW);} void Set_20V () {// ¡¡¡cambie el regulador de voltaje !!! // hágalo bajo su propio riesgo} 

Esquemas

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

Proceso de manufactura

  1. Qualcomm impulsa la utilidad de drones con 5G y la plataforma de drones habilitada para IA
  2. Guía rápida para sellar FDM con Insight
  3. Hackeo de hardware con Markforged Mark Two en MakeMIT
  4. Diversión con giroscopio con NeoPixel Ring
  5. Traje de nube
  6. Sensor de obstáculos simple con Arduino
  7. Batería MIDI mínima con impresora 3D
  8. Reconocimiento y síntesis de voz con Arduino
  9. Medidor S externo en radios Icom con puerto CI-V
  10. Mini radio estéreo con RDA5807
  11. IoT4Car