Ведущий и ведомый

КРИВОРУК

✩✩✩✩✩✩✩
14 Янв 2021
6
0
Здравствуйте, "форумчане" и (тоже не редкость) "форумчанки" !!!
Возникли такие вопросы:
1)Как подключить несколько датчиков давления BMP180 (много, но скорость чтения данных не так важна) к одной "ардуино нано" и сделать это всё как можно компактней???
2)Достаточно ли нано или выбрать плату уно или вообще перейти на что то другое для данной цели (ту же STM32) ???
3)Полезен ли мультиплексор в этом случае ???


В общем мне хотя бы задать направление в плане

(Перекопал интернет на тему подключения, т.к. по правилам группы если есть ответ на первой странице бла-бла-бла, то до свидания, upd: "Просто держу в курсе")
Сначала хотел узнать можно ли сменить пины (SDI и SCL на распиновке ниже) для "Ардуино Нано" , где предлагали I2C шину как расширитель пинов (портов) , где позже нашёл тему "Ведущий-ведомый" , где горилось что Id варьируется от 0..127. То есть можно подключить до 128 устройств ??? Если да то как распиновка ардуино Нано.pngэто сделать и что для этого нужно
(Пж, хотя бы статьи или те же форумы в "Заметках ардуинщика", кроме как связь ардуинок ничего не нашёл)


P. S. Заранее спасибо за помощь (если будет такова и я могу "чекать" форум каждый день)
 

poty

★★★★★★✩
19 Фев 2020
3,230
940
1. Мне кажется, самым оптимальным вариантом будет соединение каждого датчика с маленькими МП (типа ATtiny 25) и их опрос по относительно низкоскоростному интерфейсу с использованием адресной шины (ну, хотя бы 1-Wire). Я сомневаюсь, что все датчики будут находиться рядом, поэтому под компактностью я подразумеваю "компактный вынесенный датчик". Размещение в одном месте с МП даст также выгоду в помехозащищённости длинных проводов от этих датчиков до "центрального обработчика".
2. 3. В связи с тем, что BMP180 имеют одинаковые адреса на шине I2C их нужно подключать к разным портам. Большое количество портов I2C Вы вряд ли найдёте, поэтому "центральный обработчик" нужно выбирать из расчёта необходимой памяти и производительности для обработки результатов и дальнейшего их использования, а не с точки зрения количества портов I2C. Что касается мультиплексора, то это тоже возможный вариант. Но менее гибкий, как мне кажется, так как снова возникает ограничение по количеству портов мультиплексора и центральное устройство скрывается за паутиной проводов (к каждому устройству от мультиплексора должно быть подведено 4 провода). Использование шины позволит провести один провод (в минимуме - 3-х жильный) и обеспечить подключение большого количества устройств.
То есть можно подключить до 128 устройств ???
Да, но устройства должны иметь разные адреса. Т.е., допустим, в моём примере выше, если МП на стороне датчика будет выступать как в качестве master для своего датчика, так и как slave для центрального МП, Вы можете slave дать разные адреса и подключить (в теории) до 128 устройств.
 
Изменено:
  • Лойс +1
Реакции: КРИВОРУК

КРИВОРУК

✩✩✩✩✩✩✩
14 Янв 2021
6
0
1. Мне кажется, самым оптимальным вариантом будет соединение каждого датчика с маленькими МП (типа ATtiny 25) и их опрос по относительно низкоскоростному интерфейсу с использованием адресной шины (ну, хотя бы 1-Wire). Я сомневаюсь, что все датчики будут находиться рядом, поэтому под компактностью я подразумеваю "компактный вынесенный датчик". Размещение в одном месте с МП даст также выгоду в помехозащищённости длинных проводов от этих датчиков до "центрального обработчика".
2. 3. В связи с тем, что BMP180 имеют одинаковые адреса на шине I2C их нужно подключать к разным портам. Большое количество портов I2C Вы вряд ли найдёте, поэтому "центральный обработчик" нужно выбирать из расчёта необходимой памяти и производительности для обработки результатов и дальнейшего их использования, а не с точки зрения количества портов I2C. Что касается мультиплексора, то это тоже возможный вариант. Но менее гибкий, как мне кажется, так как снова возникает ограничение по количеству портов мультиплексора и центральное устройство скрывается за паутиной проводов (к каждому устройству от мультиплексора должно быть подведено 4 провода). Использование шины позволит провести один провод (в минимуме - 3-х жильный) и обеспечить подключение большого количества устройств.
Да, но устройства должны иметь разные адреса. Т.е., допустим, в моём примере выше, если МП на стороне датчика будет выступать как в качестве master для своего датчика, так и как slave для центрального МП, Вы можете slave дать разные адреса и подключить (в теории) до 128 устройств.
1)Насчёт ATtiny25 я бы ни за что не догадался , спасибо большое за старание и помощь в объяснении8IAAAgGbA-A-1920.jpg, "пошаркаю" в интернете и поищу как работать с ATtiny25 и у "Гайвера" был обзор вроде, я примерно понял идею, так что можно продолжать

Да, я видел, они молодцы рекламируют свою продукцию, но это не подходит, да и дороговато как по мне, но...
... Спасибо за видос

На самый крайний случай можно попробовать SCL через мультиплексор.
Ответ был найден, но пока не опробован, но спс за старание
 

bort707

★★★★★★✩
21 Сен 2020
3,064
912
Да, я видел, они молодцы рекламируют свою продукцию, но это не подходит, да и дороговато как по мне, но...
... Спасибо за видос
совершенно необязательно пользоваться тройка-модулями от амперки. Ловите суть - они там говорят о"хабе", то есть мультиплексоре I2C. На мой взгляд мультиплексор - для вас самый оптимальный вариант.
Способ, предложенный @poty - он правильный и красивый, но требует уровня знаний, значительно превышающих возможности типичного новичка. Думаю, для вас это сложновато
 
Изменено:
  • Лойс +1
Реакции: ТехнарьКто

КРИВОРУК

✩✩✩✩✩✩✩
14 Янв 2021
6
0
совершенно необязательно пользоваться тройка-модулями от амперки. Ловите суть - они там говорят о"хабе", то есть мультиплексоре I2C. На мой взгляд мультиплексор - для вас самый оптимальный вариант.
Способ, предложенный @poty - он правильный и красивый, но требует уровня знаний, значительно превышающих возможности типичного новичка. Думаю, для вас это сложновато
Да, я понимаю что это проще, но с мультиплексорами (аналоговые сн74 на 16 каналов) мне было не легче, особенно в поисках информации о работе с ними, а вариант с аттини выглядит проще , да и гайдов больше
 

КРИВОРУК

✩✩✩✩✩✩✩
14 Янв 2021
6
0
совершенно необязательно пользоваться тройка-модулями от амперки. Ловите суть - они там говорят о"хабе", то есть мультиплексоре I2C. На мой взгляд мультиплексор - для вас самый оптимальный вариант.
Способ, предложенный @poty - он правильный и красивый, но требует уровня знаний, значительно превышающих возможности типичного новичка. Думаю, для вас это сложновато
Если честно , то метод через мультиплексоры мне показался сложней, т.к. гайдов по мультиплексорам очень мало (я правда искал и пытался и библиотеку нашёл и форумы читал, но этого мало, т.к. нужно больше чем 16 портов 😔) , а вот гайды по аттини и программирование через Ардуино побольше будет

@КРИВОРУК, Всё очень просто с мультиплексорами.
Я услышал (понял принял) вас. И если получится , то мб и объединю идеи "аттини" и "мультиплексор"
 

ТехнарьКто

★★★★★✩✩
13 Янв 2020
270
437
1)Как подключить несколько датчиков давления BMP180 (много, но скорость чтения данных не так важна) к одной
--кусь--
В общем мне хотя бы задать направление в плане
Через мультиплексор можно подключить 56 штук BMP180.

Для платы BMP180 используемой в поделках с ардуино адрес I2C фиксирован. На мой взгляд самое легкое, дешевое и простое решение будет при использовании мультиплексора. Дешевый CJMCU-9548 он же TCA9548A. Чуть более шестисот рублей с доставкой за 10 мультиплексоров при заказе с aliexpress.
muil.jpg

TCA9548A представляет собой двунаправленный мультиплексор 1-в-8, который управляется регистром состояния. Расширитель имеет три входа выбора собственного адреса, которые позволяют задать адрес микросхемы в диапазоне 0x70…0x77. Это значит, что можно подключить на одну шину I2C восемь расширителей, к каждому из которых можно подключить по восемь устройств, итого можно подключить 8×8=64 устройства с одинаковым адресом. Поскольку для BMP180 адрес 0х77 совпадает с адресом мультиплексора, то для Вашего случая на мультиплексорах TCA9548A можно подключить 7х8=56 (пятьдесят шесть) BMP180 к одной ардуино нано.

Успехов.
 

poty

★★★★★★✩
19 Фев 2020
3,230
940
С моей точки зрения асинхронное подключение датчиков через микропроцессоры обладает значительным преимуществом перед мультиплексированием. Если говорить о сложных композитных датчиках (том же BMP180), то они слабо автоматизированы. В частности, для проведения измерений с BMP180 требуется хранить локально 22 байта "коррекционных" данных для каждого подключенного датчика, обеспечивать раздельный запрос, получение данных (через определённое время, так как измерение не происходит моментально), расчёт из полученных данных температуры и давления. Кроме того, шина I2C является, по сути, блокирующей, при увеличении количества устройств на ней периоды запрета прерываний будут увеличиваться и ухудшать и так не особенно развитую систему управления процессами в реальном времени. Соединять датчики придётся по схеме "звезда звёзд", что не всегда оптимально по количеству требующейся проводки.
При использовании выделенных микропроцессоров на каждый датчик хранение, получение данных и расчёт осуществляются полностью независимо от использования результатов и могут в любой момент в готовом виде быть считаны по шине данных, подключенной любым способом (последовательно-шинной или параллельной топологией). Возникает возможность часть автоматизации (например, сигнализацию о выходе какого-либо параметра за заданные пределы) также перенести на микропроцессоры, обслуживающие датчики, и заменить опрос датчиков на прерывания от них на "основном" микропроцессоре. Количество датчиков в этом случае можно увеличивать практически неограниченно.
Я не говорю, что мультиплексоры не имеют права на существование, просто, возможно, для более простых датчиков.
 
  • Лойс +1
Реакции: КРИВОРУК