How to Build a LM335 Temperature Sensor Circuit

In this project, we will demonstrate how to build temperature sensor circuit using a LM335 sensor.

As a temperature sensor, the circuit will read the temperature of the surrounding environment and
relay this
temperature to us back in degrees Kelvin.

The difference between an LM335 and LM34 and LM35 temperature sensors is the LM335 sensor gives out the temperature
in degrees Kelvin, while the LM35 sensor gives out the temperature in degrees Celsius and the LM34 sensor gives out the temperature in
degrees Fahrenheit. All 3 are calibrated different to output the millivolt
voltage reading in proportional to these different units of measurement.

The LM335 sensor outputs 10mV/°K. So if the LM335 is giving an output reading of 2.943 (which is 2943mV), then this is equivalent
to a temperature of 294.3° Kelvin. All you have to do is take the output reading and divide it by 10 in order to get the temperature output reading.
This output reading of 294.3° kelvin is equivalent to 70°F and 21.11°C.

The IC we will use to measure the temperature in this circuit is the LM335 IC.
We will integrate this with the arduino to
measure the temperature. The arduino will then read this measured value from the LM335 and translate into degrees
kelvin, fahrenheit and celsius,
which we will be able to read from the computer from the arduino serial monitor.

Components Needed

Arduino Board

LM335 Temperature Sensor IC

Computer

USB with type A and B connectors

We can use any type of arduino board.

The LM335 is a low voltage IC which uses approximately +5VDC of power. This is ideal because
the arduino's power pin gives out 5V of power. The IC has just 3 pins, 2 for the power supply and one for the
analog output.

The output pin provides an analog voltage output that is linearly proportional to the fahrenheit
temperature. Pin 2 gives an output of 1 millivolt per 0.1°F (10mV per degree). So to get the degree value in
fahrenheit, all
that must be done is to take the voltage output and divide it by 10- this give out the value degrees in fahrenheit.

So, for example, if the output pin, pin 2, gives out a value of 785mV (0.785V), this is equivalent
to a temperature
of 78.5°K.

We can then easily convert this value into fahrehnheit and celsius by plugging in the appropriate conversion
equations.

All we must do is write this code and upload it to the arduino to convert
this kelvin temperature into fahrenheit and celsius. The code is shown below.

Below is the pinout of the LM335 IC:

Pin 1 is the Adjustable Pin (Adj). This allows us to calibrate the temperature sensor if we want a more precise temperature readout. It isn't required.
Pin 2 is the output pin. We attach this pin to analog pin A0 of the arduino board. We then take a 2KΩ resistor and connect that to the 5V terminal of the arduino. Pin 3 is the ground pin
and connects to the ground (GND) terminal of the arduino.

The arduino, with suitable code, can then interpret this measured analog voltage and output to us
the temperature in degrees Kelvin, Celsius, and Fahrenheit.

Also to do this project we need a USB cable with a Type A connector on one end and a Type B connector
on the other end. This is so that we can hook our arduino to a computer and send it code that it can run to display
to us the temperature.

Temperature Sensor Circuit

The temperature sensor circuit we will build is shown below:

This translates into the circuit schematic:

So you circuit connections are:

Pin 1 of the LM335 is unconnected
Pin 2 of the LM335 goes into analog pin A0 of the arduino
Pin 3 of the LM335 goes into ground (GND) of the arduino

Now that we have this circuit setup, we now connect the USB cable from the arduino to the computer.
The type B side of the connector goes into the arduino and the type A side into the USB port of the computer.
Now the computer is connected to the arduino. We can now write code in the processing software to give instructions to the
arduino.

Code for Temperature Sensor Circuit

//initializes/defines the output pin of the LM335 temperature sensor
int outputPin= 0;//this sets the ground pin to LOW and the
input voltage pin to high
void setup()
{
Serial.begin(9600);
}

The code will now be explained. Before
we can get a Kevlin reading of
the temperature, the analog output voltage must
first be read. This will be the raw value
divided by 1024 times 5000. It is divided
by 1024 because a span of 1024 occupies 5V. We get the ratio of the raw value to the full span of 1024 and then multiply it
by 5000 to get the millivolt value. Since the output pin can give out a maximum of 5 volts (1024), 1024 represents the full
possible range it can give out. The raw voltage over this 1024 (value) therefore represents the ratio of how much power
the output pin is outputting against this full range. Once we have this ratio, we then multiply it by 5000 to give the millivolt
value. This is because there is 5000 millvolts in 5 volts.

Once this analog voltage in millivolts is calculated, we then can find the temperature in
kelvin by the equation: (millivolts/10)

To get the equivalent temperature in Celsius, we subtract the Kelvin value by 273.15. Once we obtain this Celsius value, we can convert
into Fahrenheit with the following equation: ((celsius * 9)/5 +32)

At the end of this program, we put
a delay of 3000ms to take the temperature
reading every 3 seconds. You can adjust this value
to meet your personal preference or program needs.