Guten Tag, ich arbeite momentan mit einem digitalen Potentiometer (AD5292), welcher über SPI angesteuert wird. Nun wäre es wünschenswert wenn ich diese Ansteuerung über eine längere Leitung (ca 3,5m) erreichen könnte. Leider ist mir dies bisher noch nicht gelungen, daher würde ich mich freuen wenn man mir hier Tipps dafür geben könnte. Die Problematik besteht darin, dass Pakete nicht richtig erkannt werden. Dies ist wahrscheinlich auf "ringing" zurückzuführen. Was ich bereits versucht habe um dies zu beheben: - Wellenwiderstand (Vorwiderstand) - Tiefpassfilter (passiv, erste Ordnung) - Tiefpassfilter (aktiv(OPA), erste Ordnung) - erhöhung der Spannung zur Übertragung (über OPA) Mir ist bewusst dass SPI ursprünglich nur zur Übertragung auf Platinenebene gedacht war, aber ich habe bezüglich des digitalen Potentiometers keine weitere Auswahl, außerdem sollte diese Übertragungslänge laut Quellen in Internet möglich sein. Mir ist auch die Möglichkeit einer Übertragung über eine andere Schnittstelle (zb USART) bewusst, allerdings bräuchte ich dann wohl einen weiteren µC auf Empfängerseite, was wenn möglich vermieden sein will. Es handelt sich zudem nur um Sendeoperationen auf SPI, daher sollten Timingverschiebungen keine Rolle spielen. Die Frequenz beträgt 8KHz. Erfolg hatte ich bisher lediglich mit bis zu 2,5m Länge und einem anschließenden Tiefpass. Überraschenderweise hat hierbei der Wellenwiderstand am wenigsten geholfen, obwohl dies nach meiner Information am wichtigsten schien. Falls erwünscht kann ich selbstversändlich noch genauere Details zu meinem Aufbau geben, sowie Oszilloskop-Bilder, aber ich würde mich schon über allgemeine Tipps zu diesem Thema freuen. Danke im Voraus A.C.
:
Bearbeitet durch User
Wer sendet die SPI Signale. Kannst Du die Slew Rate der Ausgaenge heruntersetzen? Wieviele Masseleitungen hast Du? Bei der Masse hilft viel meist auch viel.
Albert C. schrieb: > ich arbeite momentan mit einem digitalen Potentiometer (AD5292), welcher > über SPI angesteuert wird. Nun wäre es wünschenswert wenn ich diese > Ansteuerung über eine längere Leitung (ca 3,5m) erreichen könnte. Ich würde die Signale auf differentiell umsetzen, also 3 RS485- bzw. RS422-Transmitter hinter die Signalquelle und 3 entsprechende Receiver vor den Empfänger. Grüßle, Volker.
Mach doch mal bitte ein Bild mit SCK, MOSI und CS an der Empfänger-Seite, vielleicht auch noch VCC dazu. 8kHz ist für SPI ziemlich wenig, macht der Empfänger das überhaupt mit? Das IC läuft mit bis zu 50 MHz Takt und ich habe spontan keinen maximal-Wert gefunden, aber 125000 ns statt der maximal zulässigen 20 ns ist ja quasi auch ein wenig aus der Spezifikation raus. :-) Wäre blöd, wenn da irgendwo Timeouts die StateMachine zurück setzen. Funktioniert das ganze mit 10 cm Leitung? Oder was passiert wenn der Takt auf z.B. 250kHz hoch gedreht ist und wie sehen die Signale dann aus?
@ Albert C. (a_c) >wenn man mir hier Tipps dafür geben könnte. Siehe Wellenwiderstand Beitrag "Re: Skurriles Problem mit BS170 Mosfets" >- Wellenwiderstand (Vorwiderstand) Was GENAU? >- Tiefpassfilter (passiv, erste Ordnung) >- Tiefpassfilter (aktiv(OPA), erste Ordnung) >- erhöhung der Spannung zur Übertragung (über OPA) Alles nicht sinnvoll. >Es handelt sich zudem nur um Sendeoperationen auf SPI, daher sollten >Timingverschiebungen keine Rolle spielen. Die Frequenz beträgt 8KHz. Die Frequenz ist nebansächlich, entscheidend ist die Flankensteilheit. >Erfolg hatte ich bisher lediglich mit bis zu 2,5m Länge und einem >anschließenden Tiefpass. Überraschenderweise hat hierbei der >Wellenwiderstand am wenigsten geholfen, obwohl dies nach meiner >Information am wichtigsten schien. Man kann alles falsch machen. Du musst schon GENAU sagen, was du gemacht hast, siehe Netiquette!
Uwe B. schrieb: > Wer sendet die SPI Signale. Kannst Du die Slew Rate der Ausgaenge > heruntersetzen? Ich sende mit einem RX63N von Renesas. Ich werde gleich mal überprüfen ob ich sie heruntersetzen kann. Uwe B. schrieb: > Wieviele Masseleitungen hast Du? Bei der Masse hilft > viel meist auch viel. Ich bin momentan lediglich auf einem Steckbrett unterwegs. Zugegebenermaßen ist es ein wenig Kabelwust, da ich vier der digPots in einer Daisychain Konfiguration verwende. Massen sind alle miteinander verbunden (µC, digPot und digPot Versorgung/Terminal B) Volker B. schrieb: > RS422-Transmitter hinter die Signalquelle und 3 entsprechende Receiver > vor den Empfänger Danke für den Hinweis, ich werde dies umsetzten falls ich mit meiner Konstellation nicht weiterkommen sollte, aber primär wäre es mir lieber wenn ich es simpler halten könnte. Rudolph schrieb: > Funktioniert das ganze mit 10 cm Leitung? Funktioniert bis zu 2,5m Länge momentan, wenn auch nur mit einem Tiefpassfilter vor dem Empfänger (100Ohm-47pF) Rudolph schrieb: > Mach doch mal bitte ein Bild mit SCK, MOSI und CS an der > Empfänger-Seite, vielleicht auch noch VCC dazu. Ich könnte ziemlich viele Bilder hochladen, deswegen belasse ich es mal nur mit der SCK von 2,5m (funktionierend), 3,5m mit Tiefpass und 3,5m ohne weitere Maßnahmen. Soweit ich es verstehe sollten MOSI und SSL unkritisch sein, nur Zittern in der CLK führt eben zu mehrfachem Lesen eines Wertes. Ich bitte um Korrektur falls ich mir hierbei irre. (Ja ich habe es als Jpg hochgeladen, aber dieses Format nimmt noch den geringsten Platz ein. Leider lässt mich Picoscope keinen eingezoomten Bereich als png speichern, und beim vollständigen erkennt man zu wenig) Falk B. schrieb: >>- Wellenwiderstand (Vorwiderstand) > > Was GENAU? Nun, ich habe versucht die Impendanz des Kabels zu messen und einen dementsprechenden Widerstand am Sender in Reihe zu schalten. Dies war leider nur bis zu 1m Länge hilfreich. Falk B. schrieb: > Man kann alles falsch machen. Du musst schon GENAU sagen, was du gemacht > hast Dann versuche ich dies hier nochmal anzugeben: - RX63N µC als Sender - AD5292 Empfänger. 4 davon in einer Daisy chain Konfiguration, sollte aber keine Rolle spielen, da wenn die CLK korrekt vom ersten gelesen wird die Daten auch korrekt weitergeschickt werden (alle erhalten die selbe CLK). - 3,5m geschirmtes Koaxialkabel - 3,3V Vlogic - 15V Versorgungsspannung für digPot (nur wichtig für den Ausgang desselben) - Laut meiner Messung hatte das Kabel eine Impendanz von 500 Ohm (http://www.afug-info.de/Tipps-Tricks/Impedanz-messen/). Erschien mir aber auch hoch, habe bis zu 50 Ohm probiert, 100Ohm schien am besten. - Alle GNDs sind verbunden. Falls das nicht der Fall ist lassen sich die DigPots überhaupt nicht programmieren. Ich hoffe dass sind alle wichtigen Daten. Wie bereits erwähnt, bis 2,5m wird das Signal zu 100% erkannt unter Verwendung eines Tiefpassfilters am Ende. Falk B. schrieb: > Beitrag "Re: Skurriles Problem mit BS170 Mosfets" Wolltest du mich hierbei auf die Terminatoren hinweisen? Verstehe ich das richtig dass dies die "Parallelterminierung" wäre von der in deinem Link zum Wellenwiderstand die Rede ist? Danke für eure Rückmeldung
Schau mal in die TI App note rein. Das sollte fuer Deinen Fall genau passen. So ein Poti ist ja nix Dynamisches, wie weit kannst Du denn runter mit der Frequenz bei 3.5m?
Albert C. schrieb: > Uwe B. schrieb: >> Wer sendet die SPI Signale. Kannst Du die Slew Rate der Ausgaenge >> heruntersetzen? > > Ich sende mit einem RX63N von Renesas. Ich werde gleich mal überprüfen > ob ich sie heruntersetzen kann. Habe leider bezüglich der Slew-rate keine Einstellmöglichkeit bei der CLK-Generierung gefunden. Mark W. schrieb: > Schau mal in die TI App note rein. Das sollte fuer Deinen Fall genau > passen Habe ich, leider hat mir das nicht zuviel geholfen. Für meinen Fall wäre davon ja nur die Terminierung sowie der RS422 Standart interessant, ersteres hat ja nicht geholfen und letzteres würde ich ja zunächst lieber außen vor lassen (mir ist bewusst dass es möglicherweise dennoch darauf hinauslaufen wird). Mark W. schrieb: > So ein Poti ist ja nix Dynamisches, wie weit kannst Du denn runter mit > der Frequenz bei 3.5m? Meinst du wie weit ich mit dem µC runter komme oder wie weit "unten" der digPot es noch annimmt(bei kurzem Kabel)? Ich habe auch mal beim Support angefragt, und bekam uA die Information ich könnte es mit einem Schmitt-Trigger versuchen. Dies werde ich nun auch tun.
@ Albert C. (a_c) >Nun, ich habe versucht die Impendanz des Kabels zu messen Wie hast du denn gemessen? > und einen >dementsprechenden Widerstand am Sender in Reihe zu schalten. WELCHEN WIDERSTAND?!!! Lass dir doch nicht jede Scheiß Angabe aus der Nase ziehen!!! ZAHLEN!!! >- AD5292 Empfänger. 4 davon in einer Daisy chain Konfiguration, sollte >aber keine Rolle spielen, Nimm trotzdem erstmal nur EINEN! >da wenn die CLK korrekt vom ersten gelesen Es heißt DER TAKT! >wird die Daten auch korrekt weitergeschickt werden (alle erhalten die >selbe CLK). Es heißt DER TAKT! >- 3,5m geschirmtes Koaxialkabel Nett, aber eher hohe Kapazität. Geht am Ende aber auch. >- Laut meiner Messung hatte das Kabel eine Impendanz von 500 Ohm Niemals. Koaxkabel hat zwischn 40-100 Ohm, die Klassiker haben 50 bzw. 75 Ohm. >(http://www.afug-info.de/Tipps-Tricks/Impedanz-messen/). Erschien mir >aber auch hoch, habe bis zu 50 Ohm probiert, 100Ohm schien am besten. Warum sagst du dann, du hättest 500 Ohm gemessen? > Wolltest du mich hierbei auf die Terminatoren hinweisen? Ja. Und die Masseleitungen. > Verstehe ich >das richtig dass dies die "Parallelterminierung" wäre von der in deinem >Link zum Wellenwiderstand die Rede ist? Ja.
>Schmitt-Trigger Der nur steile Flanken macht, bleibt die Frage wie deine Signale aussehen? Beachte: >Benutze RS422 Transceiver. Gruß J
> WELCHEN WIDERSTAND?!!! Lass dir doch nicht jede Scheiß Angabe aus der > Nase ziehen!!! > ZAHLEN!!! Die abnormale Häufung von Ausrufezeichen zeigen eine hohe berufliche Belastung und/oder eine niedrige Toleranzschwelle an. Was ist mit dir los? Was läuft bei dir falsch? Was stimmt mit dir nicht?
@ Jonas Biensack (jibi) >>Schmitt-Trigger >Der nur steile Flanken macht, bleibt die Frage wie deine Signale >aussehen? Kurz vor dem Empfänger ist das schon sinnvoll.
Falk B. schrieb: > Wie hast du denn gemessen? http://www.afug-info.de/Tipps-Tricks/Impedanz-messen/ ja mir ist bewusst dass ich wiederholt Fehler bei der Messung gemacht haben muss, weiß aber nicht welchen. Deswegen habe ich ja verschiedene Widerstände einfach ausprobiert, und der geringste "Zacken" wurde eben mit 100 Ohm erreicht, wie ich ebenfalls beschrieben habe. Jonas B. schrieb: >>Schmitt-Trigger > > Der nur steile Flanken macht, bleibt die Frage wie deine Signale > aussehen? Muss mir erst noch einen zusammenbasteln (mit OPAs), dann kann ich dies testen. Jonas B. schrieb: > Beachte: >>Benutze RS422 Transceiver. Ja, wahrscheinlich werde ich mir noch einen bestellen müssen, ich würde nur gerne vorher noch andere Möglichkeiten überprüfen, da dann weniger/simplere Bausteine. Falk B. schrieb: >> Verstehe ich >>das richtig dass dies die "Parallelterminierung" wäre von der in deinem >>Link zum Wellenwiderstand die Rede ist? > > Ja. "Parallelterminierung absorbiert die ankommende Welle am Ende einer Leitung. Damit treten zu keinem Zeitpunkt Reflexionen auf. Nachteilig ist der Stromverbrauch bei HIGH-Pegel. Diese Terminierung ist nicht für 5 oder 3.3V CMOS geeignet. " Sicher dass das anwendbar ist? Es ist hierbei nur der µC der es treibt.
:
Bearbeitet durch User
@Albert C. (a_c) >Muss mir erst noch einen zusammenbasteln (mit OPAs), dann kann ich dies >testen. Vergiss die Operationsverstärker! >Ja, wahrscheinlich werde ich mir noch einen bestellen müssen, Nein, mußt du nicht. Der Op in meinem Link hast DEUTLICH größere Kabellängen auch nur mit 5V CMOS-Signalen erreicht. >"Parallelterminierung absorbiert die ankommende Welle am Ende einer >Leitung. Damit treten zu keinem Zeitpunkt Reflexionen auf. Nachteilig >ist der Stromverbrauch bei HIGH-Pegel. Diese Terminierung ist nicht für >5 oder 3.3V CMOS geeignet. " >Sicher dass das anwendbar ist? Es ist hierbei nur der µC der es treibt. Nun, es ist Thevenin-Therminierung, die braucht nur den halben Strom. Geht schon, wenn auch nicht perfekt. Echte 100 Ohm gegen GND gehen in der Tat nicht.
Albert C. schrieb: >> Mach doch mal bitte ein Bild mit SCK, MOSI und CS an der >> Empfänger-Seite, vielleicht auch noch VCC dazu. > > Ich könnte ziemlich viele Bilder hochladen, deswegen belasse ich es mal > nur mit der SCK von 2,5m (funktionierend), 3,5m mit Tiefpass und 3,5m > ohne weitere Maßnahmen. Da ist kein SCK zu sehen, nur eine einsame Flanke. Und sieht soweit doch super aus, sogar ohne weitere Maßnahmen ist das okay. Nur, wie sieht das alles miteinander aus, meinetwegen auch bei 3,5m mit dem Tiefpass? So einige Bits und ein ganzer Datenrahmen?
Rudolph schrieb: > Nur, wie sieht das alles miteinander aus, meinetwegen auch bei 3,5m mit > dem Tiefpass? > So einige Bits und ein ganzer Datenrahmen? Habe hier mal DIN und SDO vom ersten DigPot(leider nicht über PC-Oszi weil der nur einen Kanal hat). Wie man sehen kann erkennt/übermittelt er es nicht richtig: DIN ist 0x1803 und SDO ist 0x1806. Rudolph schrieb: > Da ist kein SCK zu sehen, nur eine einsame Flanke. Ja, habe reingezoomt damit man den kritischen Teil sieht, hätte evtl dazuschreiben sollen dass das die Flanke des Taktsignals ist. Rudolph schrieb: > Und sieht soweit doch super aus, sogar ohne weitere Maßnahmen ist das > okay. Dachte ich mir auch, aber dem DigPot reicht es wohl leider nicht. Ich schaffe es gerade leider nicht mir einen brauchbaren Schmitt-Trigger zusammenzubasteln. Evtl bestelle ich mir einen und schaue mir jetzt mal diese Paralellterminierung näher an.
@Albert C. (a_c) >Habe hier mal DIN und SDO vom ersten DigPot(leider nicht über PC-Oszi >weil der nur einen Kanal hat). Wie man sehen kann erkennt/übermittelt er >es nicht richtig: DIN ist 0x1803 und SDO ist 0x1806. Falscher SPI-Modus? Auf welcher Flanke will der IC die Daten abtasten? >> Und sieht soweit doch super aus, sogar ohne weitere Maßnahmen ist das >> okay. >Dachte ich mir auch, aber dem DigPot reicht es wohl leider nicht. Ist es auch nicht, weil die Zeitauflösung viel zu schlecht ist, hier 16us/DIV. Wenn man was sehen will, braucht man ehr 100ns/DIV und weniger! Außerdem hat dein Oszi bzw. Tastkopf zu wenig Bandbreite. Das ist ein billiges Picscope, ich tippe mal auf 25-40 MHz. Das ist zu wenig. >Ich schaffe es gerade leider nicht mir einen brauchbaren Schmitt-Trigger >zusammenzubasteln. Den kauft man auch fertig! 74HC14!
Falk B. schrieb: > Falscher SPI-Modus? Auf welcher Flanke will der IC die Daten abtasten? Zur fallenden Flanke Falk B. schrieb: > Ist es auch nicht, weil die Zeitauflösung viel zu schlecht ist, hier > 16us/DIV Das stimmt, an diesem Bild kann man nichts erkennen, ich habe es lediglich hochgeladen zwecks Verständnis, und weil ich darum gebeten wurde. Davon abgesehen, Leute, ich habe es versaut :/ Mit dem ganzen umgestecke und den OPs habe ich versehentlich die 15V Versorgung für die DigPots an den µC gesteckt und ihn zerstört. Ich bestelle einen neuen, aber das heißt leider bis dieser da ist kann ich nicht viel machen, außer andere erwähnte Bausteine gleich mitzubestellen. Ich danke euch dennoch schonmal für eure Hilfe, wenn der neue da ist und ich das erwähnte getestet habe (insbesondere Schmitt-Trigger, Parallelterminierung und RS422) werde ich mich hier nochmal melden. Grüße Albert
Albert C. schrieb: > Habe hier mal DIN und SDO vom ersten DigPot(leider nicht über PC-Oszi > weil der nur einen Kanal hat). Wie man sehen kann erkennt/übermittelt er > es nicht richtig: DIN ist 0x1803 und SDO ist 0x1806. Die Signale sehen eigentlich sehr gut aus. Vielleicht machst du eher einen logischen Fehler? 0x1803 heisst doch folgendes: DB15 = 0 DB14 = 0 Command 0110'b = Write Contents of serial data to control register Und die Daten sind 0x03 Also steht nach diesem Befehl einfach nur das Command "Store Wiper settings" im Command Register. Daran kann man ja jetzt nicht wirklich einen Fehler erkennen. Du willst doch vermutlich den Wiper auf 0x003 setzem und wieder auslesen, oder? Dann müsstest du dem Poti erstmal 00000100_00000011'b = 0x0403 schicken. Danach dann 00001000_00000000'b = 0x0800 (Read RDAC wiper setting ... in next frame). Und danach dann ein 0x0000 (NOP). Während das NOP übertragen wird, siehst du den aktuellen Wiper-Wert (sollte dann 3 sein) auf DOUT. So verstehe ich zumindest Table 11 im Datenblatt (Command Operation Truth Table)
:
Bearbeitet durch User
Joe F. schrieb: > Also steht nach diesem Befehl einfach nur das Command "Store Wiper > settings" im Command Register. Ich glaube hier liegt ein Missversändnis vor. Das ist beides dasselbe Kommando (Schreibschutz entfernen). allerdings wird es nicht korrekt übermittelt/erkannt, wie man am SDO erkennen kann. SDO ist der Serielle Ausgang des DigPots, der, solange kein anderweitiges Kommando kommt, einfach weitergibt was er in der vorherigen Übermittlung erhalten hat. Insgesamt werden 16 Pakete übertragen, bestehend aus Schreibschutz Entfernung, dummy-writes (0x00) und Befehlen zum Setzen der Schleiferpositionen. Bis zu <2,5m Leitung werden alle Kommandos auch richtig erkannt/ausgeführt, dies ist lediglich ein Paket bei 3,5m Länge. Das Problem hierbei liegt bei der Übermittlung des Takts, da fallende Flanken erkannt werden wo keine sind, und daher teilweise Bits doppelt gelesen werden(DIN) oder doppelt gesendet werden (SDO).
Versuche es doch mal mit einem Flachbandkabel, bei dem jede 2. Ader auf Masse gelegt ist. Rs auf der jeweiligen Senderseite reduzieren die Slew-Rate und damit die Überschwinger. Die kritische Leitung ist Clk, die bekommt den größten R, demit sichergestellt ist, dass die Daten schon gültig sind, wenn die Clk-Flanke erkannt wird. "Sauberer" Aufbau ist wichtig! Gnd-Verbindungen müssen innerhalb der Empfänger-Seite kurz sein, Steckbrett ist nicht immer ideal. Ist die Versorgung auch gut abgeblockt? Wenn man es richtig macht, geht es auch. Wir hatten (vor der Umstellung auf CAN) über 10 Meter lange SPI-Kabel mit bis zu 80 Teilnehmern. Wenn man unbedingt auf der Empfängerseite abschließen will, dann mit einem RC-Filter (Snubber), weil er keine Gleichspannungsverluste hat, sondern nur den HF-Anteil bedämpft. Viel Erfolg
> Mark W. schrieb: >> So ein Poti ist ja nix Dynamisches, wie weit kannst Du denn runter mit >> der Frequenz bei 3.5m? > > Meinst du wie weit ich mit dem µC runter komme oder wie weit "unten" der > digPot es noch annimmt(bei kurzem Kabel)? Genau, so ungefaehr. Einfach mal bei Bspw. bei 10MHz eine kurze Verbindung nehmen und das Kabel stueckweise verlaengern. Dann sehen bis wie weit es funktioniert. Dann auf 1MHz runter gehen und sehen we weit es dann noch geht. Das sollte eine Gefuehl geben wie Leitungslaenge und Frequenz mit einander zusammenhaengen.
Hallo nochmal, Der neue µC ist nun angekommen, und ich war in der Lage mir empfohlene Ansätze zu testen, ich fasse hier die Ergebnisse nochmal kurz zusammen: - Schmitt-Trigger vor dem Empfänger: Das Taktsignal über einen Schmitt-Trigger an die Digitalen Potis zu geben war erfolgreich, verwendet den von Falk B. empfohlenen 74HC14. - RS422 Ansteuerung über RS422 war ebenfalls erfolgreich. Verwendet habe ich den SN75176BP von TI. - Thevenin-Terminierung: Diese Terminierung hat leider nichts geholfen. Signal scheint sauberer zu sein, aber es ist nichtmehr 0V - 3,3V, sondern geringer. Ich vermute dass das ein Grund sein könnte. Da es aber bereits mit Schmitt-Trigger sowie RS422 funktionert werde ich darauf nicht weiter eingehen. Ich danke nochmal allen hier für ihre Hilfe. Viele Grüße Albert
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.