Este tacometro trabaja con un sensor de herradura y un disco rotatorio que tiene una sola ranura. El disco está unido a un eje que girará al ponerlo en contacto con el eje de cualquier motor en funcionamiento (el movimiento se transmite por fricción).

El tacómetro digital con PIC consta de un PIC16F88, una pantalla LCD 2x16 , un sensor tipo herradura GP3S62 de Sharp, y un regulador de 5V/100mA.


¡Descubre el mundo de los microcontroladores PIC y lleva tus habilidades de programación al siguiente nivel! Obtén nuestro eBook y disfruta aprendiendo paso a paso desde cero, podrás realizar proyectos prácticos, encontrar soluciones a problemas comunes y explorar una amplia cobertura de temas desde lo más básico a lo más avanzado. Incluye software y ejemplos resueltos. ¡Cómpralo ahora y libera el increíble potencial de esta poderosa tecnología hoy mismo!

Microcontroladores PIC en PDF: Curso completo


El Timer0 del PIC trabaja como contador de las transiciones alto-bajo en el pin RA4/T0CKI durante 1 segundo. Este valor corresponde al número de revoluciones por segundo (r.p.s) el cual es transformado a r.p.m y rad/s para su presentación en el LCD. La lectura se actualiza continuamente cada 2 segundos. Se genera una transición cada vez que la ranura en el disco giratorio pasa  en frente del emisor de luz, es decir una transición por vuelta.

Ejemplo en mikroC PRO con el PIC16F88

//Tacometro.c
//El registro OPTION_REG tiene todos sus bits en 1 después del 
//encendido por lo tanto el Timer0 actúa como contador, 
//incrementa en transición descendente y el prescaler 
//está asignado al WDT.
//Declaración de las 12 variables necesarias para la conexión
//del módulo LCD.
sbit LCD_RS at RB4_bit;
sbit LCD_EN at RB5_bit;
sbit LCD_D4 at RB6_bit;
sbit LCD_D5 at RB1_bit;
sbit LCD_D6 at RB2_bit;
sbit LCD_D7 at RB3_bit;

sbit LCD_RS_Direction at TRISB4_bit;
sbit LCD_EN_Direction at TRISB5_bit;
sbit LCD_D4_Direction at TRISB6_bit;
sbit LCD_D5_Direction at TRISB1_bit;
sbit LCD_D6_Direction at TRISB2_bit;
sbit LCD_D7_Direction at TRISB3_bit;
// Fin de declaración de variables de conexión.

char texto1[7], texto2[7], numflancos=0;
int rpm, rads;

void main(){
  OSCCON=0x40; //Oscilador interno a 1MHz.
  ANSEL=0x00;  //Pines AN<6:0> como E/S digital.
  Lcd_Init();                //Inicializa el LCD.
  Lcd_Cmd(_LCD_CLEAR);       //Borra el display.
  Lcd_Cmd(_LCD_CURSOR_OFF);  //Apaga el cursor.
  Lcd_Out(1,1,"TacometroDigital");
  Lcd_Out(2,1,"Wmax=15.300 rpm");
  Delay_ms(3000);
  Lcd_Cmd(_LCD_CLEAR);       //Borra el display.
  while (1){
    TMR0=0;                   //Inicializa el registro TMR0.
    Delay_1sec();             //Cuenta durante 1 segundo.
    numflancos=TMR0;          //numflancos=velocidad en rps.
    rpm=60*numflancos;        //Transformación a rpm.
    rads=6.28*numflancos;     //Transformación a rad/s.
    IntToStr(rpm,texto1);     //Transformación de rpm a texto.
    Lcd_Out(1,1,"W[rpm]=");
    Lcd_Out(1,10,texto1);
    IntToStr(rads,texto2);    //Tramsformación de rads a texto.
    Lcd_Out(2,1,"W[rad/s]=");
    Lcd_Out(2,10,texto2);
    Delay_ms(1000);           //Espera para la nueva medición.
  }
}

Esquema eléctrico del tacómetro digital con PIC

Circuito de un tacómetro digital con PIC
Información complementaria