Forum: Digitale Signalverarbeitung / DSP / Machine Learning Verbesserung der AD Wandlung beim DSP TMS320F2812


von Patrick Röth (Gast)


Lesenswert?

Hallo,

ich arbeite nun schon seit mehreren Monaten mit dem TMS320F2812 DSP auf
dem eZdsp Board von Spectrum Digital und bin mit der Qualität der AD
Wandler total unzufrieden. Mein digitaler Wert schwankt zwischen +-100
digits und ich wollte fragen ob jemand ne Ahnung wie ich ne genauere
Wandlung hinbekomme?
Mir würde bereits ne Verbesserung auf +-10 digits ausreichen!

Gruß
Patrick Röth

von Michael (Gast)


Lesenswert?

Hallo,

ich habe (hatte?) das gleiche Problem. Ich hab' viel recherchiert und
gegoogelt. Irgendwann habe ich dann dem Support von TI geschrieben.
Hier die Antwort:

Thank you for contacting Texas Instruments

Please note that in the case of the F281x ADC the observed code spread
during testing is ~7 or 8codes.  For example if I converted 1.5V 100
times I would be most likely to hit code 2048(assuming ideal
gain/offset), but would see codes 2049/2047 with some frequency,
2050/2046 with less frequency, 2051/2045 with even less frequency, etc.
 Due to the distribution if I were to average the samples I should get
the center code.

In addition I would like to mention some points,

1. The ADCLO should be connected to ADC ground. Also ADCLO pin should
not vary by more than 0.3v from the VSSA pins. In case of eZDSP ADCLO
pin should be connected to GND on F2812 eZdsp board for proper
operation. To accomplish this, connect pin 18 on connector P9 (VREFLO
to pin-17 on P9 (GND).

2. ADCREFP & ADCREFM: The ADCREFP (2.0 V) and ADCREFM (1.0 V) are only
output from the device so that the user can put capacitors on them
(10uF on each) to keep them as stable  as possible. Low ESR ceramic
caps are preferred. The stability of these signals directly  influences
the ADC characteristics. Can you ensure that these pins are stable and
we also advise against putting any load on them other than the
suggested caps.

3. Is the input buffered through an op-amp or at least some capacitors
for noise immunity?


4. What is the sampling rate (Hi Speed Clock/ADCLKPS/ACQPS/CPS combo)?
If you can try to  increase the S/H window (ACQPS bits in ADCTRL1) it
may help to even out the noise through over sampling.

5.  Power-up: Please make sure that you are powering-up the ADC unit
correctly the  sequence to power-up the ADC unit is as follows

a) Power up band gap/reference circuitry
b) Provide a delay of 8ms

c) Power up the rest of ADC.
d) Provide a delay of 20us after powering up the ADC.

6. Connect all the unused ADC inputs to ground - because it has been
often noted that the unused ADC inputs interfere with the used ADC
inputs and tend.

In addition you can try software calibration of ADC, Regarding the ADC
calibration, please refer to the document (2810_12_calibration_10.pdf
)and code (adc_calibration.zip) for more details.
You can down load this from following link:

http://www.ti.com/europe/downloads/f2810_12_calibration_10.pdf
http://www.ti.com/europe/downloads/adc_calibration.zip

I hope this information helps you.


Ich habe dann aber nicht mehr wirklich an dem Starterkit
weitergebastelt. Von daher kann ich nicht sagen in wie weit das was
bringt, wobei ich schon fast alle Punkte eingehalten habe.

MFG Michael

von Patrick Röth (Gast)


Lesenswert?

Hallo,

danke schonmal für die vielen Informationen. Einiges habe ich bereits
vorher realisiert zwar ohne erfolg.
Ich werde mal die ADC Kalibrierung ausprobieren, ob das noch eine
Verbesserung bringt!

MFG Patrick

von Michael (Gast)


Lesenswert?

Hallo Patrick,

poste doch dann bitte deine Ergebnisse der ADC Kalibrierung.

Michael

von Patrick Röth (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

habe mit der ADC Kalibrierung ein wenig Experimentiert und folgendes
festgestellt:
Zum einen gibt es bei der AD Wandlung im Ergebnis noch einen Offset der
auf dem digitalen Ergebnis liegt, dass merkt mann wenn man mit der
Formel:
digitaler Wert = Eingangsspannung * 4095/3
sich den Wert berechnet und mit der Messung im CCS vergleicht.
Zum anderen ist die Verstärkung der AD Wandler nicht 1 sondern eher
1,05.

Mit der Kalibrierung sollen diese beiden Probleme beseitigt werden.
Für diese Kalibrierung sind dann zwei Referenzspannungen erforderlich
(habe einfach dafür die zwei auf dem Board befindlichen Referenzen
genommen), womit diese Probleme des Offsets und der Verstärkung
beseitigt sind. Jedoch hat mich das in der Qualität der AD Wandlung
nicht weiter gebracht!

In den vergangenen Tagen habe ich festgestellt, das ich mit
Matlab/Simulink komplette Projekte für den DSP erzeugen kann!
Heute hatte ich schließlich mit einer Filterfunktion den Erfolg, das
sich die Qualität meines digitalen Wertes deutlich verbessert hat. Für
alle die es Ausprobieren möchten hier die betreffenden Codezeilen:


   // Globale Variablen für das Filter
   Uint16 ADC_result, ergebnis;
   _iq16 temp1=0, temp2=0, last_value=0;

   // Filter 1. Ordnung
   temp1 = _IQ16((double)ADC_result);
   temp2 = _IQ16rmpy((last_value - temp1), 65470) + temp1;
   ergebnis = _IQ16int(temp2);
   last_value = temp2;

Der Wert 65470 setzt sich zusammen aus 0.999*2^16! (zum feinstellen)
Die Variablen sind Global!
Für die mathematischen Operationen ist IQmath erforderlich und befindet
sich als sprc087.zip Datei im Anhang.
Viel Spaß beim Ausprobieren!

Gruß
Patrick

von Michael (Gast)


Lesenswert?

Gratulation,

das werde ich auch mal auspropieren, wenn ich wieder mal mit dem DSP
weitermache....

Michael

von Franzi (Gast)


Lesenswert?

Sorry Jungs für die Leichenschändung bei diesem Uraltthreads aber ich 
hänge grad genau bei dem Problem...

Mein ADC macht alle x-hundert Messungen sehr unschöne Schwankungen mit 
bis zu 1,5V und die versuche ich im Moment in den Griff zu bekommen...

Ich bin grad dabei den Filter einzufügen jedoch bekomme ich die Lib 
nicht richtig eingebunden bzw ich bekomme zumindest den gleichen Fehler.


unresolved symbol __IQ16int, first referenced in ./Hall_ISR3.obj
unresolved symbol __IQ16rmpy, first referenced in ./Hall_ISR3.obj

bei _IG16 nörgelt er nicht rum.
Ich habe die Lib(eine aktuelle Version aber bei CCS 4) einfach unter den 
build Properties /Include Options eingebunden. Ist doch richtig so oder?


Danke für eure Hilfe!

Schöne Grüße,
Franzi

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.