Estoy utilizando un potenciometro en un pequeño proyecto que consiste en emular un metrónomo. Lo utilizo para seleccionar la velocidad, en una entrada analógica. El problema que tengo es que el potenciómetro, cuando está quieto, varía su valor, no se mantiene un valor fijo.
Como soy novato creo que quizás no es posible estabilizar esa entrada al ser analógica y tendría que utilizar otros dispositivos para seleccionar la velocidad.
¿Hay alguna manera de estabilizar esa entrada para que cuando no se mueva el potenciometro el valor continue inalterable?
¿Hay alguna manera de estabilizar esa entrada para que cuando no se mueva el potenciometro el valor continue inalterable?
Una manera es promedidando pero aun asi no lo va a fijar que es lo que buscas.
La unica solución es que pongas una banda para la cual no modifcas el valor y cuando supere esa banda de valores entonces muestras cambios.
digamos que lees 512 o sea que estas al centro o 2.5V bien tu monitor serie muestra 2.51 2.53 y luego 2.49
Entonces tu manda será algo como +- 3 Todo lo que este en dentro de un rango +3 o -3 no lo tomas y sigues viendo tu valor anterior.
una forma de hacer eso es usando el valor absoluto del valor pero restándole el valor actual.
abs(pot - valor) > 3 cuando sea mayor que 3 entonces muestras el valor y si no lo es muestras por ejemplo una variable valor que podrias estar promediada.
Veamos como quedaría
const byte pinAD = A0;
unsigned int valor, valorAnt = 0;
float pot;
void setup() {
Serial.begin(9600);
}
void loop() {
valor = analogRead(pinAD); // Leo el valor de AD
if (abs(valor - valorAnt) > 3) {
Serial.print(valor);
valorAnt = valor;
}
}
Este simple código muestra un valor cuando la diferencia es mayor que 3 si quieres puedes poner >=
Prueba a ver como se comporta.
Hi,
Puedes usar un filtro a la entrada de la senal analoga. El filtro consta de una resistencia digamos de 1K con un condesador electrolitico de 1uf. El condesador lo puedes aumentar o disminuir de acuerdo a la estabilidad de la lectura. Otra cosa que puedes hacer es leer la senal ejemplo 12 veces y la divides por 12 y te va a dar un premedio de la lectura. Otra cosa es estabilizar el voltaje de entrada a la resistencia con condensador de por lo menos 25uf y otro de .1uf en paralelo.Esto puede eliminar cualquier ruido introducido por la energia que suple el potenciometro.
Muchas gracias por vuestras sugerencias. Creo que voy a probar primero el promedio, Os contaré.
Aprovecho para preguntar otra cosa. En la función que lee el potenciometro hago mapeo a los valores 30 a 256. Este valor se muestra en un display de 4 dígitos de 7 segmentos. El problema que tengo es que al mover el potenciometro pasa de 43 directamente a 56 y cosas así, cuando lo que me gustaría que es fuera valor a valor.