Anda di halaman 1dari 3

Tacómetro digital con

microcontrolador PIC

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. 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

Anda mungkin juga menyukai