Подключение нескольких VL6180 (датчик приближения) на одну шину I2C

SvkMaster
Offline
Зарегистрирован: 24.11.2017

Добрый день!

Столкнулся с вопросом, который слабо освещен в результатах поисковиков. Задача - подключить несколько одинаковых VL8160 к одной шине I2C Arduino.

С точки зрения теории, это возможно, однако по данным продавцов, адрес в устройствах прошит один и тот же.

По ссылке: https://www.ebay.com/itm/232497222931 указано, что: "I2C address:0x29 (7-bit)".

Однако, если обратиться к информации об устройстве: http://wiki.amperka.ru/_media/продукты:troyka-proximity:dt_vl6180x.pdf -адрес можно изменить, однако после сброса питания эта настройка будет утрачена.

Вопрос: Как реализовать присоединение и инициализацию, к примеру, трех-четырех таких дальномеров, без "изобретения" каких-то мультиплексоров, которые последовательно их включат в шину после запуска питания и "прошьют" уникальный для I2C адрес перед стартом основного цикла Arduino?

Большое спасибо за ответы.

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

В апноте к даччику написано, что у него есть GPIO0, притянув который к земле, можно отключить датчик. А адрес i2c меняется записью в регистр 0х212

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Видится простое решение, не меняя адрес i2c, сделать оналог CS, по очереди подавая High на GPIO0 каждому. И читать данныя. Можно даже через какойнить 595й регистр

Пробовать нада

SvkMaster
Offline
Зарегистрирован: 24.11.2017

По сути это и есть мультиплексор )) т.е. придется "тратить" другие ноги ардуина, и прикручивать транзистор, который будет "тянуть к земле" во время чтения. Это очень "кривое" на мой взгляд решение, если учесть возможности спецификации I2C и то что эти модули не предполагают штатного подключения в единственном экземпляре к такой шине.

Я почему-то тоже подумал нечто аналогичное сделать при инициализации: перепрограммировать адрес, мультиплексором отключив остальные и потом работать с ними в штатном протоколе. Я вот не понимаю, как производитель предлагает решать подобную регулярную задачу - может есть какой-то протокол без "притягивания" устройств к шине это решить?

Продолжаю читать http://wiki.amperka.ru/_media/продукты:troyka-proximity:dt_vl6180x.pdf, и нахожу в части 6.2.6-6.2.8 некие IDENTIFICATION__DATE_HI, IDENTIFICATION__DATE_LO и IDENTIFICATION__TIME с описанием: "..Part of the register set that can be used to uniquely identify a module" - интересно, возможно ли использование этих данных для идентификации экземпляра устройства на самой шине без танцев с аппаратным мультиплексором? Если да, то какими библиотеками это можно (и можно ли?) сделать в Ардуине?

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Я пас. Так далеко мое скудоумие не простираеца. Пятница. Надо уже вотки попить.

SvkMaster
Offline
Зарегистрирован: 24.11.2017

))) зря вы так.. я все же думаю победить этого буржуйского гада. Подожду вот как в руки попадет, постараюсь отписаться как это победил.

OlegK
OlegK аватар
Offline
Зарегистрирован: 26.11.2014

Попробуйте эту библу, или эту - и там и там есть возможность задать адрес девайса.

Гриша
Offline
Зарегистрирован: 27.04.2014

SvkMaster пишет:

 и нахожу в части 6.2.6-6.2.8 некие IDENTIFICATION__DATE_HI, IDENTIFICATION__DATE_LO и IDENTIFICATION__TIME с описанием: "..Part of the register set that can be used to uniquely identify a module" -

чтобы его получить, нужно обратиться к устройству, а адреса одинаковые :))) (могу ошибаться...)

если для i2c есть какой-нить регистр, можно костыльно использовать регистр для прошивки адресов (при каждом запуске) а потом опрашивать их по адресу... ну а если кого нет - инициализировать кой-нить сброс...

в порядке бреда, но может на идею натолкнет...

 

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

В который раз уже... Короче - SCL каждого датчика через канал той же 74HC125, если датчик не надо опрашивать - канал ВЫКЛ. Если надо датчик опрашивать - канал ВКЛ, всё. И хоть гроздями увешайте I2C устройствами с одним адресом: нет ножек - нет мультиков. А ножки, в смысле тактирование - рвутся когда вам надо, всё просто. Единственный минус - выходы на управление каналами надо, но и тут можно заюзать 74HC525, если устройств овердохера (больше 4-х, тогда будет экономия в ногах) и не хочется тратить на каждое из них отдельную ногу дуньки на управление каналом.

OrDer
Offline
Зарегистрирован: 15.10.2017
прошу прощения, а ультразвуковые дальномеры вот так  вот навесить не получится? мне бы надо штук 7. И можно не особо часто поочередно опрашивать.
С мультиплекстором, де еще и высоковльтным, коекак разобрались,( в этой ветке, http://arduino.ru/forum/apparatnye-voprosy/multipleksor-vernee-selektor-... ) и микросхему http://supertex-i.ru/data/HV2201.pdf вроде я как нашол (хотя еще и не закупал). Но может есть какайто более тупой и недорогой вариант?
 
SLKH
Offline
Зарегистрирован: 17.08.2015

OrDer пишет:

прошу прощения, а ультразвуковые дальномеры вот так  вот навесить не получится? мне бы надо штук 7. И можно не особо часто поочередно опрашивать.
получится.
 
 
Цитата:
С мультиплекстором, де еще и высоковльтным, коекак разобрались,( в этой ветке, http://arduino.ru/forum/apparatnye-voprosy/multipleksor-vernee-selektor-... ) и микросхему http://supertex-i.ru/data/HV2201.pdf вроде я как нашол (хотя еще и не закупал).
так ты "скажи, чё те надо"? ты же настаивал на одном дальномере с переключением датчиков, теперь те нужны уже дальномеры.
 
Цитата:
Но может есть какайто более тупой и недорогой вариант?
  я тебе там сразу предложил: 25 штук hc-sr04. куда уж дешевле и тупее.
OrDer
Offline
Зарегистрирован: 15.10.2017

SLKH пишет:

OrDer пишет:

прошу прощения, а ультразвуковые дальномеры вот так  вот навесить не получится? мне бы надо штук 7. И можно не особо часто поочередно опрашивать.
получится.
 
 
Цитата:
С мультиплекстором, де еще и высоковльтным, коекак разобрались,( в этой ветке, http://arduino.ru/forum/apparatnye-voprosy/multipleksor-vernee-selektor-... ) и микросхему http://supertex-i.ru/data/HV2201.pdf вроде я как нашол (хотя еще и не закупал).
так ты "скажи, чё те надо"? ты же настаивал на одном дальномере с переключением датчиков, теперь те нужны уже дальномеры.
 
Цитата:
Но может есть какайто более тупой и недорогой вариант?
  я тебе там сразу предложил: 25 штук hc-sr04. куда уж дешевле и тупее.

да. эт я чото втупил. hc-sr04\5 не пойдут видимо - негерметичные. Както их заливать и мастырить при наличии нормальных аутодоор сенсоров будет както глупо выглядеть. И форм фактор (плата вместе с сенсором) както не айс. Это тоже смое что плату вмастрячить в бампер. Всетки платы должны быть в боксе, а сенсоры в уличном исполнении вынесены во вне.

Задавая этот вопрос я и имел ввиду переключение сенсоров. а не платы, конечно.

coustou
Offline
Зарегистрирован: 01.10.2018

может попробовать использовать сдвиговый регистр для включения выключения TOF. 

потребуется две ноги ардуино (data и clock, latch можно сразу посадить на +). 

при инициализации пройтись по очереди поменять адреса (путем "гоненния" единицы в виде бегущего огня), а потом загнать все единицы, чтобы включить модули и в путь.

правда, придется до этого определить в индивидуальном порядке их серийные номера, чтобы в правильно определить TOFы в применяемый массив

KurisuRentaro
Offline
Зарегистрирован: 06.08.2019

Привет. Нужно подключенить несколько датчиков приближения последовательно на один пин arduino, что бы получать информацию со всех одновременно и что бы у каждого датчика был свой адрес. В итоге должен получиться массив датчиков приближения. Кто нибудь знает решение?