Python-библиотека для конфигурирования, управления и сбора телеметрии с 4-канальных DC/DC преобразователей LTM4673 по протоколу I2C/PMBus.
💡 Архитектурная особенность: Микромодуль питания LTM4673 аппаратно построен на базе встроенного цифрового контроллера LTC2975. Именно поэтому в коде библиотеки для инициализации устройства и работы с его PMBus-регистрами используется класс
LTC2975.
Библиотека предоставляет высокоуровневый интерфейс для управления встроенным контроллером управления питанием:
- Настройка порогов напряжений и токов защит.
- Чтение параметров системы (телеметрии) в реальном времени.
- Управление встроенным серво-механизмом подстройки напряжений каналов.
- ОС: Linux (Raspberry Pi, Orange Pi, серверные платы и любые Embedded-платформы с аппаратной шиной I2C).
- Python: версии 3.7 и выше.
- Библиотеки:
smbus2(используется вместо устаревшейsmbusдля более стабильной работы в современных дистрибутивах Linux).
Примечание: Перед запуском убедитесь, что интерфейс I2C активирован на уровне ядра ОС, а текущий пользователь имеет права на чтение/запись устройств /dev/i2c-*.
-
Клонируйте репозиторий с кодом библиотеки:
git clone https://github.com cd ltm4673-python-library -
Установите обязательную Python-зависимость:
pip install smbus2
Ниже приведен базовый сценарий инициализации модуля, чтения основных параметров входной телеметрии и изменения выходного напряжения на одном из каналов:
import time
# Импортируем класс встроенного PMBus-контроллера LTC2975
from ltm4673 import LTC2975
# Настройки подключения к I2C
DEFAULT_BUS = 1 # Номер системной шины I2C (/dev/i2c-1)
I2C_BASE_ADDR = 0x5b # Базовый PMBus-адрес устройства на шине
# Инициализация модуля питания
sensor = LTC2975(bus_num=DEFAULT_BUS, addr=I2C_BASE_ADDR)
# 1. Чтение системной информации и идентификаторов чипа
print(f"Device ID: {hex(sensor.mfr_special_id())}")
print(f"Customer Codes: {hex(sensor.mfr_special_lot())}")
# 2. Сбор телеметрии входной шины питания
print(f"Vin = {sensor.read_vin():.2f} V")
print(f"Iin = {sensor.read_iin():.2f} A")
print(f"Status Input: {hex(sensor.status_input())}")
# 3. Изменение конфигурации (требует отключения защиты от записи)
print("\nОбновление конфигурации модуля...")
sensor.write_protect(0x00) # Отключение защиты (Write Protect)
sensor.vin_on(4.5) # Порог включения по входному напряжению: 4.5V
sensor.vout_command(1.2) # Целевое выходное напряжение канала: 1.2V
print("Конфигурация успешно применена.")sensor = LTC2975(bus_num=1, addr=0x5b)bus_num(int): Номер системной шины I2C (по умолчанию:1).addr(int): 7-битный физический PMBus-адрес микросхемы (по умолчанию:0x5b).
read_vin()— Возвращает текущее входное напряжение модуля в Вольтах (float).read_iin()— Возвращает текущий входной ток модуля в Амперах (float).status_input()— Чтение байта состояния регистра статуса входной шины (byte).mfr_special_id()— Чтение уникального идентификатора модели внутреннего контроллера.
write_protect(mask)— Настройка маски защиты регистров от записи. Передача0x00полностью снимает защиту.vin_on(voltage)— Установка минимального напряжения на входе, при котором модуль начнет работу.vout_command(voltage)— Команда установки номинального выходного напряжения для выбранного активного канала.
- awolfman — Разработка библиотеки, маппинг PMBus-команд, тестирование кода на реальном оборудовании.
- Gemini (AI-помощник от Google) — Технический аудит документации, исправление неточностей в API и оформление README.md.