Quiero implementar un codificador absoluto RS485, valores 0-2048, en una puerta rápida de lona. El controlador MCU que lee el codificador, que programaré, puede que no esté encendido todo el tiempo, pero debe tener en cuenta la posición de la puerta cuando está encendido. Los interruptores de límite no serán instalados. El movimiento de la puerta nunca se traducirá en una revolución de más de 360 grados en el codificador. Se espera que el movimiento máximo tenga un rango de alrededor de 1600 valores.
El instalador establecerá las posiciones más bajas y más altas durante un procedimiento de configuración: Mueva la puerta a su posición más baja, almacene el valor del codificador, mueva la puerta a su posición más alta, almacene el valor del codificador, configuración completada.
La posición más baja se puede traducir a cualquier valor en el codificador debido al hecho de que el lienzo se ajusta a la barra de desplazamiento sin el conocimiento de la posición del codificador. Por lo tanto, puede tener una posición más baja en el valor del codificador de 100 o 1000 o 2000. Esto significa que, en el movimiento normal, el valor se ajustará a 2048. Además, el instalador puede ajustar el motor en el lado izquierdo o derecho de la barra estabilizadora, por lo que el valor del codificador puede incrementarse mientras la puerta sube, o viceversa. Para complicar aún más las cosas, la puerta podría moverse más lejos de la posición más baja, debido a la interrupción del calentamiento, el cambio de la temperatura del aceite del engranaje, etc., por lo que si su valor más bajo fuera 50, podría ajustarse a cero y alcanzar un valor inferior de 1950.
Teniendo en cuenta la descripción anterior y los escenarios donde las posiciones más baja (Lxxx) y más alta (Hxxx) tienen pares de valores correspondientes de: L200-H1400, L800-H300, L10-H1500 y el movimiento inverso de esos L1400-H200, L300-H800 , L1500-H10.
¿Qué algoritmo - condiciones usaría para detener el motor en las posiciones más bajas y más altas?