using tc74 temp sensor
DESCRIPTION
Serial communication introduction - using TC74 thermal sensor from microchipTRANSCRIPT
13/12/2014 Using TC74 (Microchip) thermal sensor for temperature measurement | Embedded Lab
http://embeddedlab.com/blog/?p=3146 1/13
Embedded LabAn online teaching laboratory for Microcontrollers and Embedded Systems
USING TC74 (MICROCHIP) THERMALSENSOR FOR TEMPERATUREMEASUREMENT
Posted on July 17, 2011 by R-B 19 comments |
The TC74 chip is a serially accessible, digital
temperature sensor from Microchip Technology that
acquires and converts temperature information from its
onboard solid-state sensor with a resolution of 1°C. The
temperature is available as an 8-bit digital word stored in
its internal temperature register, which is accessible
through a 2-wire I2C compatible serial bus. This tutorial
describes how to use the TC74 sensor with a PIC
microcontroller to measure the surrounding temperature.
Using TC74 sensor for temperature measurement
Theory
The TC74 digital temperature sensor is available in SOT-23
and TO-220 packages. The communication with the device
is accomplished via a 2-wire I2C compatible serial
bus. Temperature resolution is 1°C and conversion rate is
SUBSCRIBE
Follow
Read Our PrivacyPolicy!
Subscribe throughemail
Sign Up
EASY PULSE SENSOR
Easy Pulse Sensor isdesigned for hobby andeducationalapplications toillustrate the principleof fingerphotoplethysmography
HOME NETDUINO CHIPKIT PRODUCTS STM32 TIPS AND TRICKS THEORY PIC PROJECTS
PIC TUTORIALS AVR XMEGA ARDUINO PROJECTS CONTACT US
Search...
13/12/2014 Using TC74 (Microchip) thermal sensor for temperature measurement | Embedded Lab
http://embeddedlab.com/blog/?p=3146 2/13
a nominal 8 samples/sec. The pin diagram of TC74 chip is
shown below for reference.
Pin diagram of TC74
The TC74 stores the measured temperature into its 8-bit
internal register as 2′s complement binary format. The
most significant bit is the sign bit, which is set to 1 for
negative temperatures. Therefore, the maximum
measurable positive temperature is + 127 °C (0111 1111).
The TC74 has also got another 8-bit Read/Write
Configuration Register (RWCR) that is used to put the
device into a low power (I = 5 µA, typical) Standby mode.
In this mode, the A/D converter is halted and the
temperature data registers are frozen. Bit 7 of RWCR must
be set to put TC74 into Standby mode.
Temperature conversion table and internal registers
Serial port operation
The Serial Clock input (SCLK) and bidirectional data port
(SDA) form a 2-wire bidirectional serial port for
communicating with the TC74. The port is I2C compatible
(PPG) as a non-invasivetechnique for detectingcardio-vascular pulsewave. Read More ...
US customers buy here
Internationalcustomers buy here
SERIAL 7-SEGMENT LEDDISPLAYS
7-segment LED displaysare fun way ofdisplaying numericsensor readings inArduino or any othermicrocontroller-basedprojects. The downsideis they are resourcehungry and requireslots of I/O pins and CPUtime for continuouslydisplaying the readings.We have designedvarieties of 7-segmentdisplays that supportSPI interface and allowsyou an easy control ofevery LED segmentsusing only 3 I/O pins ofyour MCU.
DD
13/12/2014 Using TC74 (Microchip) thermal sensor for temperature measurement | Embedded Lab
http://embeddedlab.com/blog/?p=3146 3/13
and all transfers take place under the control of a host,
usually a microcontroller. The host microcontroller
provides the clock signal for all the data transfers and the
TC74 always operates as a Slave. The default 7-bit I2C
address of TC74 is 1001 101b. However, 7 other address
options are also available which can be identified from the
part number of the device. For example, I have got a
TC74A0 in TO-220 package. A0 corresponds to the device
address 1001 000b. Similarly, TC74A3 has its I2C address
1001 011b. Refer the datasheet for further details. If you
are not familiar with I2C protocol, please read my article,
Inter-Integrated Circuit (I2C) communication in PIC.
Reading temperature from a TC74 device through I2C port
involves the following steps:
The host microcontroller issues a Start condition
followed by the address byte. The address byte
consists of the 7-bit slave address and a Read/Write
bit (R/W). The R/W bit is always ’0′ (Write) in the first
phase.
If the received 7-bit address matches with its own
slave address, the TC74 responds with an
acknowledge pulse.
The host microcontroller next sends the command
byte to TC74 to indicate which register it wants to
access. For reading the temperature, the command
byte should be 00h. The TC74 responds with an
acknowledge pulse.
The host microcontroller issues a new Start
condition because the direction of data transfer is now
going to be changed. The new address byte with R/W
bit 1 is sent by the host, which is acknowledged by the
slave.
The TC74 transmits the 8-bit temperature data from
the temperature register. Upon receiving the byte, the
host doesn’t acknowledge, but generates a Stop
condition.
Circuit diagram
I am using PIC18F2550 to demonstrate here, but it can be
implemented with any other smaller size PIC
microcontrollers that support I2C communication. The
temperature is read from the TC74 sensor and displayed
on a character LCD. Don’t forget to put two pull-up
resistors (1K) on SDA and SCL lines of I2C bus. The
PIC18F2550 microcontroller used in this experiment is
from the StartUSB for PIC board.
Visit our Tindie store
CATEGORIES
555 Timer (9)Analog (16)Arduino (110)ARM projects (2)AVR Projects (48)AVR Tutorials (5)BeagleBone (1)chipKIT (16)Display (1)dsPIC (1)Electric Imp (1)Embedded Lab
Projects (61)Embedded Labs (25)Embedded Lessons
(39)ESP8266 (1)Internet of Things (1)littleBits (1)MCU develeopment
tools (12)Microcontroller
Programmers (6)MSP430 Launchpad
(4)Netduino (9)Open-source (1)PIC Projects (89)PIC Tutorials (46)PIC18F (10)Power Supply (13)Processing (3)Product Review (16)Products (34)Raspberry Pi (10)
13/12/2014 Using TC74 (Microchip) thermal sensor for temperature measurement | Embedded Lab
http://embeddedlab.com/blog/?p=3146 4/13
Circuit diagram
Circuit setup on breadboard
TC74 temperature sensor
Software
The firmware for PIC18F2550 is developed in C using
mikroC Pro for PIC compiler. The compiler provides the
built-in library for I2C support. The microcontroller reads
the temperature word from the TC74′s internal
temperature register and displays it on the LCD. The
Robotics (9)STM32 (7)Tech News (110)Texas Instruments (4)Tips and Tricks (85)Uncategorized (2)XMega (4)
13/12/2014 Using TC74 (Microchip) thermal sensor for temperature measurement | Embedded Lab
http://embeddedlab.com/blog/?p=3146 5/13
following program works for the entire operating range of
TC74 (-40 °C to 125 °C).
/* Project: Using TC74 with PIC microcontroller for temperature measurement MCU: PIC18F2550 on‐board StartUSB for PIC Clock 48.0 MHz using HS + PLL MCLR Enabled*/ // Define LCD module connections. sbit LCD_RS at RC6_bit; sbit LCD_EN at RC7_bit; sbit LCD_D4 at RB4_bit; sbit LCD_D5 at RB5_bit; sbit LCD_D6 at RB6_bit; sbit LCD_D7 at RB7_bit; sbit LCD_RS_Direction at TRISC6_bit; sbit LCD_EN_Direction at TRISC7_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;// End LCD module connection definition unsigned char Temp;unsigned short num;const int TC74A0 = 0x90; void check_device(unsigned short dev_address){ I2C1_Start(); if (I2C1_Wr(dev_address)){ Lcd_Out(1,1,"Device not found"); } else Lcd_Out(1,1,"TC74 device"); I2C1_Stop();} unsigned short Read_Temp(){ unsigned short result; I2C1_Start(); // Issue start signal I2C1_Wr(TC74A0); // Address + Write bit I2C1_Wr(0x00); // Read Temp I2C1_Repeated_Start(); // Issue start signal I2C1_Wr(TC74A0+1); // Address + Read bit result = I2C1_Rd(0u); return result;} char temperature[] = " 000 C";void main() { CMCON = 0x07; // Disable comparators ADCON1 = 0x0F; // Disable Analog functions TRISA = 0x00; TRISC = 0x00; TRISB = 0x00; I2C1_Init(100000); // Initiate I2C Lcd_Init(); // Initialize LCD Lcd_Cmd(_LCD_CLEAR); // CLEAR display Lcd_Cmd(_LCD_CURSOR_OFF); // Cursor off Lcd_Out(1,1,"Testing TC74"); Lcd_Out(2,1,"Thermal sensor"); Delay_ms(1000); Lcd_Cmd(_LCD_CLEAR); do { check_device(TC74A0); num = Read_Temp();
13/12/2014 Using TC74 (Microchip) thermal sensor for temperature measurement | Embedded Lab
http://embeddedlab.com/blog/?p=3146 6/13
// Check for negative temperature if (num > 127) { temperature[0] = '‐'; num = ~num +1; } else temperature[0] = '+'; temperature[1] = num/100 + 48; temperature[2] = (num/10)%10 + 48; temperature[3] = num%10 + 48; temperature[5] = 223; // eliminate 0s at beginning if (temperature[1] == '0') { temperature[1] = ' '; if (temperature[2] == '0') temperature[2] = ' '; } Lcd_Out(2,4,temperature); Delay_ms(500); } while(1);}
Download the mikroC source and HEX files
Output
The following pictures show the device displaying both
positive and negative temperatures. The tip of a hot
soldering rod saturates the sensor at 127 °C. To test the
negative temperature reading, the device is put inside the
freezer.
Displaying room temperature
13/12/2014 Using TC74 (Microchip) thermal sensor for temperature measurement | Embedded Lab
http://embeddedlab.com/blog/?p=3146 7/13
Maximum measurable temperature
Measuring negative temperature inside the freezer
Conclusion
The technique of interfacing Microchip’s TC74 sensor with
a PIC microcontroller to measure the ambient
temperature was discussed and demonstrated
successfully. The communication with the TC74 sensor was
accomplished through an I2C bus interface of PIC18F2550.
The 8-bit temperature word was read from the internal
temperature register and displayed on a LCD screen by the
PIC18F2550 microcontroller.
Related posts:1. Lab 12: Basics of LED dot matrix display
2. Lab 11: Multiplexing seven segment LED displays
3. Lab 14: Inter-Integrated Circuit (I2C)
communication
4. Expanding the number of I/O lines using Microchip
MCP23008
tagged with digital thermometer, Microchip temperature
13/12/2014 Using TC74 (Microchip) thermal sensor for temperature measurement | Embedded Lab
http://embeddedlab.com/blog/?p=3146 8/13
Embedded Labs Embedded Lessons PIC18F
Tips and Tricks
shab132
Konstantin
Ehsan
sensor, PIC18F2550, TC74
19 COMMENTS
November 10, 2014 4:49 am
hello, nice to meet you, i have tried the code and but isgiven me error that the device not found. And can i usedPIC 16f877A for the same code? thanks.
Reply
August 13, 2014 5:14 am
Hi! I tried to implement your circuit in Proteus by means ofsource and cof/hex files you provide for downloading.Unfortunately, it doesn’t work. The code hangs whileattempting to execute I2C1_Start in check_device function.Could you possibly explain why?Also, is it a good idea to place I2C1_Stop at the very end ofRead_Temp function?Thank you in advance!
Reply
December 19, 2012 1:27 pm
HiThank you about your excellent website.it’s very useful
This project was very useful for me but your program has atiny problem :in the “” read_temp “” function after you got the result ,you must stop the i2c with i2c_stop(); if you don’t do it,yourprogram (after going in this function for the first time)can’t use the i2c protocol again.you can repair it by stepsbelow :1) at the program (wich shown in the site) where function“unsigned short Read_Temp(){ ” is developed
2)after result = I2C1_Rd(u);and before return result;
3) add I2C1_stop();
thank you for your site.I’ll be happy to answer me by e_mail
Reply
13/12/2014 Using TC74 (Microchip) thermal sensor for temperature measurement | Embedded Lab
http://embeddedlab.com/blog/?p=3146 9/13
Konstantin
Konstantin
johnsan
Johnsan
Johnsan
R-B
Davide
August 13, 2014 10:33 am
Hi! Thank you for your reply. I am not trying to say thatthe code is wrong or anything like that. Obviously, Imiss subtle details. However, I still can’t run thesimulation in Proteus.Please, help if possible. I could send you the Proteusproject if it is necessary.Regards, [email protected]
Reply
August 22, 2014 5:11 am
Hi! I dealt with the problem. In Proteusenvironment, the pull-up resistors’ properties mustbe set to digital. The code works great!Regards!
Reply
October 23, 2012 3:48 am
hello..could we use LM35 as a replacement for TC74?
Reply
October 23, 2012 1:32 am
can the tc74 be replaced with lm35?
Reply
October 22, 2012 12:21 pm
hello,,good day.will the project still work the same if we will use TC74-5.0VCTTR instead of VAT?
Reply
October 22, 2012 1:38 pm
It should work. You may have to change the I2Caddress (const int TC74A0 = 0×90;) in the code to matchwith the correct device. See the datasheet page 9 formore details.
Reply
March 1, 2012 11:49 am
Hi,
I’m making a project with this sensor; I’ve got an A0 type.
13/12/2014 Using TC74 (Microchip) thermal sensor for temperature measurement | Embedded Lab
http://embeddedlab.com/blog/?p=3146 10/13
R-B
Miklos Vago
Miklos Vago
I’m trying to read temperature but it seems impossible. I
don’t understand why. Could you help me? I’m using aPIC18F 4620; My program stops in the Read_Temp functionand doesn’t exit never.
init () {
TRISCbits.TRISC3=1;TRISCbits.TRISC4=1;OpenI2C(SLAVE_7,SLEW_OFF );}
unsigned char Read_Temp(){
unsigned char result;StartI2C(); // Issue start signal
WriteI2C(0×90); // Address + Write bit
WriteI2C(0×00); // Read TempRestartI2C(); // Issue start signal
WriteI2C(0×91); // Address + Read bit
result = ReadI2C();
return result;}
I hope you can help me, ThankYoup.s. I’m sorry for my english..
Reply
March 4, 2012 3:34 am
If you are using A0 type, my code should work. Makesure you connected the I2C pins of PIC18F4620correctly.
Reply
January 31, 2012 12:35 pm
That’s great! Thank you for the prompt help.
Kind regards,Miklos
Reply
January 30, 2012 10:15 am
Hi,
I’m a newbee for uControllers and unfortunately I haveonly a TC74A2 5.0VAT sensor. Which part of the originalprogram do I have to modify for the proper functionality.
Thanks in advance,
13/12/2014 Using TC74 (Microchip) thermal sensor for temperature measurement | Embedded Lab
http://embeddedlab.com/blog/?p=3146 11/13
R-B
Michael Havenga
Michael Havenga
Miklos
Reply
January 30, 2012 6:20 pm
@Miklos,The I2C slave address of TC74A2 5.0VAT is 0×92. So youneed to change it in the following line of the code:const int TC74A0 = 0×90;Replace 0×90 by 0×92, and it should work.
Reply
November 2, 2011 3:36 am
Good day,
I am enjoying working with this project, but I would like tobe able to do a conditional operator to set a temperaturepoint where something happens:
Psuedo
When temp >= 28′C then print additional message to LCD;When temp >= 28′C then set port to start fan;
Simple, yes but I can’t figure out how to work with tha datatypes. If I convert temperture to int then it stays at a valueof 36.
If I just fo a conditional operator ie:
void checktemp(){
if (temperature >=28) Lcd_Out(2,6,”T HIGH!”);
}
Then when the temp on the display is no where near28and the additional message is already typed. Any helpplease, it would be greatly appreciated.
Regards
Michael
PS: I am in the process of converting to 3v3 uMicro. So Iwill let you know how the project works on low voltage Jtype PICs.
Reply
October 31, 2011 6:25 am
Hi,
Thanks for the great project, got it working. I was howeverperplexed by a problem I first experienced when trying toget the code to work on a PIC16F887 – I might be mising
Go to Top| Contact Us |Privacy Policy | Log In
13/12/2014 Using TC74 (Microchip) thermal sensor for temperature measurement | Embedded Lab
http://embeddedlab.com/blog/?p=3146 12/13
Michael
somthing but as far as I could tell the I2C capability of the
the 16F887 and the PIC18F2550 were the same.Interestingly, the 16F887 kept gettting the device not founderror wheres the PIC18f2550 worked first time … weird.
Regards
Michael
Reply
September 21, 2011 5:34 am
Hi,
Has this been tested on SMBUS – I would like to use this isin a 3v3 application ?
Regards
Michael
Reply
Pingback: I liked this: How to use Microchip’s TC74 sensorfor temperature measurement | Road to 2012
Pingback: Electronics-Lab.com Blog » Blog Archive » How touse Microchip’s TC74 sensor for temperaturemeasurement
LEAVE A REPLY
Your email address will not be published. Required fieldsare marked *
Name *
Email *
Website
Comment
Post Comment
13/12/2014 Using TC74 (Microchip) thermal sensor for temperature measurement | Embedded Lab
http://embeddedlab.com/blog/?p=3146 13/13
© 2014 Embedded-Lab. All Rights Reserved. zeeDynamic Theme