13Bit Interfaz de codificador para microcontrolador

1

Me estoy quedando sin tiempo y buscando una solución adecuada.

Lo que estoy dispuesto a lograr es obtener la posición del eje del encoder / motor. Para realizar un seguimiento del movimiento. (Actualmente estoy ejecutando botes de 10 turnos, pero se van a desgastar eventualmente y si hay un codificador incorporado, ¿por qué no usarlo?)

La configuración es la siguiente:

Motor HiWin (codificador incorporado de 13 bits) - > Unidad HiWin D2 - > A A 'B B' Z y Z 'líneas que vienen de la unidad.

Son diferenciales + -5V

El enlace para el controlador del motor: enlace

manual dice:

  

Pulso de salida de realimentación (codificador con memoria intermedia o codificador emulado)

     

RS422

La forma de onda de la señal "A":

TheFormadeondadelaseñal"A"

Tengo a mano las siguientes partes:

  • SP3495EEN-L
  • SP3496EEN-L
  • ST485ECDR
  • ST485CDR

Estos son transcievers con varias velocidades de EXAR y STM.

Me gustaría hacer este trabajo con un microcontrolador Arudino o TM4C (que tiene una interfaz de codificador de cuadratura integrada).

Mis preguntas son:

  • ¿Alguna de estas partes hará el truco?
  • Como se trata de una comunicación en serie, simplemente recibiré un mensaje que contiene la posición.
  • ¿Cuál sería una mejor solución (algunos otros CI que obtendríamos? ¿Quizás un enfoque diferente?)?

Editar: * error tipográfico

    
pregunta Zoszko

1 respuesta

3

Todas sus partes "funcionarán", en el sentido de que permitirán una comunicación simple entre el codificador y su Arduino. Sin embargo, ellos no harán lo que usted quiere.

Las etiquetas en las líneas del codificador establecen que están quadrature codificado con una línea de origen que se activará una vez por revolución Esta no es una comunicación en serie en el mismo sentido que, por ejemplo, RS232. En cambio, una transición en las líneas A o B indica que el codificador se ha movido por 1 / (2 ^ 13) revolución.

Es completamente posible usar dicho protocolo directamente. Lo que hace es alimentar las líneas A y B del receptor en las líneas IO del Arduino. Supervise ambas líneas y si alguno de los cambios determina la dirección del estado de la otra línea y actualice la posición del eje.

Por supuesto, puede o no ser capaz de mantenerse al día con los requisitos de computación. Si el eje gira a 60 RPM, o 1 rps, entonces obtendrá un cambio cada 125 usec. Además, si está haciendo algo más con su Arduino, y está monitoreando los encoders mediante sondeo, corre el riesgo de perder una transición al realizar esas otras tareas. Puedes solucionar esto configurando las dos líneas como interrupciones. Consulte, por ejemplo, aquí o here

Hay chips dedicados de codificador en cuadratura, pero te dejaré esas tareas de búsqueda fundamentales.

    
respondido por el WhatRoughBeast

Lea otras preguntas en las etiquetas