hi Leute,
wie kann ich ein potentiometer "entprellen". Da mein wer immer so +- 2 schwank. Und durch das nicht Konstant bleiben versucht der Schrittmotor zur neuen Position zu gehen.
Das liegt nicht unbedingt nur am Potentiometer. Auch der ADC hat baubedingt +/- 1 Bit Abweichung wenn man genau auf dem Wert liegt wo das niederwertigste Bit ändert
das untere Bit immer löschen oder setzen, so dass es nicht mehr brummen kann
Das hilft leider nicht, denn das 1 bit Schwanken beim ADC kann z.B. auch zwischen 0b100 und 0b011 (3<->4) stattfinden.
Wenn Mittelwertbildung (egal ob gleitend oder über ein Array der letzten x Messungen) nicht gewünscht ist,
weil man "echte" Änderungen lieber sofort und in voller Höhe haben will, kann man ein Verfahren bauen ähnlich wie es hier im ersten Teil Exception Filtering beschrieben ist (entspricht noiascas Variante b):
const byte e = 2; // Nur Änderungen größer e werden bearbeitet.
int lastval_0; // für analogRead(A0)
int filter(int in, int& last) {
if ( (in < (last - e) || (last + e) < in ) ) {
last = in;
}
return last;
}
void loop() {
int last = lastval_0;
if (last != filter(analogRead(A0), lastval_0))
Serial.println(lastval_0);
}
}