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
> 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
Unbenutzte ADC EIngänge auf Masse legen !
DirkF schrieb: > Unbenutzte ADC EIngänge auf Masse legen ! Und darüber das Abtast-Halte-Glied entladen! :-)
Jake schrieb: > Und darüber das Abtast-Halte-Glied entladen! :-) Ich glaube, das ist gut, auch wenn es vielleicht nich so gemeint war. ;-)
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); } |
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.
Cool ... ist mir nicht aufgefallen ... Nochmals Danke!
das erste Messergebnis sollte immer verworfen werden (nach Kanal-Umschaltung)
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.
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??
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.
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.
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!
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.
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.
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).
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.