Cómo suavizar los valores del potenciómetro

4

Tengo un actuador lineal que tiene una olla. Estoy leyendo el valor del bote en mi uC y me doy cuenta de que los valores están fluctuando salvajemente cuando el bote está cambiando (arriba y abajo). Los valores nunca parecen estabilizarse. Utilizo el valor del promedio móvil para estabilizar el valor en el software, sin embargo, esto conduce a errores. Cuando adjunto una olla normal a la uC no obtengo ninguna fluctuación de valor. Todos los sistemas están conectados a la misma fuente de alimentación.

Pregunta: ¿Existe una mejor manera en la electrónica para obtener una lectura estable de la olla en un entorno ruidoso?

Editar: Actuadores lineales de Servo City

    
pregunta

3 respuestas

1

¿Está digitalizando una tensión variable producida por un potenciómetro analógico?

He usado equipo como ese y he visto el jitter y la descamación en los valores que se leen de las ollas. En mi experiencia, podría mejorarse sustancialmente limpiando los potenciómetros con aire comprimido y alcohol.

Sospecho que el problema es que DC se está enviando ingenuamente a través del potenciómetro, y luego se muestrea el voltaje dividido.

Los diseñadores de audio saben que las importantes corrientes de CC que fluyen a través de los potenciómetros (que también llevan audio) agregarán una gran cantidad de ruidos chirriantes cuando esos potenciómetros se mueven (y quizás incluso cuando no lo son).

Si estuviera diseñando un circuito que digitalice la posición de un potenciómetro analógico (en lugar del método obvio de usar un codificador rotatorio o lineal), caería estrictamente una señal de CA (desde un oscilador) a través del potenciómetro, sin Componente DC Esto se rectificaría, detectaría y digitalizaría.

Otra consideración es que las ollas de carbono baratas son más ruidosas que las unidades de cerámica, de plástico conductor o bobinadas con alambre.

Una técnica de software muy simple para suavizar valores es el suavizado ponderado exponencialmente. Este es un hermoso truco que permite que el valor suavizado dependa de todos los valores anteriores, sin conservar un historial de muestras anteriores. (Analogía familiar: la carga de un capacitor es igualmente exponencial, y el valor actual depende de todas las corrientes pasadas. Sin embargo, el capacitor no tiene memoria, per se.) Parece que hay un página de Wikipedia al respecto.

Para implementar el suavizado exponencial, simplemente realice un seguimiento del valor estimado \ $ s \ $ del potenciómetro (o cualquier parámetro \ $ x \ $ que esté muestreando). El estimador se inicializa con la primera muestra:

$$ s_0 = x_0 $$

Luego, cuando se obtiene una nueva muestra, reemplazamos el estimador con una combinación lineal del valor existente y nuevo, donde \ $ \ alpha \ $ es el factor de fusión (denominado "factor de suavizado" en esta situación).

$$ s_t = \ alpha x_ {t-1} + (1 - \ alpha) s_ {t-1} $$

Esto se puede reescribir convenientemente de esta forma:

$$ s_t = (s_ {t-1} - s_ {t-1}) ^ {\ rightarrow 0} + \ alpha x_ {t-1} + (1 - \ alpha) s_ {t-1} $$

$$ s_t = s_ {t-1} - s_ {t-1} + s_ {t-1} + \ alpha x_ {t-1} - \ alpha s_ {t-1} $$

$$ s_t = s_ {t-1} + \ alpha x_ {t-1} - \ alpha s_ {t-1} $$

$$ s_t = s_ {t-1} + \ alpha (x_ {t-1} - s_ {t-1}) $$

En otras palabras, la nueva estimación es la estimación anterior, más una fracción de la diferencia entre el nuevo valor de la muestra y la estimación anterior .

Si todas las cantidades son enteros y \ $ \ alpha \ $ es una potencia de dos constantes, esto es muy fácil de implementar en el código. Por ejemplo, supongamos que tomamos \ $ \ alpha \ $ como \ $ 1/4 \ $, de modo que combinemos un 25% de valor nuevo, un 75% de estimador:

   /* C pseudo-code */
   s += (sample - s)/4;  /* optimizes to s += (sample - s) >> 2; */

   /* s returned to caller as the value */

El suavizado ponderado exponencialmente implementado como una línea: restar, desplazar a la derecha, acumular.

    
respondido por el Kaz
3

¿Ha intentado simplemente colocar un condensador de 100 nF en el limpiador del potenciómetro? Eso podría hacer el truco por ti. Esto debería tener un efecto de "suavizado", y los condensadores de mayor valor tendrán un efecto de suavizado más pronunciado.

    
respondido por el vicatcu
0

Parece que el ruido eléctrico de su motor se está acoplando al potenciómetro. Si se trata de un actuador lineal de motor de CC, pruebe los siguientes procedimientos recomendados como primer paso:

  • Use cable blindado trenzado para la excitación del potiómetro, el limpiador y los cables de tierra.
  • Use un cable trenzado de dos pares para el potenciómetro: un par para la excitación y la conexión a tierra y el segundo par para el limpiador y la conexión a tierra, con las conexiones a tierra en el potenciómetro. Use un amplificador diferencial en su tablero para rechazar el ruido de modo común.
  • Si es práctico, use un cable de par trenzado para los cables de alimentación del motor
  • Use ~ 0.1uF de capacitores cerámicos en los conductores del motor (en el motor) y desde cada conductor del motor a la caja del motor para mitigar parte del ruido inducido por la conmutación del motor.
  • Evite largos recorridos paralelos de la potencia del motor y el cableado de señal del potenciómetro para reducir la interferencia.

Una mejor manera de hacer el cierre de bucle en entornos ruidosos es utilizar un codificador de cuadratura , como las señales entre los lineales. El actuador y su controlador son digitales y, por lo tanto, más inmunes al ruido. Para entornos muy ruidosos, incluso las señales del codificador digital se manejan de manera diferente.

Los codificadores están disponibles en muchos factores de forma, incluidos los que son intercambiables con potenciómetros:

    
respondido por el HikeOnPast

Lea otras preguntas en las etiquetas