Conexión del codificador incremental a mbed

0

He pasado la última hora intentando que un codificador incremental funcione con un módulo mbed.

Keyes KY-040 Rotary Encoder
enlace

LPC1768 mbed module
os.mbed.com/platforms/mbed-LPC1768

El código que he escrito es el siguiente:

    #include "QEI.h"

Serial pc(USBTX, USBRX);
//Use X4 encoding.
//QEI wheel(p29, p30, NC, 624, QEI::X4_ENCODING);
//Use X2 encoding by default.
QEI wheel (p5, p6, NC, 20);
DigitalOut led1(LED1);
DigitalOut led2(LED2);
DigitalOut led3(LED3);
DigitalOut led4(LED4);

int main() {
int x;
led1 = 0;
led2 = 0;
led3 = 0;
led4 = 0;

    while(1){
        x = wheel.getPulses() % 4;

        if (x == 0){
            led1 = 1;
            led2 = 0;
            led3 = 0;
            led4 = 0;
        } else if (x == 1) {
            led1 = 0;
            led2 = 1;
            led3 = 0;
            led4 = 0;
        } else if (x == 2) {
            led1 = 0;
            led2 = 0;
            led3 = 1;
            led4 = 0;
        } else if (x == 3) {
            led1 = 0;
            led2 = 0;
            led3 = 0;
            led4 = 1;
        }    
    }

}

He intentado ambas resistencias de subir y bajar en las líneas, pero el mbed no muestra ningún signo de procesamiento de estas. Con toda probabilidad, he cometido un error de cableado.

¿Alguien tiene un esquema que pueda seguir sobre cómo conectarlo correctamente?

    
pregunta 19172281

1 respuesta

1
  

¿Alguien tiene un esquema que pueda seguir sobre cómo conectarlo?   correctamente?

Según:

enlace

  • "+" es el voltaje de alimentación
  • "CLK" es la salida del codificador A (con un pullup R incluido de 10k a "+" en la PCB)
  • "DT" es la Salida de codificador B (con un pullup R incluido de 10k a "+" en la PCB)
  • "GND" se conecta a ambos, Comoder Output Common, y un tramo de interruptor de pulsador.
  • "SW" es la otra pata del interruptor de botón.

La siguiente imagen es del mismo sitio web: enlace

El codificador es un codificador de estilo en cuadratura típico con un botón adicional en el vástago de la perilla.

Entonces:

  • Conecte 5V (o el voltaje de su sistema existente) a la entrada "+".
  • Conecte la tierra de su sistema a la terminal "Gnd".
  • Conecte el terminal "CLK" a una entrada digital.
  • Conecte el terminal "DT" a la otra entrada digital.

Confirme que todo funciona con un voltímetro, luego comience a escribir el código.

Formas de wav de CLK y DT (imagen del mismo sitio web mencionado anteriormente).

En la trama:

  • C = tierra
  • A = CLK
  • B = DT
  • "Abierto" = salida de 5 V (medida con un voltímetro).
  • "Cerrado" = salida de 0 V (medida con un voltímetro).

enlace

Las líneas de puntos muestran dónde deberían estar los retenes del interruptor (sin embargo, no puedo confirmar esto sin tener el codificador real en la mano). Lo que esto significa es que cuando enciendes el codificador, y este 'hace clic', el codificador está diseñado para detenerse entre los clics en estas ubicaciones. A veces, un "clic" es muchos cargos. Esto depende del diseño mecánico del codificador (cómo se alinean mecánicamente los retenes con los cambios eléctricos de salida) y del algoritmo de decodificación. Si obtiene más de 1 conteo por clic, entonces divida la salida en software.

Algunas notas:

  • El etiquetado de la PCB parece tonto.
  • Hay cosas que aprenderá sobre cómo conectar interruptores mecánicos a microcontroladores que pueden sorprenderlo. Investiga esto. Verifique la compatibilidad con el módulo "QEI" que utiliza, ya que no estoy familiarizado con él.
  • Para solucionar problemas, le recomiendo que defina en su código estas variables: CurrentCount, PreviousCount, DividedCount (%), Direction (CurrentCount - PreviousCount).
respondido por el Chris Knudsen

Lea otras preguntas en las etiquetas