Sensor de Temperatura con LM35 dsPIC

Sensor de Temperatura con LM35 con dsPIC DSPIC33FJ32MC202 en mikro c

Objetivo: 

Medir temperatura con un sensor LM35 y un dsPIC

Diagrama en proteus:

Codigo en  Mikro C

int adcValue;
float temperatura;

char txt[10];

sbit LCD_RS at LATB2_bit;
sbit LCD_EN at LATB3_bit;
sbit LCD_D4 at LATB4_bit;
sbit LCD_D5 at LATB5_bit;
sbit LCD_D6 at LATB6_bit;
sbit LCD_D7 at LATB7_bit;

sbit LCD_RS_Direction at TRISB2_bit;
sbit LCD_EN_Direction at TRISB3_bit;
sbit LCD_D4_Direction at TRISB4_bit;
sbit LCD_D5_Direction at TRISB5_bit;
sbit LCD_D6_Direction at TRISB6_bit;
sbit LCD_D7_Direction at TRISB7_bit;

/*
sbit loadPin at LATB13_bit; // DAC load pin
sbit loadPinDir at TRISB13_bit; // DAC load pin
sbit csPin at LATB12_bit; // DAC CS pin
sbit csPinDir at TRISB12_bit; // DAC CS pin
                */

////////////////////
void config_timer( void ){

T1CON = 0x8000;
T1IE_bit = 1;
T1IF_bit = 0;
IPC0 = IPC0 | 0x1000;
PR1 = 500;
}

void Timer1Int() org IVT_ADDR_T1INTERRUPT { // Timer1 interrupt handler

T1IF_bit = 0; // Clear TMR1IF // to measure sampling frequency
LATB.F15 = !LATB.F15;
adcValue = ADC1_Get_Sample(0);

temperatura = (3.3*100.0/1024.0)*adcValue;

FloatToStr(temperatura, txt) ;

//WordToStr(temperatura, txt);

Lcd_Out(1,1,txt);

}

void main()
{

Lcd_Init();
Lcd_Cmd(_LCD_CLEAR); // Clear display
Lcd_Cmd(_LCD_CURSOR_OFF); // Cursor off

ADC1_Init();

TRISA.F0 = 1; //pin RA0 como entrada

TRISB.F15 = 0;
LATB.F15 = 0;
// configu interrupcion timer
config_timer();
while(1);
}

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *