ADC: Ungenutzer Kanal hat gleichen Wert wie genutzer Kanal. Was tun?

Gast #3352927
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
Gast #3352946
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
Gast #3352972
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); }
Gast #3353030
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.
Gast #3353532
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.
Gast #3353539
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).
Gast #3353574
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.
Gast #3353785
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren