Forum: Mikrocontroller und Digitale Elektronik THS1206 stürtzt manchmal ab


von Doran S. (utzer)


Lesenswert?

Hallo,

ich habe auf einer Platine 3 gleiche ADCs, es sind die THS1206 von TI.
Diese Platine ist über ein Flachbandkabel an ein FPGA-Entwicklungsboard 
angeschlossen, welches die ADC ansteurt und auslesen soll.

Dazu habe ich in VHDL die Ansteurung nach Datenblatt des THS1206 
realisiert und für alle drei ADCs wird der selbe Code instanziiert.

Mein Problem ist nun, dass nur zwei der drei ADC funktionieren, der 
dritte stürzt immer ab. Das äußert sich so, dass der DATA_AV (data 
availiable) Pin immer anzeigt der ADC hätte keine Daten zum Auslesen. 
Das Abstürzen/Deaktivieren des 3. ADC tritt in sehr unregelmäßigen 
Abständen auf: Manchmal läuft er ein paar Sekunden, manchmal auch für 10 
Minuten. Ab und zu läuft er gar nicht nach dem Aufstarten. Erst nach 
einem Neustart kommen wieder Daten.

Da meine Signale ja über 7cm Flachbandkabel + 8cm PCB gehen, habe ich 
meine Leitungen terminiert (100 Ohm + 1nF in Reihe nach Masse). Diese 
Terminierung habe ich nachträglich eingefügt, weil ohne diese bei den 
Schaltflanken deutliche Überschwinger erkennbar sind. Durch die 
Terminierung ist das nun auf +/-0.5V überschwingen/"Unterschwingen" 
reduziert.

Könnte es sein, dass der ADC defekt ist? Er funktioniert aber manchmal 
für längere Zeit und dann fällt er plötzlich wieder in den Schlaf :-(

Ich muss dazu sagen, dass der 3. ADC der ist, der die längsten Leitungen 
zum FPGA hat, allerdings habe ich nun ja terminiert und das hat aber 
nichts geändert :-(

Über Tipps, was ich noch genau Messen kann/soll oder was ich sonst 
versuchen könnte, bin ich sehr dankbar!

Viele Grüße,
Doran

von Marc H. (marchorby)


Lesenswert?

Code? Schaltplan? Foto vom Aufbau?

von Falk B. (falk)


Lesenswert?

@Doran S. (utzer)

>Da meine Signale ja über 7cm Flachbandkabel + 8cm PCB gehen, habe ich
>meine Leitungen terminiert (100 Ohm + 1nF in Reihe nach Masse).

Hmmm. Und auch mal RICHTIG gemessen, wie die Signale aussehen?
Wie sieht deine Signalbelegung auf dem Flachbandkabel aus? Wieviele 
Masseleitungen? Wie sind die verteilt?

Siehe Wellenwiderstand.

>Terminierung habe ich nachträglich eingefügt, weil ohne diese bei den
>Schaltflanken deutliche Überschwinger erkennbar sind.

Richtig gemessen?

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

> Durch die
>Terminierung ist das nun auf +/-0.5V überschwingen/"Unterschwingen"
>reduziert.

Naja.

>Könnte es sein, dass der ADC defekt ist? Er funktioniert aber manchmal
>für längere Zeit und dann fällt er plötzlich wieder in den Schlaf :-(

Kann sein, ist aber eher unwahrscheinlich.

>Ich muss dazu sagen, dass der 3. ADC der ist, der die längsten Leitungen
>zum FPGA hat, allerdings habe ich nun ja terminiert

Das hat der T800 auch und war am Ende auch Schrott ;-)

> und das hat aber
>nichts geändert :-(

Man muss RICHTIG messen. Und 100R + 1nF ist ein AC-Terminierung, die nur 
für konstante Taktsignale taugt.

von Doran S. (utzer)


Lesenswert?

>>Da meine Signale ja über 7cm Flachbandkabel + 8cm PCB gehen, habe ich
>>meine Leitungen terminiert (100 Ohm + 1nF in Reihe nach Masse).
>
> Hmmm. Und auch mal RICHTIG gemessen, wie die Signale aussehen?
> Wie sieht deine Signalbelegung auf dem Flachbandkabel aus? Wieviele
> Masseleitungen? Wie sind die verteilt?
Masseleitung gibt es leider nur eine am Rand. Kann das schon das Problem 
sein?

>
> Siehe Wellenwiderstand.
>
>>Terminierung habe ich nachträglich eingefügt, weil ohne diese bei den
>>Schaltflanken deutliche Überschwinger erkennbar sind.
>
> Richtig gemessen?
>
> 
https://www.mikrocontroller.net/articles/Oszilloskop#Tastk.C3.B6pfe_richtig_benutzen
>
>> Durch die
>>Terminierung ist das nun auf +/-0.5V überschwingen/"Unterschwingen"
>>reduziert.
>
> Naja.
Ist -/+0.5V Überschwingen viel oder wenig? (Ich kann das nicht so gut 
einschätzen, darum frage ich....)

>
>>Könnte es sein, dass der ADC defekt ist? Er funktioniert aber manchmal
>>für längere Zeit und dann fällt er plötzlich wieder in den Schlaf :-(
>
> Kann sein, ist aber eher unwahrscheinlich.
Ok, ja, denn wenn er manchmal für mehrere Minuten läuft, sollte der ADC 
ja noch in Ordnung sein....

>
>>Ich muss dazu sagen, dass der 3. ADC der ist, der die längsten Leitungen
>>zum FPGA hat, allerdings habe ich nun ja terminiert
>
> Das hat der T800 auch und war am Ende auch Schrott ;-)
Was ist denn ein T800? Und könnten meine langen Leitungen ein Problem 
sein?

>
>> und das hat aber
>>nichts geändert :-(
>
> Man muss RICHTIG messen. Und 100R + 1nF ist ein AC-Terminierung, die nur
> für konstante Taktsignale taugt.
Ok, dass ich richtig gemessen habe, denke ich schon. Habe sogar so eine 
Feder an den Tastkopf gemacht, damit die Masse möglichst direkt 
angebunden ist. Warum funktioniert 100R + 1nF nur bei konstanten 
Taktsignalen und nicht allgemein?

Vielen Dank schon mal für die Anregungen, Foto folgt am Montag

von Falk B. (falk)


Lesenswert?

@Doran S. (utzer)

>Masseleitung gibt es leider nur eine am Rand. Kann das schon das Problem
>sein?

Ganz sicher!

>Ist -/+0.5V Überschwingen viel oder wenig? (Ich kann das nicht so gut
>einschätzen, darum frage ich....)

Kommt drauf an. Es kann aber auch ein Meßfehler sein und das Signal in 
Wahrheit besser aussehen.

>> Das hat der T800 auch und war am Ende auch Schrott ;-)

>Was ist denn ein T800?

http://terminator.wikia.com/wiki/T-800_(The_Terminator)

> Und könnten meine langen Leitungen ein Problem
> sein?

Ja, aber auch die fehlenden Massen.

>angebunden ist. Warum funktioniert 100R + 1nF nur bei konstanten
>Taktsignalen und nicht allgemein?

Steht im Artikel Wellenwiderstand.

von Thomas (kosmos)


Lesenswert?

Ich wurde eher jede Leitung mit einem 10kOhm Pullup oder Pulldown 
Widerstand beschalten. Gibts auch ala Reihenwiderstans zu kaufen.

Ein Bild wäre gut weil man dann auch sieht ob oder wie sparsam du mit 
Kerkos umgegangen bist.

von Falk B. (falk)


Lesenswert?

@Thomas O. (kosmos)

>Ich wurde eher jede Leitung mit einem 10kOhm Pullup oder Pulldown
>Widerstand beschalten. Gibts auch ala Reihenwiderstans zu kaufen.

Und was soll der Quark? 10k sind HF-technisch nicht vorhanden.

von Thomas (kosmos)


Lesenswert?

Ich hatte mal vor Jahren ein EEPROM versuchsweise per Hand programmiert. 
Einige Latches, DIP-Schalter,LEDs, Flachbandkabel usw., es gab immer 
etwas PIN Gezappel, erst mit einer kleinen Belastung also Pulldowns 
bekamm ich da Ruhe rein. hes auch mit so nem Flachkabel und DIP 
Schaltern manuell angesteuert um Daten in ein EEPROM per Hand zu 
schreiben, und da gab es auch PIN gewackel erst mit Pullups bzw- 
Pulldowns gabs ruhe.

Und bei einem Pollin Board eines Freundes gabs auch mal solche komischen 
Überschwinger, da lag es an kleine Kerkos, die glaube parallel über den 
Schalten lagen.

von Doran S. (utzer)


Lesenswert?

Hallo,

Danke für die zahlreichen Tipps. Ich habe nun die Terminierung von R+C 
zu reinem Widerstand (100Ohm) nach Masse geändert und damit läuft der 
ADC jetzt endlich.

Viele Grüße,
Doran

von Falk B. (falk)


Lesenswert?

@Doran S. (utzer)

>Danke für die zahlreichen Tipps. Ich habe nun die Terminierung von R+C
>zu reinem Widerstand (100Ohm) nach Masse geändert und damit läuft der
>ADC jetzt endlich.

Ohje. Schon mal GEMESSEN, wie deine Signale jetzt aussehen? 100 Ohm an 
3,3V macht 33mA! Das ist für einen normalen CMOS-Ausgang viel zuviel! Da 
bricht der HIGH-Pegel massiv ein! Da ist es eher Glück, daß dein ADC 
noch funktioniert! Wenn schon, dann Theveninterminierung, das halbiert 
den Strombedarf. Ist zwar immer noch viel aber es geht so lala. 
Flachbandleitung hat um die 120-150 Ohm Wellenwiderstand, da kann man es 
erstmal mit 2x 240 Ohm probieren.

https://www.mikrocontroller.net/articles/Wellenwiderstand#Parallelterminierung

Außerdem ist bei einer einfachen Punkt zu Punkt Verbindung die 
Serienterminierung deutlich entspannter! Nutze diese!

von Doran S. (utzer)


Lesenswert?

Hallo,

Oha, an die 33mA habe ich gar nicht gedacht. Das ist ja tatsächlich ein 
Problem, da die Ausgänge des FPGAs auf 18mA eingestellt sind....
Bei der Serienterminierung muss der Widerstand aber doch in der Nähe der 
Quelle sein? Das geht bei mir aber nicht, da der FPGA ja auf einem 
fertigen Board sitzt und ich somit nur am ADC terminieren kann!?

Sollte ich den Widerstand einfach etwas erhöhen, oder doch wieder R-C 
einsetzen? Werde am Montag nochmal genauer messen und mich mit einem 
Kollegen unterhalten.

Vielen Dank nochmals für eure Unterstützung und die Tipps, so lerne ich 
etwas dazu :-)

Viele Grüße,
Doran

von Helmut S. (helmuts)


Lesenswert?

Mach einen Spannungsteiler statt einem Widerstand nach Masse. Der 
benötigt weniger Strom vom CMOS-Ausgang. Die +3,3V müssen natürlich mit 
einem C (0,1uF, 1uF) abgeblockt werden.

Masse---220Ohm---o---220Ohm---3,3V

von Doran S. (utzer)


Lesenswert?

Habe jetzt doch die Leiterbahn aufgekratzt und 120 Ohm in Reihe 
eingebaut. Damit sieht das Signal nun wie im Bilderbuch aus :-) Und der 
ADC läuft jetzt super.

Allerdings ist der Widerstand jetzt in der Nähe des ADC, also nicht bei 
der Quelle.... Es funktioniert aber trotzdem. Sollte man hier noch etwas 
optimieren? Der FPGA sitzt leider auf einem fertigen Entwicklungsboard, 
daher kann ich da schlecht einen Widerstand direkt nach dem FPGA 
plazieren...

Kann man die Serienterminierung eigentlich auch für das Taktsignal 
verwenden? Oder ist da R+C besser? (Wenn ich eine Punkt-zu-Punkt 
Verbindung habe).

Viele Grüße und Danke für die tolle Hilfe hier,
Doran

von Falk B. (falk)


Lesenswert?

@Doran S. (utzer)

>Allerdings ist der Widerstand jetzt in der Nähe des ADC, also nicht bei
>der Quelle.... Es funktioniert aber trotzdem.

Das ist der Sieg der Praxis über die Theorie.

>Sollte man hier noch etwas
>optimieren?

Nein.

>Kann man die Serienterminierung eigentlich auch für das Taktsignal
>verwenden?

Ja.

> Oder ist da R+C besser? (Wenn ich eine Punkt-zu-Punkt
>Verbindung habe).

Nicht unbedingt. Ich würde meistens eher zur Serienterminierung greifen.

von Doran S. (utzer)


Lesenswert?

Ja genau, leider kommt die Praxis an der Uni meistens zu kurz. Und wenn 
man dann mal wirklich was baut, dann stößt man auf total unbekannte 
Probleme.  Daher hat mir das hier wirklich geholfen, weil ich jetzt ein 
Problem in der Praxis gelöst habe und es eben große Abweichungen 
zwischen der Theorie und der Praxis gibt.
Da hilft echt nur die Berufserfahrung.....

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.