Стек Мега Щит

Мне нужно поддерживать 18 кнопок и 66 ИК-датчиков на моей Arduino Mega (модель железной дороги). У меня есть Mega Sensor Shield, но контактов для всех датчиков не хватит. Могу ли я получить второй сенсорный щит и как-нибудь вставить его?

https://www.aliexpress.com/item/1005004554959620 .html?spm=a2g0o.order_list.order_list_main.31.1cda18022wJnOM

, 👍3

Обсуждение

Можете ли вы дать ссылку на рассматриваемый щит, пожалуйста? Почти наверняка их больше одного., @Nick Gammon

https://www.aliexpress.com/item/1005004554959620.html?spm=a2g0o.order_list.order_list_main.31.1cda18022wJnOM, @PaulN

Нет, Ник говорит о схеме @PaulN. Хоть какие-то характеристики. Честно говоря, если бы я шел по этому маршруту, большинство моделей железных дорог, которые я видел, были бы размером с комнату. Примерно более 10 футов от конца до конца. При таких трассах у вас, скорее всего, возникнут проблемы с устранением шума от более длинных проводов, идущих к датчику и от него. Я бы использовал несколько Arduino с более короткими пробегами. И выбирайте протоколы связи, более устойчивые к шуму, чтобы минимизировать любые проблемы., @st2000

Если я вижу это прямо на AliExpress, весь экран по сути состоит только из соединения отдельных контактов вместе с питанием, чтобы сформировать группы пар (контакт, VCC, GND) для каждого контакта. Никакой логики, никакой электроники, ничего, только разъемы. (И сброс и светодиод), @gilhad

Привет, st2000, извини, мне показалось, что Том спрашивает, какой щит я использую. Для полной прозрачности у меня уже есть Mega, настроенная с платой, и у меня есть 9 плат AdaFruit PWM Servo, которые управляют 23 сервоприводами стрелочных переводов, 106 светодиодами для мнемопанели, указывающими маршруты стрелочных переводов и занятость блоков. Кнопки мнемопанели находятся в сенсорном щите. Хотя я могу подключить больше сервоплат, контакты являются только выходными, а не входными, например, я не могу прочитать на них ИК-датчик. Поэтому они мне нужны на щите. Но у меня недостаточно контактов на оригинальном щите, чтобы добавить 66 ИК-датчиков., @PaulN


2 ответа


Лучший ответ:

2

Возможно, я неправильно интерпретирую ваш вопрос, но кажется, что вы спрашиваете, можете ли вы каким-то образом получить больше входных контактов для вашего датчика (вход/выход общего назначения), с которыми ваш сенсорный щит в этом не поможет. Если вы хотите получить больше входных данных для своих датчиков, вам придется использовать сдвиговые регистры.

Ссылка для понимания того, как добавить больше цифровых контактов GPIO

,

Спасибо - да, это звучит правильно. Я возьму немного. Предполагая, что у меня есть несколько запасных портов GPIO на моем щите, я могу поместить их в несколько сдвиговых регистров. Если каждый регистр поддерживает 8 адресов, я могу разместить 8 микросхем на макетной плате., @PaulN


1

Для модели железной дороги это может сработать не так хорошо, как вы ожидаете. Отправка значений 66 датчиков и 18 кнопок по кабелю большой длины, как и следовало ожидать для модели железной дороги, может вызвать шум, который приведет к ложным показаниям. Шум в длинных соседних кабелях может исходить от одного кабеля, создающего напряжение в соседнем, или просто от самих железнодорожных операций.

Возможно, лучше использовать что-то вроде RS485, который является сбалансированным протоколом. То есть из двух проводов передачи данных, соединяющих узлы, один является положительным, а другой отрицательным одновременно, чтобы сигнал считался подлинным. Шум будет иметь тенденцию влиять на кабели в одном и том же направлении (например, на оба положительных) и, таким образом, будет отброшен.

Как описано в статье Википедии, RS485 используется в самолетах для обеспечения надежности. Схема подключения минимальна: два провода для передачи данных и провод заземления. Вам также потребуется питание 5 В на узлах.

Я бы предложил здесь серию узлов, разбросанных по схеме вашей железной дороги. Каждый узел может представлять собой недорогой процессор Atmeg328P (около 3 долларов на eBay) с парой вспомогательных резисторов и конденсаторов. Вы бы использовали 3 контакта для RS485 (передача, прием и включение), что оставило бы 17 входов для ваших датчиков и переключателей на каждый узел. Таким образом, около 5 узлов.

Кабели датчиков, идущие к каждому узлу, должны быть как можно короче, чтобы уменьшить шум. Возможно, используйте экранированный кабель.

Я написал неблокирующую библиотеку RS485, доступную на Github.

Есть некоторые пояснения по использованию на моем веб-сайте, большинство из которых также на странице Github.

По сути, вы должны дать каждому узлу адрес (хранящийся в EEPROM), а затем поочередно запросить у каждого узла значения на его датчиках или переключателях. Узел ответит, а затем мастер сможет перейти к следующему.


Я понимаю, что это не прямой ответ на вопрос о Mega Shield, но я пытаюсь ответить на основную проблему: как надежно подключить 84 датчика и переключаться на один Arduino.

,

Удивительный Ник, спасибо за подробный отзыв. Я слышал о RS485 и теперь буду изучать его подробнее. Цените вашу помощь., @PaulN