Forum: Mikrocontroller und Digitale Elektronik ADC: Ungenutzer Kanal hat gleichen Wert wie genutzer Kanal. Was tun?


von Jake (Gast)


Lesenswert?

Hallo,

ich nutzte 2 ADC-Kanäle eines ATmega88PA um 2 Potis einzulesen. Die 
Werte werden auf einer SD-Karte gespeichert.

Nun wir manchmal auch nur ein Poti angeschlossen und der andere bleibt 
frei.

Der freie Kanal hat dann aber immer den gleichen Wert wie der genutzte 
Kanal. Ich denke, dass kommt durch das Abtast-Halte-Glied, oder sehe ich 
das falsch?

Ich fände es aber besser, wenn ein ungenutzer Kanal immer Null anzeigt.
Aber wie macht man sowas üblicher weise? Mit Pull-Down-Widerstand?

Grüße

Jake

von Jake (Gast)


Lesenswert?

"Genutzt" natürlich ;-)

von Ralf (Gast)


Lesenswert?

> Aber wie macht man sowas üblicher weise? Mit Pull-Down-Widerstand?
Wenn deine Potis nicht direkt, sondern über einen kleinen 
Serienwiderstand angeschlossen sind könntest du auch einfach mal kurz 
den Port als lowaktiven Ausgang setzen.
Der Serienwiderstand soll hierbei verhindern, dass zuviel Strom in den 
Port fliest, wenn das Poti ~0R@VCC hat.

Ralf

von DirkF (Gast)


Lesenswert?

Unbenutzte ADC EIngänge auf Masse legen !

von Jake (Gast)


Lesenswert?

DirkF schrieb:
> Unbenutzte ADC EIngänge auf Masse legen !

Und darüber das Abtast-Halte-Glied entladen! :-)

von Jake (Gast)


Lesenswert?

Jake schrieb:
> Und darüber das Abtast-Halte-Glied entladen! :-)

Ich glaube, das ist gut, auch wenn es vielleicht nich so gemeint war. 
;-)

von Dr.PillePalle (Gast)


Lesenswert?

den mux zwischen den messungen auf intern GND schalten
siehe Bsp. (Atmega8)
1
void readandsendadc1 (void)  {  
2
  ADMUX=0x45;  // First ADC read from left to right on the board (from outside)
3
    // Analogic to digital to serial measures
4
    ADCSRA |= _BV(ADSC); //Start conversion
5
    while (ADCSRA & _BV(ADSC) ) {} // wait until converstion completed
6
    // get converted value
7
    adcresult = ADCW;  // ADCW is the ADC result register 
8
  measurelowbyte = ADCL;
9
  measurehighbyte = ADCH;
10
   ADMUX=0x4f; // mux to GND - discarge the s&H cap <-----------------------------------
11
  UART_putchar('A');
12
  UART_putchar('1');
13
  UART_putchar(measurehighbyte);
14
  UART_putchar(measurelowbyte);  }
15
  
16
void readandsendadc2 (void)  {  
17
  ADMUX=0x44;  // 2nd ADC read from left to right on the board (from outside)
18
    // Analogic to digital to serial measures
19
    ADCSRA |= _BV(ADSC); //Start conversion
20
    while (ADCSRA & _BV(ADSC) ) {} // wait until converstion completed
21
    // get converted value
22
    adcresult = ADCW;  // ADCW is the ADC result register 
23
  measurelowbyte = ADCL;
24
  measurehighbyte = ADCH;
25
  ADMUX=0x4f; // mux to GND - discarge the s&H cap <-----------------------------------
26
  UART_putchar('A');
27
  UART_putchar('2');
28
  UART_putchar(measurehighbyte);
29
  UART_putchar(measurelowbyte); }

von Jake (Gast)


Lesenswert?

Dr.PillePalle schrieb:
> den mux zwischen den messungen auf intern GND schalten

Noch besser! Wusst nicht, dass das geht. Danke! Da schau ich gleich 
nochmal ins Datenblatt des ATmega88PA.

von Jake (Gast)


Angehängte Dateien:

Lesenswert?

Cool ... ist mir nicht aufgefallen ...

Nochmals Danke!

von N. G. (newgeneration) Benutzerseite


Lesenswert?

das erste Messergebnis sollte immer verworfen werden (nach 
Kanal-Umschaltung)

von Timm T. (Gast)


Lesenswert?

Jake schrieb:
> Noch besser! Wusst nicht, dass das geht.

Das geht auch nicht. Unbenutzte Eingänge tendieren dazu, gegen Vcc zu 
laufen. Und das misst man auch, wenn man zwischendurch den MUX, aber 
nicht den Eingang auf Masse legt.

Auch sollte da ein RC-Glied davor sein, erstens um Störungen abzufangen 
und die Eingänge zu schützen, zweitens um den Sample-C nachladen zu 
können. 10n / 100k sind ein guter Wert.

Für ein definiertes Potential den Eingang hochohmig (1Mohm) auf Masse 
legen. Die 1Mohm belasten das Poti noch nicht nennenswert, reichen ab, 
um ein Hochlaufen zu verhindern.

N. G. schrieb:
> das erste Messergebnis sollte immer verworfen werden

Quark. Das erste Messergebnis nach Starten des ADC sollte verworfen 
werden. Die Kanäle kann man zyklisch durchschalten, das ist kein 
Problem. Es sollte aber am Eingang ein Kondensator liegen, um den Cs 
schnell laden zu können, sonst kann es passieren, dass der erst nach 
mehreren Messungen seinen Sollwert hat, und dann sind die ersten 
Messungen falsch.

von H.Joachim S. (crazyhorse)


Lesenswert?

D.h. - du gehst direkt mit nem A/D-Eingang ohne weitere Beschaltung an 
eine Buchse, wo ab zu einer ein Poti an- und absteckt??

von Jake (Gast)


Lesenswert?

H.Joachim Seifert schrieb:
> D.h. - du gehst direkt mit nem A/D-Eingang ohne weitere Beschaltung an
> eine Buchse, wo ab zu einer ein Poti an- und absteckt??

Ähhh ... ja.

von Timm T. (Gast)


Lesenswert?

Jake schrieb:
> Ähhh ... ja.

Du bist ein böser Junge. Das tut man nicht.

Also RC-Glied 100k + 10n, davor einmal 1Mohm gegen GND für ein 
definiertes Potential. Schutzdioden brauchst Du nicht, dass macht der 
100k R mit den internen Schutzdioden.

von Jake (Gast)


Lesenswert?

Timm Thaler schrieb:
> Also RC-Glied 100k + 10n, davor einmal 1Mohm gegen GND für ein
> definiertes Potential. Schutzdioden brauchst Du nicht, dass macht der
> 100k R mit den internen Schutzdioden.

Ok, werde ich machen. Danke!

von Dietrich L. (dietrichl)


Lesenswert?

Timm Thaler schrieb:
> Also RC-Glied 100k + 10n

Atmel empfiehlt max. 10kOhm.

von Timm T. (Gast)


Lesenswert?

Dietrich L. schrieb:
> Atmel empfiehlt max. 10kOhm.

Du meinst sicher das hier: "The ADC is optimized for analog signals with 
an output impedance of approximately 10 kΩor
less. If such a source is used, the sampling time will be negligible. If 
a source with higher imped-ance is used, the sampling timewill depend on 
how long time the source needs to charge the
S/H capacitor, with can vary widely."

Mit einem Cvor von 10n ist die Quelle niedrigimpedant gegenüber einem Cs 
von 14pF. Da kannst Du auch 1Mohm davorschalten, aber dann wird der 
Tiefpass halt langsamer, für ein Poti immer noch ausreichend.

Die 10k sind einzuhalten, wenn kein Tiefpass verwendet wird, weil dann 
der Cs nicht aus dem Cvor, sondern über den R direkt geladen wird.

von Dietrich L. (dietrichl)


Lesenswert?

Timm Thaler schrieb:
> Die 10k sind einzuhalten, wenn kein Tiefpass verwendet wird, weil dann
> der Cs nicht aus dem Cvor, sondern über den R direkt geladen wird.

OK, Du hast recht! 10k sind hier nicht nötig.

von Jake (Gast)


Lesenswert?

Dietrich L. schrieb:
> Atmel empfiehlt max. 10kOhm.

Stimmt auch wieder:

The ADC module is optimized for analog signals with an output impedance 
of 10 kΩ or less. If such a source is used then the sampling time will 
be negligible.

If the source impedance is higher than 10 kΩ then the time taken to 
charge the capacitor will increase (which can vary widely) and may 
produce inaccurate results.

For example if we use a voltage divider at the ADC input using a 
resistor network make sure that the source impedance is less than 10kΩ.

The low impedance must be used for slowly varying signals since this mi
nimizes the time for charge transfer.

It is recommended to remove the frequency components higher than Nyquist 
frequency(f ADC/2) with a low pass filter (to avoid distortion from 
unpredictable signal convolution).

von Jake (Gast)


Lesenswert?

Timm Thaler schrieb:
> Jake schrieb:
>> Noch besser! Wusst nicht, dass das geht.
>
> Das geht auch nicht. Unbenutzte Eingänge tendieren dazu, gegen Vcc zu
> laufen. Und das misst man auch, wenn man zwischendurch den MUX, aber
> nicht den Eingang auf Masse legt.

Habs gerade ausprobiert -> funktioniert.

von Soul E. (Gast)


Lesenswert?

Jake schrieb:

> Der freie Kanal hat dann aber immer den gleichen Wert wie der genutzte
> Kanal. Ich denke, dass kommt durch das Abtast-Halte-Glied, oder sehe ich
> das falsch?

Hast Du vielleicht die Kondensatoren direkt an den ADC-Pins vergessen? 
Die reduzieren das Übersprechen, welches aus einer Restladung im 
S&H-Kondensator resultiert, deutlich. "Direkt am Pin" heisst 
Leitungslänge <10 mm.

Ein bisschen Übersprechen bleibt immer, wenn der Eingang offen ist. Wenn 
Dich das stört, sieh einen ohmischen Pfad (100kOhm oder so) nach Masse 
vor.

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.