Skip to content

Latest commit

 

History

40 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🚀 PMBus Device Manager & Telemetry Tool

Универсальная утилита с графическим интерфейсом (Tkinter) для мониторинга, конфигурации и управления DC/DC преобразователями (полифазными модулями питания LTM) по протоколу PMBus/I2C. Поддерживает работу как с реальным оборудованием через различные USB-адаптеры, так и в режиме симуляции.


✨ Возможности

  • Телеметрия: чтение в реальном времени параметров VOUT, IOUT, POUT, VIN, IIN, PIN, температуры, частоты и коэффициента заполнения (duty cycle).
  • Конфигурация: гибкая настройка выходного напряжения, порогов защит (OV/UV/OC/OT), таймингов запуска и рабочей частоты.
  • Управление: прямая отправка команд OPERATION, ON_OFF_CONFIG, а также сброс флагов ошибок через CLEAR_FAULTS.
  • Мониторинг: чтение регистров STATUS_WORD, STATUS_VOUT, STATUS_IOUT, STATUS_INPUT, STATUS_TEMPERATURE, STATUS_CML с детальной побитовой расшифровкой каждой ошибки.
  • Работа с NVM: энергонезависимая память устройств — сохранение и восстановление конфигурации (Store/Restore RAM ↔ EEPROM).
  • Дампы конфигурации: полное последовательное чтение или запись карты регистров, импорт и экспорт конфигурационных дампов в формате CSV.

📋 Поддерживаемые устройства

Модель Каналов VIN VOUT IOUT макс
LTM4671 4 4.5–16V 0.5–5.5V 8A
LTM4673 4 4.5–16V 0.5–5.5V 8A
LTM4675 2 4.5–16V 0.5–5.5V 13A
LTM4676/A 2 4.5–16V 0.5–5.5V 13A
LTM4677 2 4.5–16V 0.5–1.8V 18A
LTM4678 2 4.5–16V 0.5–3.4V 25A

⚙️ Настройка интерфейсов и библиотек

Приложение автоматически определяет тип подключения на основе выбранного ID шины:

Bus ID Адаптер Библиотека Команда установки
0–99 Локальная шина /dev/i2c-N (Linux) smbus2 pip install smbus2
100–199 USB-I2C адаптер CH341T/A (VID 1a86:5512) pyusb pip install pyusb
200–299 Адаптеры FT232H / FT2232H / FT4232H pyftdi pip install pyftdi

🛠 Подключение FT232H

При использовании адаптера FT232H выполните подключение по следующей схеме:

FT232H          LTM467x
 AD0 (SCL) ───── SCL
 AD1 (SDA) ───── SDA
 GND ─────────── GND

[Важно: Необходимы pull-up резисторы 2.2кОм к линии 3.3V на SCL и SDA]

Для работы платы FT232H в Linux необходимо выгрузить стандартный драйвер ядра виртуального COM-порта, иначе pyftdi не сможет получить эксклюзивный доступ к MPSSE-движку:

sudo rmmod ftdi_sio usbserial

📊 Форматы данных PMBus

Утилита под капотом автоматически обрабатывает низкоуровневые форматы данных протокола PMBus:

  • L11 (Linear_5s_11s): 5-битная экспонента + 11-битная мантисса (используется для токов, мощностей, температур и частот).
  • L16 (Linear_16u): 16-битное беззнаковое целое число, масштабируемое по формуле 2^VOUT_MODE (используется для высокоточного измерения напряжений).
  • BYTE / RAW: сырые шестнадцатеричные данные для битовых масок статуса и регистров команд.

📦 Зависимости и требования

Перед запуском убедитесь, что в вашей системе установлены:

  • Python 3.13+
  • Компонент tkinter (в Linux может потребоваться установка через пакетный менеджер системы: sudo apt install python3-tk).
  • Системная библиотека libusb (необходима для работы pyusb с CH341).

🚀 Быстрый старт

Развертывание и запуск

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

python main.py --sim

Для работы с реальной шиной I2C или USB-адаптерами в Linux (требуются права суперпользователя):

sudo python main.py

Настройка прав доступа для CH341 (опционально)

Чтобы каждый раз не запускать утилиту через sudo при использовании адаптера CH341, добавьте правило udev, разрешающее доступ текущему пользователю:

echo 'SUBSYSTEM=="usb", ATTR{idVendor}=="1a86", ATTR{idProduct}=="5512", MODE="0666"' | \
  sudo tee /etc/udev/rules.d/99-ch341.rules

sudo udevadm control --reload-rules

📂 Структура проекта

.
├── main.py                  # Точка входа в приложение
├── core/                    # Ядро системы (логика протокола и драйверы)
│   ├── pmbus_constants.py   # Коды команд, карта регистров, ID устройств
│   ├── pmbus_formats.py     # Конвертация форматов данных L11/L16 ↔ float
│   ├── pmbus_device.py      # Класс PMBusDevice (чтение/запись/телеметрия)
│   ├── bus_factory.py       # Фабрика шин (автовыбор smbus2/CH341/FTDI)
│   ├── bus_scanner.py       # Сканирование I2C шин на наличие устройств
│   ├── ch341_i2c.py         # Драйвер для работы через USB-I2C адаптер CH341
│   ├── ftdi_i2c.py          # Драйвер для работы через FTDI MPSSE I2C
│   └── dump_csv.py          # Модуль экспорта и импорта дампов в формат CSV
├── gui/                     # Графический интерфейс пользователя (Tkinter)
│   ├── app.py               # Главное окно приложения
│   ├── device_tab.py        # Вкладка конфигурации конкретного устройства
│   ├── channel_frame.py     # Колонка канала (телеметрия, конфиг, статус)
│   └── status_defs.py       # Битовые маски STATUS_* регистров для разбора ошибок
└── sim/                     # Модули для отладки без железа
    └── sim_bus.py           # Эмуляция I2C шины для демонстрационного режима (--sim)

👥 Авторы

  • awolfmanАрхитектура системы, постановка задач, общая координация и тестирование в железе

  • Claude 4.6Написание основного программного кода (ядро PMBus, обработка протоколов, интерфейс Tkinter)

  • GeminiТестирование, рефакторинг и доведение кода до стабильного рабочего состояния

  • DeepSeekОтладка драйверов интерфейсов (USB-I2C), оптимизация обработки ошибок и тестирование под Linux

About

PMBus Device Manager & Telemetry Tool

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages