Lectura de 2 codificadores en cuadratura usando un solo Arduino Due

0

Estoy trabajando en un robot autónomo en mis vacaciones de verano. Actualmente estoy trabajando en hacer funcionar los motores de mi robot en un circuito cerrado. Para hacerlo, tengo que conectar dos codificadores de cuadratura de los motores con el Arduino Due que tengo. Mi codificador de motor tiene 3200 aristas por revolución . He leído la hoja de datos de Atmel SAM3x8E y he probado con éxito un codificador. Parece que TIOA0 y TIOBO se utilizan para leer PHA y PHB de un codificador que corresponden a los Pin 2 y 13 de Arduino Due. No estoy usando el pin de índice (TIOB1).

Parecequesolopuedointerconectar1cuadratura.Essuformadeusareldecodificadordecuadraturaparaleer2codificadoresenlugardeuno.Comohedichoanteriormente,noestoyusandoelpindeíndice.Entonces,talvezpodríahaberunaformadedecodificaracodificadoresusandolostrespinesdisponiblescomosemuestraeneldiagramaanterior.Noquierousarinterrupcionesparahacerestetrabajo.

AquíestáelenlacedeSAM3xManual: enlace

Enlace de motor que estoy usando: www.pololu.com/product/2824

    
pregunta Masood Salik

1 respuesta

0

Si la frecuencia del codificador no es demasiado alta, solo es cuestión de mantener un registro de la cuenta utilizando un contador ascendente y descendente y dos pines de entrada de propósito general.

simular este circuito : esquema creado usando CircuitLab

Figura 1. Formas de onda de codificador rotatorio de 2 bits.

La lógica del programa es muy simple.

  • Seguimiento del estado actual de 'A'. Si el estado cambia a 'alto', entonces:
  • Mira la entrada 'B'. Si 'B' es bajo, entonces cuenta. Si 'B' es alto, entonces haga una cuenta regresiva.

Probablemente deba rebotar las entradas para evitar disparos falsos. A continuación, debe escribir algún código para detectar el flanco ascendente del pulso 'A'.

    
respondido por el Transistor

Lea otras preguntas en las etiquetas