Чтобы увеличить количество датчиков TMP117 на одной шине I²C (или в системе в целом), можно использовать несколько методов. Поскольку сам датчик поддерживает только 8 уникальных адресов, простое добавление устройств с разными адресами ограничено 8 штуками на одну линию.
Способы увеличения числа датчиков TMP117
1. Использование I²C-мультиплексора (например, PCA9548A, TCA9548A)
Принцип работы:
-
Мультиплексор создаёт несколько виртуальных шин I²C, выбирая одну из них в каждый момент времени.
-
Например, PCA9548A поддерживает 8 каналов, значит можно подключить 8 × 8 = 64 датчика TMP117.
Схема подключения:
Микроконтроллер (I²C Master) │ └── PCA9548A (мультиплексор) ├── Канал 0 → 8 датчиков TMP117 (адреса 0x48–0x4F) ├── Канал 1 → 8 датчиков TMP117 (адреса 0x48–0x4F) ├── ... └── Канал 7 → 8 датчиков TMP117 (адреса 0x48–0x4F)
Плюсы:
✔ Можно подключить десятки датчиков без конфликтов адресов.
✔ Не требует изменения кода датчиков (адреса могут повторяться на разных каналах).
Минусы:
❌ Нужно переключать каналы программно (нельзя опрашивать все датчики одновременно).
❌ Дополнительная задержка из-за переключения каналов.
2. Использование нескольких независимых шин I²C
Если микроконтроллер поддерживает несколько интерфейсов I²C (например, I2C0, I2C1), можно подключить по 8 датчиков на каждую шину.
Пример для STM32/ESP32/Raspberry Pi:
I2C0 → 8 датчиков (адреса 0x48–0x4F) I2C1 → ещё 8 датчиков (адреса 0x48–0x4F)
Плюсы:
✔ Нет задержек на переключение каналов (можно опрашивать параллельно).
✔ Подходит, если датчики физически разнесены.
Минусы:
❌ Ограничено количеством аппаратных I²C в микроконтроллере.
❌ Нужно больше GPIO.
3. Использование GPIO для эмуляции I²C (Bit Banging)
Если аппаратные I²C-порты закончились, можно эмулировать I²C через GPIO (например, на ESP32, Arduino).
Плюсы:
✔ Можно создать много виртуальных шин.
✔ Гибкость в настройке.
Минусы:
❌ Большая нагрузка на CPU.
❌ Медленнее аппаратного I²C.
4. Использование других интерфейсов (SPI, UART + преобразователи)
Если I²C полностью занят, можно:
-
Перевести TMP117 в режим SPI (если поддерживается).
-
Использовать I²C-to-UART конвертеры (например, SC16IS752).
Плюсы:
✔ Увеличивает количество возможных подключений.
Минусы:
❌ TMP117 не поддерживает SPI, только I²C.
❌ Усложнение схемы.
Вывод: какой метод выбрать?
Метод | Макс. датчиков | Плюсы | Минусы |
---|---|---|---|
I²C-мультиплексор | 64+ | Лучшая масштабируемость | Задержки при переключении |
Несколько шин I²C | 16–32 | Параллельный опрос | Ограничено пинами MCU |
Bit Banging (GPIO) | Теоретически много | Гибкость | Нагрузка на CPU, медленнее |
Другие интерфейсы | Зависит от конвертера | Альтернатива I²C | TMP117 работает только по I²C |
Рекомендация:
-
Если нужно до 16 датчиков → используйте 2 независимые шины I²C.
-
Если нужно десятки датчиков → мультиплексор (PCA9548A).
-
Если нет свободных I²C → эмуляция через GPIO (Bit Banging).
Таким образом, максимальное количество TMP117 можно увеличить до сотен, если правильно организовать мультиплексирование или использовать несколько шин.
ВАЖНО!!! Даже если подключать датчики через мукльтиплексор, то придется организовывать 8 линий на нем, то есть он будет получать условно один входящий сигнал, а дальше работать с 8 реальными линями от него.