Recent Changes - Search:

PmWiki

pmwiki.org

edit SideBar

LendoDoEncoderHEDS-5700

Lendo do Encoder HEDS-5700

O programa efetua a leitura dos pulsos transmitidos pelo encoder. A informação do encoder (posição atual e sentido da rotação) é retransmitida via comunicação serial a 9600 bps, se uma requisição for feita (ou seja, se algum caractere for enviado para o Arduino). Para o funcionamento do programa os pinos 2 e 3 do Arduino devem estar conectados nos canais A e B do encoder, respectivamente. O encoder também deve estar alimentado (seu pino Vcc deve ser ligado à uma fonte +5V e seu Gnd deve estar no terra).

O programa efetua a contagem da rotação e a marcação do sentido através de uma função que atende uma interrupção que está atrelada à mudança de estado do sinal do canal A do encoder.

A mensagem transmitida pelo Arduino (quando feita uma requisição) contém uma string com a sequência:

C: <posição> S: <sentido>

onde <posição> é um valor de 0 à 511 e <sentido> é 0 para nulo, 1 para horario e 2 para anti-horario.

Segue o código:

/*

Leitura do Encoder HEDS-5700 com Arduino.

  • /
  1. define N_PULSOS_VOLTA 512
  2. define encoderChA 2 /* Canal A */
  3. define encoderChB 3 /* Canal B */
  4. define NULL 0
  5. define HORARIO 1
  6. define ANTIHORARIO 2

volatile unsigned int contagem = 0; /* contagem de revolucoes */ volatile unsigned int sentido = NULL; /* sentido da revolucao */

/*

 * Setup
 */

void setup(void) {

   pinMode(encoderChA,INPUT);
   pinMode(encoderChB,INPUT);
   Serial.begin(9600);  
   attachInterrupt(0, encoder, CHANGE);

}

/*

 * Loop do programa
 */

void loop(void) {

  if(Serial.available() > 0) { /* Chegou requisicao (nao importa qual) */
    Serial.read();
    /* Transmitindo por texto */
    Serial.print("C: ");
    Serial.print(contagem);
    Serial.print(" S: ");
    Serial.println(sentido);
  } 

}

/*

 * Recebe sinal.
 */

void encoder(void) {

  if (digitalRead(encoderChA) == digitalRead(encoderChB)) {
    contagem++;
    sentido = HORARIO;
  } else {
    contagem--;
    sentido = ANTIHORARIO;
  }
  contagem = contagem % N_PULSOS_VOLTA;

}

Edit - History - Print - Recent Changes - Search
Page last modified on April 02, 2015, at 02:00 PM