Я хотел бы настроить «массив датчиков», к которому подключены 4 датчика. Ожидается, что каждый датчик будет отправлять данные с частотой до 8 Гц. Данные будут отправлены на MCU, который находится на расстоянии около 1-2 метров. Этот MCU будет хранить данные на SD-карте.
Чтобы проиллюстрировать это немного лучше:
Я думал об использовании I2C для связи между MCU и датчиками на массиве датчиков, но я не уверен, насколько хорошо I2C будет работать на таком расстоянии и будет ли он вообще достаточно быстрым.
SPI кажется большим с точки зрения расстояния.
Другими интерфейсами, которые потенциально могут работать, являются CAN и RS485, хотя я никогда раньше не использовал ни один из них. Я углубился в использование CAN, и хотя кажется, что он может работать хорошо, также кажется, что он может быть немного «излишним» для того, что мне нужно.
Итак, какой интерфейс последовательной связи мог бы работать лучше всего в таком сценарии?
Любая помощь приветствуется.
Вы не сказали, сколько данных выдает каждый датчик и какова окружающая среда (рядом с большим мотором?). Может оказаться, что I2C просто будет работать, если у вас не так много EMI извне.
Существуют стандарты интерфейса для коротких (дешевых и простых) расстояний и для более длинных расстояний (более дорогих и сложных). Классическими стандартами дальней связи, безусловно, являются RS-485 и CAN.
В вашем сценарии, если вы не хотите использовать CAN или RS-485, вы могли бы использовать, возможно, SPI с драйверами RS-422, чтобы каждая линия (SCK, MOSI, CS) передавалась как дифференциальная пара. Он будет таким же надежным, как RS-485, не потребует другого MCU на плате датчиков, но потребует больше сигнальных проводов.
Если вы можете позволить себе небольшой, дешевый, базовый микроконтроллер на сенсорной плате, то вы можете легко использовать RS-485.
4 датчика на частоте 8 Гц — это примерно 1 кбит/с при 32-битных показаниях. Простой 5-вольтовый UART без проблем будет работать на нескольких метрах при такой скорости передачи данных.
SPI также можно использовать напрямую, если ваши датчики допускают произвольно низкую скорость передачи данных. Замедлите свои сигналы (с помощью RC-фильтра) на передатчике и восстановите быстрые фронты с помощью триггеров Шмитта на приемнике, если фронты показа представляют проблему.
Евгений Ш.
Уэсли Ли
τεκ
KalleMP