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!
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
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.
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.