Arduino AD8495 Thermocouple Amplifier

circuit diagram of thermocouple, AD8495 .Arduino, LCD

 Temperature sensing is a crucial aspect of many electronic projects and applications, ranging from industrial process control to home automation. Arduino, an open-source microcontroller platform, which can be used to acquire sensor data such as temperature data and display them on LCD or serial monitor. Thermocouple is a temperature sensor that is made up of two dissimilar metal wires. The voltage output of thermocouple is of very tiny magnitude and therefore amplifier is required to amplify the voltage. AD8495 IC(integrated circuit) is a precision instrumentation amplifiers with thermocouple cold junction compensators used to amplify voltage signal from thermocouple sensor. In previous temperature sensor tutorials we have used DHT11 with arduino code for temperature measurement or used the LM35 with Arduino. These temperature sensors have limited temperature reading capability and used for limited purpose, for example for home use. The thermocouple are used in industrial factories where high temperature sensors are required. In this tutorial guide, we will explain how to use AD8495 thermocouple amplifier with Arduino to measure temperature, how to interface and how to write program to read and display temperature on LCD and serial monitor.

What is a Thermocouple Amplifier?

A thermocouple is a temperature sensor that generates a voltage proportional to the temperature difference between its two junctions. However, the voltage output from a thermocouple is typically in the millivolt range, making it challenging to measure accurately with the limited resolution of an Arduino's analog input pins, which usually operate in the 0-5V range. A thermocouple amplifier is a specialized circuit that amplifies the tiny voltage from the thermocouple to a more significant voltage range that can be easily read by the Arduino. 

AD8495 Thermocouple Amplifier

The AD8495 Thermocouple Amplifier is a precision analog signal conditioning device specifically designed for thermocouple-based temperature sensing applications. There are various types of thermocouples, J, K, T, S, R, and N which are distinguished by what type of material they are made. The AD8495 thermocouple amplifier is compatible with J and K type temperature measurement. The AD8495 integrated IC is The following shows the pin out diagram and the pin description of AD8495 thermocouple amplifier.

AD8495 pinout and description

How to Use Arduino AD8495 Thermocouple Amplifier:

Using the AD8495 thermocouple amplifier IC with an Arduino is relatively simple. Here are the basic steps to get started:

Step 1: Gather Materials

You will need the following materials:

  • Arduino board
  • AD8495 Thermocouple Amplifier
  • Thermocouple sensor
  • 16x2 LCD
  • Resistors(2x100Ohm, 2x270Ohm,1MOhm, 10KOhm Potentiometer)
  • 2 LEDs(Green,Red)
  • Breadboard or PCB for prototyping
  • Jumper wires

Step 2: Interfacing Arduino, AD8495, Thermocouple

Below is the circuit diagram for connecting thermocouple to AD8495, AD8495 to Arduino, and connecting the LCD to the Arduino.

circuit diagram of thermocouple, AD8495 .Arduino, LCD

Connect the +ve and -ve of your thermocouple using two 100Ohm resistors to the AD8495 pin 8 and 1 respecively(via suitable header connector such as J1). Ground the -ve of the thermocouple via 1MOhm resistors. Connect the output pin 6 of AD8495 IC to the analog pin A0 of Arduino. Connect the AD8495 sense pin 5 to the output pin 6. Connect 3.3V and 1.25V power supply to the +ve power supply 7 and reference voltage pin 3 respectively. Connect the -ve power supply pin 3 of AD8495 IC to the common ground with Arduino.

Connect the 16x2 LCD to the Arduino as shown in the circuit schematic. Also connect two LEDs using two 270Ohm resistors to the pin 12 and 11 as shown.

Step 2: Write Arduino Code

Next, you need to write Arduino code to read the amplified voltage output from the AD8495 module and convert it into temperature values. Then the temperature value in degree Celsius and Farenheit are displayed on the LCD as well as sent to serial monitor for display. The temperature is read continuously and when the temperature is below 80 degree Celsius the green LED is turned on indicating that everything is ok. If the temperature reaches 80 degree Celsius or crosses 80 degree Celsius then the red LED is turned on indicating that the temperature is too high. The following is the Arduino program code for reading temperature value from a thermocouple using AD8495 IC, displaying it on LCD and serial monitor and turning the LEDs on or off.

AD8495 Arduino code

// Arduino code for Thermocouple K-type with AD8495
//www.ee-diary.com

// library to drive the 16x1 LCD display
#include <LiquidCrystal.h>
 
// initialize the LCD library with the numbers of the interface pins
LiquidCrystal lcd(7, 6, 5, 4, 3, 2);

int     analogPin = 0;     
int     val = 0;      // variable to store the ADC value from A0
float   temperature;  // Temperature value in celsius degree.
float   farenheit;  // Temperature value in Farenheit degree.
float   gain = 0.00488;
float   ref  = 1.25313;

const int GreenLED = 12; 
const int RedLED = 11; 

void setup(){ 
  //  setup serial
  Serial.begin(9600);
 //LCD setup
	lcd.begin(16, 2);
	//setup LED as output
	pinMode(GreenLED, OUTPUT);
    pinMode(RedLED, OUTPUT);
}
 
void loop(){
  val = analogRead(analogPin);                   // read the input pin
  temperature = (float(val) * gain - ref)/0.005; // convert to Celsius degree
  farenheit = temperature*1.8+32.;		// convert to Farenheit degree

 if(temperature >= 80){
		digitalWrite(RedLED, HIGH);
		digitalWrite(GreenLED, LOW);
	}
  else{
		digitalWrite(RedLED, LOW);
        digitalWrite(GreenLED, HIGH);
	}
  
  //Display on Serial Monitor
  Serial.print("Temperature: ");
  Serial.print(temperature);
  Serial.print(" °C, "); 
  Serial.print(farenheit);
  Serial.println(" °F"); 
	
	//Display on LCD
  lcd.setCursor(0, 0);
  lcd.print("Temperature:");
  lcd.setCursor(0, 1);
  lcd.print(temperature);
  lcd.print("C(");
  lcd.print(farenheit);
  lcd.print("F");
  lcd.print(")");
  
  delay(500); // wait a bit
}

Code Explanation

 Library Inclusion: The code includes the LiquidCrystal library which provides functions to control the 16x2 LCD display.

Variable Declaration: Several variables are declared in the code, including analogPin to specify the analog input pin where the thermocouple is connected, val to store the analog reading from the thermocouple, temperature to store the temperature value in Celsius, farenheit to store the temperature value in Fahrenheit, gain and ref to store calibration values for converting the analog reading to temperature, and GreenLED and RedLED to specify the pins for the green and red LEDs respectively.

Setup(): The setup function is called only once at the beginning of the code. It initializes the serial communication with a baud rate of 9600 for temperature display and debugging purposes, sets up the LCD display with 16 columns and 2 rows, and sets the GreenLED and RedLED pins as output.

Loop(): The loop function is called repeatedly as long as the Arduino is powered on. It reads the analog value from the thermocouple using the analogRead() function and converts it to temperature in Celsius using the calibration values. It then converts the temperature to Fahrenheit by multiplying with 1.8 and adding 32. The temperature values are displayed on the Serial Monitor using the Serial.print() function.

LED Control: The code includes a conditional statement that compares the temperature value with a threshold (80°C in this case) to determine whether to turn on the red LED (RedLED) or the green LED (GreenLED). If the temperature is equal to or higher than the threshold, the red LED is turned on, otherwise, the green LED is turned on using the digitalWrite() function.

Display on LCD: The temperature values in Celsius and Fahrenheit are displayed on the LCD using the lcd.print() function. The first row of the LCD displays "Temperature:", and the second row displays the temperature values in Celsius and Fahrenheit with appropriate labels. Similarly, the temperature values in Celsius and Fahrenheit are also sent to serial monitor for display.

Delay: The delay() function is used to pause the code execution for 500 milliseconds (0.5 seconds) before repeating the loop, to avoid rapid updates and flickering on the LCD display.

Video Demonstration of Thermocouple, AD8495 with Arduino

 After you have build the circuit on breadboard or PCB, upload the code into Arduino. Then increasing the temperature of the thermocouple using lighter fire or similar. Watch and check whether the temperature displayed is increased or not. Also watch the LED response which is meant for visual indicator. 

The following video illustrates how this temperature monitoring system made up of  Thermocouple, AD8495, Arduino, LCD and LEDs work.


 

Summary

The Arduino AD8495 Thermocouple Amplifier is a powerful tool for accurate temperature sensing using thermocouples in your Arduino projects. With its wide temperature range, high accuracy, and ease of use, it provides a reliable solution for various temperature measurement applications. Whether you are building a home automation system, a temperature-controlled environment, or an industrial process control system, the AD8495 Thermocouple Amplifier can enhance the accuracy and reliability of your temperature sensing. In this tutorial, we show how to measure temperature using thermocouple sensor using AD8495 with Arduino. 

So, go ahead and amplify your temperature sensing capabilities with the Arduino AD8495 Thermocouple Amplifier!

References:

[1] Transfer temperature data Wirelessly using 434MHz RF Module

[2] LM35 Temperature Sensor Arduino code

2 Comments

Previous Post Next Post