Beginner
10 min

Measure and report temperature in a digital format with AT30TSE758A and PIC18LF27K42

Record and store temperature data over time

Temp-Log Click with EasyPIC v8

Published Nov 01, 2023

Click board™

Temp-Log Click

Dev Board

EasyPIC v8

Compiler

NECTO Studio

MCU

PIC18LF27K42

Monitor temperature in various applications with the highest precision

A

A

Hardware Overview

How does it work?

Temp-Log Click is based on 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 a 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 communication with the MCU. The AT30TSE758A sensor is made with power saving in mind. When the shutdown mode is engaged, the power consumption is minimal, and most device sections do not consume any power. The ONE SHOT function allows you to wake up the device, take one measurement, update the registers, and reenter shutdown mode. 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 more. There is also a copy of this register in the non-volatile memory, which can be independently changed. After the power is 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 to the configuration parameters. Also, two more 16-bit registers are used to set the high and the low-temperature thresholds, 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 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 7-bit 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 and the word address byte transmitted via the I2C comprise the 10-bit address field required to map all 1024 bytes available on this device. The EEPROM contains 16 bytes per page and 64 pages in an array. This Click board™ can operate with either 3.3V or 5V logic voltage levels selected via the VCC SEL jumper. This way, both 3.3V and 5V capable MCUs can use the communication lines properly. Also, this Click board™ comes equipped with a library containing easy-to-use functions and an example code that can be used as a reference for further development.

Temp-Log Click hardware overview image

Features overview

Development board

EasyPIC v8 is a development board specially designed for the needs of rapid development of embedded applications. It supports many high pin count 8-bit PIC microcontrollers from Microchip, regardless of their number of pins, and a broad set of unique functions, such as the first-ever embedded debugger/programmer. The development board is well organized and designed so that the end-user has all the necessary elements, such as switches, buttons, indicators, connectors, and others, in one place. Thanks to innovative manufacturing technology, EasyPIC v8 provides a fluid and immersive working experience, allowing access anywhere and under any

circumstances at any time. Each part of the EasyPIC v8 development board contains the components necessary for the most efficient operation of the same board. In addition to the advanced integrated CODEGRIP programmer/debugger module, which offers many valuable programming/debugging options and seamless integration with the Mikroe software environment, the board also includes a clean and regulated power supply module for the development board. It can use a wide range of external power sources, including a battery, an external 12V power supply, and a power source via the USB Type-C (USB-C) connector.

Communication options such as USB-UART, USB DEVICE, and CAN are also included, including the well-established mikroBUS™ standard, two display options (graphical and character-based LCD), and several different DIP sockets. These sockets cover a wide range of 8-bit PIC MCUs, from the smallest PIC MCU devices with only eight up to forty pins. EasyPIC v8 is an integral part of the Mikroe ecosystem for rapid development. Natively supported by Mikroe software tools, it covers many aspects of prototyping and development thanks to a considerable number of different Click boards™ (over a thousand boards), the number of which is growing every day.

EasyPIC v8 horizontal image

Microcontroller Overview

MCU Card / MCU

default

Architecture

PIC

MCU Memory (KB)

128

Silicon Vendor

Microchip

Pin count

28

RAM (Bytes)

8192

Used MCU Pins

mikroBUS™ mapper

NC
NC
AN
NC
NC
RST
NC
NC
CS
NC
NC
SCK
NC
NC
MISO
NC
NC
MOSI
Power Supply
3.3V
3.3V
Ground
GND
GND
NC
NC
PWM
Alert Interrupt
RB1
INT
NC
NC
TX
NC
NC
RX
I2C Clock
RC3
SCL
I2C Data
RC4
SDA
Power Supply
5V
5V
Ground
GND
GND
2

Take a closer look

Schematic

Temp-Log Click Schematic schematic

Step by step

Project assembly

EasyPIC v8 front image hardware assembly

Start by selecting your development board and Click board™. Begin with the EasyPIC v8 as your development board.

EasyPIC v8 front image hardware assembly
Rotary B 2 Click front image hardware assembly
MCU DIP 28 hardware assembly
EasyPIC v8 28pin-DIP - upright/background hardware assembly
Necto image step 2 hardware assembly
Necto image step 3 hardware assembly
Necto image step 4 hardware assembly
NECTO Compiler Selection Step Image hardware assembly
NECTO Output Selection Step Image hardware assembly
Necto image step 6 hardware assembly
Necto DIP image step 7 hardware assembly
Necto image step 8 hardware assembly
Necto image step 9 hardware assembly
Necto image step 10 hardware assembly
Necto PreFlash Image hardware assembly

Track your results in real time

Application Output

After pressing the "FLASH" button on the left-side panel, it is necessary to open the UART terminal to display the achieved results. By clicking on the Tools icon in the right-hand panel, multiple different functions are displayed, among which is the UART Terminal. Click on the offered "UART Terminal" icon.

UART Application Output Step 1

Once the UART terminal is opened, the window takes on a new form. At the top of the tab are two buttons, one for adjusting the parameters of the UART terminal and the other for connecting the UART terminal. The tab's lower part is reserved for displaying the achieved results. Before connecting, the terminal has a Disconnected status, indicating that the terminal is not yet active. Before connecting, it is necessary to check the set parameters of the UART terminal. Click on the "OPTIONS" button.

UART Application Output Step 2

In the newly opened UART Terminal Options field, we check if the terminal settings are correct, such as the set port and the Baud rate of UART communication. If the data is not displayed properly, it is possible that the Baud rate value is not set correctly and needs to be adjusted to 115200. If all the parameters are set correctly, click on "CONFIGURE".

UART Application Output Step 3

The next step is to click on the "CONNECT" button, after which the terminal status changes from Disconnected to Connected in green, and the data is displayed in the Received data field.

UART Application Output Step 4

Software Support

Library Description

This library contains API for Temp-Log Click driver.

Key functions:

  • temp_log_read_temp_dec - This function reads decimal value of temp.

  • temp_log_convert_to_celsius - This function converts temperature data to celsius value.

  • temp_log_get_alert - This function alerts user if temperature limit is alarming.

Open Source

Code example

This example can be found in NECTO Studio. Feel free to download the code, or you can copy the code below.

/*!
 * \file 
 * \brief TempLog Click example
 * 
 * # Description
 * This example returns values of the temperature from the sensor.
 *
 * The demo application is composed of two sections :
 * 
 * ## Application Init 
 * Initializes click driver.
 * 
 * ## Application Task  
 * Reads temperature from temperature register in decimal value in 9-bit resolution,
 * converts that decimal value in celsius value and checks Alert pin witch goes active (low)
 * if the measured temperature meets or exceeds the high temperature limit.
 * 
 * 
 * \author MikroE Team
 *
 */
// ------------------------------------------------------------------- INCLUDES

#include "board.h"
#include "log.h"
#include "templog.h"

// ------------------------------------------------------------------ VARIABLES

static templog_t templog;
static log_t logger;

// ------------------------------------------------------ APPLICATION FUNCTIONS

void application_init ( void )
{
    log_cfg_t log_cfg;
    templog_cfg_t cfg;

    /** 
     * Logger initialization.
     * Default baud rate: 115200
     * Default log level: LOG_LEVEL_DEBUG
     * @note If USB_UART_RX and USB_UART_TX 
     * are defined as HAL_PIN_NC, you will 
     * need to define them manually for log to work. 
     * See @b LOG_MAP_USB_UART macro definition for detailed explanation.
     */
    LOG_MAP_USB_UART( log_cfg );
    log_init( &logger, &log_cfg );    
    log_info( &logger, " Application Init " );
    
    // Click initialization.
    templog_cfg_setup ( &cfg );    
    TEMPLOG_MAP_MIKROBUS( cfg, MIKROBUS_1 );
    if ( TEMPLOG_OK != templog_init ( &templog, &cfg ) )
    {
        log_error( &logger, " Communication init." );
        for ( ; ; );
    }
    
    templog_default_cfg ( &templog );
    
    log_info( &logger, " Application Task " );
}

void application_task ( void )
{
    uint16_t temp_in_dec = 0;
    float temp_in_cels = 0;
    
    temp_in_dec = temp_log_read_temp_dec( &templog, TEMP_LOG_RESOLUTION_9_BITS );
    temp_in_cels = temp_log_convert_to_celsius( temp_in_dec );
    
    log_printf( &logger, "Temperature in celsius value is: %.2f\r\n", temp_in_cels );

    if ( temp_log_get_alert( &templog ) == 0 )
    {
        log_printf( &logger, "TEMPERATURE LIMIT ALARMING!\r\n" );
    }
    
    Delay_ms( 1000 );
} 

void main ( void )
{
    application_init( );

    for ( ; ; )
    {
        application_task( );
    }
}

// ------------------------------------------------------------------------ END

Additional Support

Resources