Estoy desarrollando un prototipo que utiliza un codificador de cuadratura para medir su desplazamiento lineal. El codificador está unido al cuerpo del prototipo y tiene una rueda en su eje. A medida que el prototipo avanza, el codificador mide la distancia lineal. Se han resuelto todos los problemas relacionados con la conversión entre unidades lineales / angulares.
La razón para medir la distancia con un codificador es que NECESITO saber cada vez que el prototipo ha viajado exactamente 1 mm (1 milímetro = 0.0393 pulgadas). Cada vez que se mueve 1 mm, PIC activa otro sistema.
La forma en que se hizo antes de comenzar a trabajar con él es mediante la lectura del codificador con un PIC (16F688) en sus puertos de E / S. Estaba muy bien, pero cuando agregué algunas funciones al código PIC, si la velocidad lineal del prototipo es mayor que ~ 1.77 in / s (~ 45 mm / s), el PIC comienza a fallar el recuento.
He intentado usar el IOC (interrupción al cambiar) del puerto A para leer la señal de cuadratura (canales A y B) pero no fue efectivo.
Sé que hay dsPIC's pero necesito resolver esto en mi tablero y solo tengo 14 pines para hacerlo, jajaja. Así que encontré este PIC16F1825 que tiene una frecuencia más alta (4x). ¿Podría ese (mi PIC baja frecuencia) ser mi problema principal?
Estaba pensando en usar las señales LFLS7183 UP / DOWN con el temporizador / contador de PIC u otro contador IC para reducir la cantidad de señalización a PIC. Funcionaría eso? ¿Qué contador debo usar? No tengo 8 pines en mi PIC para usar como en esos enlace .
Mi codificador no es mi problema, lo he comprobado y puede rastrear hasta 76 pies / s para el radio de mi rueda.