Forum: Analoge Elektronik und Schaltungstechnik Mit RS422 / 485 SPI Signale über 5 Meter übertragen


von hurrahurra (Gast)


Lesenswert?

Hi, prinzipiell müsste es doch möglich sein mit RS422 / 485 Wandlern wie 
zum Beispiel dem ISL3179EFBZ für das Übertragen von SPI Signalen über 
etwas größere Distanz (5 Meter) zu verwenden?

Gruß aus München

von Mine Fields (Gast)


Lesenswert?

Ja, das prinzipiell ist das machbar.

von Flanki (Gast)


Lesenswert?

Ja, aber die Flanken der verschiedenen SPI-Signale sollten genügend weit 
auseinanderliegen, weil RS485 Transceiver gerne die Flanken verschleifen 
und dadurch den genauen Zeitpunkt der Flanken auf der Zeitachse 
verschieben können.

von Purzel H. (hacky)


Lesenswert?

Was ? Man sollte natuerlich keine 250kbit Treiber waehlen und dann MBit 
uebertragen wollen. SPI ist flankengeriggert, da sollte eigentlich 
nichts schiefgehen. Im Zweifelsfall den schnelleren Treiber waehlen.

von iaoffline (Gast)


Lesenswert?

Das wird auch über 50m funktionieren, kommt nur auf das Kabel und die 
Taktrate an. Die Abschlusswiderstände nicht vergessen.

von Horst H. (Gast)


Lesenswert?

Beim senden/schreiben von Daten über SPI sind Verzögerungen über die 
Leitungen kein Problem, da Takt und Daten gleich verzögert werden. Beim 
Lesen kann es aber für den Mikrocontroller zu spät sein wenn die Daten 
zum Takt zu stark verzögert werden. Im Datenblatt sind die 
erforderlichen Zeiten aber spezifiziert.

von Flanki (Gast)


Lesenswert?

>Beim senden/schreiben von Daten über SPI sind Verzögerungen über die
>Leitungen kein Problem, da Takt und Daten gleich verzögert werden.

Aber eben nur, wenn die Transceiver schnell genug und die Toleranzen der 
Verzögerungszeiten vernachlässigbar klein sind.

von Mine Fields (Gast)


Lesenswert?

Das muss man bei SPI aber immer beachten.

von hurrahurra (Gast)


Lesenswert?

Der Wandler ISL3179EFBZ kann 40MBps, ich denke, dass das reichen sollte 
:-)

Im Datenblatt ist die Zeit "Driver Differential Output Delay" 
(Verzögerungszeit? ) mit unter 20ns spezifiziert, ich wollte zuerst 
eigentlich nur Daten senden, beim Empfangen sollte das doch auch keine 
Probleme geben?

Kleine Frage zur VCC, im Datenblatt steht zwar bei den absoluten maximum 
Angaben 7V, ich wollte das Teil zwar nur mit 5V betreiben, die Leute im 
Datenblatt haben aber scheinbar überall 3,3V verwendet. Sollte ich das 
dann besser auch so machen?

Als Abschlusswiderstand würde ich jetzt 110 Ohm nehmen, gute oder 
schlechte Wahl?

Gruß aus München

von iaoffline (Gast)


Lesenswert?

hurrahurra schrieb:
> Kleine Frage zur VCC, im Datenblatt steht zwar bei den absoluten maximum
> Angaben 7V, ich wollte das Teil zwar nur mit 5V betreiben, die Leute im
> Datenblatt haben aber scheinbar überall 3,3V verwendet. Sollte ich das
> dann besser auch so machen?

Nein

>
> Als Abschlusswiderstand würde ich jetzt 110 Ohm nehmen, gute oder
> schlechte Wahl?

Vom Prinzip her schließt du mit dem Wellenwiderstand des verwendeten 
Kabels ab. Bei Standard twisted pair Kabel ist das eben 110 Ohm. Bei 10m 
ist das aber alles eher unkritisch.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

hurrahurra schrieb:
> für das Übertragen von SPI Signalen über
> etwas größere Distanz (5 Meter) zu verwenden?
Flanki schrieb:
> Aber eben nur, wenn die Transceiver schnell genug und die Toleranzen
> der Verzögerungszeiten vernachlässigbar klein sind.
Warum, zur Hölle, kann eigentlich keiner Zahlen zu seinen Aussagen 
dazuschreiben? So ist das alles nur Geschwafel... :-o

Weil der SPI taktsynchron ist und (per Definition**) jeweils mit der 
eine Taktflanke die Daten geändert sowie mit der anderen Taktflanke 
übernommen werden, sind z.B. bei 10MHz SPI-Takt auch Unterschiede 
(zwischen MOSI und SCLK) von 20ns absolut kein Problem.

Ein deutliches Problem kann dagegen (wie erwähnt) die Laufzeit in 
Leserichtung vom Slave zum Master werden. Denn dort gibt der Master 
seinen Takt aus, dieser Takt muß ans andere Ende der Leitung, der Slave 
muß die "neuen" Daten auf die MOSI Leitung legen und dann müssen diese 
neuen Daten zurück zum Master und rechtzeitig (Setupzeit, tsu) vor der 
Übernahmeflanke da sein.
Und wie Dominik Friedrichs da im 
Beitrag "Re: Signallaufzeit in Cat 5e" nachgemessen hat, 
fallen für 7m Kabel ca. 35ns an. Das wären dann für 5m schon mal 25ns. 
Und Hin-Zurück sind damit 50ns. Bei den erwähnten 10MHz ist das aber 
schon die Zeit zwischen der Änderungs- und Überhameflanke. Fazit: bei 
dieser SPI-Taktfrequenz werden die Daten auf jeden Fall zu spät beim 
Master ankommen.

Also: Her mit Zahlen. Dann erst kann man sinnvolle Aussagen treffen.


**Ein ordinäres Schieberegister weiß nichts von dieser Definition, und 
deshalb wird es seine Daten mit der selben Taktflanke übernehmen und den 
Ausgang ändern. Aber so ist das Leben eben... ;-)

von Falk B. (falk)


Lesenswert?

@  Lothar Miller (lkmiller) Benutzerseite

>> Aber eben nur, wenn die Transceiver schnell genug und die Toleranzen
>> der Verzögerungszeiten vernachlässigbar klein sind.
>Warum, zur Hölle, kann eigentlich keiner Zahlen zu seinen Aussagen
>dazuschreiben? So ist das alles nur Geschwafel... :-o

Weil dann geschätze 80% des Forums-"inhalts" sich in Luft auflösen 
würden.

>fallen für 7m Kabel ca. 35ns an. Das wären dann für 5m schon mal 25ns.
>Und Hin-Zurück sind damit 50ns. Bei den erwähnten 10MHz ist das aber
>schon die Zeit zwischen der Änderungs- und Überhameflanke. Fazit: bei
>dieser SPI-Taktfrequenz werden die Daten auf jeden Fall zu spät beim
>Master ankommen.

SPI ist ja auch nie für 5m Kabellänge gemacht worden. Für sowas nimmt 
man eh asynchrone Sache ala RS232 oder ähnliches.

>Also: Her mit Zahlen. Dann erst kann man sinnvolle Aussagen treffen.

Oder kurz: Netiquette!

MfG
Falk

von Mine Fields (Gast)


Lesenswert?

Trotzdem gibt es Anwendungen mit 16 MBit und bis 100m Kabellänge. 
Natürlich dann nicht mehr ohne Laufzeitkompensation:

http://www.heidenhain.de/de_DE/grundlagen/endat-22/

von Dani (Gast)


Lesenswert?

TI wirft dazu auch noch einige Grundlagen und Zahlen in den Raum:
http://www.ti.com/lit/an/slyt441/slyt441.pdf

von Falk B. (falk)


Lesenswert?

@  Mine Fields (minefields)

>Trotzdem gibt es Anwendungen mit 16 MBit und bis 100m Kabellänge.
>Natürlich dann nicht mehr ohne Laufzeitkompensation:

>http://www.heidenhain.de/de_DE/grundlagen/endat-22/

Dieses endat ist die größte Bastellösung vor dem Herrn! Sollte hier mit 
eingetragen werden.

Beitrag "Gröbster Pfusch - beichtet eure Sünden!"

Hat wahrscheinlich ein unterdurchschnittlicher Mechatronikstudent in der 
Kaffeepause erfunden . . .

von hurrahurra (Gast)


Lesenswert?

Also ich hab nochmal nachgemessen.

Als Weg reichen mir etwa 2 Meter, was ja dann eine Laufzeit von 10ns 
darstellt.

Als Daten habe ich 1200 Bits beim Senden von meinem ATMega1284p an die 
Peripherie und villeicht 100 Bits beim Empfangen der Daten von meiner 
Peripherie, diese Werte sollen sich 500mal die Sekunde ändern können, 
also bleib ich doch noch weit unter 1Mhz ?

Damit wäre die Laufzeit doch noch einigermaßen in Ordnung?

von Mine Fields (Gast)


Lesenswert?

Falk Brunner schrieb:
> Hat wahrscheinlich ein unterdurchschnittlicher Mechatronikstudent in der
> Kaffeepause erfunden . . .

Na irgendwas muss er aber richtig gemacht haben, wenn diese Lösung von 
hunderten Elektroingenieuren akzeptiert wird ;-)

Ich habe ja nicht gesagt, dass es eine gute Lösung ist. Es zeigt aber, 
was technisch zuverlässig (industrieerprobt) machbar ist.

von Falk B. (falk)


Lesenswert?

@  hurrahurra (Gast)

>Als Daten habe ich 1200 Bits beim Senden von meinem ATMega1284p an die
>Peripherie und villeicht 100 Bits beim Empfangen der Daten von meiner
>Peripherie, diese Werte sollen sich 500mal die Sekunde ändern können,
>also bleib ich doch noch weit unter 1Mhz ?

Grundrechenarten?

1200 Bit * 500 Hz = 600.000 Hz bzw Bit/s.

>Damit wäre die Laufzeit doch noch einigermaßen in Ordnung?

Ja.

von iaoffline (Gast)


Lesenswert?

hurrahurra schrieb:
> Als Weg reichen mir etwa 2 Meter, was ja dann eine Laufzeit von 10ns
> darstellt.
>
> Als Daten habe ich 1200 Bits beim Senden von meinem ATMega1284p an die
> Peripherie und villeicht 100 Bits beim Empfangen der Daten von meiner
> Peripherie, diese Werte sollen sich 500mal die Sekunde ändern können,
> also bleib ich doch noch weit unter 1Mhz ?
>
> Damit wäre die Laufzeit doch noch einigermaßen in Ordnung?

Eine rein akademische Diskussion da die Laufzeit die kleinere Rolle 
spielt. Eine Leitung hat kapazitive und induktive Anteile . Sie muss bei 
Pegelwechsel komplett umgeladen werden und das dauert.

Aber auch das ist egal, mach deine Hardware und dreh die Geschwindigkeit 
so weit rauf wie es geht und nötig ist. Wenn es Probleme beim Empfang 
gibt dann muss halt der Master gewechselt werden. Wenn das alles nichts 
hilft dann machst du halt die klassische Variante mit RS422 in beide 
Richtungen. Bei Cat Kabel das 4 verdrillte Paare hat ist das eh die 
bessere Lösung und Sie ist bis 1200m spezifiziert.

von hurrahurra (Gast)


Lesenswert?

^^

stimmt beim SPI gibts ja kein solchen Overhead wie beim RS232 oder I2C.

Die Wandler ISL3179EFBZ sind ja für RS422 gemacht.


Ist es eigentlich klug, Operationsverstärker für das Verstärken von 
solchen Signalen zu verwenden, nachdem sie von einem Wandler ausgegeben 
wurden?

von Mine Fields (Gast)


Lesenswert?

hurrahurra schrieb:
> stimmt beim SPI gibts ja kein solchen Overhead wie beim RS232 oder I2C.

Trotzdem musst du deine Daten ja noch verarbeiten.

hurrahurra schrieb:
> Ist es eigentlich klug, Operationsverstärker für das Verstärken von
> solchen Signalen zu verwenden, nachdem sie von einem Wandler ausgegeben
> wurden?

Nein.

von Purzel H. (hacky)


Lesenswert?

Operationsverstaerker sind fuer analog signale.

von hurrahurra (Gast)


Lesenswert?

Ich muss mit dem Signal für den Takt 8 Schieberegister ansteuern, der 
ISL3179EFBZ schafft das nicht, soll ich einfache MOSFETs oder bipolar 
Transistoren verwenden um das Signal zu verstärken?

von Mine Fields (Gast)


Lesenswert?

hurrahurra schrieb:
> Ich muss mit dem Signal für den Takt 8 Schieberegister ansteuern, der
> ISL3179EFBZ schafft das nich

Wieso nicht?

hurrahurra schrieb:
> soll ich einfache MOSFETs oder bipolar
> Transistoren verwenden um das Signal zu verstärken?

Weder noch.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

hurrahurra schrieb:
> Als Daten habe ich 1200 Bits beim Senden von meinem ATMega1284p an die
> Peripherie und villeicht 100 Bits beim Empfangen der Daten von meiner
> Peripherie,
Lustig, dass beim SPI Senden und Empfangen gleichzeitig geschehen (wenn 
mans richtig anstellt)...

Ansonsten: Was für Daten? Wohin gehen die? Müssen alle Daten 500mal pro 
Sekunde geändert werden, oder reicht ein Teil aus?
Kurz: Was willst du machen?

hurrahurra schrieb:
> Ich muss mit dem Signal für den Takt 8 Schieberegister ansteuern, der
> ISL3179EFBZ schafft das nicht, soll ich einfache MOSFETs oder bipolar
> Transistoren verwenden um das Signal zu verstärken?
Du steuerst damit nur das 1. Schieberegister an, und der Ausgang des 1. 
steuert dann das 2. an, usw...
Nur beim Takt hast du eine Multidrop Architektur.

von Flanki (Gast)


Lesenswert?

>Warum, zur Hölle, kann eigentlich keiner Zahlen zu seinen Aussagen
>dazuschreiben? So ist das alles nur Geschwafel... :-o

Es ist die Aufgabe des TE sich um die Zahlen zu kümmern. Ich habe 
lediglich auf eine mögliche Falle aufmerksam machen wollen.

von hurrahurra (Gast)


Lesenswert?

war doof ausgedrückt, sorry.

Ich muss die ganzen Sachen unter anderem das Slave Select ja auch noch 
übertragen und da gehen einmal 8 Stück auf 8 Schieberegister drauf, nach 
meinen Erfahrungen packt der ISL3179EFBZ das nicht, deshalb muss ich das 
Signal irgendwie verstärken.

von Mine Fields (Gast)


Lesenswert?

hurrahurra schrieb:
> da gehen einmal 8 Stück auf 8 Schieberegister drauf, nach
> meinen Erfahrungen packt der ISL3179EFBZ das nicht

Erst einmal geht das differentielle Signal ja nicht direkt auf die 
Schieberegister, sondern auf einen Receiver. Und dann kommt es stark auf 
deine Topologie an, und die ist wahrscheinlich sehr sehr unglücklich 
gewählt, wenn du keine 8 Teilnehmer zustande kriegst.

von iaoffline (Gast)


Lesenswert?

Flanki schrieb:
> Es ist die Aufgabe des TE sich um die Zahlen zu kümmern.

Wenn er das könnte würde er solch Fragen nicht stellen.

hurrahurra schrieb:
> Ich muss mit dem Signal für den Takt 8 Schieberegister ansteuern, der
> ISL3179EFBZ schafft das nicht,

Das ist ein Transceiver, was bedeutet das er aus dem differentiellen 
Signal der "Fernverbindung" wieder ein einfaches mit high low macht. Das 
Dingens hat so clevere Sachen wie Hysterese und Störunterdrückung drin, 
braucht dich aber alles nicht kümmern.

Es hindert dich auch keiner 8 Stück davon parallel zu betrieben (bzw. 
16. über SPI). Das ist aber overkill da das Ding sicher 8 Eingänge 
gleichzeitig treiben kann.

Einfacher wäre vielleicht zu beschreiben was für eine Funktion die 
Schaltung haben soll.

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.