

The LM35, manufactured by Texas Instruments (Part ID: LM35), is a precision temperature sensor that provides an output voltage linearly proportional to the temperature in degrees Celsius. Unlike thermistors, the LM35 does not require external calibration or trimming, making it a reliable and easy-to-use component for temperature measurement. Its low self-heating and high accuracy make it ideal for a wide range of applications.








The LM35 is designed for precision temperature sensing with minimal external components. Below are its key technical details:
| Parameter | Value |
|---|---|
| Supply Voltage (Vcc) | 4V to 30V |
| Output Voltage Range | 0V to +1.5V (for 0°C to +150°C) |
| Temperature Range | -55°C to +150°C |
| Accuracy | ±0.5°C (at 25°C) |
| Output Sensitivity | 10mV/°C |
| Current Consumption | 60 µA (typical) |
| Self-Heating | 0.08°C (in still air) |
| Package Options | TO-92, SOIC-8, TO-220 |
The LM35 is available in a 3-pin package. Below is the pinout for the TO-92 package, which is the most commonly used form factor.
| Pin Number | Pin Name | Description |
|---|---|---|
| 1 | Vcc | Positive supply voltage (4V to 30V) |
| 2 | Vout | Analog output voltage proportional to temperature |
| 3 | GND | Ground (0V reference) |
The LM35 is straightforward to use in a circuit. It outputs an analog voltage that is directly proportional to the temperature in degrees Celsius, with a scale factor of 10mV/°C. For example, at 25°C, the output voltage will be 250mV.
Below is an example of how to connect and read temperature data from the LM35 using an Arduino UNO.
// LM35 Temperature Sensor Example with Arduino UNO
// Reads temperature in Celsius and prints it to the Serial Monitor
const int sensorPin = A0; // Analog pin connected to LM35 Vout
float temperatureC; // Variable to store temperature in Celsius
void setup() {
Serial.begin(9600); // Initialize serial communication at 9600 baud
}
void loop() {
int sensorValue = analogRead(sensorPin); // Read analog value from LM35
float voltage = sensorValue * (5.0 / 1023.0); // Convert ADC value to voltage
temperatureC = voltage * 100.0; // Convert voltage to temperature (10mV/°C)
// Print temperature to Serial Monitor
Serial.print("Temperature: ");
Serial.print(temperatureC);
Serial.println(" °C");
delay(1000); // Wait 1 second before next reading
}
| Issue | Possible Cause | Solution |
|---|---|---|
| No output voltage | Incorrect wiring | Verify connections to Vcc, GND, and Vout. |
| Fluctuating readings | Electrical noise | Add a decoupling capacitor (0.1 µF). |
| Incorrect temperature readings | Calibration error or ADC issue | Check ADC reference voltage and scaling. |
| Overheating sensor | Excessive current draw | Ensure supply voltage is within range. |
Q1: Can the LM35 measure negative temperatures?
A1: Yes, but the output voltage will drop below 0V for negative temperatures. To measure negative temperatures, use a negative voltage supply or a pull-down resistor to shift the output voltage.
Q2: What is the maximum distance between the LM35 and the microcontroller?
A2: The LM35 can be placed several meters away, but long wires may introduce noise. Use shielded cables or an op-amp buffer for long-distance connections.
Q3: Can the LM35 be powered with 3.3V?
A3: The LM35 requires a minimum supply voltage of 4V. For 3.3V systems, consider using a level shifter or a different sensor compatible with 3.3V.
Q4: How do I improve accuracy in noisy environments?
A4: Use a low-pass filter (e.g., RC filter) on the output pin and ensure proper grounding to reduce noise.
By following this documentation, users can effectively integrate the LM35 temperature sensor into their projects for accurate and reliable temperature measurements.