X

¿Cómo medir encontrar la resolución de cualquier encoder? :)

Uno de lo grandes problemas al implementar un proyecto para medir la velocidad de un motor es tener un Encoder disponible, nuevos son normalmente caros, a veces se pueden conseguir usados, pero el problema es saber cual es el su resolución.

 

Programa:

 

#include <LiquidCrystal.h>

int Interruptor = 0;          // El interruptor a utilizar sera el 0 es decir el pin digital 2

LiquidCrystal lcd(12,11, 6, 5, 4, 3);
 
int pulsos=0;   // variable para contar los pulsos
int resolucion;   // variable para guardar los pulsos en una revolucion



  #define  mide 0
  #define  captura 1


int modo = mide;



//Esta seria nuestra funcion interrupcion exte.

void interrupcion_isr()

{
  pulsos=pulsos+1;

}

 


 

 

void setup()

{





   
   
 pinMode(10,OUTPUT);//PIN2 salida PWM
 pinMode(7,INPUT);//PIN2 salida PWM
   
   
 lcd.begin(16,2); 

 attachInterrupt(Interruptor, interrupcion_isr, HIGH);  


} 

 

void loop()

{

   switch( modo) {

    case mide:

  analogWrite(10,25);  // gira el motor a baja velocidad
  
  lcd.setCursor(0,0);            
  lcd.print("No.");
  lcd.setCursor(5,0);            
  lcd.print(pulsos);

   if ( digitalRead(7)==HIGH){
    
   
    resolucion=pulsos;
    modo=captura;
    
   }


    break;

    case captura:

analogWrite(10,0); // se apaga el motor

  lcd.setCursor(0,0);            
  lcd.print("No.");
  lcd.setCursor(5,0);            
  lcd.print(resolucion);

  
    break;
    

    
   }


 

}

 

 

Diagrama de Proteus:

 

 

 

 

 

Christian:
Related Post