Im Atmel ATmega328-Datenblatt, Abschnitt 24.6.1, wird empfohlen, den analogen Eingangspin mit einer Ausgangsimpedanz von 10 KOhm oder weniger anzusteuern. Außerdem wird empfohlen, Hochfrequenzkomponenten mit einem Tiefpassfilter zu entfernen. (Dieser Tiefpass wird manchmal als Antialiasing-Filter bezeichnet.)
Das einfachste mögliche Tiefpassfilter ist ein Widerstand und ein Kondensator.
+ 5V + 5V | | (Sensor) --- Widerstand --- + --- (Arduino) | | | | Kondensator | | | | GND ---------------- GND -------- GND
Entgegen der landläufigen Meinung ist es nicht möglich, eine zu erstellen Antialiasing-Filter in Software.
Bei einem ersten Prototyp mit niedriger Auflösung gilt als Faustregel, dass die RC-Zeitkonstante mindestens zehnmal so lang ist wie die Zeit zwischen den Abtastungen.
Wenn Sie also mit etwa 1000 Abtastungen / Sekunde (dh einem Abtastintervall von 1 Millisekunde) abtasten, sind möglicherweise 100 Ohm Widerstand und (ungefähr) 100 uF Keramikkondensator ausreichend. (Die RC-Zeitkonstante ist hier RC == 100 Ohm x 100 uF = 10 Millisekunden).
Viele Joysticks haben bereits eine relativ hohe Ausgangsimpedanz. Sie müssen einen Widerstand mit so viel weniger Widerstand verwenden, um dies zu kompensieren. (Manchmal benötigen Sie keinen zusätzlichen Widerstand; aber Sie benötigen immer noch diesen Kondensator zwischen dem analogen Arduino-Eingangspin und dem Arduino-Erdungsstift.) (Viele Sensoren haben eine Ausgangsimpedanz von mehr als 10 KOhm (Leute, die sie verwenden, sind ziemlich gezwungen, einen Operationsverstärkerchip zu verwenden, um saubere Signale zu erhalten).
Es wurden ganze Bücher über Signalfilterung geschrieben Viele andere Techniken, um analoge Signale mit höherer Auflösung zu erhalten, Daten schneller zu erfassen und zwischen ihnen auszutauschen - aber sie sind wahrscheinlich übertrieben, um die Position eines Joysticks zu lesen.