AND9032 How to Read Temperature Through I2C Bus for NCT75-based Thermostat http://onsemi.com APPLICATION NOTE Introduction I2C Communication The NCT75 is a twowire serially programmable temperature sensor with an over−temperature/interrupt output pin to signal out of limit conditions. Temperature measurements are converted into digital form using a 12 bit resolution sigma−delta, analog−todigital converter (ADC). The NCT75 is ideal for extended temperature measurements over the −55°C to +125°C in a variety of industrial, instrumentation, communication, environmental, consumer and other applications. This application note outlines simple example how to read temperature from NCT75 through the I2C bus and outlines NCT75 based thermostat. All supporting documents including Schematic, PCB layout, MicroC MCU (Micro controlled Unit) code are provided in separate compressed file. Communication with the NCT75 is accomplished via the I2C/SMBus interface. I2C (Inter−Integrated Circuit, referred as “two−wire interface”) presents a multi−master serial single−ended computer bus and is used for communication with low−speed peripherals. SMBus is a subset of I2C that defines the protocols more strictly. NCT75 supports both I2C and SMBus with minimal re−configuration required. The I2C offers a 7−bit address space with 16 reserved addresses, thus maximum of 112 nodes can communicate on the same bus as illustrated in Figure 1. Vcc Rpu I2C Master Rpu +5V (+3.3V) NCT75 Slave #1 NCT75 Slave #2 NCT75 Slave #8 I2C Slave #9 I2C Slave #112 SDA SCL Note: I2C addresses: 7bit address space with 16 reserved addresses thus 112 nodes available Figure 1. I2C Bus Example With Single Master Individual Slave Nodes to it or reading from it. If the bit is zero are master is writing to the slave. If the bit is 1 the master is reading from the slave. The 7 bit address is placed in the upper 7 bits of the byte and the Read/Write (R/W) bit is in the LSB (Least Significant Bit). It needs to be considered that the placement of the 7 bit address in the upper 7 bits of the address byte is a source of confusion for the newcomer. It means that to write to address 0x48, you must actually send out 0x90. It is probably easier to think of the I2C bus addresses as 8 bit addresses, with even addresses as write only, and the odd addresses as the read address for the same device. Both READ/WRITE modes for individual addresses are summarized in Tab 1 with corresponding hexadecimal codes. The address byte is followed by next byte which can access NCT75 registers for previously selected write or read operation. In this application single sensor was used (all three address selection pins, A2, A1 and A0 were grounded). The number of sensors can be extended up to eight; just setting of individual I2C addresses and modification of MCU code is required according to user requirements. All six NCT75 registers and communication protocol is described in details in NTC75 datasheet. NTC75 operates only as slave device and supports transmission protocol up to 400 kHz speed. In idle state both SDA and CLK lines remain high. Each data transfer is initiated with issuing start signal (Figure 2), where SDA line changes from HIGH to LOW, while the SCL line is HIGH. Right after Serial Bus address Byte follows. This Byte is important to define slave address to who master controller need to talk and if access needs to be in write or read mode (R/W – direction bit). The direction R/W bit is used to inform the slave if the master is writing © Semiconductor Components Industries, LLC, 2011 September, 2011 − Rev. 0 1 Publication Order Number: AND9032/D AND9032 Write register address (point register than needs to be accessed) START bit Send address byte + directional bit (0=WRITE) Repeat START bit SDA A7 A6 A5 A4 A3 A2 A1 R/W ACK by Slave (NCT75) D7 D6 D5 D4 D3 D2 D1 D0 ACK by Slave (NCT75) SCL 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 Send address byte + directional bit (1=READ) STOP bit Read register content SDA A7 A6 A5 A4 A3 A2 A1 R/W ACK by Slave (NCT75) SCL 1 2 3 4 5 6 7 8 9 D7 D6 D5 D4 D3 D2 D1 D0 ACK by Slave (NCT75) 1 2 3 4 5 6 7 8 9 Figure 2. I2C Bus Communication Principle (included Write and Read) (D3 to D0) are always 0 as they are not part of the result. If the temperature value register is read during the conversion sequence the value returned is the previously stored value. A bus read does not affect the conversion that is in progress. This example was done only for positive temperatures, where temperature value from 12−bit format is calculated as Positive Temperature = ADC Code (decimal)/16 (Example 190h = 400d/16 = +25°C). Thermostat temperature can be adjusted by global variables in C−code (Tmax and Thyst). If measured temperature is higher than Tmax T1 MOSFET is switched on (indicated by LED1) and hold till temperature drops under Tmax − Thyst, when T1 will be switched OFF as shown in Figure 3. MCU code includes watchdog and practically most of customer requirements can be easily accomplished by MCU code change. Both READ/WRITE modes for individual addresses are summarized in Tab 1 with corresponding hexadecimal codes. The address byte is followed by next byte which can access NCT75 registers for previously selected write or read operation. Tab. 1 SERIAL BUS ADDRESS BYTE MSB LSB A6 A5 A4 A3 A2 A1 A0 R/W 1 0 0 1 0 0 0 X 1 0 0 1 0 0 1 X 1 0 0 1 0 1 0 X 1 0 0 1 0 1 1 X 1 0 0 1 1 0 0 X 1 0 0 1 1 0 1 X 1 0 0 1 1 1 0 X 1 0 0 1 1 1 1 X Hex code Read Write x=1 x=0 0x91 0x90 0x93 0x92 0x95 0x94 0x97 0x96 0x99 0x98 0x9B 0x9A 0x9D 0x9C 0x9F 0x9E Practical Example The goal was to design configurable thermostat with supply voltage from 7 V up to 40 V with reverse protection and current protected open drain output to drive a fan. Schematic of the thermostat is shown in Figure 4. Temperature is read from NCT75 through I2C interface by an 8−bit microcontroller (MCU) PIC12F683 from Microchip. The value of pull−up resistors Rpu (R1 and R2 in Figure 4) is not critical. It may range from 1.8 kW up to 47 kW. Generally, most common used values are 1.8k, 4.7k and 10k. If the resistors are missing, the SCL and SDA lines will always be low (nearly 0 V) and the I2C bus will not work. GP2 MCU output is used to control gate of a protected MOSFET transistor NCV8405 (Fan is connected between pin 1 and pin 2 of “FAN 12 V” connector). This transistor was developed especially for switching applications and offers short circuit protection, thermal shutdown, integrates clamp for inductive loads and has dv/dt robustness. F1 PTC reversible fuse is used additional to limit current below ~1.6 A. Status of the output is indicated by LED1 diode. This diode is emitting if logic 1 is presented on GP2 (T1 ON). MCU and NCT75 are powered from linear regulator NCV8664, which offers 150 mA output current and has very small Quiescent Current (30 mA with 100 mA load). Each data transfer is terminated by change in the state of the SDA line from LOW to HIGH while the SCL line is HIGH. The number of data bytes transferred between a START and a STOP condition is determined by master controller and is not limited. The receiver acknowledges the transfer of data by ACK bit, when addressed. Addressed NCT75 must pull down the SDA line during the Acknowledge clock pulse in such a way that the SDA line is stable LOW during the HIGH period of the Acknowledge Clock pulse. On a master receive, the termination of the data transfer can be signaled by the master generating a Not−Acknowledge on the last byte that has been transmitted by the slave. Setup and hold times must be taken into account, please refer to “Table 5. ELECTRICAL CHARACTERISTICS” of the NCT75 Datasheet. In this application NCT75 is used in normal mode, where a new temperature conversion executes every 80 ms. This new temperature is then stored as a 12 bit 2s complement word in the temperature value register (address 0x00) and can be accessed by MCU. The temperature data is left justified; D15 is the MSB and is the sign bit. The four LSBs http://onsemi.com 2 AND9032 Issue start bit Issue start bit START Write serial bus address set WRITE mode (0x90) Write serial bus address set READ mode (0x91) Initialize MCU ports, software I2C microC, 12F683 Write to Address Pointer Register point Stored Temperature (0x00) Read MSB data Byte from Stored Temperature register Read LSB data Byte from Stored Temperature register Issue start bit Write serial bus address set WRITE mode (0x90) Write to Address Pointer Register point Config. Register (0x01) Write to Configuration Register set normal oper. mode (0x00) Issue stop bit yes T>Tmax T1 ON 12bit format temperature conversion no T< TmaxThyst yes no 500ms Delay T1 OFF Figure 3. Program Flow Chart Figure 4. Schematic of the NTC75 Thermostat http://onsemi.com 3 temp = MSB_data ; temp <<=8; temp += MSB_data ; temp >>=4; AND9032 Conclusion Operation of the thermostat (Tmax, Thyst, output state and others) can be configured inside of user MCU code, therefore ICSP interface connector (PROG) was implemented. Just simply change microC code, compile, plug the programmer to the ICSP connector and upload new hex code. As can be seen no other external control is required. Thermostat was assembled on one side PCB board with two junctions as shown in Figure 5. This note shows simple example how the NTC75 temperature sensor can be implemented for example to form simple thermostat for Fan control. MCU program was written and compiled under Microelectronica micro−C compiler and MCU was programmed by low cost Microchip PICKIT2 ICSP programmer. Such system can be used in numerous applications where temperature measurement and thermal−management is required. Figure 5. Thermostat PCB Layout (dimensions, 36 x 28 mm) http://onsemi.com 4 AND9032 BILL OF MATERIAL Designator Comment Footprint LibRef T1 NCV8405STT1G SOT223 ON Semiconductor R3 470 0805 VISHAY R1, R2 10k 0805 VISHAY PROG 6−pin connector 6−PIN, 2.54mm Microchip−ISP LED1 LED Green 1206 AVAGO IO3 NCT75DR2G SO8 ON Semiconductor IO2 NCV8664ST50T3G SOT−223 ON Semiconductor IO1 PIC12F683 SO8 Microchip FAN 12V PCB Terminal 2P TB2P5 Wago F1 MF−SM100 MF−SM−3425 Bourns CON1 PCB Terminal 2P TB2P5 Wago C2, C4 100n 0805 AVX C1 22uF TANT−60−32 AVX References NCT75 http://www.onsemi.com/PowerSolutions/product.do?id=NCT75 NCV8664 http://www.onsemi.com/PowerSolutions/product.do?id=NCV8664 NCV8405 MOS http://www.onsemi.com/PowerSolutions/product.do?id=NCV8405 MicroC compiler http://www.mikroe.com/eng/home/index/ PIC12F683 http://www.microchip.com/wwwproducts/Devices.aspx?dDocName=en010115 I2C Background: http://en.wikipedia.org/wiki/I2C ON Semiconductor and are registered trademarks of Semiconductor Components Industries, LLC (SCILLC). SCILLC reserves the right to make changes without further notice to any products herein. SCILLC makes no warranty, representation or guarantee regarding the suitability of its products for any particular purpose, nor does SCILLC assume any liability arising out of the application or use of any product or circuit, and specifically disclaims any and all liability, including without limitation special, consequential or incidental damages. “Typical” parameters which may be provided in SCILLC data sheets and/or specifications can and do vary in different applications and actual performance may vary over time. All operating parameters, including “Typicals” must be validated for each customer application by customer’s technical experts. SCILLC does not convey any license under its patent rights nor the rights of others. SCILLC products are not designed, intended, or authorized for use as components in systems intended for surgical implant into the body, or other applications intended to support or sustain life, or for any other application in which the failure of the SCILLC product could create a situation where personal injury or death may occur. Should Buyer purchase or use SCILLC products for any such unintended or unauthorized application, Buyer shall indemnify and hold SCILLC and its officers, employees, subsidiaries, affiliates, and distributors harmless against all claims, costs, damages, and expenses, and reasonable attorney fees arising out of, directly or indirectly, any claim of personal injury or death associated with such unintended or unauthorized use, even if such claim alleges that SCILLC was negligent regarding the design or manufacture of the part. SCILLC is an Equal Opportunity/Affirmative Action Employer. This literature is subject to all applicable copyright laws and is not for resale in any manner. PUBLICATION ORDERING INFORMATION LITERATURE FULFILLMENT: Literature Distribution Center for ON Semiconductor P.O. Box 5163, Denver, Colorado 80217 USA Phone: 303−675−2175 or 800−344−3860 Toll Free USA/Canada Fax: 303−675−2176 or 800−344−3867 Toll Free USA/Canada Email: [email protected] N. American Technical Support: 800−282−9855 Toll Free USA/Canada Europe, Middle East and Africa Technical Support: Phone: 421 33 790 2910 Japan Customer Focus Center Phone: 81−3−5773−3850 http://onsemi.com 5 ON Semiconductor Website: www.onsemi.com Order Literature: http://www.onsemi.com/orderlit For additional information, please contact your local Sales Representative AND9032/D