Любой датчик на I2C

RickSunchez

✩✩✩✩✩✩✩
29 Фев 2024
4
0
Добрый день. Существует большой проект с кучей датчиков и сенсоров. Появилась необходимость подключить еще несколько датчиков, однако, свободного места уже нет, но есть шина I2C. В голове нарисовалась примерно такая схема: master-controller <-> slave-? <-> sensor. То есть вместо подключения датчика напрямую, появляется некоторый промежуточный элемент (контроллер?), который работает в режиме slave, читает данные датчика и отправляет на master. Остался только вопрос - что взять на роль этого промежуточного устройства.
Когда-то, ради эксперимента, прошивал Attiny13, но интернет подсказывает, что у него нет интерфейса I2C. Можно, конечно, взять какой-то другой подобный контроллер из таблицы, но может есть другие решения?
 

RickSunchez

✩✩✩✩✩✩✩
29 Фев 2024
4
0
Инетересная штука, только адресов мало получается)) Хотелось бы больше гибкости в этом плане
 

Старик Похабыч

★★★★★★★
14 Авг 2019
4,263
1,302
Москва
Можно посмотреть как работают датчики от IARDUINO -многие их изделия основаны на каком то из СТМ-ов (энкодер точно есть. но смотреть лень), выбрать проц надо по цене.
 

poty

★★★★★★✩
19 Фев 2020
3,238
943
Тут даже вопрос не сколько датчиков вообще, а каково максимальное количество датчиков с одинаковыми адресами, потому что все остальные можно подключить к одному порту I2C.
 

RickSunchez

✩✩✩✩✩✩✩
29 Фев 2024
4
0
@Старик Похабыч, Не нашел такого

@bort707, та, на самом деле не важно сколько, просто интересно масштабирование на шине в принципе

@poty, в идеале, если говорить про что-то программируемое, хочется ручками назначать адреса, а потом опрашивать их
 

poty

★★★★★★✩
19 Фев 2020
3,238
943
@RickSunchez, адреса определяются датчиками (sensor по Вашему), а не сервером (slave или master), поэтому "ручками назначать" их не получится, если это не поддерживается конкретной микросхемой. Бывает, что поддерживается в рамках одного-трёх адресов, часто - не программным, а аппаратным способом. Собственно, вопрос остаётся в силе: сколько датчиков с одинаковым адресом планируется подключить? Потому что если адрес можно переназначить, то датчики с разными адресами можно подключить к одному порту практически в неограниченном количестве.
 

RickSunchez

✩✩✩✩✩✩✩
29 Фев 2024
4
0
@poty, я понимаю как работает I2C. У меня три ардуинки общаются между собой по шине, один ведущий - два ведомых, вот у меня и возник вопрос: если я могу назначать ардуинкам адреса, то почему я не могу взять какой-нибуть контроллер с низким энергопотреблением (чтобы и контроллер питать и на датчик осталось), чтобы зашить в него адрес и через него транслировать данные с датчика? А там уже особо не важно сколько датчиков, все семь адресных бит - мои, лишь бы питания хватило
 
Изменено:

JackOfShadows

✩✩✩✩✩✩✩
19 Мар 2022
28
4
Инетересная штука, только адресов мало получается)) Хотелось бы больше гибкости в этом плане
Адрес TCA9548A для I2C интерфейса выбирается подачей на адресные контакты A0-A2 опрелеленных уровней: 000, это шестнадцатеричный адрес 0x70; 111 - 0х77.

Восемь плат максимум же?
 

Эдуард Анисимов

★★★★★★✩
23 Сен 2019
2,410
976
58
Марий-Эл
Для решения этой проблемы нужно уйти от I2C.
Переходим на RS485. К каждому датчику лепим контроллер, а контроллеры соединяем по RS485.
И делаем что хотим. Назначаем адреса, делаем какую хотим иерархию, долбимся головой об стену.
I2C изначально предназначен не для этого. И не надо натягивать сову на глобус.
 
  • Лойс +1
Реакции: RickSunchez