Forum: Mikrocontroller und Digitale Elektronik ADC gibt keine 0 her!


von Timo P. (latissimo)


Lesenswert?

Hallo! Als Referenzspannung habe ich VCC genommen. Bei anlegen der VCC 
sehe ich per Uart die 1023 manchmal auch nur 1022, das ist ok...

Man sieht hier, das es sich um einen 10Bit-ADC handelt. Aber wenn ich 
nun 0V anlege, dann misst der verschiedene Werte, ca von 180 bis 220
bei mit sind das dann ca 651mV Das oszilloskop sagt aber dass maximal 
80mv anliegen. komische sache..


Was ich ausprobiert habe: GND an den ADC-PIN keine Veränderung! so war 
ja sichergestellt, dass die Potentiale der Spannungsmessung definitiv 
gleich sind.

Kann die SW schuld sein?

MSP430F2274

von Lupin (Gast)


Lesenswert?

Wahrscheinlich ist der ADC Takt zu hoch oder die Sample & Hold Wartezeit 
zu kurz (falls sich bei den Controller sowas einstellen lässt).

Ähnliches Problem hatte ich mal mit nem PIC18, da waren die zeiten auch 
zu knapp.

von Stefan G. (Gast)


Lesenswert?

Das Problem liegt meist in der falschen ADC Taktfrequenz, das Problem 
hatte ich auch mal.

schau mal hier:
http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#ADC_.28Analog_Digital_Converter.29

ich hab dir das wichtigste rauskopiert!

ADPS2...ADPS0 (ADC Prescaler Select Bits)

Diese Bits bestimmen den Teilungsfaktor zwischen der Taktfrequenz und 
dem Eingangstakt des ADC.
Der ADC benötigt einen eigenen Takt, welchen er sich selber aus der 
CPU-Taktfreqenz erzeugt. Der ADC-Takt sollte zwischen 50 und 200kHz 
sein.
Der Vorteiler muss also so eingestellt werden, dass die CPU-Taktfrequenz 
dividiert durch den Teilungsfaktor einen Wert zwischen 50-200kHz ergibt.
Bei einer CPU-Taktfrequenz von 4MHz beispielsweise rechnen wir

\begin{matrix} 
TF_{min}=\frac{CLK}{200\,\mathrm{kHz}}=\frac{4000000}200000}=\mathbf{20} 
\\
\\ 
TF_{max}=\frac{CLK}{50\,\mathrm{kHz}}=\frac{4000000}{50000}=\mathbf{80} 
\end{matrix}

Gruß Stefan

von Timo P. (latissimo)


Lesenswert?

also ich habe meinen ADC wie folgt initialisiert:

ADC10CTL0 = ADC10SHT_2 + ADC10ON + ADC10IE;  // VCC als ADC-Ref

und:

- ADCOSC als Input
- Single-channel-single-conversion
- nur channel A0
- ADC10 clock divider = 8

immernoch keine deutliche besserung. Ich erhalte anstatt 0 für 0V ca 180 
bei 10Bit...

von spess53 (Gast)


Lesenswert?

Hi

Um welchen Controller handelt es sich denn? Und sind alle Anschlüsse, 
also auch AVCC und AGND richtig verschaltet?

MfG Spess

von Gast (Gast)


Lesenswert?

Da keine Taktfrequenz angegeben ist nehme ich mal 20 MHz an.
bei einem Teiler von 8 wären das dann 2,5MHz Takt an den ADC.
-> Datenblatt beschreibt wie schnell man sein darf.

von Timo P. (latissimo)


Lesenswert?

Controller ist immernoch der : MSP430F2274

Außerdem lasse ich nicht meine 4MHz vom Quarz auf den ADC wirken, 
sondern ADCOSC als Input. DIESER wird dann via prescaler geteilt.

Langsamer geht also nicht. Ich habe vieles ausprobiert.
U.a. verschiedene Clocks gewählt.


Bitte um weitere Beteiligung

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.