how can i read NTC?

Status
Not open for further replies.

Hesam Kamalan

New Member
Hi,

in my project i use MikroC as compiler, PIC16F877A. i connected a NTC to AN0 of this microcontroller. my problem is, i don't know how can i work with NTC.
i worked with LM32 and i know readding temperature, but i don't know how can i read NTC output.

in ISIS i connect one pin of NTC to VCC and second pin to micro. but on LCD i have 5v for all temperatures.

my code is:
Code:
unsigned char ch;
unsigned int adc_rd;
char *text;
long tlong;

void main() {
  INTCON = 0;                              // disable all interrupts
  Lcd_Init(&portd);                        // Dataport=PortD, En=d.3, Rs=d.2
  LCD_Cmd(LCD_CURSOR_OFF);                 // send command to LCD (cursor off)
  LCD_Cmd(LCD_CLEAR);                      // send command to LCD (clear LCD)

  ADCON1     = 0x82;                       // configure VDD as Vref, and analog channels
  TRISA      = 0xFF;                       // designate PORTA as input
  Delay_ms(2000);
  text = "Temp: ";
  
  while (1) {
    adc_rd  = ADC_read(0);                 // get ADC value from 2nd channel


    LCD_Out(2,1,text);                     // print string a on LCD, 2nd row, 1st column

    tlong = (long)adc_rd * 5000;           // covert adc reading to milivolts
    tlong = tlong / 1023;                  // 0..1023 -> 0-5000mV

    ch     = tlong / 1000;                 // extract volts digit
    LCD_Chr(2,9,48+ch);                    // write ASCII digit at 2nd row, 9th column
    LCD_Chr_CP('.');

    ch    = (tlong / 100) % 10;            // extract 0.1 volts digit
    LCD_Chr_CP(48+ch);                     // write ASCII digit at cursor point

    ch    = (tlong / 10) % 10;             // extract 0.01 volts digit
    LCD_Chr_CP(48+ch);                     // write ASCII digit at cursor point

    ch    = tlong % 10;                    // extract 0.001 volts digit
    LCD_Chr_CP(48+ch);                     // write ASCII digit at cursor point
    LCD_Chr_CP('V');

    Delay_ms(1);
  }
}//~!
 

An NTC is a Negative Temperature Coefficient Resistor so of course it will not give you a reading, as an LM3x will. You need to put it into a voltage divider cct, with a resistor of known value. The resistance of the NTC will increase as the temperature decreases. Here, read all about it:
Thermistor - Wikipedia, the free encyclopedia
 
i want to use bridge for measurmenting temperature. but i don't know what is value of Ra, Rb, Rc , Rs.
if you know guide me please. i want to measure temperature from 35 up to 80.
 
Status
Not open for further replies.
Cookies are required to use this site. You must accept them to continue using the site. Learn more…