Не хватает портов. Как поступить?

andreykrasnodar
Offline
Зарегистрирован: 04.10.2020

Задумал проект, выписал в файл все датчики/реле/кнопки/потенциометры/экраны/сервоприводы - нужно 28 портов (и это при том, что 3 датчика будут сидеть на I2C). Как лучше решить вопрос - использовать 2 платы Arduino nano (просится это решение, т.к. условно задачу можно разделить на 2 почти независимых процесса, общий у них только экран) или докупить расширитель портов?

 

sadman41
Offline
Зарегистрирован: 19.10.2016

Какой конкретно расширитель портов вы хотите купить для одновременного произведения аналоговых измерений и цифрового управления?

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Информации для принятия решения недостаточно. При прочих равных, я бы взял дополнительный контроллер, а не расширитель. Но это надо смотреть "равные там прочие" или нет.

andreykrasnodar
Offline
Зарегистрирован: 04.10.2020

ЕвгенийП пишет:

Информации для принятия решения недостаточно. При прочих равных, я бы взял дополнительный контроллер, а не расширитель. Но это надо смотреть "равные там прочие" или нет.

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

Остался лишь один вопрос: для вывода информации используется светодиодный матричный модуль на MAX7219. Есть ли возможность использовать его двумя платами совместно?

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

В принципе, можно, но сумеете ли Вы, я не знаю.

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Самый дешевый вариант, думаю, использовать что-то типа Blue Pill, там как раз портов чуть больше, чем в Нано. Да и дешевле он.

Дальше, на мой взгляд, по предпочтительности - использование сдвигового регистра. Входного или выходного - это уж зависит от конкретного соотношения.

Voodoo Doll
Voodoo Doll аватар
Offline
Зарегистрирован: 18.09.2016

andreykrasnodar пишет:
использовать его двумя платами совместно?

экран <---(gpio)---> ардуина1 <----(UART/IR38KHz/EasyTransferI2C/EasyTransferUART/битбанг выводов симулирующих нажатие кнопок/оптроны)----> ардуина2

nik182
Offline
Зарегистрирован: 04.05.2015

Голосую за блэкпилл на 401. Гложут меня смутные сомнения что одна нана не потянет все хотелки.

SLKH
Offline
Зарегистрирован: 17.08.2015

Voodoo Doll пишет:

andreykrasnodar пишет:
использовать его двумя платами совместно?

экран <---(gpio)---> ардуина1 <----(UART/IR38KHz/EasyTransferI2C/EasyTransferUART/битбанг выводов симулирующих нажатие кнопок/оптроны)----> ардуина2

мадам знает толк в извращениях.

 

2 ардуины и 1 7219, навскидку:

- cs, din и clk запараллелены;

- clk резистор на землю:

в сетапе cs INPUN_PULLUP, остальные INPUT:

ардуина читает cs. Если 0 - сидит ровно и ждет единичку. Если 1 - конфигурирует пины на выход и передает данные; затем переключает пины на вход;

стоит еще подумать про диодную развязку на cs - нужна ли? скорее нужна, чем нет - но думать лень.

как-то так...

 

 

MaksVV
Offline
Зарегистрирован: 06.08.2015

andreykrasnodar пишет:
Остался лишь один вопрос: для вывода информации используется светодиодный матричный модуль на MAX7219. Есть ли возможность использовать его двумя платами совместно?

Как вариант, выводит на экран всегда один МК . А от второго МК получает информацию для вывода на экран по какой-либо шине. 

Kakmyc
Offline
Зарегистрирован: 15.01.2018

Порты dio можно размножить с помощью mcp23s17 до 16шт на один канал spi.
Mcp27013 не рассматриваю, потому что на i2c и так уже 4 устройства

sadman41
Offline
Зарегистрирован: 19.10.2016

Просто интересно - чем обмену по шине препятствует "уже 4 устройства"?

Kakmyc
Offline
Зарегистрирован: 15.01.2018

sadman41 пишет:
Просто интересно - чем обмену по шине препятствует "уже 4 устройства"?

Помимо снижения скорости и перепайки резисторов ?
Не знаю как вам, а мне этого уже достаточно.

sadman41
Offline
Зарегистрирован: 19.10.2016

Я вижу в первом сообщении только сенсоры, резисторов не вижу. У меня есть, к примеру, сенсоры, которые требуют установки подтяжки, т.е. на борту ничего не имеют.

Насчёт скоростей тоже ничерта не понял. В первом сообщении они не обозначены.

Так-то я не против mcp-шки, непонятна причина дискриминации.

Kakmyc
Offline
Зарегистрирован: 15.01.2018

sadman41 пишет:
Я вижу в первом сообщении только сенсоры, резисторов не вижу. У меня есть, к примеру, сенсоры, которые требуют установки подтяжки, т.е. на борту ничего не имеют.

Насчёт скоростей тоже ничерта не понял. В первом сообщении они не обозначены.

Так-то я не против mcp-шки, непонятна причина дискриминации.

Если есть возможность повесить периферию на два аппаратных интерфейса, зачем вешать ее на один ?
И у SPI скорость несколько выше чем у I2C.
Я бы даже сказал не только в разы, а даже на порядки...

sadman41
Offline
Зарегистрирован: 19.10.2016

Например, при выносе периферии подальше от МК, 4 провода на все I2C - это меньше, чем 4+6 на I2C+SPI. Паять меньше, если плату делать - разводка проще. Меньше библиотек, проще код.

Кнопкам, реле, сервоприводам наврядли нужна 4мгц шина.

andreykrasnodar
Offline
Зарегистрирован: 04.10.2020

Всем спасибо за участие, решил сделать распараллеливание двух процессов, а 2 ардуино соединю двумя проводами, реализовав софтовый RX и TX.

Plasteroid
Plasteroid аватар
Offline
Зарегистрирован: 15.07.2020

Так как у Вас задействована шина I2C я бы делал так: на шине I2C датчики , экран и обе наны или нана и МСР23016/17 . И не нужно городить огород с софтовым УАРТом. Скорости I2C достаточно и меньше проводов и библиотек. А остальное - ваш уровень умения программировать.

Датчики опрашивать по мере надобности , экран обновлять через определенные промежутки времени  или при обновлении выводимых данных и т.д.

Давно , в 2014 году, когда кроме 328 камня  не знал еще ничего , делал устройство на 3-х МК Атмега 328  , 2 МСР23016, часики на DS1307 , экран 20х4 I2C , сенсоры давления и температуры с I2C. Работает устройство по сей день. Скорости  шины I2C достаточно: кнопки нажимаются , датчики читаются , выхода работают, экран отображает всю эту хрень  , и т.д.

Сейчас , конечно , под каждую задачу подбираю  МК из наличия , подходящий по своим возможностям к проекту . МСР23016\17 перестал использовать  и из-за их цены (она выше цены на МК чаще всего).

slavyan
Offline
Зарегистрирован: 12.02.2022

Здравствуйте, скажите пож. а если нужно собрать многоканальный вольтметр (30 входов), что бы вы посоветовали (какой МК) для этого использовать? Только ли аналоговые входы можно использовать, или и для цифровых существуют хорошие АЦП? Простите за ламерские вопросы. Только погружаюсь в тему.

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

тут же встречный вопрос, с какой скоростью надо мерить твои 30 напряжений?

asam
asam аватар
Offline
Зарегистрирован: 12.12.2018

DetSimen пишет:

тут же встречный вопрос, с какой скоростью надо мерить твои 30 напряжений?

Ага, а так же каков диапазон измеряемых напряжений и требуемая точность.

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Когда мне понадобилось организовать 48 каналов АЦП на Меге, я использовал MCP3008.

slavyan
Offline
Зарегистрирован: 12.02.2022

Здравствуйте, ребята. Скорость требуется - раз в полсекунды. Диапазон измерений 10 - 18 вольт.

slavyan
Offline
Зарегистрирован: 12.02.2022

 MCP3008. Глянул на него. Пишут, что у него всего 8 аналоговых линий. Или ни туда глядел?

b707
Offline
Зарегистрирован: 26.05.2017

slavyan пишет:

 MCP3008. Глянул на него. Пишут, что у него всего 8 аналоговых линий. Или ни туда глядел?

он подключаетеся по SPI, а значит их можно навешать несколько на одну и ту же линию. Вам хватит 4 шт, будет 4х8 = 32 входа

slavyan
Offline
Зарегистрирован: 12.02.2022

b707 пишет:

slavyan пишет:

 MCP3008. Глянул на него. Пишут, что у него всего 8 аналоговых линий. Или ни туда глядел?

он подключаетеся по SPI, а значит их можно навешать несколько на одну и ту же линию. Вам хватит 4 шт, будет 4х8 = 32 входа

Понял. Спасибо большое! Т.е. Для этого мне понадобица 4 таких АЦП и четыре SPI входа на ардуино? А что у меня получится в плане скорости? И еще, подскажите пожалуйста, если я захочу снимать силу тока кроме напряжения, мне понадобятся отдельные каналы?

b707
Offline
Зарегистрирован: 26.05.2017

slavyan пишет:

подскажите пожалуйста, если я захочу снимать силу тока кроме напряжения, мне понадобятся отдельные каналы?

да, причем по два на канал. Впрочем, если у всех каналов общая земля - то один сигнал можно взять общий для всех. И лучше это измерять внешним АДС типа INA1015 INA219 и тд, у ардуины адс слабоват для такого

slavyan
Offline
Зарегистрирован: 12.02.2022

b707 пишет:

slavyan пишет:

подскажите пожалуйста, если я захочу снимать силу тока кроме напряжения, мне понадобятся отдельные каналы?

да, причем по два на канал. Впрочем, если у всех каналов общая земля - то один сигнал можно взять общий для всех. И лучше это измерять внешним АДС типа INA1015 INA219 и тд, у ардуины адс слабоват для такого

А можете пож. нарисовать схематически, как это должно выглядеть, и какие микросхемы для реализации задачи мне стоит сразу заказать. Я так понимаю, понадобится плата arduino mega + INA1015 (32 шт) + MCP3008 (4 шт) Верно? 

nik182
Offline
Зарегистрирован: 04.05.2015

А что такое ina1015? Меня гугль забанил наверно. Ничего по этой строке не даёт, кроме ников геймеров.

b707
Offline
Зарегистрирован: 26.05.2017

slavyan пишет:

arduino mega + INA1015 (32 шт) + MCP3008 (4 шт) Верно? 

если взять ina219 , то в ней сразу и вольтметр и амперметр. Только присоединить 32 штуки разом у вас не выйдет

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

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

slavyan пишет:

 MCP3008. Глянул на него. Пишут, что у него всего 8 аналоговых линий. Или ни туда глядел?

А Вы всерьез надеетесь найти дивайс, у которого ровно 30 аналоговых линий?

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

slavyan пишет:

Понял. Спасибо большое! Т.е. Для этого мне понадобица 4 таких АЦП и четыре SPI входа на ардуино? А что у меня получится в плане скорости? И еще, подскажите пожалуйста, если я захочу снимать силу тока кроме напряжения, мне понадобятся отдельные каналы?

Вам достаточно 3 корпусов: 8х3 (MCP) + 6 (Ардуино) = 30.

По скорости явно лучше, чем Ардуино: 200 кГц против 8 кГц.

АЦП измеряет только напряжение. А что Вы еще захотите и как это сделать - это уже совершенно отдельные вопросы.