www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik ADC Probleme beim MSP430F1611


Autor: Hase (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Zusammen,

Thena: ADC des MSP430F1611
habe drei Fragen:

1. die Sample&Hold-Zeiten kann man einstellen - nur welchen Wert nimmt 
man? kann mir jemand verraten, welche Überlegungen man zur Berechnung 
(Einstellung) der Sample&Hold-Zeiten anstellen muß? Hat die S&H Zeit 
Einfluß auf die Genauigkeit oder die Reproduzierbarkeit der Meßwerte?

2. da ist noch eine merkwürdige Sättigung beim ADC: wenn ich eine 
Spannung von 0V bis 2,5V anlegen, mißt der ADC (REF 2,5V) alles korrekt 
bis 2,34V. Dann bleibt er einfach "hängen" - das heißt, der ADC-Wert 
bleit bei 2,34V (3841) stehen und folgt den höheren Spannungswerten 
einfach nicht mehr!?! Was kann da falsch sein (oder kaputt) sein? Was 
kann ich tun?

3. wenn ich nach eine Folge von 10 ADC-Sequenzen mit je 4 ADC-Channeln 
laufen lasse und die jeweilige Ausführungszeit messe, so schwankt diese 
scheinbar zufällig und die Ausführungszeit für die erste Sequenz ist 
immer kürzer als die folgenden!?! Hat jemand eine Idee?

Bin für jeden Tip dankbar!!

Autor: HildeK (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich kann nur was zu Punkt 1) beitragen:
Die Samplezeit sollte theoretisch gegen Null gehen, praktisch muss man 
aber den Speicher für die Hold-Phase genügend genau auf- bzw. umladen. 
Das dauert. Wird die Samplezeit zu groß, dann ergibt sich dadurch eine 
Ungenauigkeit, da während dieser Zeit das Eingangssignal sich ja ändert.
Erinnert mich irgendwie an die Heisenbergsche Unschärferelation ;-)

Die Hold-Zeit muss so lange sein, bis der AD fertig gewandelt hat. Zu 
lange Hold-Zeit führt durch Lastströme z.B. des AD-Eingangs zu einer 
Entladung des Speichers und damit zu einer Verfälschung.
Ausserdem bestimmt die Summe aus Sample- und Hold-Zeit die 
AD-Wandelrate.

Autor: Hase (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ah ja - Danke für den Hinweis! Das es noch eine separate "Hold"-Zeit 
gibt wußte ich gar nicht... wie kann man denn die Einstellen? Ich 
hantiere zur Zeit mit SHTO_0 bis SHTO_15 herum (für ADC12CTL0). Das ist 
dann wohl die Sampledauer. Und wie stelle ich dann die Hold Zeit ein?

Autor: Arno H. (arno_h)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
teste mal, ob diese Schwelle betriebsspannungsabhängig ist.

Arno

Autor: Hase (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
leichter gesagt als getan! ich verwende ein OLIMEX-board und das hat 
einen spannungsregler und der läßt sich leider nicht mal eben so 
umgehen. ich müßte da direkt in der schaltung herumlöten und das möchte 
ich eigentlich lieber vermeiden (alles smd-bauteile...).

Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Hase,

noch einige weitere Tipps:

zu 1)
Die Sample/Hold-Zeit hängt auch vom Innenwiderstand Deiner Quelle ab. 
Der AD-Multiplexer hat einen Innenwiderstand von 2K, dazu kommt Dein 
Quellwiderstand. Die Abtastzeit muss so lange eingestellt sein, dass die 
interne Kapazität aufgeladen ist. Näheres im Datenbuch unter Sample 
Timing Considerations.
zu 2)
Wenn man die interne Referenz verwendet muss man am Pin Vref+ die 
Kondensatoren 10µF und 100nF anschließen. Die Vorgaben des Datenblattes 
peinlich genau beachten!
zu 3)
Wie triggerst Du Wandlungen?

Gruss, Michael

Autor: Hase (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
ich starte jede ADC-Sampling-Sequenz durch setzen von ADC12SC in 
ADC12CTL0. Wenn ich das richtig vertsanden habe, wird ADC12SC nach 
Durchlaufen der Sequenz automatisch zurückgesetzt, so daß ich die 
nächste Sequenz wieder durch Setzen von ADC12SC starten kann.

Anbei meine ADC-Initialisierung und die Schleife mit der Sequenz als 
c-Datei.

Autor: Hase (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
P.S.: vielen Dank schon mal für die Tips, Michael! Grüße Hase

Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Hase,

ich hab mir mal Deinen Code angesehen. Leider bin ich kein 
C-Programmierer, und kann nur Vermutungen anstellen. Aber was ich so 
erkennen kann, scheint die Initialisierung in Ordnung zu sein. Ein Punkt 
zur Überprüfung: Wenn man die Referenzspannung einschaltet, muss man 
ziemlich lange warten (17ms), bis der Kondensator an Vref+ geladen ist 
(s. Datenblatt SLAS368C S. 39 unten) und den Parameter t_REFON darüber. 
Erst dann sollte man mit den Wandlungen beginnen, also sicherstellen, 
dass zwischen Initialisierung und Wandlung die notwendige Wartezeit 
verstreicht - probier mal mindestens 100ms.
Bei der Zeitmessung verwendest Du den Timer B. Vielleicht kommen Dir 
noch irgendwelche Interrupts dazwischen, so dass der Timerstand nicht 
genau definiert übernommen wird?
Noch ein Punkt: Hat Deine Betriebsspannung 3V oder mehr?

Weiteres: Du verwendest die interne ADC12-CLK ohne Vorteiler. Das sind 
lt. Datenblatt zwischen 3.7 und 6.3MHz, nominell 5 MHz. Versuche mal 
einen anderen Takt (vielleicht den, der auch den TimerB taktet) und/oder 
verwende mal einen Vorteiler.

Gruss, Michael

Autor: Hase (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hab' den Fehler (2. / 3.) gefunden -> war ein kleines problem mit Little 
& Big Endian Zahlenkonversion... :(
Nochmals VIELEN DANK FÜR DIE UNTERSTÜTZUNG!

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.