www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik SPI über 3m mit mehreren Slaves; Frage zur Terminierung


Autor: Olaf Oberbart (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich bräuchte etwas Hilfe bei der Terminierung des SPI. Folgende 
Situation liegt vor:

Ich will zwei MAX6675 über ca. 3m langen SPI mit einem ATmega16 
auslesen. Auf kurze Distanz ist das kein Problem und funktioniert 
soweit. Aber jetzt muss ich das ganze über 3m Entfernung hinbekommen. 
Der SPI wird mit dem Prescaler 128 bei 8MHz Clock = 62,5kHz betrieben. 
Der MAX6675 braucht nur sehr wenig Strom und kann nur ausgelesen werden.
Ich habe mir schon den Artikel über Terminierung durchgelesen und bin 
jetzt etwas ratlos, denn ich verwende ein Kabel, mit 6 Adern und einem 
Schirm, von dem ich den Wellenwiderstand nicht weiss.

Welche Terminierung kann ich verwenden und wie berechne ich diese am 
besten?

Wie sollte ich die Verbindung von den Master zu den Slaves wählen?

Möglichkeit 1) Durchschleifen:

Master-------*-Slave1
             |
             *---------------Slave2

Möglichkeit 2) Sternförmig:

Master*---------Slave1
      |
      *---------Slave2

Wie sieht die Terminierung bei beiden Möglichkeiten aus?

Danke im Vorraus.

Autor: Thomas Müller (thomas1123) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
spi ist für solche bossen nicht gemacht worden:
ich würde dir empfehlen das mit rs232 zu machen und vor jeden spi slave 
dann noch irgent nen kleinen controller der dann dem max eintrichtert 
was er zu machen hat.

Autor: Olaf Oberbart (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich weiss dass der SPI nicht für solche Distanzen gemacht wurde, aber es 
geht mit der entsprechenden Terminierung. Zumindest wenn man dem Forum 
glauben kann. Ich habe hier schon was von 14m gelesen... allerdings 
wurde dort immer nur ein Slave angesteuert, wie die Beschaltung bei 
mehreren Slaves aussieht weiss ich nicht, deshalb ja auch der neue 
Thread.

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Terminierung brauchst du wenn Reflektionen auftreten
können. Bei der unglaublichen Treiberleistung des MAX
von 1.6mA wird es sich wohl eher um Übersprechen
zwischen den Adern handeln. Nimm geschirmte
Leitungen für jede einzelne Ader. Oder auf beiden Seiten einen
niederohmigen Treiber mit ordentlich Bumms dahinter.

Autor: Andreas K. (a-k)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Trivial: Variante 2 mit Software-SPI und getrennten Signalen für beide 
MAXe. Was die Terminierung angeht ist natürlich ein Oszi von Vorteil. 
Aber probier mal 100 Ohm, vielleicht klappt es damit.

Wobei, wie holger anführt, die Datenleitungen wohl schon selber 
hochohmig genug sind. Aber wenn ein kräftiger 5V-AVR in die 
CLK/CS-Leitungen bläst, dann dort lieber mit Serienterminierung.

Autor: Olaf Oberbart (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also einen Software SPI wollte ich jetzt nicht extra aufbauen.
Dem Vorschlag mit den einzeln abgeschirmten Leitungen werde ich mal 
nachgehen...
Oszi habe ich jetzt leider nicht. :-(

Autor: Andreas K. (a-k)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Software-SPI ist extrem einfach. Erst recht, wenn man nur eine Richtung 
hat.

Autor: Olaf Oberbart (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hast du vielleicht ein Beispielcode in C zum Software SPI?

Aber wenn ich das Problem schon mit einem besseren Kabel hinbekommen 
würde, wäre das Softwar SPI hinfällig. Selbst mit Software SPI würde das 
Problem mit dem Übersprechen oder der Refelexion bestehen bleiben, dann 
wäre ich fast wieder am Anfang.

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
...oder mit der taktfrequenz runtergehen, wenn geschwindigkeit nicht so 
wichtig ist.

Autor: MORSEN (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also wenn die CPU schon SPI per Hardware kann und wir dann wieder alles 
per Bitbang rauswackeln, warum dann nicht gleich Morsen per Hand 
(schafft auch gleich Arbeitsplätze) ? Oder noch besser wären 
Rauchzeichen ...

Autor: Sven (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Warum nicht ein Thermoelement mit 5 Meter Länge kaufen ?
(oder entsprechend gewünschte Länge)

Dann ergibt sich das Problem mit SPI doch gar nicht ?

Gruß Sven

Autor: Olaf Oberbart (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Sven,

so einfach ist das nicht, denn die Schaltung also der MAX6675 (die 
Vergleichsstelle) würde dann nicht im selben Außentemperaturbereich 
liegen wie das Thermoelement! Also wird die Messung verfälscht, da der 
MAX bei der Messung der Thermospannung gleich die Umgebungstmperatur 
bestimmt und diese dann verrechnet.
http://de.wikipedia.org/wiki/Thermoelement

@Peter
Mit der Taktfrequenz kann ich ohne die CPU Clock zu verringern, nicht 
mehr runter gehen. Beim Prescaler ist 128 schon das Höchste.

@Morsen
Ich habe nicht vor einen Softwar SPI zu realisieren, wenn es schon 
diesen in Hardware gibt.

Autor: Kai (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich sehe bei 3 Metern und dieser niedrigen Frequenz keine Probleme auch 
ohne Terminierung. 100 Ohm als Serienterminierung schaden sichen nicht.

Autor: Andreas K. (a-k)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bei der Datenleitung lässt sich die Länge durch Taktfrequenz 
kompensieren. Beim Taktsignal jedoch nicht, nämlich dann nicht wenn eine 
Reflektion aus einem Taktimpuls deren zwei macht. Wie in 
Wellenwiderstand dargelegt, ist dafür nicht die Taktfrequenz 
entscheidend, sondern die Signalflanke.

Ein Serienwiderstand als Abschluss klappt prima, wenn der Empfänger des 
Signals am anderen Ende der Leitung sitzt. Wenn er in der Mitte sitzt 
klappt das jedoch nicht.

Im diesem Fall könnte man also die Stern-Variante mit Serienterminierung 
des Taktsignals ausprobieren, wobei dann eher 2 100 Ohm Widerstände 
angesagt sind, einer pro Strang.

Autor: Olaf Oberbart (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Andreas

Also sollte ich sternförmig vorziehen und die Takt- und Datenleitung 
jeweils bei beiden Slaves am Ende mit 100 Ohm Widerständen versehen.
                            ___
Master Clk--*--------------|_100_|-Slave1 Clk
Master Data-|-*------------|_100_|-Slave1 Data
            | |             ___
            | *------------|_100_|-Slave2 Clk
            *--------------|_100_|-Slave2 Data

Autor: Andreas K. (a-k)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Master Clk--*-|_100_|--------------------------Slave1 Clk
            |
            *-|_100_|--------------------------Slave2 Clk

Master Data-*----------------------------------Slave1 Data
            |
            *----------------------------------Slave2 Data

Master CS1----|_100_|--------------------------Slave1 CS
Master CS2----|_100_|--------------------------Slave2 CS

Autor: Olaf Oberbart (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Andreas

Ich habe deine Variante mal aufgebaut, allerdings mit 110 Ohm (was 
anderes war nicht greifbar), aber irgendiwe funktioniert es trotzdem 
nicht. :-(

Liegt es an den 110 Ohm?

Autor: TheMason (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@olaf

je länger die leitung desto geringer die geschwindigkeit mit der du spi 
übertragen kannst.
habe mir jetzt nicht den gesamten beitrag angeschaut, aber mit welcher 
geschw. arbeitest du ?

ggf runter mit der geschwindigkeit.
in welcher umgebung arbeitest du ? hast du viele störquellen ?
abschirmung wurde ja schon angesprochen.
was vllt. auch noch bei der terminierung hilft sind kondensatoren die 
evtl. spannungspitzen glätten die dein signal verfälschen können.
die größe des kondensators hängt dann an der spi geschwindigkeit.

Autor: Olaf Oberbart (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
SPI = Clk 62,5kHz Ich kann nicht weiter runter gehen (siehe erster 
Post).

Störquellen sind jetzt so gut wie keine Vorhanden, vielleicht der CRT 
Monitor und eine Funkmaus, das war's.
Kabel mit einzeln geschirmten Leitungen ist jetzt auch nicht so leicht 
aufzutreiben...

Autor: Hmm... (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ein kleine Kapazität wäre evenuell noch einen Versuch Wert, falls die 
Signalflanken (Oszi gucken) recht steil sind.

Einige Bustreiber limitieren bewußt die Anstiegszeit (Slewrate), um das
EMV-Verhalten günstiger zu gestalten.

Autor: TheMason (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
versuchs mal mit nem kondensator von 1-10nf auf den leitungen (clock und 
daten) gegen masse.
ansonsten dürfte nur noch ein abgeschirmtes kabel helfen, oder aber ein 
höherer pegel.
was du versuchen kannst ist mit nem max232 die clock und datenleitung zu 
übertragen (durch die höhere spannung dürften störeinflüsse minimiert 
werden).
aber 3m sind auch nicht die welt bei 5v und 62.5khz. eigentlich dürfte 
(sollte) es eigentlich keine größeren probleme geben.

Autor: Olaf Oberbart (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
So ein Mist, ich habe den MAX jetzt wieder direkt ohne 3m Leitung 
angeschlossen, er antwortet nicht mehr! Hab ich ihn durch das Probieren 
vielleicht zerstört???

Autor: Olaf Oberbart (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Entwarnung, der MAX läuft wieder. Allerdings macht mir das Ergebnis noch 
sorgen, ich muss erstmal nachvollziehen ob die Bits so stimmen können.

Was bedeutet die Aussage im Datenblatt über das Bit D0 = Threestate, 
welchen Zustand nimmt das Bit wann an?

Autor: Olaf Oberbart (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hm, so wie es aussieht, ist der MAX kaputt, die Werte haben keinen Bezug 
zur Realität. :-((

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.