Какой интерфейс последовательной связи лучше всего подходит для регистрации данных, когда ближайший датчик и главный MCU находятся на расстоянии (не менее) 1 метра друг от друга?

Я хотел бы настроить «массив датчиков», к которому подключены 4 датчика. Ожидается, что каждый датчик будет отправлять данные с частотой до 8 Гц. Данные будут отправлены на MCU, который находится на расстоянии около 1-2 метров. Этот MCU будет хранить данные на SD-карте.

Чтобы проиллюстрировать это немного лучше:

базовая иллюстрация макета

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

SPI кажется большим с точки зрения расстояния.

Другими интерфейсами, которые потенциально могут работать, являются CAN и RS485, хотя я никогда раньше не использовал ни один из них. Я углубился в использование CAN, и хотя кажется, что он может работать хорошо, также кажется, что он может быть немного «излишним» для того, что мне нужно.

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

Любая помощь приветствуется.

8 Гц очень медленно. Для этого можно использовать голубей....
Из чего состоит ваша сенсорная матрица? Если они I2C или SPI, они могут просто использовать это. Или, в зависимости от ваших требований и среды, просто считывайте аналоговые значения прямо с датчиков...
Токовая петля 4-20 мА? На самом деле зависит от того, какие датчики.
Для всего 4 датчиков и расстояния 2 м я бы рассмотрел прямое аналоговое соединение и отсутствие коммуникационной шины, если датчики и контроллер могут хорошо общаться друг с другом. Разъем DE9 поддерживает общее заземление (или экран) и два сигнала для каждого датчика. 5-контактный разъем DIN будет поддерживать общий и по одному сигналу каждый. Ваша электрическая среда может диктовать более сложные варианты, но прямое подключение будет простым.

Ответы (2)

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

Существуют стандарты интерфейса для коротких (дешевых и простых) расстояний и для более длинных расстояний (более дорогих и сложных). Классическими стандартами дальней связи, безусловно, являются RS-485 и CAN.

В вашем сценарии, если вы не хотите использовать CAN или RS-485, вы могли бы использовать, возможно, SPI с драйверами RS-422, чтобы каждая линия (SCK, MOSI, CS) передавалась как дифференциальная пара. Он будет таким же надежным, как RS-485, не потребует другого MCU на плате датчиков, но потребует больше сигнальных проводов.

Если вы можете позволить себе небольшой, дешевый, базовый микроконтроллер на сенсорной плате, то вы можете легко использовать RS-485.

Я бы проголосовал за RS-232, так как его легче отлаживать. Или даже уровни TTL будут работать при правильном подключении. 1м это не большое расстояние.

4 датчика на частоте 8 Гц — это примерно 1 кбит/с при 32-битных показаниях. Простой 5-вольтовый UART без проблем будет работать на нескольких метрах при такой скорости передачи данных.

SPI также можно использовать напрямую, если ваши датчики допускают произвольно низкую скорость передачи данных. Замедлите свои сигналы (с помощью RC-фильтра) на передатчике и восстановите быстрые фронты с помощью триггеров Шмитта на приемнике, если фронты показа представляют проблему.

Вы имеете в виду UART на TTL / LVTTL или UART на RS232?
Да. На TTL или LVTTL или RS232.