Не хватает портов. Как поступить?
- Войдите на сайт для отправки комментариев
Сб, 28/11/2020 - 14:42
Задумал проект, выписал в файл все датчики/реле/кнопки/потенциометры/экраны/сервоприводы - нужно 28 портов (и это при том, что 3 датчика будут сидеть на I2C). Как лучше решить вопрос - использовать 2 платы Arduino nano (просится это решение, т.к. условно задачу можно разделить на 2 почти независимых процесса, общий у них только экран) или докупить расширитель портов?
Какой конкретно расширитель портов вы хотите купить для одновременного произведения аналоговых измерений и цифрового управления?
Информации для принятия решения недостаточно. При прочих равных, я бы взял дополнительный контроллер, а не расширитель. Но это надо смотреть "равные там прочие" или нет.
Информации для принятия решения недостаточно. При прочих равных, я бы взял дополнительный контроллер, а не расширитель. Но это надо смотреть "равные там прочие" или нет.
Спасибо за совет. Пожалуй, возьму вторую ардуино, т.к. все процессы независимы (кроме дисплея, об этом ниже).
Остался лишь один вопрос: для вывода информации используется светодиодный матричный модуль на MAX7219. Есть ли возможность использовать его двумя платами совместно?
В принципе, можно, но сумеете ли Вы, я не знаю.
Самый дешевый вариант, думаю, использовать что-то типа Blue Pill, там как раз портов чуть больше, чем в Нано. Да и дешевле он.
Дальше, на мой взгляд, по предпочтительности - использование сдвигового регистра. Входного или выходного - это уж зависит от конкретного соотношения.
экран <---(gpio)---> ардуина1 <----(UART/IR38KHz/EasyTransferI2C/EasyTransferUART/битбанг выводов симулирующих нажатие кнопок/оптроны)----> ардуина2
Голосую за блэкпилл на 401. Гложут меня смутные сомнения что одна нана не потянет все хотелки.
экран <---(gpio)---> ардуина1 <----(UART/IR38KHz/EasyTransferI2C/EasyTransferUART/битбанг выводов симулирующих нажатие кнопок/оптроны)----> ардуина2
2 ардуины и 1 7219, навскидку:
- cs, din и clk запараллелены;
- clk резистор на землю:
в сетапе cs INPUN_PULLUP, остальные INPUT:
ардуина читает cs. Если 0 - сидит ровно и ждет единичку. Если 1 - конфигурирует пины на выход и передает данные; затем переключает пины на вход;
стоит еще подумать про диодную развязку на cs - нужна ли? скорее нужна, чем нет - но думать лень.
как-то так...
Как вариант, выводит на экран всегда один МК . А от второго МК получает информацию для вывода на экран по какой-либо шине.
Порты dio можно размножить с помощью mcp23s17 до 16шт на один канал spi.
Mcp27013 не рассматриваю, потому что на i2c и так уже 4 устройства
Просто интересно - чем обмену по шине препятствует "уже 4 устройства"?
Помимо снижения скорости и перепайки резисторов ?
Не знаю как вам, а мне этого уже достаточно.
Я вижу в первом сообщении только сенсоры, резисторов не вижу. У меня есть, к примеру, сенсоры, которые требуют установки подтяжки, т.е. на борту ничего не имеют.
Насчёт скоростей тоже ничерта не понял. В первом сообщении они не обозначены.
Так-то я не против mcp-шки, непонятна причина дискриминации.
Насчёт скоростей тоже ничерта не понял. В первом сообщении они не обозначены.
Так-то я не против mcp-шки, непонятна причина дискриминации.
Если есть возможность повесить периферию на два аппаратных интерфейса, зачем вешать ее на один ?
И у SPI скорость несколько выше чем у I2C.
Я бы даже сказал не только в разы, а даже на порядки...
Например, при выносе периферии подальше от МК, 4 провода на все I2C - это меньше, чем 4+6 на I2C+SPI. Паять меньше, если плату делать - разводка проще. Меньше библиотек, проще код.
Кнопкам, реле, сервоприводам наврядли нужна 4мгц шина.
Всем спасибо за участие, решил сделать распараллеливание двух процессов, а 2 ардуино соединю двумя проводами, реализовав софтовый RX и TX.
Так как у Вас задействована шина I2C я бы делал так: на шине I2C датчики , экран и обе наны или нана и МСР23016/17 . И не нужно городить огород с софтовым УАРТом. Скорости I2C достаточно и меньше проводов и библиотек. А остальное - ваш уровень умения программировать.
Датчики опрашивать по мере надобности , экран обновлять через определенные промежутки времени или при обновлении выводимых данных и т.д.
Давно , в 2014 году, когда кроме 328 камня не знал еще ничего , делал устройство на 3-х МК Атмега 328 , 2 МСР23016, часики на DS1307 , экран 20х4 I2C , сенсоры давления и температуры с I2C. Работает устройство по сей день. Скорости шины I2C достаточно: кнопки нажимаются , датчики читаются , выхода работают, экран отображает всю эту хрень , и т.д.
Сейчас , конечно , под каждую задачу подбираю МК из наличия , подходящий по своим возможностям к проекту . МСР23016\17 перестал использовать и из-за их цены (она выше цены на МК чаще всего).
Здравствуйте, скажите пож. а если нужно собрать многоканальный вольтметр (30 входов), что бы вы посоветовали (какой МК) для этого использовать? Только ли аналоговые входы можно использовать, или и для цифровых существуют хорошие АЦП? Простите за ламерские вопросы. Только погружаюсь в тему.
тут же встречный вопрос, с какой скоростью надо мерить твои 30 напряжений?
тут же встречный вопрос, с какой скоростью надо мерить твои 30 напряжений?
Ага, а так же каков диапазон измеряемых напряжений и требуемая точность.
Когда мне понадобилось организовать 48 каналов АЦП на Меге, я использовал MCP3008.
Здравствуйте, ребята. Скорость требуется - раз в полсекунды. Диапазон измерений 10 - 18 вольт.
MCP3008. Глянул на него. Пишут, что у него всего 8 аналоговых линий. Или ни туда глядел?
MCP3008. Глянул на него. Пишут, что у него всего 8 аналоговых линий. Или ни туда глядел?
он подключаетеся по SPI, а значит их можно навешать несколько на одну и ту же линию. Вам хватит 4 шт, будет 4х8 = 32 входа
MCP3008. Глянул на него. Пишут, что у него всего 8 аналоговых линий. Или ни туда глядел?
он подключаетеся по SPI, а значит их можно навешать несколько на одну и ту же линию. Вам хватит 4 шт, будет 4х8 = 32 входа
Понял. Спасибо большое! Т.е. Для этого мне понадобица 4 таких АЦП и четыре SPI входа на ардуино? А что у меня получится в плане скорости? И еще, подскажите пожалуйста, если я захочу снимать силу тока кроме напряжения, мне понадобятся отдельные каналы?
подскажите пожалуйста, если я захочу снимать силу тока кроме напряжения, мне понадобятся отдельные каналы?
да, причем по два на канал. Впрочем, если у всех каналов общая земля - то один сигнал можно взять общий для всех. И лучше это измерять внешним АДС типа INA1015 INA219 и тд, у ардуины адс слабоват для такого
подскажите пожалуйста, если я захочу снимать силу тока кроме напряжения, мне понадобятся отдельные каналы?
да, причем по два на канал. Впрочем, если у всех каналов общая земля - то один сигнал можно взять общий для всех. И лучше это измерять внешним АДС типа INA1015 INA219 и тд, у ардуины адс слабоват для такого
А можете пож. нарисовать схематически, как это должно выглядеть, и какие микросхемы для реализации задачи мне стоит сразу заказать. Я так понимаю, понадобится плата arduino mega + INA1015 (32 шт) + MCP3008 (4 шт) Верно?
А что такое ina1015? Меня гугль забанил наверно. Ничего по этой строке не даёт, кроме ников геймеров.
arduino mega + INA1015 (32 шт) + MCP3008 (4 шт) Верно?
если взять ina219 , то в ней сразу и вольтметр и амперметр. Только присоединить 32 штуки разом у вас не выйдет
Вообще, для тех новичковых вопросов что вы задаете - вы слишком сложную задачу себе выбрали. Сделайте для начала вольтметр-амперметр хотя бы на один канал, а потом уже будете 30шт лепить
MCP3008. Глянул на него. Пишут, что у него всего 8 аналоговых линий. Или ни туда глядел?
А Вы всерьез надеетесь найти дивайс, у которого ровно 30 аналоговых линий?
Понял. Спасибо большое! Т.е. Для этого мне понадобица 4 таких АЦП и четыре SPI входа на ардуино? А что у меня получится в плане скорости? И еще, подскажите пожалуйста, если я захочу снимать силу тока кроме напряжения, мне понадобятся отдельные каналы?
Вам достаточно 3 корпусов: 8х3 (MCP) + 6 (Ардуино) = 30.
По скорости явно лучше, чем Ардуино: 200 кГц против 8 кГц.
АЦП измеряет только напряжение. А что Вы еще захотите и как это сделать - это уже совершенно отдельные вопросы.