Forum: Mikrocontroller und Digitale Elektronik SPI/I2C-Bus in störanfälliger Umgebung


von Bastler (Gast)


Lesenswert?

Hallo,

Ich plane einen SPI oder I2C Bus über ein bis zu 50cm langes Kabel zu 
schicken. An dem Bus selbst sind insgesamt 4-5 AS5048 Encoder von AMS 
angeschlossen. Jedoch liegen die Sensoren auseinander, so dass von der 
Hauptplatine 4-5 einzelne Kabel zu den Sensoren führen werden.

Da die Encoder an BLDC Motoren angebunden sind, liegt neben jeder 
Busleitung ebenfalls eine BLDC Stromzufuhr.
Die BLDCs laufen mit bis zu 16 Volt, 1A pro Motor bei einer PWM Frequenz 
von etwa 20-23KHz.

Ich habe leider keinerlei Erfahrung darin, in wie weit die Motoren den 
Bus beeinträchtigen werden.
Ebenfalls bin ich mir bei der Wahl des Buses unschlüssig, beide 
Bus-Systeme haben ihre Vor-und Nachteile, ich kann diese jedoch nicht 
abwägen.
AMS bietet den AS5048 in zwei Varianten mit SPI oder I2C an.

Ich wäre dankbar für Erfahrungen, ob eine sichere Funktionalität 
gewährleistet wäre und wie am besten eine geeignete Terminierung 
aussehen würde.
Oder ob eben doch Treiber genutzt werden müssten (auf den Encoder 
Platinen ist nicht viel Platz für Elektronik).

Vielen Dank!

von Martin H. (disjunction)


Lesenswert?

Im Zweifelsfall überträgst Du die SPI Daten über eine Kombination aus 
74LS31 und LTC486 oder beliebigen RS485 Treiber. Die kann man an den 
Enden mit 120 Ohm abschließen. Das Enable des jeweiligen LTC486 steuerst 
du mit der CS Leitung.

: Bearbeitet durch User
von Bastler (Gast)


Lesenswert?

Hallo,

Vielen Dank erstmal!
Was würde eigentlich gegen den Einsatz von LVDS Treibern sprechen?

SN65LVDS2DBVR bzw. dem SN65LVDS1DBVR ?

Dann würde ich einfach 3 von diesen Treibern verwenden, es sei denn auch 
die
ChipSelect Leitung sollte einen bekommen.

Ich habe leider im Bereich von Bussen wenig Erfahrung, zumindest wenn 
dieser die Platine verlassen muss und kein Raum für einen CAN-Bus ist.

von Max G. (l0wside) Benutzerseite


Lesenswert?

I2C wird passiv auf High gezogen, SPI aktiv getrieben. Ich würde klar 
für SPI plädieren. Einen 5V-SPI bringt so schnell nichts aus dem Tritt, 
schon gar nicht mit einigermaßen kräftigen Treibern.

Dein Feindbild sind am ehesten Spikes, die der Motor verursacht und die 
dann z.B. als zusätzlicher Puls auf SCLK gedeutet werden könnten.

Mach den Bus schön langsam, spendiere in beide Richtungen 
Längswiderstände vor den Eingängen, du kannst auch Ferritperlen nehmen. 
Kondensatoren nach Masse ebenfalls vorsehen, du musst sie ja nicht 
bestücken.

Führe die Leitungen gut geschirmt, immer abwechselnd in der Leitung GND 
- SCK - GND - MISO - GND - MOSI - GND. Passe auf, dass die 
Leiterschleifen möglichst klein bleiben, d.h. die Leitungen immer schön 
nah beieinander lassen.

Führe die SPI möglichst weit weg von der Versorgung des Motors. 
Verdrille die Motorversorgung, halte auch die die Leiterschleife 
möglichst klein.


Erst wenn das alles nicht fliegt, kannst du über LVDS oder Ähnliches 
nachdenken. LVDS = Low Voltage Differential Signalling. Das ist auf 
minimale Abstrahlung ausgelegt, aber nicht auf optimales 
Einstrahlverhalten.

Max

von Martin H. (disjunction)


Lesenswert?

Ich kann ich  Max G nur anschließen, wenn du zu wenig Platz für die 
Treiber hast. Du kannst statt der Kondensatoren auch auch mit 120 Ohm 
gegen Masse die Leitungen abschließen. (Wie gesagt wenn die 
Treiberfähigkeit reicht).

Evtl. hilft auch eine Plausibilitätsprüfung der empfangenen Werte.

Ich habe schon eine ähnliche Anwendung mit TTL Encodern gemacht (der 
verzeiht keine Bitfehler) und die Kondensatoren wie bei Max G haben gut 
geholfen gegen die Störungen in dieser Anwendung.

Die BLDC neigen meiner Ansicht nach auch nicht all zu sehr zum stören, 
da sie ohne die Bürsten keine lückenden Ströme haben.

Also Motorleitungen Schirmen und mit dem Motorgehäuse verbinden.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.