Как получить 9В-12В от зарядного с Quick Charge (на примере STM32)

в 15:11, , рубрики: diy или сделай сам, hal, qc trigger, quick charge, quick charge микроконтроллер, stm32, STM32F103C8T6, быстрая зарядка, программирование микроконтроллеров, Разработка под Arduino, схемотехника, Электроника для начинающих

Чем может быть полезна быстрая зарядка

С увеличением ёмкости аккумуляторов телефонов потребовалось увеличить и мощность зарядных устройств, чтобы достичь маленького времени зарядки, для чего и нужно было увеличивать выходную мощность: напряжение, ток. Таким образом зарядные с Quick Charge 3.0 кроме 5 В могут выдавать 9В/12В/20В +возможность регулировки с шагом 0.2 В (до 12 В).

image

Ввиду распространенности ЗУ с этой технологией появляется интерес использовать их для получения повышенного напряжения без дополнительных преобразователей.

Схема подключения

Представленная схема позволит выводам, настроенным как двухтактный выход подавать на выводы DN, DP нужные значения напряжения:

Оба вывода к минусу 0 В
Верхний вывод к плюсу, а нижний к минусу 0.6 В
Оба вывода к плюсу 3.3 В

image

Настройка в STM32CubeMX

Нужно настроить четыре любые выводы общего назначения как двухтактный выход (Output Push Pull) без подтяжки (No pull-up and no pull-down) с соответствующими названиями (ПКМ -> Enter User Label).

Как получить 9В-12В от зарядного с Quick Charge (на примере STM32) - 3

Описание протокола Quick Charge

QC 2.0 (из документа CHY100)

image

После включения в сеть замыкаются выводы DP, DP и начинает следить за уровнем на выводе DP, подаем на него напряжение от 0.325 В до 2 В (обычно 0.6 В) на время не менее 1.25 с и таким образом происходит вход в режим Быстрой Зарядки. Теперь на DN нужно подать минус (чтобы напряжение на нем упало ниже 0.325 В) на время не менее 1 мс. Остается выставить сочетание напряжения, соответствующее необходимому, согласно таблице:

image

QC 3.0 (из документа FAN6290Q)

В этой версии есть возможность изменять значение напряжения с шагом 200 мВ, для этого нужно выставить сочетание, соответствующее режиму Continuous Mode:

image

Перейти в него можно из любого другого (5В/9В/12В), а потом для увеличения выходного напряжения (DN: 3.3 В, DP: импульс 0.6-3.3-0.6В), а для уменьшения (DP: 0.6 В, DN: 3.3-0.6-3.3В).

image

Программирование

Остается завернуть изменение уровней сигнала согласно алгоритму в код с использованием библиотеки HAL, учитывая понятные ярлыки-названия, установленные в Кубе:

void QC_GPIO_9V(void){

    /* DP: 0.6V; DN: 0.6V - preset */
    HAL_GPIO_WritePin(QC_DP_UP_GPIO_Port, QC_DP_UP_Pin, GPIO_PIN_SET);
    HAL_GPIO_WritePin(QC_DP_DOWN_GPIO_Port, QC_DP_DOWN_Pin, GPIO_PIN_RESET);

    HAL_GPIO_WritePin(QC_DN_UP_GPIO_Port, QC_DN_UP_Pin, GPIO_PIN_SET);
    HAL_GPIO_WritePin(QC_DN_DOWN_GPIO_Port, QC_DN_DOWN_Pin, GPIO_PIN_RESET);

    HAL_Delay(1250); /* min 1.25s */

    /* DP: 0.6V; DN: 0V */
    HAL_GPIO_WritePin(QC_DN_UP_GPIO_Port, QC_DN_UP_Pin, GPIO_PIN_RESET);
    HAL_Delay(1); /* min 1ms */

    /* DP: 3.3V; DN: 0.6V for 9V */
    HAL_GPIO_WritePin(QC_DP_UP_GPIO_Port, QC_DP_UP_Pin, GPIO_PIN_SET);
    HAL_GPIO_WritePin(QC_DP_DOWN_GPIO_Port, QC_DP_DOWN_Pin, GPIO_PIN_SET);

    HAL_GPIO_WritePin(QC_DN_UP_GPIO_Port, QC_DN_UP_Pin, GPIO_PIN_SET);
    HAL_GPIO_WritePin(QC_DN_DOWN_GPIO_Port, QC_DN_DOWN_Pin, GPIO_PIN_RESET);
}

Таким образом получились функции:

QC_GPIO_5V();
QC_GPIO_9V();
QC_GPIO_12V();
QC_GPIO_20V();

QC_GPIO_Reg();
QC_GPIO_Dec();
QC_GPIO_Inc();

Скачать проект в STM32CubeIDE можно на GitHub: Quick-Charge-STM32-HAL

Проверка работы

Остается подключить всё согласно схеме и выполнить функцию для получения нужного напряжения (для испытания используется безымянная китайская зарядка с QC 3.0):

image

Сработало:

image

Причем выходное напряжение можно изменить в любой момент:

image

При использовании разъема USB Type-C обязательно нужно добавить два резистора 5.1 кОм между CC1, CC2 и GND, чтобы устройство определялось как UFP (Upstream Facing Port).

Как получить 9В-12В от зарядного с Quick Charge (на примере STM32) - 11

Определение подключения

В случае, если питание будет подаваться на микроконтроллер уже после подключения, то выполнение нужной функции может выполнятся перед главным циклом один раз.
Если микроконтроллер питается от независимого источника, то выполнение функции можно назначить по внешнему прерыванию (вывод VBUS подключается через стабилизатор 3.3 В) или просто с помощью кнопки — можно сделать свой "триггер".

Проверка на разных ЗУ с USB-A и USB-C

Работоспособность проверена на различных недорогих зарядных, а также на мощных ноутбучных зарядок 65Вт с USB Type-C.

Как получить 9В-12В от зарядного с Quick Charge (на примере STM32) - 12

При этом наименьшее выходное напряжение может различаться, так обычные имели нижний порог 4.2 В, а продвинутые 3.7 В.

Как получить 9В-12В от зарядного с Quick Charge (на примере STM32) - 13

Подробнее в видео

Итого

Хоть стандартом становиться технология Power Delivery (PD), но куча современных сетевых зарядных устройств как и многие переносные аккумуляторные ЗУ поддерживают в том числе Quick Charge (QC), что позволит с легкостью получить повышенное напряжения без использования дополнительных преобразователей.

Несмотря на то, что в теории можно получить даже 20 В, но на практике таких зарядок почти нет. Также стоит учесть, что при подключении слишком мощной нагрузки напряжение будет сильно просаживаться, а некоторые ЗУ вообще уйдут в защиту.

Автор: Egoruch

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js