Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Manufacturing Technology >> Processo de manufatura

Hackeando Qualcomm (Quick Charge) QC 2.0 / 3.0 com ATtiny85

Componentes e suprimentos

Microchip Technology ATtiny85
× 1
SparkFun LM1117 Regulador de 3,3 V
× 1
SparkFun USB macho A
× 1
Resistor 10k ohm
× 2
Resistor 2,21k ohm
× 1
Arduino Proto Shield
× 1
SparkFun Botão de pressão 12 mm
× 1
QC Power Bank ou carregador
× 1
Jumper genérico (0,1 ")
× 8
Male-Header 36 Position 1 Row- Long (0.1 ")
× 1
Resistor 0,05 ohm
× 10
Arduino UNO
× 1
Cabos de jumper masculino / feminino
× 7
LED (genérico)
× 1
Resistor 22,1 k ohm
× 1

Ferramentas e máquinas necessárias

Ferro de soldar (genérico)

Aplicativos e serviços online

Arduino IDE

Sobre este projeto





Introdução


Muitos dispositivos eletrônicos de consumo alimentados por USB têm uma solução Qualcomm QC (Quick Charge) integrada para carregamento rápido em tensões diferentes, em vez dos habituais 5,0 volts. Isso permite a oportunidade de usar bancos de energia compatíveis com QC para projetos que requerem mais energia ou tensões mais altas, como 9/12 volts.

O objetivo deste projeto é desenvolver um dispositivo que possa hackear o protocolo QC e permitir que amadores, desenvolvedores e engenheiros usem seus bancos de energia para obter mais tensão / energia para seu próximo projeto com fome de energia.

As imagens acima mostram uma saída de 5, 9, 12 Volts de um power back compatível com QC 2.0 alimentando um resistor de 10 Ohms e 5 Watts.





Desenvolvendo o dispositivo Hack *


Todo o dispositivo tem dois componentes ativos - o regulador de tensão LM1117 de 3,3 V e o ATtiny85 MCU para controle. Todas as outras partes são resistores, interruptor de pressão, conectores, jumpers, cabeçalhos, terminal, protoboard etc.

Para construir o dispositivo, os primeiros componentes são colocados em um layout organizado e, em seguida, soldados. Alguns links curtos de 0 ohms são usados ​​para interconectar partes diferentes.

Há jumper para desabilitar o circuito onborad e habilitar a programação. Desde então, a linha de programação (SPI - MOSI, MISO, SCK) também atua como GPIO durante a operação do dispositivo.





Programando ATtiny85 com ISP


Antes de programar o ATtiny85, ele é removido da Base do IC e colocado em uma placa de ensaio. Para programar ATtiny85, uma placa Arduino UNO é convertida em um programador ISP fazendo o upload do "ArduinoISP" de Arquivo> Exemplo> ArduinoISP esboço. Este esboço está disponível no Arduino IDE.

A programação do ATtiny85 requer as seguintes etapas:
  • Instalando o suporte ATtiny para Arduino IDE (graças a David A. Mellis)
  • Gravando Bootloader para ATtiny85 usando Arduino UNO como ISP
  • Desenvolvimento e upload de código usando Arduino UNO como ISP

O seguinte circuito está preparado para programar o ATtiny85:

ISP = no programador de sistema

Alternativamente, o ATtiny85 pode ser programado mantendo o dispositivo removendo todos os jumpers ao redor dele.





Operação do dispositivo


Para usar o dispositivo, primeiro ele precisa ser conectado a um banco de energia (ou carregador) compatível com QC. Por padrão, a voltagem do USB do QC Power Bank será de 5,0 volts.

Todos os jumpers devem ser conectados após o upload do código, para que o MCU possa se comunicar por D +/- com a fonte QC.

O regulador LM1117 de 3,3 V ligará e fornecerá energia ao ATtiny85. Este MCU começará a executar o código. 4 pinos de E / S de ATtiny85 são conectados aos resistores divisores de tensão que serão usados ​​como saída alta e baixa. Outro pino de E / S é conectado a uma chave que inicializará como entrada Pull Up. Essa chave leva a entrada do usuário para alterar a tensão da fonte QC.

Agora, antes de entrar em detalhes, é importante saber como o Output mudará. Existem pelo menos 4 linhas / fios comuns a todos os tipos de USB (USB A, B, C, 1.1, 2.0, 3.0+).

Estes são :-
  • VBUS (Vcc + 5V por padrão)
  • D +
  • D -
  • Terrestre

No carregador / banco de potência normal, o VBUS é fixo, porque o fornecimento de energia é limitado pela corrente que pode 500 mA, 1 A, 2 A produz 2,5 Watts, 5 Watts e 10 Watts, respectivamente.

Mas em dispositivos de fonte de energia QC, há um conversor de reforço interno que pode bombear a tensão dependendo da solicitação do dispositivo de recepção de energia (PD) !!!

QC 2.0 (também 3.0) utiliza D + e D- de USB para se comunicar com o PD. PD envia sinais de tensão em D + e D- e o carregador QC fornecerá energia de acordo com a alteração da tensão VBUS. De acordo com esta folha de dados CHY, aqui está uma tabela que explica qual par de sinais em D + / D- do PD fará com que o QC forneça qual saída de tensão:

O suporte QC 2.0 é iniciado quando a tensão em D + e D- são iguais aos valores na 4ª linha desta tabela e permanece por pelo menos 1,25 segundos. Se D + se tornar 0,0 volts (abaixo de 0,325 Volts, na verdade), o suporte QC será interrompido e a saída será de 5,0 volts. Definindo as tensões de acordo com esta tabela, a saída em VBUS pode ser alterada.

Aqui, as 4 saídas do ATtiny85 são conectadas a uma rede divisora ​​de 2 voltagem composta por dois resistores de 10k e dois de 2,2k para gerar esses sinais de voltagem para as linhas D + / D-.

Por exemplo, para gerar 3,3 V em D +, os resistores superior e inferior que são conectados a dois pinos de saída ATtiny85 PB3 e PB4, ambos serão feitos de código alto.

Da mesma forma, para gerar 0,6 V em D-, os resistores superior e inferior que estão conectados a outros dois pinos de saída ATtiny85 (PB1 e PB3) serão colocados em Alto e Baixo, respectivamente.

Desta forma, o carregador / banco de potência QC 2.0 recebe a solicitação de alteração de tensão e as alterações de acordo. O interruptor de pressão é configurado como PULLUP de entrada, enquanto não pressionado, é lido HIGH pelo MCU e as execuções de código são mantidas enquanto o loop evita qualquer mudança na tensão definida. Quando o usuário pressiona o botão de pressão, enquanto o loop é interrompido e a próxima tensão é definida. Então, novamente, a execução do código entra no próximo loop while para manter a tensão VBUS atual.

Há um LED que brilha fraco (5V), moderado (9V) e brilhante (12V) para dar uma representação visual da tensão de saída para o usuário.





Possíveis aplicações

  • Condução de listras LED 12V
  • Alimentando transmissores / receptores RF para maior alcance
  • Condução de relés 12V, motores etc.
  • Obtenha qualquer tensão entre 1,25 a 10 volts usando um LM317 ou LM2596
  • Unidade remota IR 9V
  • Potência do carro robótico
  • Carregamento de laptop com 20 V
  • Qualquer sistema de até 18 Watts, como dispositivos WiFI, LTE, S2E para aplicativo IoT
  • Energia de backup para sistemas remotos
  • A maioria dos monitores de LCD, monitores de LED, impressoras e scanners
  • PC portátil de baixa potência





Suporte para outras classes QC


Como QC 2.0 Classe B, QC 3.0 e QC 4.0 são compatíveis com versões anteriores com QC 2.0 Classe A, portanto, este dispositivo pode funcionar com todos os carregadores e bancos de energia mais recentes. Mas as opções de voltagem serão 5,0, 9,0 e 12,0 volts. Se outras tensões de saída forem necessárias, leia as planilhas de dados CHY 100, 101, 103 e modifique o código de acordo.





Aviso!

  • Alto Qualidade Banco de potência ou carregador QC com Proteção contra curto-circuito deve ser usado, externo As cargas não devem exceder 18 watts . Isso pode ser garantido por Verificando a etiqueta de classificação energética em dispositivos de carga.
  • A saída de 20 Volts deve ser evitada desde 1117 o regulador 3v3 pode Manuseia no máximo 15 Volts , isso deve ser evitado no Código MCU por Nunca permitindo linhas D + e D- tendo 3,3 Volts ao mesmo tempo .
  • Em caso Saída de 20 Volts necessária (compatível com QC 2.0 Classe B e QC 3.0, QC 4.0 ), um regulador de tensão (LM317 configurado para 3,3 V) que pode lidar com mais de 20 Volts deve ser usado. Caso contrário, o regulador e o MCU serão destruídos !!!!
  • Atenção deve ser paga para Polaridade da tensão de saída, + ve indicado por VERMELHO e -ve indicado por pequenos fios AZUIS ao lado do Terminal de Saída.
  • Solto conexão em USB Masculino-Feminino acoplamento deve ser Evitado ou Calor será gerado como consequência da resistência de contato e A eficiência energética diminuirá.
  • Durante a programação do ISP, todos os jumpers devem ser removidos para isolar pinos MOSI, MISO, SCK, VCC, GND, RESET do resto dos circuitos na placa para Evite interferência com a programação.
  • Modificação do código Não deve ser feito sem Compreendendo claramente o protocolo de carregamento de CQ, este design é principalmente Destinado a fontes de energia QC 2.0 (Classe A) mas pode ser parcialmente usado para Superior QC Padrões
  • Hack Pode Não Trabalho com alguns carregadores / bancos de energia QC
  • Troca GPIO obrigatória ser feito em Sequência adequada para Evitar rescisão de Modo de alta tensão

Nota: Não é aconselhável replicar este projeto se os pontos acima não forem compreendidos por alguém, caso contrário Risco de Fogo Perigo ou Perda de Equipamento pode ocorrer!

É possível alterar as tensões manualmente sem usar nenhum microcontrolador. São necessários apenas 4 fios de jumper para simular as condições da mesa D + / D- conectando-se a Vcc (3,3 V) e Gnd (0 V) aos resistores na sequência adequada. Porque usar mcu pode ser um exagero para essas transições simples, afinal.





Referências

  • 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 QC
 /// ===========================Algoritmo ========================/// / * Primeiro, conecte o pino D + a uma tensão de 0,325 a 2 volts e mantenha o D- flutuando, então espere pelo menos 2 segundos. Duas ações acontecem durante esses 2 segundos:A voltagem D + e D- é igual a uma voltagem entre 0,325 a 2 volts por 1,25 segundos. (porque os pinos D + e D- conectam-se juntos dentro do CHY100 no início) Então o D + se mantém em uma tensão entre 0,325 a 2 volts e a tensão D- diminui para zero. (porque os pinos D + e D- se desconectam e um resistor dentro do CHY100 descarrega o D-) *** CHY100 é um chip de interface de protocolo QC 2.0 dentro do banco de energia / carregador ........ outros chips QC 2.0 são provavelmente semelhante Faça D + acima de 3,0 V primeiro e, em seguida, conecte o D- a uma tensão entre 0,325 a 2 volts. O VBUS salta para 9V. Enquanto mantém a conexão D- com uma tensão entre 0,325 a 2 volts, faça D + uma tensão entre 0,325 a 2 volts. O VBUS salta para 12V. (porque as tensões D + e D- estão entre 2 V e 0,325 V) Desconecte o D + de uma tensão entre 0,325 e 2 volts. O VBUS salta para 5V, porque o QC2.0 sai do modo de alteração de tensão e o VBUS vai para o valor padrão 5V. comece do início quando precisar inserir QC2.0 novamente) * /// ============NOTA IMPORTANTE ================//// *** A sequência de fazer os pinos ALTO e BAIXO é importante // *** Se D + cair abaixo de 0,325 V durante a transição devido à sequência de comutação GPIO errada // *** QC 2.0 sairá do modo de alta tensão e o VBUS voltará para 5 Volts // ==================================================/ / # 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); // Agora iniciando o handshake QC fazendo D + 0,6 v mantendo D- em Gnd Init_QC ();} void loop () {//// 5V //// while (digitalRead (PUSH_SWITCH) ==1) {} delay (250 ); //// 9v //// Set_9V (); enquanto (digitalRead (PUSH_SWITCH) ==1) {} atraso (250); //// 12v //// Set_12V (); while (digitalRead (PUSH_SWITCH) ==1) {} delay (250); // Set_5V ();} /// ********************** Funções *********************** /// void Init_QC () {// pinMode (Dn_2k2, INPUT); // pinMode (Dn_10k, INPUT); pinMode (Dp_2k2, SAÍDA); pinMode (Dp_10k, SAÍDA); digitalWrite (Dp_2k2, LOW); digitalWrite (Dp_10k, HIGH); atraso (3000); // agora o protocolo QC está ativo} void Set_9V () {pinMode (Dp_2k2, OUTPUT); pinMode (Dp_10k, SAÍDA); digitalWrite (Dp_10k, HIGH); digitalWrite (Dp_2k2, HIGH); pinMode (Dn_2k2, SAÍDA); pinMode (Dn_10k, OUTPUT); digitalWrite (Dn_2k2, LOW); digitalWrite (Dn_10k, HIGH);} void Set_12V () {pinMode (Dp_2k2, SAÍDA); pinMode (Dp_10k, SAÍDA); pinMode (Dn_2k2, SAÍDA); pinMode (Dn_10k, OUTPUT); digitalWrite (Dn_2k2, LOW); digitalWrite (Dn_10k, HIGH); digitalWrite (Dp_10k, HIGH); digitalWrite (Dp_2k2, LOW);} void Set_5V () {pinMode (Dp_2k2, SAÍDA); pinMode (Dp_10k, SAÍDA); digitalWrite (Dp_10k, HIGH); digitalWrite (Dp_2k2, LOW); pinMode (Dn_2k2, SAÍDA); pinMode (Dn_10k, OUTPUT); digitalWrite (Dn_2k2, LOW); digitalWrite (Dn_10k, LOW);} void Set_20V () {// altere o regulador de tensão !!! // faça por sua própria conta e risco} 

Esquemas

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

Processo de manufatura

  1. Qualcomm aumenta a utilidade do drone com 5G e plataforma de drone habilitada para AI
  2. Guia rápido para vedação FDM com Insight
  3. Hacking de hardware com Markforged Mark Two em MakeMIT
  4. Diversão do giroscópio com anel NeoPixel
  5. Traje da nuvem
  6. Sensor de obstáculo simples com Arduino
  7. Kit de bateria MIDI mínimo com impressora 3D
  8. Reconhecimento de fala e síntese com Arduino
  9. S-Meter externo em rádios Icom com porta CI-V
  10. Mini rádio estéreo com RDA5807