¿Cómo contar la señal del codificador de 2 ruedas?

2

Estoy buscando una solución simple para mantener la posición de un robot. Tiene dos motores de corriente continua y un codificador de rueda para cada uno. Los codificadores son de tipo incremental.

Necesito poder obtener el recuento actual de incremento de una atmega.

Encontré un chip como el LM628 / 629 que hará un gran trabajo, de hecho, muy bueno, porque cuesta ~ 50 $.

¿Conoces un IC dedicado que solo cuenta con las funciones de conteo (en ambas direcciones) para un codificador de rueda, o es posible hacer un simple con un vistazo?

    
pregunta jojo l'abricot

3 respuestas

6

"¿Conoces un IC dedicado que solo tiene las funciones de conteo (en ambas direcciones)" ?

Es posible que se sorprenda al saber que unos cuantos chips lógicos genéricos simples y baratos son suficientes para decodificar un codificador rotatorio; no requiere un chip especial personalizado específicamente para decodificadores rotatorios. La Página del generador de Codewheel tiene unos pocos circuitos relativamente simples que decodifican las 2 salidas de cuadratura giratoria en una "dirección" y "cuenta" salidas. Esas salidas se pueden conectar a las entradas de "dirección" y "reloj" de cualquier contador arriba / abajo, como, por ejemplo, el CD4029, el CD4516, el CD40193, 74HC193, etc.

"¿Es posible hacer un sencillo con un" # ?

Sí, puedes hacer un codificador de cuadratura simple con un ATtiny. Algunos consejos para conectar un codificador de cuadratura a un chip Atmel y decodificarlo en software están en:

Si tiene relativamente pocos pulsos por segundo, puede ejecutar las 2 señales de cada codificador directamente en su ATmega principal y usar las técnicas anteriores para hacerlo todo en software, sin ningún hardware de conversión externo.

    
respondido por el davidcary
2
Los codificadores de rueda

son muy fáciles de usar para sistemas de cálculo de cuentas. Si solo tiene una rueda ranurada y dos detectores, será un codificador en cuadratura; Llamas a una de las señales de tu reloj y a la otra tu dirección. Obtenga ambas señales en su microcontrolador y configúrelas para que cuente los pulsos de reloj (es decir, un algoritmo de conteo de eventos). Siempre que reciba un pulso de reloj, verifique la línea de dirección. Siempre será '1' para una dirección y '0' para la otra.

Los codificadores más sofisticados (más caros) son generalmente codificadores en código gris y son menos adecuados para el cálculo de cuentas, aunque le darán una mejor posición de cálculo debido a su mayor precisión. Puede alimentar la salida de uno de ellos en su microcontrolador y tener una interrupción o temporizador que lea la posición de las ruedas y determine qué tan lejos y en qué dirección se movió el robot. Esta es una solución más complicada.

Tenga en cuenta que los sistemas de cómputo muerto se desvían con el tiempo y, a menos que tenga algún medio para restablecer el sistema de cómputo muerto, la idea de su robot de dónde se encuentra en el espacio será cada vez más inexacta. p>     

respondido por el akohlsmith
1

Un enfoque podría ser usar un dispositivo lógico programable como un contador de ondulación de código gris con suficientes etapas para que simplemente pueda sondear el valor a una velocidad conveniente y no perder cuentas. Tenga en cuenta que una ventaja de un contador de ondulación de código gris sobre algunos otros enfoques es que no hay peligro de que las entradas ruidosas produzcan errores en el contador, siempre que no haya cambios en la entrada cuando la otra entrada no sea estable.

    
respondido por el supercat

Lea otras preguntas en las etiquetas