
Интернет-магазин «Неглупый Дом»
Модуль PDC004-PD запрашивает у зарядного устройства фиксированное напряжение по протоколу Power Delivery — через делитель напряжения на резисторах Arduino проверяет, действительно ли согласование прошло успешно, и выводит фактическое напряжение на LCD1602.
USB Power Delivery — это протокол "переговоров" между зарядным устройством и потребителем: подключаемое устройство (в данном случае PD-триггер) сообщает зарядке, какое из её поддерживаемых напряжений (обычно 5V/9V/12V/15V/20V) ему нужно, а зарядка в ответ либо подтверждает это напряжение, либо отказывает, если не поддерживает запрошенное значение. PD-триггер настраивается (переключателями или перемычками на самом модуле) на конкретное желаемое напряжение, и задача этого проекта — проверить, что "переговоры" прошли успешно и на выходе реально то напряжение, которое ожидалось, а не осталось базовым 5V.
Делитель напряжения на резисторах 30 кОм и 7.5 кОм превращает диапазон 0-25В в диапазон 0-5В (коэффициент `dividerRatio = 5.0` получен как `(30+7.5)/7.5`), что укладывается в допустимый диапазон аналогового входа Arduino. Код затем умножает обратно: `(raw / 1023.0) * 5.0 * dividerRatio` восстанавливает исходное напряжение до делителя.
Так как реализации данного модуля бывают разные, если у вас на плате нет тех контактов, что указаны ниже — сориентируйтесь по названиям контактов на своей плате.
// ВНИМАНИЕ: рекомендую отладить код через монитор порта, я языковая
// модель, а не специализированный кодер, могу что-то упустить.
// ВНИМАНИЕ: обязательно проверьте делитель напряжения мультиметром
// перед подключением к Arduino — ошибка может повредить плату.
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
const int sensorPin = A0;
LiquidCrystal_I2C lcd(0x27, 16, 2);
const float dividerRatio = 5.0; // (30к+7.5к)/7.5к
void setup() {
Serial.begin(9600);
lcd.init();
lcd.backlight();
}
void loop() {
int raw = analogRead(sensorPin);
float measuredV = (raw / 1023.0) * 5.0 * dividerRatio;
Serial.print("Измеренное напряжение PD: ");
Serial.println(measuredV);
lcd.setCursor(0, 0);
lcd.print("PD Voltage:");
lcd.setCursor(0, 1);
lcd.print(measuredV);
lcd.print("V ");
delay(1000);
}
Делитель напряжения обязателен — выходное напряжение PD-триггера (до 20В) превышает допустимые 5В на аналоговом входе Arduino и без делителя может повредить плату.
Ещё модули для Arduino: Электронные модули.
🎁 Купить весь комплект со скидкой 10%
Все 2 товара сразу в корзину: 320 ₽ 288 ₽ (экономия 32 ₽)
Скидка применяется автоматически при оформлении заказа, если в корзине именно этот комплект.
Остались вопросы? Проконсультируйтесь с ИИ-инженером — он уже в курсе темы статьи и сразу ответит, ничего вводить не нужно.