- Order number: MIKROE-3326
- Manufacturer product ID: MIKROE-3326
The MCP9843 IC meets JEDEC specification JC42.4-TSE3000B3 and JC42.4-TSE2002B3, allowing it to be used as a thermal sensor for memory modules. The MCP9843 is designed specifically for DRAM DIMMs (Dual In-line Memory Modules), allowing the Serial Presence Detect (SPD) feature. However, its use is not limited only to memory modules. The presence of EEPROM can be utilized for many different tasks: recording of temperature peaks, storage of various thermal event alerts, and similar. This makes Temp-Log 3 a great choice for development of various embedded applications based on temperature measurement and data logging.
How does it work?
Temp-Log 3 click is equipped with the MCP9843 IC, a temperature sensor with EEPROM, by Microchip. This IC is used to convert the temperature measurement into digital information. Besides the thermal sensor, this IC also features 256 bytes of EEPROM on the same die. It is compliant with the JEDEC specification JC42.4-TSE3000B3 and JC42.4-TSE2002B3 since it is designed specifically for DRAM DIMMs (Dual In-line Memory Modules), allowing the Serial Presence Detect (SPD) feature. However, it is not limited only to this role: it can be used as a very accurate general-purpose thermometer with the added benefit of integrated EEPROM, reducing the number of physical ICs required to design a temperature logging application. Temp-Log 3 click utilizes the I2C serial interface (SMBus compatible), which allows it to be used in a wide range of applications.
The temperature sensor section includes all the features typically found on such ICs. Most of its interrupt engine features are very similar (or identical) to features found in Thermo 8 click, which is based on the MCP9808 IC. This includes the interrupt and thermometer modes, alert pin configuration, hysteresis of the temperature thresholds, critical temperature alert feature, and so on. The EVENT pin of the IC is routed to the INT pin of the Click board™. It is pulled to a HIGH logic level by a resistor, so the polarity should be programmed accordingly, the same as in the case of Thermo 8 click. However, there are some minor differences including the EEPROM section, which will be discussed.
The MCP9843 features the CAPABILITIES register, unlike the MCP9808 IC. This register is a read-only register and it provides some general information, such as the factory-specified accuracy in the upper-temperature range (+75°C to +95°C and +40°C to +125°C), measurement range, resolution, and other parameters of the sensor. Its description, along with the description of other registers, can be found in the MCP9843 datasheet.
Although the output temperature register is of the same width as the one used in MCP9808 (16 bits), there are 12 bits of thermal data available along with the sign bit, in the 2’s complement format. All the user-configurable registers in the MCP9843 are 16 bits wide. However, not all 16 bits are used, in most cases.
Both the temperature and the EEPROM section have their own I2C address. The I2C address is determined by four fixed bit values, while the last three bits (LSBs) are determined by the logic states applied to A2, A1, and A0. While A2 and A1 address are hard-wired to a LOW logic level on this Click board™, the value of the A0 address bit can be changed by switching the SMD jumper labeled as ADDR SEL to either 0 (tied to GND) or 1 (tied to VCC). The datasheet of the MCP9843 offers a table with the content of these four bits for each section of the IC.
By switching the SMD jumper labeled as VCC SEL, the logic voltage level of the I2C bus can be selected between 3.3V and 5V. This allows Temp-Log 3 click to be interfaced with both 3.3V and 5V MCUs. Note, however, that the MCP9843 is supplied with power from the mikroBUS™ 3.3V rail, regardless of the VCC SEL jumper position.
Specifications
Type | Humidity,Temperature |
Applications | Temp-Log 3 is a great solution for the development of various embedded applications based on temperature measurement and data logging. |
On-board modules | MCP9843 IC, a temperature sensor with EEPROM, by Microchip |
Key Features | A very high measurement accuracy and repeatability, programmable thresholds and hysteresis, a dedicated EVENT pin with a programmable function, selectable resolution, 256 bytes of integrated EEPROM, and more |
Interface | I2C |
Input Voltage | 3.3V,5V |
Click board size | M (42.9 x 25.4 mm) |
Pinout diagram
This table shows how the pinout on Temp-Log 3 Click corresponds to the pinout on the mikroBUS™ socket (the latter shown in the two middle columns).
Onboard settings and indicators
Label | Name | Default | Description |
---|---|---|---|
PWR | PWR | - | Power LED indicator |
JP1 | VCC SEL | Left | Logic voltage level selection: left position 3.3V, right position 5V |
JP2 | VCC SEL | Left | I2C slave address selection: left position 0 (GND), right position 1 (VCC) |
Software support
We provide a library for the Temp-Log 3 Click on our LibStock page, as well as a demo application (example), developed using MikroElektronika compilers. The demo can run on all the main MikroElektronika development boards.
Library Description
The library performs a control of the Temp-Log 3 Click board. There are a functions that offer a choice to measure the ambient temperature and set a temperature limit values to generate alarm. The library also can save a desired configurations or temperature values to the EEPROM, which has size of 256 bytes. For more details check documentation.
Key functions:
T_TEMPLOG3_RETVAL templog3_writeReg( uint8_t regAddr, uint16_t dataIn )
- Function writes a 16bit data to the desired register.T_TEMPLOG3_RETVAL templog3_getTemp( uint8_t tempSel, T_TEMPLOG3_DEG *tempOut )
- Function gets a temperature value from the desired temperature register calculated to the Celsius degrees.T_TEMPLOG3_RETVAL templog3_setTemp( uint8_t tempSel, T_TEMPLOG3_DEG tempIn )
- Function sets a desired temperature register on the desired value calculated to the Celsius degrees.void templog3_eepromByteWrite( uint8_t regAddr, uint8_t dataIn, uint8_t eepromMode )
- Function writes a one byte data to the EEPROM including/excluding a write protection.
Examples description
The application is composed of the three sections :
- System Initialization - Initializes peripherals and pins.
- Application Initialization - Initializes I2C interface and performs a device configuration for properly working. Also sets the temperature limit to the desired values.
- Application Task - (code snippet) - First ensures that the minimum conversion time is met, and then reads the ambient temperature calculated to the Celsius degrees. Also checks the limit status and shows a message when some limit condition is met. Note : The temperature range that can be measured or written is from -40 to +125 Celsius degrees. The user can change the measured temperature resolution, but the range remains the same. The limit temperature resolution is always a 10bit, or 0.25 Celsius degrees. If user wants to enable the EEPROM Write Protection, the A0 pin on the device must be set to the high voltage level.
void applicationTask() { templog3_waitConvDone(); retStatus = templog3_getTemp( _TEMPLOG3_TEMP_AMBIENT_REG, &temperature ); FloatToStr( temperature, text ); floatCut(); mikrobus_logWrite( "** Ambient temperature is : ", _LOG_TEXT ); mikrobus_logWrite( text, _LOG_TEXT ); logUnit(); mikrobus_logWrite( " **", _LOG_LINE ); checkLimitStatus(); Delay_ms( 300 ); }
Additional Functions :
- floatCut - Makes that float values be rounded on two decimal places.
- logUnit - Writes a Celsius degrees symbol on uart terminal.
- checkLimitStatus - Checks the limit status for each temperature reading cycle and writes a message on uart terminal when some limit condition is met.
The full application code, and ready to use projects can be found on our LibStock page.
Other mikroE Libraries used in the example:
Conversions
I2C
UART
Additional notes and informations
Depending on the development board you are using, you may need USB UART click, USB UART 2 click or RS232 click to connect to your PC, for development systems with no UART to USB interface available on the board. The terminal available in all MikroElektronika compilers, or any other terminal application of your choice, can be used to read the message.