

The Texas Instruments LM34 is a precision temperature sensor that provides an analog voltage output directly proportional to the temperature in degrees Fahrenheit. Unlike many temperature sensors that output in Celsius, the LM34 eliminates the need for conversion when working with Fahrenheit-based systems. Its compact design and high accuracy make it ideal for a wide range of applications.








The LM34 is designed for ease of use and high accuracy. Below are its key technical specifications:
| Parameter | Value |
|---|---|
| Supply Voltage (VCC) | 5V typical (4V to 30V range) |
| Output Voltage Range | 0 mV to 10V (10 mV/°F sensitivity) |
| Temperature Range | -50°F to +300°F |
| Accuracy | ±1.5°F (at 77°F) |
| Current Consumption | 50 µA typical |
| Output Impedance | 0.4 Ω typical |
| Package Types | TO-92, SOIC-8, and TO-220 |
The LM34 is available in multiple package types. Below is the pin configuration for the TO-92 package, which is the most commonly used.
| Pin Number | Pin Name | Description |
|---|---|---|
| 1 | VOUT | Analog voltage output proportional to temperature |
| 2 | GND | Ground (0V reference) |
| 3 | VCC | Positive supply voltage (4V to 30V) |
For other package types, refer to the Texas Instruments datasheet for detailed pinouts.
The LM34 is straightforward to use in a circuit. Follow these steps to integrate it into your design:
Below is an example of how to connect the LM34 to an Arduino UNO and read temperature data.
// LM34 Temperature Sensor Example Code
// Reads the temperature in Fahrenheit and displays it on the Serial Monitor
const int sensorPin = A0; // LM34 output connected to Analog Pin A0
float voltage; // Variable to store the sensor's output voltage
float temperatureF; // Variable to store the temperature in Fahrenheit
void setup() {
Serial.begin(9600); // Initialize serial communication at 9600 baud
}
void loop() {
// Read the analog value from the sensor (0-1023)
int analogValue = analogRead(sensorPin);
// Convert the analog value to voltage (assuming 5V reference)
voltage = analogValue * (5.0 / 1023.0);
// Convert the voltage to temperature in Fahrenheit
temperatureF = voltage * 100.0; // LM34 outputs 10 mV/°F
// Print the temperature to the Serial Monitor
Serial.print("Temperature (°F): ");
Serial.println(temperatureF);
delay(1000); // Wait for 1 second before the next reading
}
| Issue | Possible Cause | Solution |
|---|---|---|
| No output voltage | Incorrect wiring or no power supply | Verify connections and ensure VCC is within range. |
| Inaccurate temperature readings | Electrical noise or improper load impedance | Add a bypass capacitor and ensure high load impedance. |
| Output voltage is too low or unstable | Sensor is operating outside its temperature range | Ensure the sensor is within -50°F to +300°F. |
| Arduino reads incorrect values | Incorrect analog reference voltage | Ensure the Arduino's reference voltage matches the LM34's output range. |
Can the LM34 be used with a 3.3V system?
How do I convert the output to Celsius?
Temperature (°C) = (Temperature (°F) - 32) × 5/9.Can the LM34 measure negative temperatures?
What is the maximum cable length for the LM34?
By following this documentation, you can effectively integrate the LM34 into your projects and achieve accurate temperature measurements.