Forum: Mikrocontroller und Digitale Elektronik AD7177 SPI Kommunikation durch Schleifringe


You were forwarded to this site from EmbDev.net. Back to EmbDev.net
von Tycho B. (asellus)


Angehängte Dateien:

Lesenswert?

Hallo Forum,

es geht um AD7177 ADC und SPI-Kommunikation durch Schleifringe.
Ich habe einen Atmega 1284, der mittels Flachbandkabel mit einer Platine 
verbunden ist, auf der ein 7177 sitzt. Das Flachbandkabel kann getrennt 
(DSUB-15) und beide Platinen dann an einem Rotationstisch betrieben 
werden. Der uC-Teil ist stationär, der 7177 dreht sich.

Wenn ich die Platinen direkt miteinander verbinde, dann funktioniert die 
Kommunikation ohne Probleme. Wenn Schleifringe dazwischen sind, dann 
funktioniert es nicht, obwohl das Signal (gemessen am ADC, ohne Drehung) 
eigentlich super aussieht. Genauer gesagt - manchmal funktioniert es. 
Nach einem Reset kriege ich 0-10 mal die Konversion ausgelesen, danach 
nur Nullen oder anderen Quatch.

Ich habe schon ins AD-Forum geschrieben, aber ohne Erfolg.
Hier der Link, da kann man sich weitere Bilder anschauen:
https://ez.analog.com/data_converters/precision_adcs/f/q-a/542349/ad7177-spi-communication-through-sliprings

Bilder:
Gelb-SCLK, Rot-MOSI, Blau-MISO

Direkt1: Direkte Anbindung, Schreiben eines Registers

Direkt2: Direkte Anbindung, Lesen dieses Registers

Schleifringe1: Anbindung über Schleifringe, Schreiben eines Registers

Schleifringe2: Anbindung über Schleifringe, Lesen dieses Registers

Bis auf die etwas verschliffenen Flanken sehen die Signale eigentlich 
super aus. Kein Ringing, sehr wenig crosstalk. Der ADC empfängt auch die 
Befehle, ich sehe es indirekt wenn ich die SamplePerSecond in einem 
Register ändere. Dann ändert sich auch die Frequenz am DRDY-Pin. Aber 
Auslesen klappt nicht.
Ich verstehe es nicht.

von Tycho B. (asellus)


Angehängte Dateien:

Lesenswert?

Nachtrag:
ich habe die Bilder 1 und 3 übereinander/transparent gelegt um 
Timing-Probleme auszuschließen. Bis auf kleine Glättung der Kanten sieht 
es identisch aus.

von Sebastian S. (amateur)


Lesenswert?

Eigentlich sieht die Hauptstraße ganz gut aus, aber hast Du Dir mal die 
Nebenstraßen angeschaut? Sprich die Spannungsversorgung. Üblicherweise 
wird die auch "geschleift".
Hast Du mal versucht die Geschwindigkeit zu reduzieren?

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


Lesenswert?

Tycho B. schrieb:
> Wenn Schleifringe dazwischen sind, dann funktioniert es nicht, obwohl das
> Signal (gemessen am ADC, ohne Drehung) eigentlich super aussieht.
> Aber Auslesen klappt nicht. Ich verstehe es nicht.
In >90% der Fälle kommt das durch einen falschen SPI-Mode.

Lies mal dauernd nur das ID-Register aus. Dann weiß man, was man an 
Daten erwarten muss. Und dann probier einfach mal die 3 anderen 
SPI-Mode-Möglichkeiten auch aus...  ;-)

: Bearbeitet durch Moderator
von jo mei (Gast)


Lesenswert?

Lothar M. schrieb:
> In >90% der Fälle kommt das durch einen falschen SPI-Mode.

Ich verdächtige das "Rauschen" auf den Taktflanken, dieses
könnte Doppel- oder Mehrfach-Triggerung beim Empfänger auslösen.

von Tycho B. (asellus)


Angehängte Dateien:

Lesenswert?

@Sebastian S.

Hi, im AD-Forum habe ich dazu ein Paar Bilder. Man sieht Spikes auf den 
5V. Ich frage mich, ob die Ferrite da gar nicht hingehören, weil der ADC 
zu kräftig saugt und 100n nicht ausreichen.

Ja, ich habe alle SPI-Geschwindigkeiten ausprobiert. Bei 2MBaud war es 
noch am Besten. Also 2-3 mal Auslesen war möglich, dann wieder tot.

von Tycho B. (asellus)


Lesenswert?

Lothar M. schrieb:
> Tycho B. schrieb:
>> Wenn Schleifringe dazwischen sind, dann funktioniert es nicht, obwohl das
>> Signal (gemessen am ADC, ohne Drehung) eigentlich super aussieht.
>> Aber Auslesen klappt nicht. Ich verstehe es nicht.
> In >90% der Fälle kommt das durch einen falschen SPI-Mode.
>
> Lies mal dauernd nur das ID-Register aus. Dann weiß man, was man an
> Daten erwarten muss. Und dann probier einfach mal die 3 anderen
> SPI-Mode-Möglichkeiten auch aus...  ;-)

Ja, habe ganz am Anfang der Fehlersuche feststellen müssen, dass der ADC 
SPI mode 3 benutzt. Ich habe nämich zuerst Mode 0 gehabt. Lustigerweise 
funktioniert die direkte Verindung auch mit Mode0.

Aber auch mit Mode 1,2 und 3 funktioniert es nicht bei der Übertragung 
durch Schleifenringe.

von Tycho B. (asellus)


Angehängte Dateien:

Lesenswert?

jo mei schrieb:
> Lothar M. schrieb:
>> In >90% der Fälle kommt das durch einen falschen SPI-Mode.
>
> Ich verdächtige das "Rauschen" auf den Taktflanken, dieses
> könnte Doppel- oder Mehrfach-Triggerung beim Empfänger auslösen.

Hm, also auf den Bildern sehe ich kein Rauschen. Was meinst du?

Ich habe ein Test gemacht und die Terminierungen überbrückt, um die 
Parasitkapazitäten schneller zu laden, siehe Anhang. Das nenne ich 
Rauschen) Naja, eher Ringing) Damit ging auch das direkte Kommunizieren 
nicht.

von foobar (Gast)


Lesenswert?

CS wird aber schon benutzt, oder?

von Tycho B. (asellus)


Lesenswert?

foobar schrieb:
> CS wird aber schon benutzt, oder?

Ja, CS is low die ganze Zeit.
Ich schaffe es ja manchmal, etwas auszulesen.

: Bearbeitet durch User
von Peter D. (peda)


Lesenswert?

Tycho B. schrieb:
> Ja, CS is low die ganze Zeit.

Aber zwischen den Paketen doch high?

Der maximale SCK darf 20MHz sein, bei Deinen Bildern kann man aber nicht 
sehen, ob da 25ns breite Störungen drauf sind.
Man kann versuchen mit 74HC14 und RC-Gliedern solche kurzen Störungen zu 
filtern.

Ich würde aber am ADC nen kleinen MC (ATtiny2313) setzen und dann über 
RS-485 differentiell die Daten zum Haupt-MC senden.

von foobar (Gast)


Lesenswert?

>> CS wird aber schon benutzt, oder?
>
> Ja, CS is low die ganze Zeit.

Also nicht benutzt.  Ein einziger falscher Clock-Impuls (bei 
Schleifkontakten nicht unwahrscheinlich) bringt die beiden Geräte außer 
Takt und es geht nichts mehr.  Löst du dann denn wenigsten mal einen 
Reset aus (64+ Clocks with DIN high)?

von Tycho B. (asellus)


Lesenswert?

Peter D. schrieb:
> Tycho B. schrieb:
>> Ja, CS is low die ganze Zeit.
>
> Aber zwischen den Paketen doch high?
>
> Der maximale SCK darf 20MHz sein, bei Deinen Bildern kann man aber nicht
> sehen, ob da 25ns breite Störungen drauf sind.
> Man kann versuchen mit 74HC14 und RC-Gliedern solche kurzen Störungen zu
> filtern.
>
> Ich würde aber am ADC nen kleinen MC (ATtiny2313) setzen und dann über
> RS-485 differentiell die Daten zum Haupt-MC senden.

Nein, immer low. So wie ich es verstanden habe, darf CS auch nicht high 
gehen: "However on the AD717x CS will reset the serial interface when it 
is pulled high."

Naja... Ich habe jetzt nicht explizit danach untersucht, aber bei all 
den Aufnahmen, die ich gemacht habe, war da nichts, was für schnelle 
Spikes sprechen würde. Außerdem sieht man die Bandbreite an den 
verschliffenen Flanken. Die Serienwiderstände von 420 Ohm an den 
Signalquellen sind auch Tiefpassfilter.

von Tycho B. (asellus)


Lesenswert?

foobar schrieb:
>>> CS wird aber schon benutzt, oder?
>>
>> Ja, CS is low die ganze Zeit.
>
> Also nicht benutzt.  Ein einziger falscher Clock-Impuls (bei
> Schleifkontakten nicht unwahrscheinlich) bringt die beiden Geräte außer
> Takt und es geht nichts mehr.  Löst du dann denn wenigsten mal einen
> Reset aus (64+ Clocks with DIN high)?

Wie gesagt, CS darf nicht high gehen.

Getestet habe ich das ganze bei stehendem Drehtisch. Und: Ein anderer 
SPI-Sensor hat schon alle Messungen auch mit aktivem Drehtisch 
überstanden, also an den slip rings kann es nicht liegen.

Im Rahmen einer Anfangsinitialisierung, bevor ich irgendetwas messe, 
führe ich auch einen soft reset durch.

von Peter D. (peda)


Lesenswert?

Tycho B. schrieb:
> So wie ich es verstanden habe, darf CS auch nicht high
> gehen: "However on the AD717x CS will reset the serial interface when it
> is pulled high."

Nö, das bedeutet, falls sich das SPI mal verrannt hat, ist das die 
einzige Möglichkeit, es wieder zu synchronisieren.

von foobar (Gast)


Lesenswert?

> Nein, immer low. So wie ich es verstanden habe, darf CS auch nicht high
> gehen: "However on the AD717x CS will reset the serial interface when it
> is pulled high."

Ja, der resettet den Bit-Counter - das will man!  Der Chip muß doch 
wissen, wo ein Datenwort anfängt.  SPI ohne CS ist Pfusch - kann man mal 
machen, wenn beide Chips nebeneinander auf der Platine stecken und man 
eine alternative Möglichkeit hat, sie zu synchronisieren (Power-Cycle 
etc).  Ansonsten gehört CS mit zum Busprotokoll.

von Tycho B. (asellus)


Lesenswert?

Peter D. schrieb:
> Ich würde aber am ADC nen kleinen MC (ATtiny2313) setzen und dann über
> RS-485 differentiell die Daten zum Haupt-MC senden.

Es gibt dedizierte ICs, die SPI zu differentiell übersetzen und wieder 
zurück, habe schon gefunden als letzten Ausweg.) Ich würde aber gern die 
Ursache verstehen.

Der Punkt ist auch, dass es mit einem anderen SPI-Device problemlos 
funktioniert.

von Wolfgang (Gast)


Lesenswert?

Lothar M. schrieb:
> Lies mal dauernd nur das ID-Register aus. Dann weiß man, was man an
> Daten erwarten muss. Und dann probier einfach mal die 3 anderen
> SPI-Mode-Möglichkeiten auch aus...  ;-)

Wozu macht sich der Hersteller eigentlich die Mühe, ein Datenblatt zu 
schreiben. Bist du schon mal auf die Idee gekommen, dass man soetwas 
nachlesen kann?
Mit dem Auto fährst du doch auch nicht mit Höchstgeschwindigkeit auf 
eine Wand zu und probierst dann, welches vielleicht das Bremspedal ist. 
:-(

von Tycho B. (asellus)


Lesenswert?

foobar schrieb:
>> Nein, immer low. So wie ich es verstanden habe, darf CS auch nicht high
>> gehen: "However on the AD717x CS will reset the serial interface when it
>> is pulled high."
>
> Ja, der resettet den Bit-Counter - das will man!  Der Chip muß doch
> wissen, wo ein Datenwort anfängt.  SPI ohne CS ist Pfusch - kann man mal
> machen, wenn beide Chips nebeneinander auf der Platine stecken und man
> eine alternative Möglichkeit hat, sie zu synchronisieren (Power-Cycle
> etc).  Ansonsten gehört CS mit zum Busprotokoll.

Das Problem dabei ist, dass DOUT/RDY den Zeitpunkt einer Konversion 
anzeigt. Wenn ich CS auf high setze, dann ist DOUT/RDY tristated. Also 
muss ich irgendne Art Timer wieder einbauen, um kurz vor Konversion CS 
zu aktivieren und auf RDY-Übergang zu warten. Ich denke nicht, dass es 
so gedacht war.

von Tycho B. (asellus)


Lesenswert?

Peter D. schrieb:
> Tycho B. schrieb:
>> So wie ich es verstanden habe, darf CS auch nicht high
>> gehen: "However on the AD717x CS will reset the serial interface when it
>> is pulled high."
>
> Nö, das bedeutet, falls sich das SPI mal verrannt hat, ist das die
> einzige Möglichkeit, es wieder zu synchronisieren.

Nein.

On the AD719x CS does not reset the serial interface so it can frame 
each 8 bit transaction as can be seen from the scope plot. So this works 
fine for the AD719x.

However on the AD717x CS will reset the serial interface when it is 
pulled high. So when CS is pulled high the read transaction is being 
aborted and returns to expecting a write to the Comms register.

von Spess53 (Gast)


Lesenswert?

Hi

>> Nö, das bedeutet, falls sich das SPI mal verrannt hat, ist das die
>> einzige Möglichkeit, es wieder zu synchronisieren.

>Nein.

Wieso geht dann in Figure 42/43  erst CS von H nach L, dann folgen 
Command schreiben Datenbytes lesen oder schreiben und danach CS wieder 
auf H?

MfG Spess

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


Lesenswert?

Wolfgang schrieb:
> und probierst dann, welches vielleicht das Bremspedal ist. :-(
Um diesen recht holprigen Vergleich zu verlängern: er hängt ja schon auf 
der Mauer und überlegt sich, wie es in der nächsten Runde besser gehen 
könnte. Und augenscheinlich ist das gerade eben verwendete Pedal nicht 
zum Anhalten geeignet. Da darf man schon mal ein anderes ausprobieren.

Tycho B. schrieb:
> Ja, CS is low die ganze Zeit.
Das ist der Fehler.
Denn ohne SS# als Framesync reicht ein einziger Spike auf dem SCK dass 
die gesamte Kommunikation fürderhin ausser Schritt kommt.

Spess53 schrieb:
> Wieso geht dann in Figure 42/43
Sehe ich auch so...
Ich käme nie auf die Idee, einen SPI Slave ohne SS# anzusteuern.

: Bearbeitet durch Moderator
von Falk B. (falk)


Lesenswert?

Tycho B. schrieb:
> es geht um AD7177 ADC und SPI-Kommunikation durch Schleifringe.

Ob DAS so ein gute Idee ist? Schleifringe sind auch bei guter oder sehr 
guter Qualität nicht mal ansatzweise so störarm wie eine normale 
Leitung. D.h. Störungen sind NORMAL! Allerdings sind diese besonders bei 
einem SPI-Taktsignal alles andere als gesund.

Das MINIMUM ist ein RC-Filter am SCK-Eingang des ADC + 
Schmitt-Trigger, damit die Störpulse definitiv nicht dort rein 
kommen.

> Ich habe einen Atmega 1284, der mittels Flachbandkabel mit einer Platine
> verbunden ist, auf der ein 7177 sitzt. Das Flachbandkabel kann getrennt
> (DSUB-15) und beide Platinen dann an einem Rotationstisch betrieben
> werden. Der uC-Teil ist stationär, der 7177 dreht sich.

Ist der Tisch endlos drehbar oder nur einen bestimmten Winkel, z.B. 
1x360°?
Bei letzterem braucht man keine Schleifkontakte, nur einen Wickel mit 
dem Kabel. Das funktioniert auch mit mehreren Umdrehungen.

Alles in Allem würde ich kein SPI über Schleifringe führen wollen. 
Bestenfalls UART mit eine Datensicherung per CRC. Damit spart man 
auch Schleifringe ein. Oder gleich per Funk ala Bluetooth etc.

von Tycho B. (asellus)


Lesenswert?

Spess53 schrieb:
> Wieso geht dann in Figure 42/43  erst CS von H nach L, dann folgen
> Command schreiben Datenbytes lesen oder schreiben und danach CS wieder
> auf H?

Warum tut es das bei Figure 66, 67 und 68 nicht? Ich weiss es nicht. Es 
sind abstrakte Darstellungen, die einen speziellen Sachverhalt 
darstellen sollen, der gerade erklärt wird. Hingegen ist der von mir 
zitierte Text von einer AD-Mitarbeiterin und sie bezieht sich genau auf 
die Verwendung von CS.

von Spess53 (Gast)


Lesenswert?

Hi

>Warum tut es das bei Figure 66, 67 und 68 nicht?

Bei Figure 68 für meine Begriffe  schon.

MfG Spess

von Tycho B. (asellus)


Lesenswert?

Falk B. schrieb:
> Ob DAS so ein gute Idee ist? Schleifringe sind auch bei guter oder sehr
> guter Qualität nicht mal ansatzweise so störarm wie eine normale
> Leitung. D.h. Störungen sind NORMAL! Allerdings sind diese besonders bei
> einem SPI-Taktsignal alles andere als gesund.

Bei einem anderen Sensor funktioniert SPI bei sich drehendem Tisch ohne 
Probleme. Die Kommunikation mit dem AD7177 funktioniert nicht bei einem 
feststehenden Tisch, er wird nicht gedreht. Des Weiteren sieht man ein 
komplettes Auslesen auf den Oszi-Bildern. Ich habe ja ziemlich viel 
getestet und jetzt nicht die besten Bilder zum Zeigen ausgesucht oder 
so. Da sind keine Störungen. Alle Aufnahmen waren so. Wenn du willst, 
kann ich hier 20 Bilder reinstellen, dann können wir Spikes gemeinsam 
suchen.
Achso, das Oszi war nicht bandbreitenbegrenzt, 10:1 abgeglichene 350 MHZ 
Tastköpfe und Samplerate war 2.5 GS/s.


Falk B. schrieb:
> Ist der Tisch endlos drehbar

Ja, deswegen die Schleifringe.

von Tycho B. (asellus)


Lesenswert?

Spess53 schrieb:
> Hi
>
>>Warum tut es das bei Figure 66, 67 und 68 nicht?
>
> Bei Figure 68 für meine Begriffe  schon.
>
> MfG Spess

Nein, weil dort in einem Zug zuerst ein Register beschrieben wird und 
dann eine Konversion ausgelesen. Ich meine, ich kann natürlich immer 
wieder zwischendurch CS auf high setzen. Ich habe es auch getestet...

Der uC ist per VCP am PC und über die Schnittstelle kann ich Kommandos 
ausführen. Ich habe extra ein Kommando programmiert, um CS manuell 
ändern zu können. Dann habe ich zuerst soft reset gemacht, dann manuell 
CS high gesetzt, dann low und dann 0x68 00 00 gesendet, also auslesen 
eines Registers. Hat auch nicht geklappt.

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


Lesenswert?

Tycho B. schrieb:
> Hat auch nicht geklappt.
Was bedeutet hier "nicht geklappt"?
Du hast als Antwort nur 00000... bekommen?

Tycho B. schrieb:
> Warum tut es das bei Figure 66, 67 und 68 nicht?
Weil es da nicht "gebraucht" wird.
Aber ist doch egal, wer Recht hat. Den auch wenn du evtl. in vollem 
Umfang Recht hast: es läuft trotzdem nicht!

Ich würde wie gesagt mal das "einfache" Bild 43 mit dem definierten und 
unveränderlichen ID-Register hernehmen und erst mal auf die Nanosekunde 
genau untersuchen, wie das Timing der 4 beteiligten Signale zu den 
Vorgaben der Seiten 7 und 8 und den Pegeln auf den Seiten davor passt. 
Im Besonderen auch, ob die Flanken stetig und ohne "Zacken" sind.

Denn auch im Datenblatt auf Seite 21 links oben steht:
1
Reading the ID register is the recommended method for verifying
2
correct communication with the device. The ID register is a 
3
read only register and contains the value 0x4FDX

Tycho B. schrieb:
> Wenn ich die Platinen direkt miteinander verbinde, dann funktioniert die
> Kommunikation ohne Probleme. Wenn Schleifringe dazwischen sind, dann
> funktioniert es nicht
Um wieviel länger ist dann der Signalpfad? Ändert sich was, wenn du 
ahnlich lange Leitungen, aber keine Schleifringe verwendest? Oder wenn 
du die Schleifringe zwar einbaust, aber brückst?

> obwohl das Signal (gemessen am ADC, ohne Drehung)
> eigentlich super aussieht.
Die Messpunkte sind direkt am ADC und die Masse vom Oszi ist auch direkt 
am ADC angeschlossen?

Kleine Anekdote zu einem ähnlichen Fall:
Ich hatte schon mal einen AD7490, der lief einige Jahre unauffällig in 
Serie. Dann wurde ein Elko im Netzteil gesickt statt flach montiert und 
der AD-Wandler brachte Blödsinn und Nullen. Letztlich war es dann so, 
dass allein die geänderte Montage des Elkos im Schaltregler ns-Spikes 
auf der Masse erzeugte, die den SPI-Teil im AD-Wandler durcheinander 
brachten. Bei diesen Messungen war es deshalb wichtig, die Masse vom 
Oszi direkt am ADC anzuschließen. Denn nur dann sieht man auf dem Oszi 
das, was auch der ADC sieht.
Das Ergebnis dieses "Übertragunsproblems" waren letztendlich dann die 
Betrachtungen dort:
http://www.lothar-miller.de/s9y/categories/40-Layout-Schaltregler

: Bearbeitet durch Moderator
von Tycho B. (asellus)


Lesenswert?

Lothar M. schrieb:
> Du hast als Antwort nur 00000... bekommen?

Ja.

Lothar M. schrieb:
> Um wieviel länger ist dann der Signalpfad? Ändert sich was, wenn du
> ahnlich lange Leitungen, aber keine Schlifringe verwendest? Oder wenn du
> die Schleifringe zwar einbaust, aber brückst?

Um ca. 1m länger. Vom DSUB15-Stecker bis zu den Schleifringen wird das 
Signal durch geschirmte single-ended Leitungen geführt. Nach den 
Schleifringen genauso.
Das mit längeren Leitungen habe ich mir auch überlegt, aber ich habe 
nirgends 1 m Flachbandkabel auf die Schnelle. Überbrücken geht auch 
nicht wirklich, weil der Drehteil des Drehtisches in einem Klimaschrank 
eingebaut ist.

Lothar M. schrieb:
> Ich würde wie gesagt mal das "einfache" Bild 43 mit dem definierten und
> unveränderlichen ID-Register hernehmen und erst mal auf die Nanosekunde
> genau untersuchen, wie das Timing der 4 beteiligten Signale zu den
> Vorgaben der Seiten 7 und 8 und den Pegeln auf den Seiten davor passt.
> Im Besonderen auch, ob die Flanken stetig und ohne "Zacken" sind.

Das versuche ich heute mal.

von Falk B. (falk)


Lesenswert?

Tycho B. schrieb:
> Lothar M. schrieb:
>> Um wieviel länger ist dann der Signalpfad? Ändert sich was, wenn du
>> ahnlich lange Leitungen, aber keine Schlifringe verwendest? Oder wenn du
>> die Schleifringe zwar einbaust, aber brückst?
>
> Um ca. 1m länger.

Das ist bei den meisten SPI-ICs schon kritisch, siehe 
Wellenwiderstand.

> Vom DSUB15-Stecker bis zu den Schleifringen wird das
> Signal durch geschirmte single-ended Leitungen geführt. Nach den
> Schleifringen genauso.

Schön. Aber wie sieht es an den Schleifringen aus? Wie wird die Masse 
und Stromversorgung geführt? Wieviele Signale gehen über die 
Schleifringe?

> Das mit längeren Leitungen habe ich mir auch überlegt, aber ich habe
> nirgends 1 m Flachbandkabel auf die Schnelle. Überbrücken geht auch
> nicht wirklich, weil der Drehteil des Drehtisches in einem Klimaschrank
> eingebaut ist.

von Tycho B. (asellus)


Lesenswert?

Falk B. schrieb:
> Das ist bei den meisten SPI-ICs schon kritisch, siehe
> Wellenwiderstand.

Kannst du das bitte etwas erläutern? Ich dachte, dass während einer 
Flanke der Level sich ändert, während der anderen wird er eingelesen. 
Solange der Zeitversatz oder parasitäre Tiefpässe MOSI nicht um die 
halbe Clock gegenüber SCLK verschieben/dämpfen, sollte es funktionieren. 
An den Oszi-Bildern sieht man, dass zeitlich eigentlich alles passt.

Falk B. schrieb:
> Schön. Aber wie sieht es an den Schleifringen aus? Wie wird die Masse
> und Stromversorgung geführt? Wieviele Signale gehen über die
> Schleifringe?

Jeweils ein Kontakt für Masse, 5V, CLK, MISO, MOSI und SC. Wie die 
Schleifringe intern aufgebaut sind weiss ich nicht.

von Tycho B. (asellus)


Angehängte Dateien:

Lesenswert?

Ich habe die Masse nun direkt an einen Pin des ADC angelötet. 
Testsequenz: power cycle, cs high, SPI mode 3, send 0x470000.
Bild1: Komplette Aufnahme mit CS-Signal in grün.
Weitere Bilder: T-Parameter aus dem Datenblatt und die schlimmsten 
Flanken, die ich finden konnte.

von Falk B. (falk)


Lesenswert?

Tycho B. schrieb:
>> Das ist bei den meisten SPI-ICs schon kritisch, siehe
>> Wellenwiderstand.
>
> Kannst du das bitte etwas erläutern? Ich dachte, dass während einer
> Flanke der Level sich ändert, während der anderen wird er eingelesen.

Stimmt. Aber die Flanke muss "porentief" sauber sein. Da dürfen 
KEINERLEI kleine zacken oder so drauf sein. Bei 1m Kabellänge und den 
üblichen, kurzen Anstiegszeiten moderner ICs bzw. uCs. braucht man dafür 
eine Terminirung, hier meist Serienterminierung und halbswegs 
HF-taugliche Leitungs- und Masseführung. Siehe Wellenwiderstand.

> Solange der Zeitversatz oder parasitäre Tiefpässe MOSI nicht um die
> halbe Clock gegenüber SCLK verschieben/dämpfen, sollte es funktionieren.

Nö.

Lies mal das und erschreck dich ;-)

Beitrag "Probleme mit SPI"

> An den Oszi-Bildern sieht man, dass zeitlich eigentlich alles passt.

Das reicht nicht. Die SCK Flanken müssen ASTREIN sein. Dazu muss man 
auch hf-tauglich messen.

https://www.mikrocontroller.net/articles/Oszilloskop#Tastk.C3.B6pfe_richtig_benutzen

Und wenn das Ganze schon im Stillstand Probleme macht, stimmt was nicht 
mit der Verdrahtung. Da ist was eben nicht HF-tauglich.

von jo mei (Gast)


Lesenswert?

Falk B. schrieb:
> Das reicht nicht. Die SCK Flanken müssen ASTREIN sein. Dazu muss man
> auch hf-tauglich messen.

Danke Falk.
Ich hab es zwar nicht so gesagt aber so gemeint als ich schrub:

jo mei schrieb:
> Ich verdächtige das "Rauschen" auf den Taktflanken, dieses
> könnte Doppel- oder Mehrfach-Triggerung beim Empfänger auslösen.

Dann allerdings zu antworten

Tycho B. schrieb:
> Hm, also auf den Bildern sehe ich kein Rauschen. Was meinst du?

ist schon etwas blau-äugig. Ich sah solche "Schwinger" an den
Flanken schon in den ersten Oszillogrammen. Deswegen schrieb
ich auch "Rauschen" und nicht Rauschen.

von Falk B. (falk)


Lesenswert?

Tycho B. schrieb:
> Ich habe die Masse nun direkt an einen Pin des ADC angelötet.
> Testsequenz: power cycle, cs high, SPI mode 3, send 0x470000.
> Bild1: Komplette Aufnahme mit CS-Signal in grün.
> Weitere Bilder: T-Parameter aus dem Datenblatt und die schlimmsten
> Flanken, die ich finden konnte.

https://www.mikrocontroller.net/attachment/497314/CLK_rise.png

Was ist denn DAS? Ist das eine Taktflanke in Zeitlupe? 50ns/DIV? Hää?

So eine Taktflanke sollte um die 10-20ns haben, mehr nicht.
Was hast du denn für Treiber? Ein AVR ist das nicht.
Wie sehen die Flanken bei direkter Verbindung mit kurzem Kabel aus?
Möglicherweise sind deine Schleifringe arg induktiv und verschleifen 
deine Flanke ;-)

von Tycho B. (asellus)


Angehängte Dateien:

Lesenswert?

Falk B. schrieb:
> Wie sehen die Flanken bei direkter Verbindung mit kurzem Kabel aus?
Anbei direkte Verindung.

Ich habe Serienterminierungen an allen Leitungen, an der jeweiligen 
Senderseite. Sie waren zuerst 47 Ohm, da hat's doch etwas geklingelt, 
also habe ich sie auf 420 erhöht.

Treiber ist Atmega 1284.

Ic dachte es funktioniert wie ein Schmitt-Trigger. Müssen die Flanken 
eine Mindeststeilheit besitzen?

: Bearbeitet durch User
von jo mei (Gast)


Lesenswert?

Tycho B. schrieb:
> Müssen die Flanken eine Mindeststeilheit besitzen?

Das spezifiert das Datenblatt des Bausteins den du steuern willst.

Oft gibt es da grössere Reserven an die Flankensteilheit. Ich
betrachte das nicht-stetige Ansteigen oder Abfallen der Flanke
als das Problem.

von Falk B. (falk)


Lesenswert?

Tycho B. schrieb:
> Ich habe Serienterminierungen an allen Leitungen, an der jeweiligen
> Senderseite. Sie waren zuerst 47 Ohm, da hat's doch etwas geklingelt,
> also habe ich sie auf 420 erhöht.

Viel zuviel! Bestenfalls 100 Ohm. Wenn es dann immer noch klingelt, hast 
du einen Meßfehler oder schlechte Leitungsführung.

> Ic dachte es funktioniert wie ein Schmitt-Trigger.

Was sagt dein Datenblatt des ADC?

> Müssen die Flanken
> eine Mindeststeilheit besitzen?

Meistens schon.

von jo mei (Gast)


Lesenswert?

Falk B. schrieb:
> Wenn es dann immer noch klingelt, hast
> du einen Meßfehler oder schlechte Leitungsführung.

Will heissen dass mehrfache Impedanz-Sprünge auf dem Gesamtverlauf
der Leitung ein ganz komplexes Klingelverhalten produzieren kann.

von jo mei (Gast)


Lesenswert?

Tycho B. schrieb:
> Ic dachte es funktioniert wie ein Schmitt-Trigger.

Wenn man einen zur Verfügung hat vielleicht. Schmitt Trigger
machen aber nicht allgemein glücklich. Sie sind gut zu
gebrauchen wenn man sehr langsame Flanken digital verarbeiten
muss oder eine Hysterese braucht. Leider kann die Hysterese
nicht von Null bis 3.3V oder Null bis 5V gehen, daher kann ein
Klingeln auf der Leitung trotz Schmitt-Trigger zum Doppel- bzw.
Mehrfachtriggern führen.

Übrigens: sobald man einen Tastkopf anschliesst um Klingeln
zu beobachten hat man dieses durch die zusätzlich anliegende
Lastkapazität schon verringert. In Wirklichkeit ist es stärker
als dargestellt.

von Bernd (Gast)


Lesenswert?

jo mei schrieb:
> Übrigens: sobald man einen Tastkopf anschliesst um Klingeln
> zu beobachten hat man dieses durch die zusätzlich anliegende
> Lastkapazität schon verringert.
Das ist richtig. Üblicherweise hat ein 1:10 Tastkopf ca. 10 pF.
Wenn man den falschen Tastkopf nimmt (1:1) liegt man irgendwo bei 100 
pF.
Wenn man hat oder es sich leisten kann, nimmt man aktive Tastköpfe 
(active probe) und belastet das Messsignal nur noch mit 1 bis 2 pF.

von Tycho B. (asellus)


Angehängte Dateien:

Lesenswert?

jo mei schrieb:
> Das spezifiert das Datenblatt des Bausteins den du steuern willst.

Ich habe im Datenblatt keine Angaben zur Flankensteilheit gefunden.

Falk B. schrieb:
> Was sagt dein Datenblatt des ADC?

Hysteresis LOGIC INPUTS (IOVDD ≥ 2.7 V) min 0.08V max 0.25V
Relative Angabe, und dazu noch ziemlich kleine Werte. Quasi gar kein 
Schmitt-Trigger.
Klingt nach ==>

jo mei schrieb:
> Ich
> betrachte das nicht-stetige Ansteigen oder Abfallen der Flanke
> als das Problem.

jo mei schrieb:
> Will heissen dass mehrfache Impedanz-Sprünge auf dem Gesamtverlauf
> der Leitung ein ganz komplexes Klingelverhalten produzieren kann.

Das befürchte ich auch, habe aber keine Ahnung wie man das beseitigt. 
Ich meine, die Schleifringe haben Koax-Kabel, wahrscheinlich 50 Ohm. 
Flachbandkabel hat 120-130 Ohm. Wenn ich jetzt alle Leitungen auf Koax 
wechsle, dann sieht der Aufbau aus wie Spaghetti.

Ich habe das mal simuliert, siehe Anhang(Abgegriffen am R2). Sieht 
halbwegs ähnlich aus zu
https://www.mikrocontroller.net/attachment/497314/CLK_rise.png

jo mei schrieb:
> Schmitt Trigger
> machen aber nicht allgemein glücklich.

Wie löst man aber im Allgemeinen so ein Problem? Wenn also die 
Leitungsführung mehrere Strecken mit unterschiedlichen 
Wellenwiderständen aufweist? Es kommt zu Mehrfachreflexionen und damit 
zu solch unschönen Signalverläufen. Ist das die Lösung? ==>

Falk B. schrieb:
> Das MINIMUM ist ein RC-Filter am SCK-Eingang des ADC +
> Schmitt-Trigger, damit die Störpulse definitiv nicht dort rein
> kommen.

: Bearbeitet durch User
von spiderman (Gast)


Lesenswert?

Tycho B. schrieb:
> Ist das die Lösung?

Wußtest Du eigentlich daß die maximale Geschwindigkeit die ein Schiff 
erreichen kann allein von seiner Länge ahängt? Da kannst Du Gas geben 
soviel Du willst, damit vergrößert Du nur die Bugwelle.

von Falk B. (falk)


Lesenswert?

Tycho B. schrieb:
> Das befürchte ich auch, habe aber keine Ahnung wie man das beseitigt.
> Ich meine, die Schleifringe haben Koax-Kabel, wahrscheinlich 50 Ohm.

Dann zeigt mal ein Bild und eine Bezeichnung, am besten einen Link auf 
ein Datenblatt. Wenn das professionelle Schleifringe sind, wird man sich 
bei deren Konstruktion was gedacht haben.

> Flachbandkabel hat 120-130 Ohm. Wenn ich jetzt alle Leitungen auf Koax
> wechsle, dann sieht der Aufbau aus wie Spaghetti.

Muss man nicht. Man muss erstmal nachdenken. Dazu braucht man aber 
Informationen.

von Tycho B. (asellus)


Lesenswert?

spiderman schrieb:
> Wußtest Du eigentlich daß die maximale Geschwindigkeit die ein Schiff
> erreichen kann allein von seiner Länge ahängt?
Ja. Oder du gleitest.

Und wustest du, dass im Inertialsystem eines Raumschiffs du scheinbar 
überlichtschnell fliegen kannst, wegen Längenkontraktion des Raumes in 
die Bewegungsrichtung?

Falk B. schrieb:
> Dann zeigt mal ein Bild und eine Bezeichnung, am besten einen Link auf
> ein Datenblatt.

Das ist schwierig. Es ist eine Spezialanfertigung von Acuitas, auf dem 
Gehäuse der Sliprings steht Slipring AIS-36. Im Netz findet man dazu 
nichts.

: Bearbeitet durch User
von Bernd (Gast)


Lesenswert?

Tycho B. schrieb:
> Das ist schwierig. Es ist eine Spezialanfertigung von Aquitas, auf dem
> Gehäuse der Sliprings steht Slipring AIS-36. Im Netz findet man dazu
> nichts.
Wenn ich das richtig verstanden habe, werden Schleifringe aus 
unterschiedlichen Komponenten (Leistung, HV, analog, digital) je nach 
Kundenwunsch zusammengesetzt. Vielleicht finden sich die 
Bestellunterlagen oder das Angebot an, wo man solche Details finden 
sollte.


Trotzdem solltest du zum Debuggen endlich mal eine Software schreiben, 
die permanent (unter Verwendung von /CS!) die ID ausliest und bei 
Fehlern eine LED leuchten läßt. Dort kannst du mit dem Oszi drauf 
triggern und dir dann die fehlerhafte Übertragung genau anschauen.

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


Lesenswert?

Falk B. schrieb:
> Aber die Flanke muss "porentief" sauber sein. Da dürfen
> KEINERLEI kleine zacken oder so drauf sein.
Sie muss auf jeden Fall stetig sein und kein Auf- und Ab aufweisen.

Tycho B. schrieb:
> jo mei schrieb:
>> Das spezifiert das Datenblatt des Bausteins den du steuern willst.
> Ich habe im Datenblatt keine Angaben zur Flankensteilheit gefunden.
Ja, die Angaben sind erstaunlich spärlich. Da drin steht nicht mal was 
zur maximalen Taktfrequenz vom SCLK. Man könnte sich bestenfalls 
ausdenken, dass die maximale Taktfrequenz bei 0ns Flankensteilheit und 
je min. 25ns high/low schon mal 20MHz sein könnte. Ich halte das bei 
einem internen Takt von 16MHz aber für arg gewagt.
Und zum SCLK Eingang ist auch nur lobhudelnd erwähnt, dass ein 
Schmitttrigger drin ist, aber es wird kein Wort zu dessen 
Schaltschwellen verloren. Gruselig :-/

Die einzige angegebene Hysterese von min. 0,08V bis max. 0,25V wäre 
jetzt für einen Schmitttrigger auf jeden Fall nicht so der Brüller.

Trotzdem zeigen die 25ns natürlich an, dass bei einer unsauberen Flanke 
schon eine "Delle" von 25ns reich, um einen vermeintlichen Taktimpuls zu 
erkennen. Und diese Werte mit 25ns und 0,25V sind nicht allzu weit von 
den Wellen im Bild CLK_fall.png weg...

: Bearbeitet durch Moderator
von Wolfgang (Gast)


Lesenswert?

Lothar M. schrieb:
> Und augenscheinlich ist das gerade eben verwendete Pedal nicht
> zum Anhalten geeignet. Da darf man schon mal ein anderes ausprobieren.

Man könnte die Nichtfunktion auch als Anlass nehmen, die diesbezüglichen 
Abschnitte in den Datenblättern von Controller und ADC noch einmal genau 
zu lesen, statt in blindes Probieren zu verfallen.

Mit dem Vergleich wollte ich nur andeuten, dass es Dinge gibt, bei denen 
wildes Rumprobieren durchaus problematisch sein kann. Auch um das 
beurteilen zu können, muss man hinreichend Verständnis für das Problem 
entwickeln oder man lässt es drauf ankommen - das Glück ist mit ...

von Tycho B. (asellus)


Angehängte Dateien:

Lesenswert?

Bernd schrieb:
> Wenn ich das richtig verstanden habe, werden Schleifringe aus
> unterschiedlichen Komponenten (Leistung, HV, analog, digital) je nach
> Kundenwunsch zusammengesetzt. Vielleicht finden sich die
> Bestellunterlagen oder das Angebot an, wo man solche Details finden
> sollte.

Ich habe da was angehängt. Mehr habe ich zu Schleifringen nicht. Der 
Drehtisch ist in eine Klimakammer eingebaut. Das Ganze gebaut von 
Acuitas. Die Doku lässt sich über alles aus, nur nicht über die 
Impedanzen von Schleifringen:)

Bernd schrieb:
> Trotzdem solltest du zum Debuggen endlich mal eine Software schreiben,
> die permanent (unter Verwendung von /CS!) die ID ausliest und bei
> Fehlern eine LED leuchten läßt. Dort kannst du mit dem Oszi drauf
> triggern und dir dann die fehlerhafte Übertragung genau anschauen.

Ich kann nicht ein einziges mal auslesen. Bei allen Aufnahmen die ich 
hier gepostet habe (außer die, die ich mit "direkte Verbindung" 
gekennzeichnet habe, da funktioniert es) konnte ich nichts auslesen. 
Mein Trigger ist die CLK-Leitung:)

Lothar M. schrieb:
> Sie muss auf jeden Fall stetig sein und kein Auf- und Ab aufweisen.
Sorry, da ich gerade bei der Rumpfgeschwindigkeit klug geschissen 
habe:)) -
Es gibt in der realen Welt keine unstetigen Signale, das ist unmöglich. 
Du meinst monoton bzw. streng monoton. Sorry nochmal)

Lothar M. schrieb:
> Trotzdem zeigen die 25ns natürlich an, dass bei einer unsauberen Flanke
> schon eine "Delle" von 25ns reich, um einen vermeintlichen Taktimpuls zu
> erkennen. Und diese Werte mit 25ns und 0,25V sind nicht allzu weit von
> den Wellen im Bild CLK_fall.png weg...

Es ist auch so, dass die Periode  der Schwingungen in der selben 
Größenordnung wie die Flankenanstiegszeit liegt. Wenn ich einen Tiefpass 
verwende, dann werden auch die Flanken noch länger. Und vom 
Schmitt-Trigger wurde mir schon abgerate. Deswegen weiss ich nicht was 
ich tun soll.

: Bearbeitet durch User
von Peter D. (peda)


Lesenswert?

Man kann /CS fest auf GND legen.
Um dann das SPI zu synchronisieren muß man 64 oder mehr Takte lang ein 
1-Bit einschieben. Danach erfolgt der Start des 1. Bytes mit einem 0-Bit 
(/WEN in Table 25).

In den Diagrammen wird allerdings immer die Synchronisation mit /CS 
benutzt, d.h. jedes Paket beginnt mit einer 1->0 Flanke des /CS und 
endet mit einer 0->1 Flanke.

von Tycho B. (asellus)


Lesenswert?

Der ADC wird zwischen -40°C und 85°C betrieben, dabei soll er 
kontinuierlich über Stunden mit 2500 SPS senden, ohne dass auch nur ein 
Sample verloren geht. Allein CS toggeln oder FFFF senden wird das nicht 
bringen.

Ich habe schon mehrere SPI-Sensoren in diesem Setup und im selben 
Temperaturfenster/SPS-Bereich kontinuierlich über Stunden ohne Probleme 
ausgemessen. Der AD7177-SPI ist wohl etwas zu empfindlich.

: Bearbeitet durch User
von Falk B. (falk)


Lesenswert?

Tycho B. schrieb:
> Bernd schrieb:
>> Wenn ich das richtig verstanden habe, werden Schleifringe aus
>> unterschiedlichen Komponenten (Leistung, HV, analog, digital) je nach
>> Kundenwunsch zusammengesetzt. Vielleicht finden sich die
>> Bestellunterlagen oder das Angebot an, wo man solche Details finden
>> sollte.
>
> Ich habe da was angehängt. Mehr habe ich zu Schleifringen nicht. Der
> Drehtisch ist in eine Klimakammer eingebaut. Das Ganze gebaut von
> Acuitas. Die Doku lässt sich über alles aus, nur nicht über die
> Impedanzen von Schleifringen:)

Naja, diese Angaben deuten auf Leistungskontakte hin. Die sind nicht 
unbedingt auf HF-Signale ausgelegt. Das KANN funktionieren, muss aber 
nicht.

> Mein Trigger ist die CLK-Leitung:)

Fail. Selbst wenn man das CS Signal nicht an den ADC anlegt, würde man 
es im Controller ausgeben und als Trigger für das Oszi nutzen. Denn dann 
sieht man, wie sich die Signale während der Übertragung verhalten.

> Es ist auch so, dass die Periode  der Schwingungen in der selben
> Größenordnung wie die Flankenanstiegszeit liegt. Wenn ich einen Tiefpass
> verwende, dann werden auch die Flanken noch länger. Und vom
> Schmitt-Trigger wurde mir schon abgerate.

Wo denn? Von wem denn?

von Falk B. (falk)


Lesenswert?

Tycho B. schrieb:
> Der AD7177-SPI ist wohl etwas zu empfindlich.

Oder du hattest einfach nur Glück, dass die anderen ICs deutlich 
robuster waren.

von Tycho B. (asellus)


Lesenswert?

Bernd schrieb:
> Trotzdem solltest du zum Debuggen endlich mal eine Software schreiben,
> die permanent (unter Verwendung von /CS!) die ID ausliest und bei
> Fehlern eine LED leuchten läßt. Dort kannst du mit dem Oszi drauf
> triggern und dir dann die fehlerhafte Übertragung genau anschauen.

Falk B. schrieb:
> Fail. Selbst wenn man das CS Signal nicht an den ADC anlegt, würde man
> es im Controller ausgeben und als Trigger für das Oszi nutzen. Denn dann
> sieht man, wie sich die Signale während der Übertragung verhalten.

Du hast mich falsch verstanden, siehe Zitat Bernd. Ich meine, dass ich 
kein Programm brauche, welches bei falschem Auslesen des ID-Registers 
dann über einen Pin die Aufnahme genau dieser Übertragung am Oszi 
triggert. Jede Übertragung ist fehlerhaft, also kann ich einfach auf CLK 
triggern.

Falk B. schrieb:
> Wo denn? Von wem denn?

jo mei schrieb:
> Schmitt Trigger
> machen aber nicht allgemein glücklich. Sie sind gut zu
> gebrauchen wenn man sehr langsame Flanken digital verarbeiten
> muss oder eine Hysterese braucht. Leider kann die Hysterese
> nicht von Null bis 3.3V oder Null bis 5V gehen, daher kann ein
> Klingeln auf der Leitung trotz Schmitt-Trigger zum Doppel- bzw.
> Mehrfachtriggern führen.

von Peter D. (peda)


Lesenswert?

Der AD7177 hat ein recht cooles Feature, man kann mit einer CRC 
überprüfen, ob die Daten korrekt sind. Also kann man ihn nach jedem 
CRC-Fehler mit 64 1-Bits neu synchronisieren.
Und mit dem Bit CRC_ERROR kann man überprüfen, ob er selber alles 
richtig verstanden hat und die Befehle nach der Synchronisation nochmal 
senden.
Man kann dann mitzählen, wie oft eine Neusynchronisation nötig war, d.h. 
wie zuverlässig die Verbindung ist.

von Tycho B. (asellus)


Lesenswert?

Peter D. schrieb:
> Der AD7177 hat ein recht cooles Feature, man kann mit einer CRC
> überprüfen, ob die Daten korrekt sind. Also kann man ihn nach jedem
> CRC-Fehler mit 64 1-Bits neu synchronisieren.
> Und mit dem Bit CRC_ERROR kann man überprüfen, ob er selber alles
> richtig verstanden hat und die Befehle nach der Synchronisation nochmal
> senden.
> Man kann dann mitzählen, wie oft eine Neusynchronisation nötig war, d.h.
> wie zuverlässig die Verbindung ist.

Peter, ich verstehe dich ja. Aber es funktioniert gar nicht. Auch mit 
soft reset nicht. Auch mit power cycle nicht. Auch mit /CS nicht, ich 
habe doch ein Bild hier reingestellt, wo CLK, MISO, MOSI und /CS drauf 
waren.
https://www.mikrocontroller.net/attachment/497308/ID_Register.png
Wenn ich ein mal pro 50.000 Samples resetten müsste, ok, 
zähneknirschend. Aber es geht gar nicht.

: Bearbeitet durch User
von Tycho B. (asellus)


Lesenswert?

Falk B. schrieb:
> Naja, diese Angaben deuten auf Leistungskontakte hin. Die sind nicht
> unbedingt auf HF-Signale ausgelegt. Das KANN funktionieren, muss aber
> nicht.

Naja, twisted pair für Leistungskontakte?

Ich musste mal LAN-Signale über die twisted pairs übertragen. Ein 
Machbarkeitstest mit zwei Laptops (einer hat sich langsam gedreht)hat 80 
MByte/s [sic] ergeben.

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


Lesenswert?

Tycho B. schrieb:
> Du meinst monoton bzw. streng monoton.
Ja, dann nehmen wir streng monoton als gewünschten Verlauf, also einfach 
den Verlauf, bei dem ugs. kein Gezappel und auch kein beliebig langer 
Stillstand mitten im Verlauf der Taktflanken auftritt. Den hat dein Takt 
aber trotz des stetigen Verlaufs auch nicht... ;-)

Tycho B. schrieb:
> mit 2500 SPS senden
Alle 4 Kanäle? Also in der Summe 10kS/s? Oder nur 1 Kanal?

Bei einem Kanal wären das ja grade mal 32 Bits/Sample * 2500 Samples/s = 
80kBit/s und damit würde eine Tatkfrequenz von 100 eigentlich 
ausreichen. Also deutlich langsamer als derzeit. Und dann könntest du 
für den Takteingang ein wenig Shaping mit einem Schnittrigger betreiben.

Tycho B. schrieb:
> Aber es geht gar nicht.
Auch nicht, wenn du die SCLK Leitung "aussen rum" führst?

> ich habe doch ein Bild hier reingestellt, wo CLK, MISO, MOSI und /CS
> drauf waren.
Miss doch auch mal "Masse gegen Masse", also Masseklemme am ADC an Masse 
und Messspitze an einen anderen "Massepunkt" des Aufbaus. Dann siehst 
man, ob da suf der Masse noch was rumkrebst.

Tycho B. schrieb:
> Jede Übertragung ist fehlerhaft
Aber du weißt nicht, ob es genau bei diesem Taktimpuls schief ging und 
auf welche Weise. Und es ist halt einfach so, dass das Auslesen des 
ID-Registers vom Hersteller als probates Mittel angepriesen wird.

von Tycho B. (asellus)


Lesenswert?

Lothar M. schrieb:
> Alle 4 Kanäle? Also in der Summe 10kS/s? Oder nur 1 Kanal?
>
> Bei einem Kanal wären das ja grade mal 32 Bits/Sample * 2500 Samples/s =
> 80kBit/s und damit würde eine Tatkfrequenz von 100 eigentlich
> ausreichen. Also deutlich langsamer als derzeit. Und dann könntest du
> für den Takteingang ein wenig Shaping mit einem Schnittrigger betreiben.

1 Kanal. Ich bin mit 500kBaud gestartet, aktuelle Untersuchung mache ich 
bei 250k. 100k kann man nicht einstellen, der kleinste Wert ist 125k, uC 
clock/128. Ich hab's damit auch probiert mit demselben Resultat. Es ist 
nur so, dass ich demnächst Sensoren auf mich zukommen sehe, die 100kSPS 
können. Da ist Schluss mit lustig.

Lothar M. schrieb:
> Auch nicht, wenn du die SCLK Leitung "aussen rum" führst?
Noch nicht probiert...

Lothar M. schrieb:
> Miss doch auch mal "Masse gegen Masse", also Masseklemme am ADC an Masse
> und Messspitze an einen anderen "Massepunkt" des Aufbaus. Dann siehst
> man, ob da suf der Masse noch was rumkrebst.
Habe ich bereits gemacht. Da war irgendetwas um 10-20 mV. Ich habe 
allerdings keine Massefeder, sondern Krokodil benutzt. Insofern 
vielleicht nur Radio empfangen.

Lothar M. schrieb:
> Aber du weißt nicht, ob es genau bei diesem Taktimpuls schief ging und
> auf welche Weise. Und es ist halt einfach so, dass das Auslesen des
> ID-Registers vom Hersteller als probates Mittel angepriesen wird.

Das Bild ID_Register.png ist das Auslesen des ID-Registers.

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


Lesenswert?

Tycho B. schrieb:
> Das Bild ID_Register.png ist das Auslesen des ID-Registers.
Ja, das sieht mitten im 2. Byte schon arg kurios aus.
Und dann wäre jetz mal interessant, ob immer die selbe falsche Antwort 
kommt oder beliebige Variationen davon.

Tycho B. schrieb:
> Es gibt dedizierte ICs, die SPI zu differentiell übersetzen und wieder
> zurück, habe schon gefunden als letzten Ausweg.)
Es reicht aus, wenn du das für den Takt machst. Die anderen Signale 
brauchen nur "ausreichend Zeit", dass sie bei der aktiven Takflanke 
einen gültigen Pegel haben.

von Tycho B. (asellus)


Lesenswert?

Lothar M. schrieb:
> Und dann wäre jetz mal interessant, ob immer die selbe falsche Antwort
> kommt oder beliebige Variationen davon.

Immer dieselbe oder 0. Bei 0 denke ich, das der SPI-core da aussteigt.

Lothar M. schrieb:
> Es reicht aus, wenn du das für den Takt machst.

Ja, muss man schauen, ob kumulativer Zeitversatz von MISO gegen CLK am 
uC nicht zu groß wird.

von Peter D. (peda)


Lesenswert?

Wie schon gesagt:

Ich würde am ADC nen kleinen MC (ATtiny2313) setzen und dann über
RS-485 differentiell die Daten zum Haupt-MC senden.
Die UART benutzt eine Mehrfachabtastung zur Störunterdrückung.

Ein andere Möglichkeite wäre noch der LTC6820:
https://www.analog.com/en/products/ltc6820.html#product-overview

SPI ist nunmal nicht für gestörte Umgebungen gedacht.

von F. M. (foxmulder)


Lesenswert?

Darf man fragen welches Scope das ist?
Lecroy sieht man aber welches Modell?
Die Screenshots sehen sehr angenehm aus.

mfg

Beitrag #6626617 wurde von einem Moderator gelöscht.
von Tycho B. (asellus)


Lesenswert?

A. K. schrieb:
> Darf man fragen welches Scope das ist?
> Lecroy sieht man aber welches Modell?
> Die Screenshots sehen sehr angenehm aus.

Das ist HDO6034-MS.

: Bearbeitet durch User
von spiderman (Gast)


Lesenswert?

Tycho B. schrieb:
> Ja. Oder du gleitest.

Dann wußtest Du sicher auch daß man den Wellenwiderstand nicht immer 
ignorieren kann, auch wenn es "nur" um die die Flanken geht. Da kannst 
Du kompensieren soviel Du willst, er schlägt Dir immer ein 
Schnippchen...

Tycho B. schrieb:
> Falk B. schrieb:
>
>> Das MINIMUM ist ein RC-Filter

...entweder die Flanken sind zu flach oder unsauber. Da machst Du 
garnichts.

von Tycho B. (asellus)


Lesenswert?

spiderman schrieb:
> Dann wußtest Du sicher auch daß man den Wellenwiderstand nicht immer
> ignorieren kann, auch wenn es "nur" um die die Flanken geht. Da kannst
> Du kompensieren soviel Du willst, er schlägt Dir immer ein
> Schnippchen...

Wieso ignorieren? Ich habe doch serielle Widerstände von Anfang an als 
Terminierung eingebaut. Es ist aber ein gekoppeltes System mit zwei 
verschiedenen Wellenwiderständen, da tauchen Mehrfachreflektionen auf. 
Was man dagegen macht und ob es überhaupt möglich ist, ist hier die 
Frage. Also für mich)

spiderman schrieb:
> entweder die Flanken sind zu flach oder unsauber. Da machst Du
> garnichts.

Mit Schmitt-Trigger könnte man die Steilhet und Unsauberkeit verbessern.

von jo mei (Gast)


Lesenswert?

Tycho B. schrieb:
> Es ist aber ein gekoppeltes System mit zwei
> verschiedenen Wellenwiderständen, da tauchen Mehrfachreflektionen auf.
> Was man dagegen macht und ob es überhaupt möglich ist, ist hier die
> Frage.

Wenn du es dir leisten kannst (Clock Flanke vs Setup Time) füge
in die Leitung an den Stellen wo ein Impedanz-Sprung stattfindet,
einen schnellen Buffer mit Längsterminierung ein. Vielleicht
genügt es schon, eine, die "schlimmste" Stossstelle zu puffern,
damit die effektive Leitungslänge (gilt ja nur vom Buffer bis zum
Signal-Empfänger) zu verkürzen und damit die Reflexionen zu mindern.

Mit diesem Vorgehen schafft man es natürlich nicht das von mir
vermutete Störsignal durch Kratzen des Schleifers auszumerzen.
Hier könnte versuchshalber je ein 74xx14 Schmitt-Trigger) vor und
hinter dem Schleifer dienen falls die Verzögerungszeiten nicht zu
gross werden. Ausprobieren würde ich das auf jeden Fall, auch wenn
ich in einem vorangegangenen Beitrag eher nicht begeistert darüber
gesprochen habe.

von Falk B. (falk)


Lesenswert?

Tycho B. schrieb:
> Mit Schmitt-Trigger könnte man die Steilhet und Unsauberkeit verbessern.

Dann TU ES! Schalte einen 74HC14 vor deinen Takteingang und teste! Aber 
mach die 470 Ohm Serienwidertstände raus. Teste erstmal mit 33 Ohm oder 
so. Entkoppelkondensator für den 74HC14 nicht vergessen! Ach so, der 
74HC14 invertiert, also musst du im AVR einen anderen SPI-Mode 
einstellen (SCK invertieren).

Wenn das nicht reicht, dann vielleicht noch einen RC-Tiefpass vor den 
74HC14 mit vielleicht 100Ohm + 220pF.

von jo mei (Gast)


Lesenswert?

Falk B. schrieb:
> Ach so, der
> 74HC14 invertiert, also musst du im AVR einen anderen SPI-Mode
> einstellen

Oder eben zwei hintereinander verwenden. Üblicherweise hat man
ja bei SPI etwa eine knappe halbe Periode des Clock Zyklus
Zeit für Delays.

von Tycho B. (asellus)


Lesenswert?

jo mei schrieb:
> Wenn du es dir leisten kannst (Clock Flanke vs Setup Time) füge
> in die Leitung an den Stellen wo ein Impedanz-Sprung stattfindet,
> einen schnellen Buffer mit Längsterminierung ein.

Das ist echt eine gute Idee! Anstelle DSUB-15-Stecker aufs 
Flachbandkabel zu crimpen, mache ich eine kleine Platine mit 
DSUB-Stecker fest verlötet und etwas Elektronik. Damit hab ich an der 
Stelle des Impedanzsprunges die Möglichkeit, die Impedanzunterschiede 
jeweils unterschiedlich zu behandeln, mit der Möglichkeit, noch 74HC14 
o.Ä. einzusetzen.

Falk B. schrieb:
> Dann TU ES! Schalte einen 74HC14 vor deinen Takteingang und teste!

Die Lösung von jo mei ist ähnlich dem, was du vorschlägst, für mich aber 
eleganter, weil ich platzmäßig auf der ADC-Platine sehr eingeschränkt 
bin. Außerdem adressiert sie meiner Meinung nach genau das Problem - den 
Impedanzsprung zwischendrin.

Danke an Alle. Ich versuche das nun umzusetzen.

von Äxl (Gast)


Lesenswert?

jo mei schrieb:
> Falk B. schrieb:
>
>> Ach so, der
>> 74HC14 invertiert, also musst du im AVR einen anderen SPI-Mode
>> einstellen
>
> Oder eben zwei hintereinander verwenden. Üblicherweise hat man
> ja bei SPI etwa eine knappe halbe Periode des Clock Zyklus
> Zeit für Delays.

Und genau deswegen funktionieren viele Schaltungen auch anscheinend. 
Eben wegen der garantierten Datenhaltezeit auch im falschen SPI-Mode.
Ich hab interessiert mitgelesen und auch mitbekommen, das das schon 
weiter oben ein Thema war.
Man sollte sich das unbedingt noch mal ansehen.
RC-Filter und schmitt-trigger wurden auch schon genannt. Auch hier kann 
man mit geeignet unterschiedlichen Zeitkonstanten den Takt evtl. ein 
wenig dorthin "schieben", dass eine sichere Datenübernahme gewährleistet 
ist.
Ich würde wahrscheinlich am Atmega an den Clk und Mosi pins npn/pnp 
emitterfolger oder andere Treiber "zwischenbasteln" und die Leitungen 
brutal parallel und seriell terminieren. Und am anderen Ende wieder 
entsprechend aufbereiten.
Einen tiny am ADC und differentielle Übetragung via UART wurde ja auch 
schon vorgeschlagen, das wäre für mich im jetztigen Projektstatus schon 
zu spät.

von Falk B. (falk)


Lesenswert?

Äxl schrieb:
> Ich würde wahrscheinlich am Atmega an den Clk und Mosi pins npn/pnp
> emitterfolger oder andere Treiber "zwischenbasteln"

Du hast schon das richtige Wort verwendet, die Gänsefüsschen sind nicht 
nötig. NPN/PNP Emitterfolger sind Mumpitz, ein normales CMOS-Gatter ist 
deutlich besser, weil von Profis gebaut. Aber das braucht man nicht, 
denn der AVR als Sender ist das auch, und der hat kräftige Ausgänge.

> und die Leitungen
> brutal parallel und seriell terminieren.

Jaja, immer feste druffff! Mann O Mann! Schon mal von einer angemessenen 
Reaktion auf ein Problem gehört? (Aber das ist ja anscheinend out, wie 
man landauf landab täglich beobachten "darf");

> Und am anderen Ende wieder
> entsprechend aufbereiten.

Beitrag "Re: Skurriles Problem mit BS170 Mosfets"

Wenn man es richtig macht (tm), ist das gar nicht so "brutal", eher 
CLEVER und elegant!

von Äxl (Gast)


Lesenswert?

Falk B. schrieb:
> Jaja, immer feste druffff! Mann O Mann! Schon mal von einer angemessenen
> Reaktion auf ein Problem gehört? (Aber das ist ja anscheinend out, wie
> man landauf landab täglich beobachten "darf");

Prinzipiell pflichte Ich Dir natürlich bei.
Ich hab das setup aber nicht hier am Platz und mit "feste Druff" ist die 
Chance in der jetzigen Situation hoch, rechtzeitig fertig zu werden.
Ich kann ja schlecht hinfahren, und mir das ansehen und selbst eine 
Lösung erarbeiten.
Zum Atmega und seinen Ausgängen: die taugen sicher, ne LED mit 20mA ein 
oder auszuschalten, aber lange nicht, um ne leitungskapazität in 
vorliegender Größenordnung normgerecht zu schalten.
Wie auch immer: weitermachen, wollte nur meine Gedanken zum Thema 
darlegen.

von jo mei (Gast)


Lesenswert?

Tycho B. schrieb:
> Danke an Alle. Ich versuche das nun umzusetzen.

Da sind wir aber auch gespannt was rauskommt.
Heisst für dich: verpflichtender Bericht! ;-)

Darfst auch gerne mal ein Bildchen zeigen damit wir uns
besser vorstellen können wie das physikalisch aussieht.

von spiderman (Gast)


Lesenswert?

Tycho B. schrieb:
> Wieso ignorieren? Ich habe doch serielle Widerstände von Anfang an als
> Terminierung eingebaut.

Also verdrängt.

Tycho B. schrieb:
> Danke an Alle. Ich versuche das nun umzusetzen.

Das erschlagen des Wellenwiderstands mit möglichst viel Hardware erzeugt 
oft einen Rattenschwanz anderer, noch undurchsichtigerer Probleme.

Tycho B. schrieb:
> die Schleifringe haben Koax-Kabel, wahrscheinlich 50 Ohm. Flachbandkabel
> hat 120-130 Ohm

Du schaltest einen 75 Ohm und einen 50 Ohm Widerstand in Reihe und daran 
kommt die 125 Ohm Leitung. An den 50 Ohm Widerstand kommt die 50 Ohm 
Leitung. Das gibt natürlich einen Amplitudenverlust. Der läßt sich aber 
leichter in den Griff kriegen als Reflektionen.

von jo mei (Gast)


Lesenswert?

spiderman schrieb:
> Das erschlagen des Wellenwiderstands mit möglichst viel Hardware erzeugt
> oft einen Rattenschwanz anderer, noch undurchsichtigerer Probleme.

Ich sehe da keine "möglichst viel Hardware" wenn man hier zwei
Schmitt-Trigger Buffer mit Längsterminierung einführt.

Dann führe das doch mal aus mit dem Rattenschwanz und den undurch-
sichtigen Problemen. Einfach mal paar Schlagworte hinklatschen die
alles bedeuten können hilft da nichts.

spiderman schrieb:
> Das gibt natürlich einen Amplitudenverlust. Der läßt sich aber
> leichter in den Griff kriegen als Reflektionen.

Erzeugt oft einen Rattenschwanz an Hardware um den Pegel wieder
zu gewinnen. Ganz zu schweigen vom Delay das zusätzlich ein-
geführt wird.

von Tycho B. (asellus)


Lesenswert?

"Idealerweise sollte man bei Flachbandkabeln jede 2. Ader auf Masse 
legen und auf BEIDEN Seiten der Verbindung am Stecker mit der Masse der 
Platine verbunden werden."

Es existiert auch die Meinung, dass dadurch mehrere Ground loops 
geschaffen werden. Deswegen sollte man nur auf einer Seite auf Masse 
legen. Hat das jemand mal untersucht?

von Falk B. (falk)


Lesenswert?

Tycho B. schrieb:
> Es existiert auch die Meinung, dass dadurch mehrere Ground loops
> geschaffen werden.

Nö.

> Deswegen sollte man nur auf einer Seite auf Masse
> legen.

Funktioniert das aber mit dem Wellenwiderstand und den 
Rückstrompfaden nicht.

> Hat das jemand mal untersucht?

Ausreichend viele Leute.

von spiderman (Gast)


Lesenswert?

jo mei schrieb:
> Dann führe das doch mal aus mit dem Rattenschwanz und den undurch-
> sichtigen Problemen.

Ich sehe das so, daß die unsauberen Flanken die Ursache der Probleme 
sind, die wahrscheinlich durch Reflektionen "verrauscht" werden, wenn 
unser Proband keinen Fehler beim Anschluß des Me§geräts gemacht hat. Er 
hat dann versucht, das durch filtern zu beheben, wobei zu flache Flanken 
herausgekommen sind. Mit einem Schmtt-Trigger hast du zwar steile 
Flanken, läufst aber wieder in das Reflektionsproblem. Der erste 
logische Schritt ist also die Leitungen anständig zu terminieren, oder 
wie siehst Du das?

von jo mei (Gast)


Lesenswert?

spiderman schrieb:
> Mit einem Schmtt-Trigger hast du zwar steile
> Flanken, läufst aber wieder in das Reflektionsproblem. Der erste
> logische Schritt ist also die Leitungen anständig zu terminieren, oder
> wie siehst Du das?

Wenn du meinen Vorschlag (der durch den TO aufgegriffen wurde
und wahrscheinlich umgesetzt wird) gelesen und verstanden
hättest würdest du vielleicht nicht so einen unqualifizierten
Mist daherreden.

von spiderman (Gast)


Lesenswert?

jo mei schrieb:
> Mist daherreden.

Mit dem Schmtt-Trigger ist das wie mit der Bugwelle. Ich hab zwar schon 
Pferde zum kotzen gebracht, aber bisher konnte ich noch keiner Leitung 
das gleiten beibringen.

von Peter D. (peda)


Lesenswert?

Reflexionen kriegt man auch gut mit den langsamen 4000-er 
Schmitt-Triggern unterdrückt, z.B. CD4093, CD40106.

von spiderman (Gast)


Lesenswert?

Laß mich raten: Du bist ein Scherzkeks.

von Tycho B. (asellus)


Lesenswert?

Falk B. schrieb:
> Nö.

:)

Falk B. schrieb:
> Ausreichend viele Leute.

Hier was dazu:
https://www.emcstandards.co.uk/cable-shield-grounded-at-one-end-only

Unten sieht man viele Referenzen, die nur eine Masseanbindung 
vorschlagen. Vielleicht sollte man diesen Punkt im 
Wellenwiderstand-Artikel adressieren.

von Tycho B. (asellus)


Angehängte Dateien:

Lesenswert?

spiderman schrieb:
> Laß mich raten: Du bist ein Scherzkeks.

Warum sind bei stackexchange die Umgangsformen ganz anders? Frage mich 
jedes mal.

Peter D. schrieb:
> Reflexionen kriegt man auch gut mit den langsamen 4000-er
> Schmitt-Triggern unterdrückt, z.B. CD4093, CD40106.

Hallo Peter, ich hab's hier simuliert. Trotz sehr langsamer Flanke, der 
Ausgang schwingt. Langsamer Anstieg hilft, die Amplitude der Schwingung 
zu verringern, aber Reflexionen sind trotzdem da.

von Falk B. (falk)


Lesenswert?

Tycho B. schrieb:
> Falk B. schrieb:
>> Nö.
>
> :)
>
> Falk B. schrieb:
>> Ausreichend viele Leute.
>
> Hier was dazu:
> https://www.emcstandards.co.uk/cable-shield-grounded-at-one-end-only
>
> Unten sieht man viele Referenzen, die nur eine Masseanbindung
> vorschlagen. Vielleicht sollte man diesen Punkt im
> Wellenwiderstand-Artikel adressieren.

Hast DU den Arttikel mal gelesen? Und WIRKLICH verstanden? Eher nicht.

Im dem Artikel geht es um eine SCHIRMUNG und wo und wie diese mit Masse 
(GND) verbunden wird.

" The SPG shield is therefore not a shield at all. Shielding effects are 
orders of magnitude below these curves."

SPG = Single point ground (shields)

"The following is litany of very bad advice from otherwise reputable 
sources:"

Der Artikel sagt, das man den Schirm beidseitig mit GND verbinden MUSS, 
um gute Ergebnisse zu erzielen. Das Thema Masseführung und 
Wellenwiderstand ist davon in 1. Näherung unabhängig.

Einfaches Beispiel aus der schon älteren Comuptergeschichte. IDE-Kabel 
haben 40 Adern, davon sind 7 Masse. Für höhere Übertragungsraten nimmt 
man 80pol Kabel mit halben Rastermaß und legt jede 2. auf Masse, an 
BEIDEN Steckern.

https://de.wikipedia.org/wiki/ATA/ATAPI#Steckerbelegung

von Tycho B. (asellus)


Lesenswert?

Genau das meine ich. DAS sollte man im Artikel auch irgendwo 
unterbringen.
U.A. den Unterschied zw. Schirmung und Impedanz.

Auf einer homogenen, konstanten Impedanz kann sich die EM-Mode ungestört 
zwischen Signal- und Rückpfad ausbilden. Flächen/Abstände/Material 
zwischen den Beiden ergeben den Impedanzwert. Wenn allerdings der 
Rückpfad eine Unterbrechung hat, dann nimmt der Rückstrom einen anderen 
Verlauf und die Impedanz ist eine ganz andere und auch inhomogen dazu. 
Wobei für richtig hochfrequente Signale (100GHz oder so) ist so eine 
Unterbrechung nicht wirklich relevant m.M.n.

Es ist aber auch so, dass der Rückpfad auf einem Flachbandkabel auch 
eine Schirmung ist) Deswegen hast du in Näherung unabhängig geschrieben.

: Bearbeitet durch User
von Peter D. (peda)


Lesenswert?

Tycho B. schrieb:
> Trotz sehr langsamer Flanke, der
> Ausgang schwingt.

Der Schmitt-Trigger gehört natürlich hinter die Leitung, d.h. direkt an 
den Eingangspin des ICs. Die Schmitt-Trigger sind nicht nur langsam, sie 
haben auch eine hohe Hysterese (~1V), die die Reflexionen erstmal 
übersteigen müssen. Dein Bild zeigt nur ~100mV, also kein Problem.

von Falk B. (falk)


Lesenswert?

Tycho B. schrieb:
> Es ist aber auch so, dass der Rückpfad auf einem Flachbandkabel auch
> eine Schirmung ist) Deswegen hast du in Näherung unabhängig geschrieben.

Hmm, mal ne dumme Frage. Wenn deine Schleifringe Koaxialanschlüsse am 
Eingang haben (welche? BNC? SMB?), sollten die dann nicht auch 
Koaxialanschlüsse am Ausgang haben? Wenn ja, sollte dann nicht auch die 
Masse dieser Koaxialanschlüsse hf-gerecht über diese geführt sein?

Sind die Masse der Eingänge miteinander verbunden? Und die der Ausgänge?
Zeig mal ein Bild.
Ich vermute, daß du einen Fehler gemacht hast, indem du Masse als 
einzelnens Signal über einen Schleifkontakt geführt hast.

von Tycho B. (asellus)


Angehängte Dateien:

Lesenswert?

Falk B. schrieb:
> Hmm, mal ne dumme Frage. Wenn deine Schleifringe Koaxialanschlüsse am
> Eingang haben (welche? BNC? SMB?), sollten die dann nicht auch
> Koaxialanschlüsse am Ausgang haben? Wenn ja, sollte dann nicht auch die
> Masse dieser Koaxialanschlüsse hf-gerecht über diese geführt sein?

SMB. Die Shields werden auf den Pin 8 geführt und gehen dann dort durch 
die Schleifringe.
https://www.mikrocontroller.net/attachment/497387/Schleifringe.png

Falk B. schrieb:
> Ich vermute, daß du einen Fehler gemacht hast, indem du Masse als
> einzelnens Signal über einen Schleifkontakt geführt hast.

Genau das habe ich gemacht, siehe Anhänge. Auf der Rotationsseite ist 
jede zweite Leitung mit GND verbunden, auch die Shield-Verbinung (Pin 8, 
an den sind alle shields intern angelötet und er wird über die Ringe 
geführt) ist an GND angeschlossen. Die dedizierte GND-Verbindung ist 
aber Pin 9.

Auf der Gehäuseseite ist keine davon mit GND verbunden. Die einzige 
GND-Verbindung ist Pin 9

: Bearbeitet durch User
von Falk B. (falk)


Lesenswert?

Tycho B. schrieb:
> Auf der Gehäuseseite ist keine davon mit GND verbunden. Die einzige
> GND-Verbindung ist Pin 9

Hmm. Ich fragt aber auch nach eine echten Bild vom realen Aufbau.
Kann es sein, daß dieser Schleifring 15polig ist? Wenn ja, sollte 
(muss?) man auch auf der festen Seite die entprechendend Pins auf Masse 
legen.

Und wie ist das mit deinem S-DUB15 Stecker zu verstehen? Hast du den 
selber ergänzt oder ist der fest mit dem Schleifring verbunden? Wie 
kommen da SMB-Stecker ins Spiel. Verwirrend . . .

von Falk B. (falk)


Lesenswert?

Ahhhhh, jetzt verstehe ich auch die Darstellung der Schleifringsignale! 
Der HAT 15 Pole! und die unteren 10 sind auch geschirmt! Und vor allem 
Pin 8 muss auf deiner Gehäuseseite mit GND verbunden werden, das ist die 
Schirmung! Das hatten wir ja oben! Beidseitiger Anschluß an GND!

von Tycho B. (asellus)


Lesenswert?

Ja, geschirmt sind sie alle. Das sind diese kleinen schwarzen Ovale. 
Schwarze Kreise sind die eigentlichen Schleifringe. Im unteren Bereich 
sind 7 twisted pairs geschirmt.

Es sind zwei DSUB15, also 30-polig. Ich benutze aber nur einen, den ohne 
twisted pairs.

: Bearbeitet durch User
von Tycho B. (asellus)


Lesenswert?

Falk B. schrieb:
> Und wie ist das mit deinem S-DUB15 Stecker zu verstehen? Hast du den
> selber ergänzt oder ist der fest mit dem Schleifring verbunden? Wie
> kommen da SMB-Stecker ins Spiel. Verwirrend . . .

Wenn man die Drehplatte abnimmt, dann sieht man einige dünne 
Koax-Leitungen. Sie verschwinden im Inneren in einer dicken 
Thermoisolierung. Sie sind am diesseitigen Ende abisoliert und mit zwei 
DSUB15-Buchsen verlötet. Beide Buchsen sind auf der Drehplatte montiert 
und können für Signalführung verwendet werden. Schirme sind 
zusammengefasst und gehen auch an den DSUB auf Pin 8 und einen Koax, der 
sie zum Schleifring führt.(Ich kann aktuell kein Bild machen, sorry)

Von außen sind es also zwei DSUB15-Buchsen auf einem Drehteller. Ich 
stecke da aktuell einen DSUB15-Stecker mit gecrimpten Flachbandkabel 
ein. Auf der anderen Seite des Flachbandkabels sind die Adern kurz 
abisoliert und direkt mit Landepads auf einem PCB verlötet.

von Tycho B. (asellus)


Angehängte Dateien:

Lesenswert?

So habe ich mir das vorgestellt. Wobei ich die Tiefpässe ersmal nicht 
bestücke und die Rs der Tiefpässe überbrücken werde. Die Platte liegt an 
der Stelle des Impedanzsprunges, also zwischen Koax und Flachbandkabel. 
Das Flachbandkabel löte ich auf dieser Seite auch direkt aufs PCB. In 
Richtung Schleifringe gibt es einen DSUB15-Stecker fest verlötet.

von Peter D. (peda)


Lesenswert?

Tycho B. schrieb:
> So habe ich mir das vorgestellt.

Kann was bringen, muß aber nicht.
Wie gesagt, die Schmitt-Trigger gehören direkt an alle Eingänge des ADC.

von Falk B. (falk)


Lesenswert?

Tycho B. schrieb:

Tycho B. schrieb:
> Von außen sind es also zwei DSUB15-Buchsen auf einem Drehteller. Ich
> stecke da aktuell einen DSUB15-Stecker mit gecrimpten Flachbandkabel
> ein. Auf der anderen Seite des Flachbandkabels sind die Adern kurz
> abisoliert und direkt mit Landepads auf einem PCB verlötet.

Warum nicht einen gescheiten Stecker verwenden? Genau dafür sind 
Flachbandkabel erfunden worden.

von Tycho B. (asellus)


Lesenswert?

Peter D. schrieb:
> Kann was bringen, muß aber nicht.
> Wie gesagt, die Schmitt-Trigger gehören direkt an alle Eingänge des ADC.

Die ADC-Platine ist schon fertig und ziemlich dicht bestückt. Die 
nochmal zu bestellen, den Prototypen, den ich eigentlich untersuchen 
möchte, auslöten und wieder verlöten... Ich versuche es erstmal so.

Wenn's nicht klappt, dann nehme ich die Impedanzanpassung von Spiderman 
(überbrückbar) und am ADC kommt dann der Schmitt-Trigger, der die 
Spannungspegel wieder höher macht. Dazu müssten die on/off-Level des 
Triggers relativ klein sein. Keine Ahnung, ob es derartige ICs fertig 
gibt.

spiderman schrieb:
> Du schaltest einen 75 Ohm und einen 50 Ohm Widerstand in Reihe und daran
> kommt die 125 Ohm Leitung. An den 50 Ohm Widerstand kommt die 50 Ohm
> Leitung. Das gibt natürlich einen Amplitudenverlust. Der läßt sich aber
> leichter in den Griff kriegen als Reflektionen.

Wobei die Signale unidirektional sind. In die Richtung steigender 
Impedanz ist die passive Anpassung relativ einfach ohne diesen 
Spannungsteiler möglich. Simulation zeigt auch gute Ergebnisse ohne 
Reflexionen. Aber ich habe es nicht geschafft in die andere Richtung 
irgendetwas passives gescheit zu simulieren.

von Falk B. (falk)


Lesenswert?

Tycho B. schrieb:

Tycho B. schrieb:
> Von außen sind es also zwei DSUB15-Buchsen auf einem Drehteller. Ich
> stecke da aktuell einen DSUB15-Stecker mit gecrimpten Flachbandkabel
> ein. Auf der anderen Seite des Flachbandkabels sind die Adern kurz
> abisoliert und direkt mit Landepads auf einem PCB verlötet.

Warum nicht einen gescheiten Stecker verwenden? Genau dafür sind 
Flachbandkabel erfunden worden. Und auch bei dieser Beschreibung ist es 
wieder klar, daß deine Masseführung eher schlecht ist, eben weil nur 
eine einzige Ader zwischen DSUB und Flachbandkabel die Masse führt! 
ÄNDERN!

von Tycho B. (asellus)


Lesenswert?

Falk B. schrieb:
> Warum nicht einen gescheiten Stecker verwenden? Genau dafür sind
> Flachbandkabel erfunden worden.

Er nimmt viel Platz weg, Buchse ist through hole und es ist eine 
zusätzliche Fehlerquelle, weil in der Klimakammer viel Feuchtigkeit 
anfällt. Wenn die Pins nicht vergoldet sind, dann sind sie schnell 
korrodiert.

Falk B. schrieb:
> Und auch bei dieser Beschreibung ist es
> wieder klar, daß deine Masseführung eher schlecht ist, eben weil nur
> eine einzige Ader zwischen DSUB und Flachbandkabel die Masse führt!
> ÄNDERN!

Ja, das ist mir jetzt klar. Deswegen nochmal mein Hinweis an den 
Wellenwiderstand-Artikel. Beim designen der Schaltung habe ich beide 
Möglichkeiten gefunden, einseitige oder zweiseitige Massenanbindung. 
Beide haben ihre Argumente. Ich konnte nicht wirklich feststellen, was 
nun für meinen Fall richtig ist und habe mich für die einseitige 
Anbindung entschieden.

: Bearbeitet durch User
von Tycho B. (asellus)


Angehängte Dateien:

Lesenswert?

spiderman schrieb:
> Du schaltest einen 75 Ohm und einen 50 Ohm Widerstand in Reihe und daran
> kommt die 125 Ohm Leitung. An den 50 Ohm Widerstand kommt die 50 Ohm
> Leitung. Das gibt natürlich einen Amplitudenverlust. Der läßt sich aber
> leichter in den Griff kriegen als Reflektionen.

@spiderman
Ich bekomme bei dieser Impedanzanpassung Reflexionen am 500k-Ausgang.

von Falk B. (falk)


Lesenswert?

Tycho B. schrieb:
> Er nimmt viel Platz weg, Buchse ist through hole und es ist eine
> zusätzliche Fehlerquelle, weil in der Klimakammer viel Feuchtigkeit
> anfällt. Wenn die Pins nicht vergoldet sind, dann sind sie schnell
> korrodiert.

Es gibt Micromatch, die sind sehr kompakt. Und die gibt es AFAIK auch 
vergoldet.

von Tycho B. (asellus)


Lesenswert?

Falk B. schrieb:
> Es gibt Micromatch, die sind sehr kompakt. Und die gibt es AFAIK auch
> vergoldet.

Ok, aber was ist der Vorteil gegenüber fester Verlötung? Nur die 
Handhabung wahrscheinlich?

: Bearbeitet durch User
von Falk B. (falk)


Lesenswert?

Tycho B. schrieb:
> Ich konnte nicht wirklich feststellen, was
> nun für meinen Fall richtig ist und habe mich für die einseitige
> Anbindung entschieden.

FAIL! 8-(

von Falk B. (falk)


Lesenswert?

Tycho B. schrieb:
> Ok, aber was ist der Vorteil gegenüber fester Verlötung? Nur die
> Handhabung wahrscheinlich?

Es ist professionell, im Extremfall auch besser in Bezug auf 
HF-Eigenschaften. Und vor allem ist es EINFACHER und schneller!

: Bearbeitet durch User
von Tycho B. (asellus)


Lesenswert?

Gibt es spezielle "Bauteile" in Eagle, die man später für 
Oszi+Massefeder benutzt? Ich habe schon spezielle Buchsen für Tastköpfe 
gesehen, die meine ich nicht.

Man könnte z.B. in eine Signalleitung ein Via mit 0.5mm drill hole 
einsetzen und in 5mm Abstand ein weiteres Via zur Massefläche. Ist sowas 
praktikabel?

Wie macht man das typischerweise?

von Falk B. (falk)


Lesenswert?

Tycho B. schrieb:
> Gibt es spezielle "Bauteile" in Eagle, die man später für
> Oszi+Massefeder benutzt?

Ich kenne keine.

> Man könnte z.B. in eine Signalleitung ein Via mit 0.5mm drill hole
> einsetzen und in 5mm Abstand ein weiteres Via zur Massefläche. Ist sowas
> praktikabel?

Ja, so mach ich das auch. Kann man ja selber schnell als Bauteil 
anlegen.

von geb (Gast)


Lesenswert?

Allerlei interessante Vorschläge für das Problem gibt es hier.
Die einfachste Sache wurde aber noch nicht erwähnt, zumindest hab ich es 
beim überfliegen des treads nicht gelesen.
Würde die Signalleitungen alle einmal mit einem Kondensator direkt am 
Eingang des jeweiligen Signals gegen GND schließen. Wert so um 100pF. 
Damit sollte sich noch etwa 1Mbit/s ausgehen. Wenn man ängstlich ist, 
kann man die Flanken noch mit einem HC14 aufpäppeln, aber bitte den ganz 
nah am SPI device.

Grüsse

von spiderman (Gast)


Lesenswert?

Tycho B. schrieb:
> @spiderman
> Ich bekomme bei dieser Impedanzanpassung Reflexionen am 500k-Ausgang.

Natürlich. 500k sind weder 50 noch 120-130.

von spiderman (Gast)


Lesenswert?

P.S.:

spiderman schrieb:
> Pferde zum kotzen gebracht

Bei einer ganzen Herde ist mir das bisher noch nicht gelungen.

von spiderman (Gast)


Lesenswert?

P.P.S.:

Das muß wohl an den einschneidenden Wissenslücken liegen, die übers 
Internet verbreitet werden.

von spiderman (Gast)


Lesenswert?

P.P.P.S.:

Dagegen ist Corona ein leichter Heuschnupfen

von Tycho B. (asellus)


Lesenswert?

spiderman schrieb:
> Natürlich. 500k sind weder 50 noch 120-130.

50 oder 130 Ohm parallel am Ausgang dämpfen die Schwingung nur, in der 
Simulation ist sie aber trotzdem da.

Hast du vielleich irgendeine Quelle zu deiner Lösung? Sie klingt 
plausibel, aber die Simulation zeigt eine Fehlanpassung.

geb schrieb:
> Allerlei interessante Vorschläge für das Problem gibt es hier.
> Die einfachste Sache wurde aber noch nicht erwähnt, zumindest hab ich es
> beim überfliegen des treads nicht gelesen.
> Würde die Signalleitungen alle einmal mit einem Kondensator direkt am
> Eingang des jeweiligen Signals gegen GND schließen. Wert so um 100pF.
> Damit sollte sich noch etwa 1Mbit/s ausgehen. Wenn man ängstlich ist,
> kann man die Flanken noch mit einem HC14 aufpäppeln, aber bitte den ganz
> nah am SPI device.
>
> Grüsse

Doch, wurde schon erwähnt.

: Bearbeitet durch User
von Tycho B. (asellus)


Lesenswert?

Spricht eigentlich etwas dagegen, den 74HC14 gegen 74LVC1G17 
auszutauschen? Ein Trigger in einem IC, nichtinvertierend, stärker und 
schneller.

von spiderman (Gast)


Lesenswert?

Tycho B. schrieb:
> 50 oder 130 Ohm parallel am Ausgang dämpfen die Schwingung nur, in der
> Simulation ist sie aber trotzdem da.

Jede Leitung muß an BEIDEN Enden ihren Wellenwiderstand "sehen".

Tycho B. schrieb:
> Hast du vielleich irgendeine Quelle zu deiner Lösung? Sie klingt
> plausibel, aber die Simulation zeigt eine Fehlanpassung.

Schau Dich mal bei den Funkern um.

von Falk B. (falk)


Lesenswert?

spiderman schrieb:
> Jede Leitung muß an BEIDEN Enden ihren Wellenwiderstand "sehen".

Nö, das ist nur der optimale Fall. Bei Serienterminierung hat der 
Eingang keine Terminierung.

von Tycho B. (asellus)


Angehängte Dateien:

Lesenswert?

spiderman schrieb:
> Jede Leitung muß an BEIDEN Enden ihren Wellenwiderstand "sehen".

Immer noch nicht angepasst. Auch ohne 500k und 50 Ohm ganz links springt 
die Flanke. Und was soll man mit 0,65 V als Pegel machen?

: Bearbeitet durch User
von spiderman (Gast)


Lesenswert?

Spannungsquellen werden HF-mäßig als Kurzschluss betrachtet.

von spiderman (Gast)


Lesenswert?

Falk B. schrieb:
> Nö, das ist nur der optimale Fall. Bei Serienterminierung hat der
> Eingang keine Terminierung.

Ja gut, da hat jo mei doch Recht gehabt. Ich hab mich auch schon gefragt 
wieso der sich nich mehr meldet.

(Aber das muß doch irgendwie einfacher gehen 🐽)

von spidermääääääään (Gast)


Lesenswert?

P.S.:

Trotz Alledem haben wir eines aus meinem Malör gelernt: Durch einfaches 
optimieren der Terminierung kann man den Störspannungsabstand (das 
Fasenrauschen =:>) vergrößern (bzw. verringern). Was auch auffällt ist 
daß man für eine optimale Performance auf eine astreine 
Spannungsversorgung achten sollte.🐽

von Tycho B. (asellus)


Lesenswert?

spiderman schrieb:
> Spannungsquellen werden HF-mäßig als Kurzschluss betrachtet.

Auch ohne 50 Ohm Innenwiderstand kommt dasselbe raus.

: Bearbeitet durch User
von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

@spiderman

Beteiligung an einer Diskussion unter verschiedenen Namen ist nicht 
erlaubt. Bitte beachten.

von Tycho B. (asellus)


Angehängte Dateien:

Lesenswert?

Hallo Allerseits,

ich habe das PCB zwischen Schleifringen und Flachbandkabel mit 
nichtinvertierenden Schmitt-Triggern aufgebaut, quasi identisch wie 
hier:
https://www.mikrocontroller.net/attachment/497849/Impedanzanpassung.png
Tiefpässe sind nicht bestückt, die entsprechenden Widerstnde sind 
überbrückt.

Nun läuft die Datenübertragung ohne Probleme, auch ohne CS toggling. 
Getestet über 10 minuten bei 100 dps Rotationsgeschwindigkeit, 
kontinuierlich 2.5 kSPS (x4 Bytes), SPI 250kBaud.

Die Ursachen sind wohl
- durch den Aufbau bedingt verschliffene Flanken mit geringer slew rate. 
(Dazu gibt es Application Notes, die dieses Problem explizit benennen 
und angehen)

- der im ADC eingebaute miserable Schmitt-Trigger
- die Highspeed-SPI-Fähigkeit moderner ICs. Dadurch werden kleine 
Schwankungen auf der langsam steigenden Flanke als Pulse interpretiert.
- impedance mismatch, Reflexionen können eben diese kleine Schwankungen 
verursachen

Vielen Dank an alle und explizit an Falk und jo mei, die mich auf die zu 
langen Flanken/Impedanzsprung aufmerksam gemacht haben.

von Falk B. (falk)


Lesenswert?

Tycho B. schrieb:

> ich habe das PCB zwischen Schleifringen und Flachbandkabel mit
> nichtinvertierenden Schmitt-Triggern aufgebaut, quasi identisch wie
> hier:

Die sind aber invertierend.

> Nun läuft die Datenübertragung ohne Probleme, auch ohne CS toggling.

Herzlichen Glückwunsch. Ich würde aber dennoch dringend empfehlen, das 
CS zu benutzen.

> Getestet über 10 minuten bei 100 dps Rotationsgeschwindigkeit,

dps?

von Tycho B. (asellus)


Lesenswert?

Falk B. schrieb:
> Die sind aber invertierend.
Ich habe 74LVC1G17Q benutzt.

Falk B. schrieb:
> dps?

Degrees Per Second

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.