Forum: Mikrocontroller und Digitale Elektronik F2812 ADC...


von Phil (Gast)


Lesenswert?

Hallo,

ich habe schon nach dem Thema mittels der Suchfunktion gesucht, aber 
habe leider noch keine Lösung gefunden.

Ich möchte die internen 12-bit A/D Wandler (0..3V) des F2812 in Betrieb 
nehmen.

Ich habe dazu die nichtbenutzen Eingänge mit GND verbunden
ADCINB1 mit GND verbunden
ADCINB2-mit GND verbunden
ADCINB3-mit GND verbunden
ADCINB4-mit GND verbunden
ADCINB5-mit GND verbunden
ADCINB6-mit GND verbunden
ADCINB7-mit GND verbunden

desweiteren
VREFLO-mit GND verbunden

An ADCINB0 möchte ich nun ein Signal 0..3V legen. Bei Anschluss eines 
Netzteiles an ADCINB0 gegen GND fließt sofort ein hoher Strom 
(Strombegrenzung). Desweiteren habe ich probiert die Spannung (5V) des 
Boards mit einem Spannungsteiler herunter zu teilen und dann auf den 
ADC-Eingang zu legen-auch hier fällt die eingestellte Spannung deutlich 
ab.

Anschließend habe ich noch versucht nach der Schaltung im Anhang, den in 
den ADC hineinfließenden Strom zu begrenzen. Die angelegte Spannung 
blieb stabil. Jedoch war bei einer eingestellten Maximalspannung von 3V 
der Wert über 4095..
Wer kann mir helfen?

von Phil (Gast)


Angehängte Dateien:

Lesenswert?

Anhang vergessen

von Thomas S. (Gast)


Lesenswert?

Hi Phil,

meinst du den ADCLO oder das Signal ADCREFM ?
die Referenz wird aus der Differenz von ADCREGP und ADCREFM gebildet, 
darf also NICHT auf GND liegen. Welches Board benutzt du dafür ?


Gruß Thomas

von Jens (Gast)


Lesenswert?

Hallo Thomas,
ich arbeite mit Phil zusammen an dem Problem:

Phil meint mit VREFLO den ADCLO. Die ADCREFM und ADCREFP haben wir nicht 
weiter beschaltet. Ist das ein Problem?

Das Grundproblem ist, das bei Beschaltung der analogen Eingänge ein sehr 
großer Strom fließt. Die angelegte Spannung bricht z.B. von 2,5 V auf 
0,8 V ein.
Mit der Schaltung die Phil erwähnt hat, haben wir es geschafft den Strom 
zu minimieren. Die in den Registern (ADCINA0..7) abgelesenen Werte (für 
0,5; 1,0; 1,5; ...V) sind zwar linear aber nicht wirklich brauchbar, da 
es nur 3 mögliche Hex-Werte gibt.

Generell:
Es ist unklar, ob bereits ein Defekt am Board vorliegt. Aber: Legen wir 
die Board-eigene Masse oder die Boardspannung von 3 V auf den Eingang, 
können wir plausible Werte in den Registern ablesen (1365 hex / 4095 
hex).

Die Bezeichnung vom Board hab ich nicht zur Hand...... muss ich 
nachsehen.

Gruß,
Jens

von Jens (Gast)


Lesenswert?

... hab es gefunden:
Das Board heißt eZdspF2812.

Informationen hierzu findet man unter:
http://www.spectrumdigital.com/product_info.php?&products_id=138
http://c2000.spectrumdigital.com/ezf2812/

Gruß,
Jens

von Bastian (Gast)


Lesenswert?

Also im Datenblatt (zumindest vom 2808er) steht, ADCREFM und ADCREFP 
sollten mit einer Kapazität 2,2uF und low ESR gegen Masse beschaltet 
werden.

Ansonsten kann natürlich auch noch ein Fehler in der Initialisierung des 
ADCs sein. Das Ergbnis von 1365hex für die Board-eigene Masse erscheint 
mir auch nicht ganz korrekt (wenn ich den Wert richtig zugeordnet habe). 
Es hilft auch, wenn ihr einfach mal den Mittelabgriff eines Potis (am 
besten linear) an einen AD-Eingang legt, und die anderen beiden 
Anschlüsse logischer Weise an die Board-eigene Masse und 
Betriebsspannung.

Ich nutze das eZdspF2808 und dort klappt es ohne Probleme...

Gruß Bastian

von Phil (Gast)


Lesenswert?

Hallo Bastian,

danke für deine Antworten.
Die Idee mit dem Spannungsteiler hatten wir auch schon:
Potianschluss Links: AGND Testpunkt
Potianschluss Rechts: +5V (von JTAG-Schnittstellen-Pin).
Schleifer auf Messgerät. Dann Spannung (0..3V) einstellen. Dannach 
zusätzlich den Schleifer des Potis an ADCINB1. Dabei bricht die vorher 
eingestellte Spannung ein. Ist dieses normal?
Ist es bei deinem AD-Wandler so, dass bei 0V im entsprechenden 
Adc-Register 0000 steht und bei 3V 4095?
Hast du noch eine Idee/nähere Informationen zu "Fehler in der 
Initialisierung des ADC"?

Danke dir und Gruß

Phil

von Jens (Gast)


Lesenswert?

... bei 0 V war der Wert bei uns bei 1240 hex - habe ich vorher falsch 
geschrieben.

... warum fließt ein so großer Strom in den ADC-Eingang ?

Gruß,
Jens

von Bastian (Gast)


Lesenswert?

Hallo,
also ich nutze folgende Initialisierung:

AdcRegs.ADCTRL3.all = 0x00E0;
AdcRegs.ADCTRL3.bit.SMODE_SEL = 1;
AdcRegs.ADCTRL1.bit.SEQ_CASC = 1;
AdcRegs.ADCMAXCONV.bit.MAX_CONV1 = 1;
AdcRegs.ADCCHSELSEQ1.bit.CONV00 = 0x00;

// Start der Wandlung...
AdcRegs.ADCTRL2.bit.SOC_SEQ1 = 1;

// SEQ1 für nächste Wandlung zurücksetzen...
AdcRegs.ADCTRL2.bit.RST_SEQ1 = 1;


Bricht die Spannung denn bei jedem analogen Eingang zusammen oder nur 
bei einem ganz bestimmten? Es klingt so, als wäre ein Kurzschluss 
zwischen dem Pin vom ADC und der Masse vorhanden. Habt ihr sonst noch 
irgendeine Beschaltung am Evaluationboard dran?

Zum Wertebereich: bei 0V sollte im Register auch eine 0 stehen und bei 
3V dann 4095.

von Phil (Gast)


Lesenswert?

Eine sonstige Beschaltung haben wir nicht am Board angeschlossen. Nur 
die nicht benutzten Eingänge mit GND verbunden. Und VREFLO noch mit GND.
Wie wird denn die Initialisierung durchgeführt? Also wo werden die 
Befehle eingegen?
 Wir haben bis jetzt nur mit Simulink erstellt, kompiliert und dann in 
den DSP übertragen. Und mit dem CCStudio die ADC-Register abgefragt.

Danke und dir nen schönes Wochenende,

Gruß Phil

von Phil (Gast)


Lesenswert?

Wie lässt sich feststellen,ob der ADC defekt ist?

von Bastian (Gast)


Lesenswert?

Am besten ihr ladet euch mal folgendes Paket runter:

http://focus.ti.com/docs/toolsw/folders/print/sprc191.html

Das sind Beispielprojekte für alle Peripherals im DSP (unter anderem 
auch für den ADC). Sind alle mit dem CodeComposer erstellt. Einfach ein 
Projekt öffnen, kompilieren und in den DSP hochladen. Das waren auch 
meine ersten Schritte mit dem DSP.

Wenn dann immer noch nichts geht, messt mal den Widerstand vom ADC-Pin 
zu Masse und Versorgungsspannung. Vielleicht ist ja ein Kurzschluss 
vorhanden.

Viel Glück weiterhin...

von Phil (Gast)


Lesenswert?

Hallo nochmal,

die Bespielprojekte sind leider nicht für den F2812 geeignet. Wir haben 
den ADC mal in einer Messreihe vermessen:
U       U          Register
unbelastet  belastet  hex
0,0      0,00  1240
0,2      0,20  2240
0,4      0,40  4240
0,6      0,60  5240
0,8      0,70  6240
1,0      0,73  67C0
1,2      0,74  6BC0
1,4      0,75  6DC0
1,6      0,75  6DC0
1,8      0,75  6DC0
2,0      0,75  6DC0
2,4      0,77  6DC0
2,8      0,77  6DC0
3,0      0,78  6E10

Im Bereich von 0..1V ergibt sich eine Linearität. Die Spannung würde 
mittels eines Potis (Basisspannung vom F2812) heruntergeteilt. Dabei 
wurde zunächst die Spannung eingestellt (U unbelastet) und dann auch den 
ADC-Eingang gelegt (U belastet).

Im Handbuch steht, dass der ADC im Bereich von 0..3V arbeitet. Dieses 
scheint nicht so zu sein (0..1V ?) Kann es sein, dass ab 1 V die 
Schutzbeschaltung (Diode) greift und daher ein hoher Strom fließt?

Worauf lassen die obigen Werte schließen? Ich sehe nur noch die 
Möglichkeit der ADC-Kallibrierung...

Gruß Phil

von Bastian (Gast)


Lesenswert?

>> die Bespielprojekte sind leider nicht für den F2812 geeignet.

Oh doch, ihr müßt nur in der F28xx_Device.h oder in der F28xx_Example.h 
den richtigen Typ wählen (Grundeinstellung ist 2808).


Seid ihr auch sicher, dass ihr die richtigen Register auslest? Auf 
jedenfall MUSS bei 0V eine 0 im Ergebnisregister stehen und bei 3V MUSS 
4095 drin stehen. Die Werte dazwischen sind erstmal egal. Aber es kann 
eigentlich nicht sein, wenn ihr die 3V an den Analog-Pin anlegt, dass 
dann nur 0,78V "ankommen". Habt ihr die Boardvariante mit Sockel? Wenn 
ja, dann nehmt mal den DSP runter und legt die boardeigenen 3V an den 
Pin. Bricht die Spannung dann immernoch zusammen, liegt irgendwo ein 
Kurzschluss (oder niederohmige Verbindung zu Masse) vor. Fordert einfach 
ein paar Samples des DSPs bei TI (dauert höchstends 1-2 Tage ;-) an und 
baut einen anderen DSP auf das Board. Vielleicht hat der DSP ja 
irgendwann mal was abbekommen.
Mehr fällt mir jetzt auch nicht mehr ein.

Grüße Bastian

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.