Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

Взлом Qualcomm (быстрая зарядка) QC 2.0 / 3.0 с помощью ATtiny85

Компоненты и расходные материалы

Microchip Technology ATtiny85
× 1
Регулятор 3,3 В SparkFun LM1117
× 1
SparkFun USB Male A
× 1
Резистор 10 кОм
× 2
Резистор 2,21 кОм
× 1
Arduino Proto Shield
× 1
Кнопочный переключатель SparkFun, 12 мм
× 1
QC Power Bank или зарядное устройство
× 1
Стандартный джемпер (0,1 ")
× 8
Male-Header 36 Position 1 Row- Long (0.1 ")
× 1
Резистор 0,05 Ом
× 10
Arduino UNO
× 1
Провода перемычки "папа / мама"
× 7
LED (общий)
× 1
Резистор 22,1 кОм
× 1

Необходимые инструменты и машины

Паяльник (общий)

Приложения и онлайн-сервисы

IDE Arduino

Об этом проекте

Введение

Многие бытовые электронные устройства с питанием от USB имеют встроенное решение Qualcomm QC (Quick Charge) для быстрой зарядки при различных напряжениях, а не при обычных 5,0 В. Это дает возможность использовать QC-совместимые блоки питания для проектов, требующих большей мощности или более высоких напряжений, например 9/12 вольт.

Цель этого проекта - разработать устройство, которое может взломать протокол QC и позволить любителям, разработчикам, инженерам использовать свои блоки питания для увеличения напряжения / мощности для своего следующего энергоемкого проекта.

На изображениях выше показано выходное напряжение 5, 9, 12 В от QC 2.0 совместимого источника питания с резистором 10 Ом и 5 Вт.

Разработка устройства Hack *

Все устройство состоит из двух активных компонентов - стабилизатора напряжения 3,3 В LM1117 и управляющего микроконтроллера ATtiny85. Все остальные части - резисторы, кнопочный переключатель, разъемы, перемычки, разъемы, клеммы, макетные платы и т. Д.

Для сборки устройства сначала компоненты размещаются в аккуратной разводке, а затем припаиваются. Некоторые короткие перемычки 0 Ом используются для соединения различных частей.

Есть перемычка для отключения схемы onborad и включения программирования. Так как линия программирования (SPI - MOSI, MISO, SCK) также действует как GPIO во время работы устройства.

Программирование ATtiny85 с помощью интернет-провайдера

Перед программированием ATtiny85 его снимают с базы IC и кладут на макетную плату. Чтобы запрограммировать ATtiny85, плата Arduino UNO преобразуется в программатор ISP путем загрузки «ArduinoISP» из Файл> Пример> ArduinoISP . эскиз. Этот скетч доступен в Arduino IDE.

Программирование ATtiny85 требует следующих шагов:

  • Установка поддержки ATtiny для Arduino IDE (спасибо Дэвиду А. Меллису)
  • Запись загрузчика для ATtiny85 с использованием Arduino UNO в качестве интернет-провайдера.
  • Разработка и загрузка кода с использованием Arduino UNO в качестве интернет-провайдера.

Для программирования ATtiny85 подготовлена ​​следующая схема:

ISP = в системном программисте

В качестве альтернативы, ATtiny85 можно запрограммировать, чтобы он оставался на устройстве, удалив все перемычки вокруг него.

Работа устройства

Чтобы использовать устройство, сначала его необходимо подключить к QC-совместимому Power Bank (или зарядному устройству). По умолчанию напряжение USB-накопителя QC Power Bank составляет 5,0 вольт.

Все перемычки должны быть подключены после загрузки кода, чтобы MCU мог связываться через D +/- с источником контроля качества.

Стабилизатор 3,3 В LM1117 включит питание ATtiny85. Этот MCU начнет выполнение кода. 4 контакта ввода / вывода ATtiny85 подключены к резисторам делителя напряжения, которые будут использоваться как выход высокого и низкого уровня. Другой вывод ввода / вывода подключен к переключателю, который будет инициализирован как вход Pull Up. Этот переключатель требует ввода данных пользователем для изменения напряжения источника контроля качества.

Теперь, прежде чем вдаваться в подробности, важно знать, как изменится Вывод. Есть как минимум 4 линии / провода, общие для каждого типа USB (USB A, B, C, 1.1, 2.0, 3.0+).

Это:-

  • VBUS (по умолчанию Vcc + 5 В)
  • D +
  • D -
  • Земля

В обычном зарядном устройстве / блоке питания VBUS является фиксированным, поскольку подача мощности ограничена током, который может составлять 500 мА, 1 А, 2 А, что дает 2,5 Вт, 5 Вт и 10 Вт соответственно.

Но в устройствах источника питания QC есть внутренний повышающий преобразователь, который может повышать напряжение в зависимости от запроса устройства приема энергии (PD) !!!

QC 2.0 (также 3.0) использует D + и D- USB для связи с PD. PD отправляет сигналы напряжения на D + и D-, а зарядное устройство QC соответственно подает мощность, изменяя напряжение VBUS. Согласно этому техническому описанию CHY, вот таблица, объясняющая, какая пара сигналов на D + / D- от PD заставит QC выдавать какое выходное напряжение:

Поддержка QC 2.0 инициируется, когда напряжение на D + и D- совпадает со значениями в 4-й строке этой таблицы и остается не менее 1,25 секунды. Если D + станет 0,0 вольт (фактически ниже 0,325 вольт) поддержка QC прекратится, и выход будет 5,0 вольт. Установив напряжения в соответствии с этой таблицей, можно изменить выход на VBUS.

Здесь 4 выхода ATtiny85 подключены к 2 сети делителей напряжения, состоящей из двух резисторов 10 кОм и двух резисторов 2,2 кОм для генерации этих сигналов напряжения для линий D + / D-.

Например, для генерации 3,3 В на D + верхний и нижний резисторы, подключенные к двум выходным контактам ATtiny85 PB3 и PB4, оба будут иметь высокий уровень из кода.

Точно так же, чтобы генерировать 0,6 В на D-, верхний и нижний резисторы, подключенные к двум другим выходным контактам ATtiny85 (PB1 и PB3), будут иметь высокий и низкий уровень соответственно.

Таким образом, зарядное устройство / блок питания QC 2.0 получает запрос на изменение напряжения и соответственно изменяет его. Кнопочный переключатель сконфигурирован как Input PULLUP, пока он не нажат, MCU считывает его ВЫСОКОЕ, и выполнение кода задерживается во время цикла, предотвращая любое изменение установленного напряжения. Когда пользователь нажимает на кнопочный переключатель, цикл разрывается и устанавливается следующее напряжение. Затем снова выполнение кода переходит в следующий цикл while, чтобы удерживать текущее напряжение VBUS.

Есть светодиод, который светится тусклым (5 В), слабым (9 В) и ярким (12 В), чтобы визуально отображать выходное напряжение для пользователя.

Возможные применения

  • Схема светодиодных лент 12 В
  • Питание РЧ-передатчиков / приемников для большего радиуса действия
  • Привод 12В реле, двигателей и т. д.
  • Получите любое напряжение от 1,25 до 10 В с помощью LM317 или LM2596.
  • ИК-пульт дистанционного управления 9 В
  • Роботизированная автомобильная энергия
  • Зарядка ноутбука от 20 В
  • Любая система мощностью до 18 Вт, например устройства WiFI, LTE, S2E для приложений IoT.
  • Резервное питание для удаленных систем
  • Большинство ЖК-мониторов, светодиодных мониторов, принтеров, сканеров
  • Портативный ПК с низким энергопотреблением

Поддержка других классов контроля качества

Поскольку QC 2.0 Class B, QC 3.0 и QC 4.0 обратно совместимы с QC 2.0 Class A, это устройство может работать со всеми новейшими зарядными устройствами и блоками питания. Но варианты напряжения будут 5,0, 9,0 и 12,0 вольт. Если требуются другие значения выходного напряжения, прочтите спецификации CHY 100, 101, 103 и измените код соответствующим образом.

Предупреждение!

  • Высокая Качество QC Power Bank или зарядное устройство с Защита от короткого замыкания должен использоваться, внешний Нагрузка не должна превышать 18 Вт . Это может быть обеспечено Проверка этикетки с номинальной мощностью на загрузочных устройствах.
  • Следует избегать вывода 20 вольт поскольку регулятор 1117 3v3 может Максимальное напряжение 15 В , этого следует избегать из Код MCU автор Никогда не допускайте, чтобы линии D + и D- имели одновременно 3,3 Вольт .
  • В чехол Требуется выходное напряжение 20 В (поддерживается QC 2.0 Class B и QC 3.0, QC 4.0 ), необходимо использовать регулятор напряжения (LM317, сконфигурированный на 3,3 В), который может выдерживать напряжение более 20 В. В противном случае и Регулятор, и MCU будут уничтожены !!!!
  • Следует уделять внимание в Полярность выходного напряжения + ve обозначается КРАСНЫМ цветом, а -ve обозначается СИНИМИ крошечными проводами рядом с выходным терминалом.
  • Свободный соединение в USB Мужчина-Женщина связь обязательно быть Избегать или Тепло будет выделяться из-за контактного сопротивления и Упадет энергоэффективность .
  • Во время программирования ISP все перемычки должны быть удалены для изоляции контактов MOSI, MISO, SCK, VCC, GND, RESET от остальных цепей на плате к Избегайте вмешательства в программирование.
  • Модификация кода Нельзя делать без Четкое понимание протокола зарядки QC, в основном эта конструкция Предназначен для источников питания QC 2.0 (класс A) но может быть частично используется для Высшее Контроль качества Стандарты
  • Взломать Может Нет Работа с некоторыми зарядными устройствами / блоками питания для контроля качества
  • Необходимо переключение GPIO завершить в Правильная последовательность в Избегайте расторжения из Режим высокого напряжения

Примечание. Не рекомендуется дублировать этот проект, если вы не поняли вышеперечисленное автор кто-то, в противном случае Риск из Огонь Опасность или Убыток из Оборудование может происходит!

Напряжение можно изменять вручную без использования микроконтроллера. Всего 4 перемычки необходимы для имитации условий таблицы D + / D- путем подключения к Vcc (3,3 В) и Gnd (0 В) к резисторам в правильной последовательности. Потому что использование mcu может оказаться излишним для таких простых переходов.

  • 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

Код

  • Код ATtiny85
Код ATtiny85 C / C ++
Контроллер контроля качества
 /// =========================Алгоритм ========================/// / * Сначала подключите контакт D + к напряжению от 0,325 до 2 вольт и держите D- плавающим, затем подождите не менее 2 секунд. В течение этих 2 секунд происходят два действия:напряжение D + и D- равняется напряжению от 0,325 до 2 вольт в течение 1,25 секунды. (поскольку контакты D + и D- сначала соединяются вместе внутри CHY100) Затем на D + сохраняется напряжение от 0,325 до 2 вольт, а напряжение D- уменьшается до нуля. (поскольку контакты D + и D- разъединяются и резистор внутри CHY100 разряжает D-) *** CHY100 - это интерфейсный чип протокола QC 2.0 внутри блока питания / зарядного устройства ........ другие чипы QC 2.0, вероятно, являются аналогично Сначала сделайте D + выше 3,0 В, а затем подключите D- к напряжению от 0,325 до 2 В. VBUS переходит на 9 В. Удерживая соединение D- с напряжением от 0,325 до 2 вольт, сделайте D + напряжением от 0,325 до 2 вольт. VBUS переходит на 12 В. (поскольку напряжения D + и D- находятся в диапазоне от 2 В до 0,325 В) Отсоедините D + от напряжения от 0,325 до 2 вольт. VBUS переходит на 5 В, потому что QC2.0 выходит из режима изменения напряжения, а VBUS переходит на значение по умолчанию 5 В. начать с начала, когда нужно снова ввести QC2.0) * /// ============ВАЖНОЕ ПРИМЕЧАНИЕ ================//// *** Последовательность установки контактов HIGH и LOW важна // *** Если D + упадет ниже 0,325 В во время перехода из-за неправильной последовательности переключения GPIO // *** QC 2.0 выйдет из режима высокого напряжения, а VBUS вернется к 5 Вольт // ==============================================/ / # определить PUSH_SWITCH 0 # определить Dp_2k2 4 # определить Dp_10k 3 # определить Dn_2k2 2 # определить Dn_10k 1int Press_Detect =0; void setup () {pinMode (PUSH_SWITCH, INPUT_PULLUP); // Теперь инициируем квитирование QC, делая D + 0,6 В, сохраняя D- на Gnd Init_QC ();} void loop () {//// 5 В //// while (digitalRead (PUSH_SWITCH) ==1) {} delay (250 ); //// 9v //// Set_9V (); while (digitalRead (PUSH_SWITCH) ==1) {} задержка (250); //// 12v //// Set_12V (); while (digitalRead (PUSH_SWITCH) ==1) {} delay (250); // Set_5V ();} /// ********************* Функции ********************** /// void Init_QC () {// pinMode (Dn_2k2, INPUT); // pinMode (Dn_10k, INPUT); pinMode (Dp_2k2, ВЫХОД); pinMode (Dp_10k, ВЫХОД); digitalWrite (Dp_2k2, LOW); digitalWrite (Dp_10k, HIGH); задержка (3000); // теперь протокол QC активен} void Set_9V () {pinMode (Dp_2k2, OUTPUT); pinMode (Dp_10k, ВЫХОД); digitalWrite (Dp_10k, HIGH); digitalWrite (Dp_2k2, HIGH); pinMode (Dn_2k2, ВЫХОД); pinMode (Dn_10k, ВЫХОД); digitalWrite (Dn_2k2, LOW); digitalWrite (Dn_10k, HIGH);} void Set_12V () {pinMode (Dp_2k2, OUTPUT); pinMode (Dp_10k, ВЫХОД); pinMode (Dn_2k2, ВЫХОД); pinMode (Dn_10k, ВЫХОД); digitalWrite (Dn_2k2, LOW); digitalWrite (Dn_10k, HIGH); digitalWrite (Dp_10k, HIGH); digitalWrite (Dp_2k2, LOW);} void Set_5V () {pinMode (Dp_2k2, ВЫХОД); pinMode (Dp_10k, ВЫХОД); digitalWrite (Dp_10k, HIGH); digitalWrite (Dp_2k2, LOW); pinMode (Dn_2k2, ВЫХОД); pinMode (Dn_10k, ВЫХОД); digitalWrite (Dn_2k2, LOW); digitalWrite (Dn_10k, LOW);} void Set_20V () {// меняем регулятор напряжения !!! // делаем на свой страх и риск} 

Схема

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

Производственный процесс

  1. Qualcomm усиливает утилиту для дронов с помощью 5G и платформы дронов с поддержкой AI
  2. Краткое руководство по герметизации FDM с помощью Insight
  3. Взлом оборудования с помощью Markforged Mark Two в MakeMIT
  4. Удовольствие от гироскопа с кольцом NeoPixel
  5. Костюм облака
  6. Простой датчик препятствий с Arduino
  7. Минимальная MIDI-ударная установка с 3D-принтером
  8. Распознавание и синтез речи с помощью Arduino
  9. Внешний S-метр на радиостанциях Icom с портом CI-V
  10. Мини-стерео радио с RDA5807