Forum: Mikrocontroller und Digitale Elektronik 16bit ad wandler


von tobias hofer (Gast)


Angehängte Dateien:

Lesenswert?

hallo

ich steuere einen 16bit ad wandler ad677 von analog device
an. die zwei dafür notwendigen funktionen habe ich als text
file angehängt.
die ganze wandlung läuft leider nicht stabil. das heisst jedes zweite 
mal lese ich einen falschen wert vom wandler.
zwischendurch funktioniert es wieder.
ich habe das ganze erst testhalber auf einem steckbrett fliegend 
aufgebaut. jetzt bin ich mir nicht sicher ob es sich um ein 
hardwareprolem oder software problem handelt.

vieleicht sieht jemand einen fehler oder könnte mir einen typ
geben wie ich das besser programieren kann.

gruss tobias

von franz (Gast)


Lesenswert?

Hallo,

was hat der ADC für eine Wandlungszeit?

Grüße,
Peter

von tobias hofer (Gast)


Lesenswert?

max. sample rate wäre 100kS/s.
ich brauche aber nur jede sekunde einen wert.

von Olaf (Gast)


Lesenswert?

Hallo Tobias,

sieht ganz nach einem Timing-Problem aus. Bei dem C-Code ist natürlich 
die Frage, was der Compiler daraus macht ...

Zwei Dinge die mir spontan auffallen:
- die Daten sind nicht unmittelbar nach der fallenden CLK-Flanke gültig.
- ich würde mich beim Auslesen nicht auf das BUSY-Signal verlassen, 
sondern die CLKs zählen.

Gruß,
Olaf

von tobias hofer (Gast)


Lesenswert?

hallo olaf

die zeit nach clk0 bis die daten gültig sind, ist nach datenblatt 175ns.
meinst du der vergleich, if(SDATA==1) ad_result++;
ist schneller abgearbeitet als 175ns?
dann müsste ich dort mal ein paar nop's reinschreiben.

ich werde das programm mal abändern.


gruss tobias

von tobias hofer (Gast)


Angehängte Dateien:

Lesenswert?

nun habe ich das programm umgeschrieben.

ich kann kontinuierlich werte lesen. es sind auch nicht
zufällige wert. nur sind sie falsch, immer negativ.

das negative könnte von meiner sprintf(,"%d",)funktion kommen.
die wandelt ja eine int zahl in einen string. alles was
über 32768 ist wird dann mit einem vorzeichen in meinen string kopiert.
nur dürfte der gelesene wert schon gar nicht über 32738 sein.
ich arbeite mit einer 10V referenz spannung. und die eingangsspannung 
ist immer kleiner als 5V.

vieleicht hat ja noch jemand einen tip.
sonst kann ich mir nur noch vorstellen das es am aufbau liegt.

gruss tobias

von Olaf (Gast)


Lesenswert?

Hallo Tobias,

bei "%d" wird die Zahl als vorzeichenbehafteter Integer-Wert 
interpretiert.

"%u"  -> unsigned int
"%lu" -> unsigned long

Probiere es mal damit.

Gruß
Olaf

von Olaf (Gast)


Lesenswert?

... außerdem beachten: Wert liegt im 2er-Komplement vor.


Gruß
Olaf

von tobias hofer (Gast)


Lesenswert?

hallo olaf

der gewandelte wert den ich vom ad wandler lese ist im
zweierkomplement?
wie kann ich das richtig umrechnen?

tobias

von tobias hofer (Gast)


Angehängte Dateien:

Lesenswert?

ich habe das mal so programiert...

ich maskiere einfach das msb aus und sollte dann nur noch
possitive werte darstellen können.
habe ich das so richtig verstanden?

tobias

von tobias hofer (Gast)


Lesenswert?

habe noch einen fehler programiert.

dem analog_buf weise ich natürlich den wert von hilf zu...

von tobias hofer (Gast)


Lesenswert?

das ganze funktioniert immer noch nicht.

ich möchte ja nur possitive zahlen darstellen. dann brauche ich ja nicht 
umzurechnen.
aber mein gewandelter wert bewegt sich bei einer eingangsspannung von 
0.5-5V nur im bereich von ca.9000-12000.
es wird also ein viel zu kleiner bereich gewandelt.

könnte dieser fehler nun noch ein hardware problem sein?

tobias

von Olaf (Gast)


Lesenswert?

Hallo Tobias,

im 2er-Komplement werden Zahlen mit Vorzeichen dargestellt. Das MSB 
repräsentiert das Vorzeichen, die restlichen Bits die eigentliche Zahl.

Bsp. (nur mit 8-Bit):

0111 1111 ->  127
0111 1110 ->  126
0000 0000 ->    0
1111 1111 ->   -1
1111 1110 ->   -2
1000 0000 -> -128

Betreibst du den ad677 eigentlich symmetrisch (+/-12V oder +/-15V)?

Gruß
Olaf

von tobias hofer (Gast)


Lesenswert?

hallo olaf

ich betreibe den ad677 mit +-12V
und 5V für den ganzen digitalteil des wandlers.

ich muss mal schauen ob vieleicht ein fehler beim calibrieren des 
wandlers passiert. dann könnte natürlich die 16bit auflösung im arsch 
sein.

komisch ist nur wenn ich vin auf gnd lege lese ich immer noch einen wert 
vom wandler.
und das dürfte nun unter keinen umständen sein.

vieleicht ist der wandler selbst auch defekt.
ich bekomme nächste woche wieder 2 samples.

ich versuche dann mal die initialisierung wegzulassen.
mal schauen wie dann die werte aussehen.

gruss tobias

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.