Translate

jueves, 19 de diciembre de 2013

Grados Arduino y Encoder


Adquisición de cuadratura de encoder con Arduino para medir grados


Para realizar la lectura de grados en IDE de Arduino y encoder primero se debe saber como se decodifica la información de dirección, entregada por un encoder, se puede abordar el problema desde el punto de vista de una máquina secuencial y/o de estados que tiene 4 combinaciones, originadas por los canales A y B.  Es decir,  2 bits tendrán los estados 00, 01, 10, 11.

Se monitorea los grados de un encoder, tomando las señales decodificadas de cuadratura para adquirir su respectiva posición. 

Si quieres realizar este experimento sigue estos pasos y no habra problema:

Pasos:
1.-Familiarizate con la cuadratura del encoder y entiende como funciona el desfasamiento.
2.-Revisa la información tecnica de tu encoder. En mi caso son 255 RRP (Pulsos por revolución)
3.-Este es el siguiente código en Arduino uno, revisa y solo cambia los PPR, de acuerdo a tu encoder.
4.-Programa tu Arduino
5.-Conecta la tierra del encoder a un pin de GND de Arduino. (Deben estar en común)
6.-Conecta los pines que asignaste canal A y canal B en mi caso se observa en el Código.
7.-Listo abre el monitor serial de IDE y visualizaras los grados.



Código Arduino

// by Jorge A. Sanchez, Revisa cuantos pulsos PPR 
 int long encoder0PinA = 3; //pin 3 aurduino uno
 int long encoder0PinB = 4; //pin 4 aurduino uno
 int long encoder0Pos = 0;
 int encoder0PinALast = LOW;
 int n = LOW;
 float grados=0;

 void setup() { 
   pinMode (encoder0PinA,INPUT);
   pinMode (encoder0PinB,INPUT);
   Serial.begin (115200);
 } 

 void loop() { 
   n = digitalRead(encoder0PinA);
   if ((encoder0PinALast == LOW) && (n == HIGH)) {
     if (digitalRead(encoder0PinB) == LOW) {
       encoder0Pos--;
       grados = ((encoder0Pos*360/255)); //cambia 255 por tus pulsos de tu encoder
       if (encoder0Pos == -255){(encoder0Pos = 0);}
       
     } 
     else {
       encoder0Pos++;
       grados = ((encoder0Pos*360/255));
        if (encoder0Pos == 255){(encoder0Pos = 0);}
     }
    Serial.print ("GRADOS = ");
    Serial.println (grados);
   } 
   encoder0PinALast = n;
 }   


          

                                                Video




1 comentario:

  1. Hola, me aparece un error cuando compilo el programa, algo referente a las llaves {}

    ResponderBorrar