mikrocontroller.net

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


Autor: Patrick Röth (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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_calibr...
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

Autor: Patrick Röth (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Patrick,

poste doch dann bitte deine Ergebnisse der ADC Kalibrierung.

Michael

Autor: Patrick Röth (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Gratulation,

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

Michael

Autor: Franzi (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.