Welche Hardware zur Drehpoti "Beruhigung"?

Hej Schwarmintelligenz

Drehpotentiometer haben ja die Unart, zu zittern.
Man kann zwar einiges durchs "smoothen" in der Software regeln, aber irgendwie reicht es bei meinem Projekt nicht.

Nun soll ja durch das Einsetzen von Kondensatoren o.Ä. das Problem Hardwareseitig behoben werden zu können.

Bei mir geht es speziell um 8 Drehpotis, 10KOhm, unter 3,3 V Anschluss.
Ihre Werte "mappe" ich runter auf 0 - 127 zur Ausgabe.
Alle Potis an analogen Pins.

Mag mir jemand verraten, welche Art von Hardware ich wo Einsetzen sollte, um das "Zittern" zu unterbinden?

Danke im Voraus
Grüsse aus Kopenhagen

Was verstehst du denn unter zittern bei einem Poti? Ich kann damit nichts anfangen.

Naja, das LSB zappelt halt gerne mal.
Klingt schon wieder nach Midi, oder?

Oder mit RunningMedian smoothen

@noiasca

 void potisAbfragen(byte zaehler){
  potiWert[zaehler] = (2.5 * potiWert[zaehler] + 7.5 * analogRead(A5)) / 10;
   if ( (potiWert[zaehler] > (potiWertAlt[zaehler] + toleranz))  ||  (potiWert[zaehler] < (potiWertAlt[zaehler] - toleranz)) ) {
    cWert[zaehler] = map (potiWert[zaehler],0,1023,127,0);     
      usbMIDI.sendControlChange(controllerNummer[zaehler],cWert[zaehler],0);    
      Serial.println(cWert[zaehler]);
      Serial.println(controllerNummer[zaehler]);
      LED1();
      potiWertAlt[zaehler] = potiWert[zaehler];}
     LED0();
   }

Dies ist der Minimalcode.
An dieser Stelle aber über ein Multiplexer Digital an ein Teensy angeschlossen.

Ich habe es mit allen an dieser Stelle möglichen Smoothwerten versucht, es bleibt alles Stückwerk!

@Klaus_ww

Jaha..., natürlich MIDI :wink:

Mein Controller ist ja eigentlich fertig, aber eben die Potis zittern, und somit ist er unbrauchbar...

potiWert[zaehler] = (2.5 * potiWert[zaehler] + 7.5 * analogRead(A5)) / 10;

Hui, was ist das denn?

@Klaus_ww

DAS ist mein "smoothen"!

Ich tut mir grad etwas schwer den Sketch zu lesen... wo kommt die Toleranz her?

Ich würde das so ähnlich wie beim Entprellen eines Tasters machen. Schau wie schnell die schnellste Änderung sein soll und packen das in eine Fadingfunktion, wo mit entsprechenden millis() für die einzelnen Schritte der zu verarbeitende Werte dem gemessenen Wert nachgezogen wird.

Mit Hardware kann man es auch probieren- pack eine in Gummigelagerte größere Masse auf die Potiwelle... :wink:

Hallo,

Gleitender Mittelwert wäre noch eine Möglichkeit. Kann man schön in eine Funktion packen und dann mehrfach nutzen.

Ich hab das mal mit ner Hysterese gemacht:

  static int lastReading;
  int reading = analogRead(POTI_PIN);
  if (reading > lastReading + 10 || reading < lastReading - 10) {
    lastReading = reading;
    //Poti Code hier....
  }

Heist als in meinem Fall muss sich das Poti mehr als 10 bewegt werden, einzelne Schwankungen kommen da nicht durch, die Hysterese kannst du auch runtersetzten, so 3 sollte auch genügend sein.

Macht das das Poti auch an einem Multimeter, wenn der Rest vom Strom abgeklemmt ist?

ElEspanol:
Macht das das Poti auch an einem Multimeter, wenn der Rest vom Strom abgeklemmt ist?

Ja, den Widerstand halt.