Tuve un error, o pense en otra cosa cuando lo pase... En realidad es 1 solo shift a la derecha, es decir una división por 2.
Supongamos que
Tus "escalones" fueran: 200V y 220V
Histeresis = 5V
(valores_in-valores_in[i+1])
(Hay un error, como ves están dados vueltas, debería ser el i+1 menos el i. )
Te da 20V que es la diferencia. (220V-200V)
Dividirlo por 2, te deja la mitad, es decir 10V
Luego comparamos dos cosas:
10V+-5V (punto medio +- histeresis) y leido - 200V (cuanto supera al escalon inferior)
Supongamos que leiste 216V
Si es el limite superior es +, por lo que 15V < 16V, se cumple, y por lo tanto activa la salida siguiente o la que pertenece al escalon de los 220V
Supongamos que la entrada eran 203V
Si es el limite inferior es -, por lo que 5V > 3V, se cumple, y por lo tanto activa la salida anterior o la que pertenece al escalon de los 200V
Supongamos que la entrada es de 210V
No cumple con ninguno de los valores, en este caso pueden ocurrir dos cosas:
- Suponiendo que uses de comienzo este codigo (inicio, ninguna salida activa), vas a tener que ver cual es el "mejor caso", es decir cual se aproxima mas al escalon. Y elegir ese
Esto lo vas a lograr con un for recorriendo, restando y observando cual tiene el menor error posible.
- Suponiendo que ya esta funcionando con una entrada activa, entonces seguirias con la misma entrada. Por eso devuelve la salida "vieja"
Otra pregunta es si puedo usar una histeresis de 1
Vos podes hacer lo que quieras... Todo depende de:
- que tan rapido sea tu circuito de medida, ya que si detecta todos los cambios en la señal de entrada, entonces va a tener que se conectan y desconectan a cada rato las salidas.
- La capacidad de lectura que tengas con el ADC, si 1V no es posible detectarlo, entonces no tiene mucho sentido pensar en hacer una histeresis de ese valor.
Este codigo es para monitorear la entrada cierto?
Teniendo el valor de entrada, y los escalones, te dice cual salida activar.
Por supuesto, personalmente traduciria los valores de tension a lecturas del ADC, asi ser lo mas directo posible, al igual que la histeresis