Forum: Mikrocontroller und Digitale Elektronik Seltsames ADC verhalten.


von Johannes N. (strangeman)


Angehängte Dateien:

Lesenswert?

Hallo Forum!

Ich brauche mal eure Hilfe bei einem sehr komischen Problem:

Ich habe hier einen Atmega48. An dem hängen 12x mcp3208 ADCs (12bit 
Datenbreite) über SPI. Dabei teilen sich alle Wandler das MOSI, CS und 
SCK. Die MISOs führe ich einzeln an Portpins und lese sie per Programm 
aus. So setzte ich mir per Software-SPI die Daten zusammen.

Nun ergibt sich folgendes Problem: Führe ich den Wandlern eine Spannung 
zu, so setzten sie diese korrekt um, bis zu einem Zahlenwert von etwa 
1770 (genauer kann ich es dank Signalrauschen nicht erkennen). Ab diesem 
Punkt erscheint eine konstante 2048 als Messsignal. Drehe ich die 
Eingangsspannung weiter auf und erreiche den Wert, an dem tatsächlich 
eine 2048 als Wert erscheinen sollte, so machen die Wandler alles 
darüber ordnungsgemäß mit. Zusammengefasst: zwischen ca. 1770 und 2048 
geben sie immer eine 2048 aus, darunter und darüber ist alles ok.
Ich habe eine Zeichnung angehängt, in der das Verhalten zu sehen ist.

Da die 2048 eine Zweierpotenz ist, war mein erster Gedanke: Du liest die 
Daten falsch aus, du setzt sie falsch zusammen. Also habe ich meinen 
neuen MiniLA drangehängt und die Leitungen mitgelesen. Was dabei zu 
sehen ist, habe ich ebenfalls in den Anhang gelegt: Nach der Übertragung 
des Kanals (das schnelle gezappel im Bild) kommt wirklich schon eine 
2048 aus dem Wandler herraus (die Eins gefolgt von vielen nullen).

Ich habe noch den Schaltplan angefügt, damit ihr meine Verschaltung 
seht. Da sollte es eigentlich keine Probleme geben.

Was zum Henker ist da mit den Wandlern los?!
Vielen Dank für Tipps und Hinweise!

Johannes

PS: Es handelt sich um Wandler mit sukzessiver Approximation, falls das 
was hilft.
PPS: Diese eigenartigen "2048" sind ohne jedes Signalrauschen. Darunter 
und darüber rauscht es (Sensorbedingt).

von Εrnst B. (ernst)


Lesenswert?

Johannes Neumann schrieb:
> Darunter
> und darüber rauscht es (Sensorbedingt)

Eher "Vref-Bedingt". Laut Schaltplan holst du dir VRef aus einem 
rauschendem Poti, das die stark verrauschte und verstörte 
Betriebsspannung runterteilt.


Welchen Wert hast du dort eingedreht, und tritt dein Effekt auch auf, 
wenn du Vref auf 5V stellst?

Hast du den Wandler im Differentiellen oder im Single-Ended mode?

von Hans W. (stampede)


Lesenswert?

Ungeachtet von deinem Problem, ist der Schaltplan dubios.

1) Vref für die Wandler über ein Poti aus der Vdd??!
2) Normalerweise nimmt man für jeden Wandler einen CS und hängt die MISO 
/ MOSI Pins zusammen. In deiner Version musst du ja die Daten per 
Software einlesen... ist doch nicht wirklich geschickt gelöst.

von Εrnst B. (ernst)


Lesenswert?

Hans W. schrieb:
> ist doch nicht wirklich geschickt gelöst.

Naja, so laufen alle Wandler "Synchron", und er kann mehrere davon 
gleichzeitig einlesen. Aber ob das mehr Geschwindigkeit bringt??

Was wird das eigentlich mit 48×12Bit ADC? Midi-Keyboard mit 
"Tastendruckmessung" über Einzelpotis?

von Udo S. (urschmitt)


Lesenswert?

Sorge erst mal für eine saubere Vref. So haut dir jede Störspitze die 
evt. sogar von den Wandlern selbst kommt direkt in Vref und zerschiesst 
dir deine Messung. Da kannst du besser die internen Wandler vom AT-Mega 
nehmen, die dürften bei dieser Vref genauer sein als deine externen.

von Johannes N. (strangeman)


Lesenswert?

Hallo!

Danke für die Wertvollen Tipps. Ich löte jetzt mal einen Elko+kerko 
zwischen Vref und GND, das sollte die Sache verbessern. Recht habt ihr 
ja damit!

Ja, die Intention war tatsächlich, dass die Wandler so synchron laufen. 
Die Geschwindigkeit reicht aus. Dieser ATMega soll die Daten nur 
auslesen und an einen anderen Controller weitergeben. Das kann er per 
SPI (dazu auch der Stecker im Schaltplan) alle 780us. Für meinen Zweck 
reichts aus.

Das Verhalten ändert sich nicht, wenn ich Vref ändere. Direkt bei 5V 
kann ich leider nicht testen, da meine Sensoren nur bis ca. 3V ausgeben. 
Der Sprung erscheint aber unabhängig von Vref immer an der selben 
Stelle. Der Wandler läuft im Single Ended Modus.

Es bleibt zu erwähnen, dass die Wandler SMD sind und schonmal auf einem 
anderen Board verlötet waren. Leider war dieses Fehlerhaft und so musste 
ich sie ablöten und erneut auf ein Board auflöten. Ich weiß also nicht, 
wie sie auf dem ersten Board (vor dem Umlöten) liefen. Ich könnte mir 
vorstellen, dass sie die Temperatur beim ablöten nicht gut vertragen 
haben. Aber komisch ist, dass dieses Verhalten bei drei Wandlern genau 
gleich ist (ich habe von den 12 möglichen Wandlern bisher drei vom alten 
aufs neue Board übertragen).

Ja, das soll eine Sensorleiste für ein Klavier werden.

Johannes

von Johannes N. (strangeman)


Lesenswert?

WOW ihr seid irre!

Es geht, sobald ich einen Kondensator an Vref hatte, war das Problem 
passee. Irgend eine idee warum das so ist (mir kommt da sone Idee...)?

Super, wieder was gelernt :) Danke für eure Antworten

von Sebastian (Gast)


Lesenswert?

Oh jeh. Mit GENAU dem selben Problem schlage ich mich seit ein paar 
wochen herum. Vielen Dank an den Thread-Ersteller, das er sich die Mühe 
gemacht hat das Problem so genau hier zu beschreiben und vielen Dank an 
die Helfer :)

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.