Rotary Encoder

De Proyectos
Saltar a: navegación, buscar

Mis solucion

Al final despues de probar con muchos codigos, configuraciones de hardware para el debouncing, con el encoder de Bourns no he podido tener una lectura fiable conjuntamente con la libreria u8glib.
En cambio con el encoder chino KY-040 y conjuntamente al código de arduinoaleman y dos condensadores para filtrar el bouncing he podido lograrlo.
Lo curioso del encoder chino, al menos el que yo tengo, es que por cada vuelta entre detent y detent no hace un flanco de subida y bajada, solo hace un flanco.Es mejor verlo en el grafico.
El esquema de debounce es el mismo que comenta arduinoaleman y el codigo es un poco distinto. El de arduino aleman solo tiene en cuenta el flanco de bajada del pin CLK para disparar la interrupción y debido al comportamiento del encoder que he explicado antes hace que se pierda una posicion de cada dos (la posición del flanco de subida no la cuenta). Cambiando la condicion de disparo a CHANGE haces que cuente los dos flancos y entonces por cada posicion en detent incremente o decrementa uno la variable contador.

Rectificacion: Este encoder si vas un poco rapido empieza a perder la cuenta. Se salta pasos y empieza a sumar y restar erroneamente. Si quitas la libreria u8glib y muestrar el valor del contador por serial entonces mejora bastante. No puedes girarlo a mucha velocidad pero si que se vuelve mas fiable

Enlaces

Retomando

Retomo tema y empiezo a releer información. De momento me pongo esto para examinar:




  • Después de ir leyendo continuar con el esquematico
  • Luego crear el pcb, insolar, etc etc
  • Mientras punto uno y punto dos ir redactando teoria que vaya sacando del bouncing de los enlaces de arriba