Temp-Log click is a precise ambient temperature measurement device, equipped with 8Kbit (1024 bytes) of EEPROM memory, which can be used to permanently store system configuration or log application specific or user preference data. This click covers a range of temperatures from -55°C to +125°C with the highest accuracy of ±0.5°C, in the range of 0°C to 85°C. The device can also send an ALERT signal to the INT pin of the mikroBUS™ every time programmed temperature thresholds are reached.
Besides the EEPROM, the device also contains non-volatile configuration register, which is copied to the main configuration register after every restart of the device. This allows for near-autonomous operation of the device, without the need to initialize the sensor configuration parameters after every power cycle. These features make the Temp-Log click a perfect choice for temperature measurement in a wide variety of communication, consumer, computer, industrial and similar applications, with an addition of up to 8Kbit of user data storage space.
How does it work?
The main active component used on this click is the AT30TSE758A, a 9 to 12bit, ±0.5°C accurate digital temperature sensor with non-volatile registers and integrated serial EEPROM, from Microchip. The AT30TSE758A utilizes a band-gap type temperature sensor with an internal sigma-delta ADC to measure and convert the temperature. The internal ADC can be configured to work with the resolution of 9, 10, 11 or 12 bits. This directly affects the size of the temperature measurement steps. However, it should be noted that the higher resolution results in longer conversion times. The measured temperature is calibrated in degrees Celsius.
The AT30TSE758A sensor uses the I2C bus for the communication with the MCU. This sensor has 7 data registers, which are used to access all of the functions of this device. After initializing the I2C communication with the START condition from the master, a valid device address is expected. This thermal sensor uses 1001AAA as the 7bit I2C address, where “AAA” corresponds to the hard-wired A2 to A0 address pins. Those pins can be set to a HIGH or a LOW logic state by switching the onboard SMD jumpers, labeled as A0, A1, and A2. After the correct address has been received by the sensor, it will respond with the ACK and it is ready to accept the address of one of the seven available 16bit registers.
The 16bit temperature register holds the converted thermal data in MSB/LSB format and is available for reading at every moment; the thermal conversion is performed in the background, and if there is no active READ task over the thermal register, the newly converted temperature data is placed in this register. If there is an active READ task being performed, the converted thermal data will be withheld, until the reading process is completed.
The AT30TSE758A sensor is made with the power saving in mind. When the shutdown mode is engaged, the power consumption is minimal and most of the device sections are not consuming any power. The ONE SHOT function allows to wake up the device, take one measurement, update the registers and go into shutdown mode again. This is accomplished by the OS bit in the config register. Setting this bit as 1 while the device is in the shutdown mode will perform one reading cycle as described above. This allows for a minimum power consumption.
The 16bit configuration register is used to configure all the working parameters of the sensor: mode (one-shot mode, normal and shutdown mode), conversion resolution, the polarity of the ALERT pin, ALERT mode, non-volatile memory busy status and so on. There is also a copy of this register in the non-volatile memory, which can be independently changed. After the power on, the content of the non-volatile config register will be copied to its volatile counterpart. The non-volatile version of the configuration register contains additional bits for the permanent lock-down and config lock, used to prevent further changes of the configuration parameters.
Also, there are two more 16bit registers used to set the high and the low temperature threshold, which also have their non-volatile copies. Depending on the ALERT mode bit in the config register, the temperature threshold values in these registers will be used to trigger an event on the ALERT pin, routed to the mikroBUS™ INT pin. This pin is pulled HIGH on this click so it is a good idea to configure it as active LOW, by using the polarity bit in the config register.
The 8Kbit EEPROM section of the AT30TSE758A acts as an additional serial device, with its own I2C slave address. The 7bit I2C address of the serial EEPROM is 1010APP, where “A” corresponds to the status of the A2 address pin. The last two “P” characters correspond to the memory page bits P1 and P0. The remaining two address pin states (A0 and A1) are not required to match when addressing the EEPROM. These bits, along with the word address byte transmitted via the I2C, now comprise the 10bit address field required to map all of the 1024 bytes available on this device. The EEPROM itself contains 16 bytes per page and has 64 pages in an array.
MikroElektronika provides libraries and functions which simplify working with this device. For more detailed information on the functionality of this device, it is always a good idea to consult the AT30TSE758A datasheet.
Temp-Log click is capable of working with both 3.3V and 5V systems. The desired operational voltage can be selected by the VCC SEL SMD jumper. SCL and SDA lines are both pulled HIGH by the onboard resistors, so the Temp-Log click is ready to be used right out of the box.
Specifications
Type | Temperature |
Applications | Can be used for the temperature measurement in a wide variety of communication, consumer, computer, industrial and similar applications, where accurate ambient thermal measurement with a simple data logging is required. |
On-board modules | AT30TSE758A, a 9 to 12bit, ±0.5°C accurate digital temperature sensor with non-volatile registers and integrated serial EEPROM, from Microchip. |
Key Features | An accurate 12bit thermal sensor with non-volatile registers and 8Kbit of EEPROM for storing user data. Optimized for low power performance and intelligent data management. |
Interface | I2C |
Input Voltage | 3.3V or 5V |
Click board size | M (42.9 x 25.4 mm) |
Pinout diagram
This table shows how the pinout on Temp-Log click corresponds to the pinout on the mikroBUS™ socket (the latter shown in the two middle columns).
Temp-Log click maximum ratings
Description | Min | Typ | Max | Unit |
---|---|---|---|---|
Temperature measurement range | -55 | +125 | °C | |
Temperature measurement accuracy | ±0.5 | ±3 | °C | |
Temperature measurement conversion resolution | 9 | 12 | bits | |
I2C clock speed | 1 | 4000 | kHz |
Onboard settings and indicators
Label | Name | Default | Description |
---|---|---|---|
LD1 | PWR | Power LED indicator | |
JP1 | A0 | Left | I2C address bit 0 selection: left position '0', right position '1' |
JP2 | A1 | Left | I2C address bit 1 selection: left position '0', right position '1' |
JP3 | A2 | Left | I2C address bit 2 selection: left position '0', right position '1' |
JP4 | VCC SEL | Left | Power supply voltage selection, left position 3V3, right position 5V |
Software support
We provide a library for Temp-Log click on our LibStock page, as well as a demo application (example), developed using MikroElektronika compilers and mikroSDK. The provided click library is mikroSDK standard compliant. The demo application can run on all the main MikroElektronika development boards.
Library Description
Initializes and defines I2C driver, defines driver's function which writes data in registers, reads data from registers, reads and converts temperature to Celsius value with determined resolution, and checks Alert pin for temperature limit.
Key functions
uint16_t temp_log_readReg(uint8_t register_address);
- Function reads 16-bit data from register
uint16_t temp_log_readTempDec(uint16_t resolution);
- Function reads 16-bit temperature data from the register with the determined resolution
float temp_log_convertToCelsius(uint16_t temperature_data);
- Function converts 16-bit temperature data to Celsius value
uint8_t temp_log_getAlert();
- Function checks state of Alert pin (ALT)
Example description
void applicationTask() { uint16_t temperature = 0; float temp = 0; uint16_t temp_limit = 0; char txt[4] = {0}; char txt1[10] = {0}; temperature = temp_log_readTempDec(_TEMP_LOG_RESOLUTION_9_BITS); temp = temp_log_convertToCelsius(temperature); IntToStr(temperature, txt); mikrobus_logWrite("Temperature in decimal value is: ", _LOG_TEXT); mikrobus_logWrite(txt, _LOG_LINE); FloatToStr(temp, txt1); mikrobus_logWrite("Temperature in celsius value is: ", _LOG_TEXT); mikrobus_logWrite(txt1, _LOG_LINE); if(temp_log_getAlert() == 0) { mikrobus_logWrite("TEMPERATURE LIMIT ALARMING!", _LOG_LINE); } Delay_ms(1000); }
The full application code, and ready to use projects can be found on our LibStock page.
Additional notes and information
Depending on the development board you are using, you may need USB UART click, USB UART 2 clickor 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.
mikroSDK
This click board is supported with mikroSDK - MikroElektronika Software Development Kit. To ensure proper operation of mikroSDK compliant click board demo applications, mikroSDK should be downloaded from the LibStock and installed for the compiler you are using.
For more information about mikroSDK, visit the official page.
Downloads
mikroBUS™ standard specifications