Welche serielle Kommunikationsschnittstelle eignet sich am besten für die Datenprotokollierung, wenn der nächste Sensor und die Haupt-MCU (mindestens) 1 Meter voneinander entfernt sind?

Ich möchte ein "Sensor-Array" einrichten, an dem 4 Sensoren befestigt sind. Von jedem Sensor wird erwartet, dass er Daten mit einer Rate von bis zu 8 Hz sendet. Die Daten würden an eine MCU gesendet, die etwa 1-2 Meter entfernt ist. Diese MCU speichert die Daten auf einer SD-Karte.

Um das etwas besser zu veranschaulichen:

grundlegende Layout-Illustration

Ich habe darüber nachgedacht, I2C für die Kommunikation zwischen der MCU und den Sensoren auf dem Sensorarray zu verwenden, aber ich bin mir nicht sicher, wie gut I2C in dieser Entfernung funktionieren würde und ob es überhaupt schnell genug wäre.

SPI scheint in Bezug auf die Entfernung ein großes Nein zu sein.

Andere Schnittstellen, die möglicherweise funktionieren könnten, sind CAN und RS485, obwohl ich beide noch nie zuvor verwendet habe. Ich habe mich eingehender mit der Verwendung von CAN beschäftigt, und obwohl es so aussieht, als könnte es gut funktionieren, scheint es auch ein bisschen "übertrieben" für das zu sein, was ich brauche.

Welche serielle Kommunikationsschnittstelle könnte also in einem solchen Szenario am besten funktionieren?

Jede Hilfe ist willkommen.

8Hz ist extrem langsam. Sie können Tauben dafür verwenden....
Woraus besteht Ihr Sensorarray? Wenn es sich um I2C oder SPI handelt, können Sie das genauso gut verwenden. Oder je nach Bedarf und Umgebung einfach die Analogwerte direkt von den Sensoren auslesen...
4-20mA Stromschleife? Hängt wirklich davon ab, was die Sensoren sind.
Für nur 4 Sensoren und 2 m Entfernung würde ich eine direkte analoge Verbindung und keinen Kommunikationsbus in Betracht ziehen, wenn die Sensoren und die Steuerung gut miteinander kommunizieren können. Ein DE9-Anschluss unterstützt eine gemeinsame Masse (oder Abschirmung) und zwei Signale für jeden Sensor. Ein 5-poliger DIN-Stecker unterstützt jeweils ein gemeinsames und ein Signal. Ihre elektrische Umgebung erfordert möglicherweise ausgefeiltere Optionen, aber eine direkte Verbindung wäre einfach.

Antworten (2)

Sie haben nicht gesagt, wie viele Daten jeder Sensor produziert und wie die Umgebung ist (neben einem großen Motor?). Es kann sich herausstellen, dass I2C einfach funktioniert, wenn Sie nicht viel EMI von außen haben.

Es gibt Schnittstellenstandards für kurze (günstige und einfache) Entfernungen und längere Entfernungen (teurer und komplexer). Die klassischen Langstreckenstandards sind sicherlich RS-485 und CAN.

Wenn Sie in Ihrem Szenario CAN oder RS-485 nicht verwenden möchten, können Sie möglicherweise SPI mit RS-422-Treibern verwenden, sodass jede Leitung (SCK, MOSI, CS) als Differenzpaar übertragen wird. Es wird so robust wie RS-485 sein, keine weitere MCU auf der Sensorplatine benötigen, aber mehr Signalkabel benötigen.

Wenn Sie sich eine kleine, billige Basis-MCU auf der Sensorplatine leisten können, können Sie RS-485 problemlos verwenden.

Ich würde für RS-232 stimmen, da es einfacher zu debuggen ist. Oder sogar TTL-Pegel funktionieren, wenn sie richtig verdrahtet sind. 1m ist keine lange Distanz.

4 Sensoren bei 8 Hz sind etwa 1 kbit/s, wenn man von 32-Bit-Messwerten ausgeht. Ein einfacher 5-V-UART funktioniert bei solchen Baudraten problemlos über mehrere Meter.

SPI kann auch direkt verwendet werden, wenn Ihre Sensoren beliebig langsame Datenraten zulassen. Verlangsamen Sie Ihre Signale (mit einem RC-Filter) am Sender und regenerieren Sie schnelle Flanken mit Schmitt-Triggern am Empfänger, wenn Show-Flanken ein Problem darstellen.

Meinst du einen UART bei TTL/LVTTL oder einen UART bei RS232?
Ja. Bei TTL oder LVTTL oder RS232.