

The LM75A is a digital temperature sensor with an I2C interface, designed for precise temperature measurement and monitoring. It operates over a wide temperature range of -55°C to +125°C with a resolution of 0.5°C. The LM75A includes programmable over-temperature and under-temperature alarms, making it ideal for applications requiring temperature control and safety monitoring.








The LM75A is typically available in an 8-pin package. Below is the pinout and description:
| Pin Number | Pin Name | Description | 
|---|---|---|
| 1 | SDA | Serial Data Line for I2C communication. | 
| 2 | SCL | Serial Clock Line for I2C communication. | 
| 3 | OS | Over-temperature Shutdown (alert output, open-drain). | 
| 4 | GND | Ground. | 
| 5 | A2 | Address Pin 2 (used to set the I2C address). | 
| 6 | A1 | Address Pin 1 (used to set the I2C address). | 
| 7 | A0 | Address Pin 0 (used to set the I2C address). | 
| 8 | VCC | Power Supply (2.7V to 5.5V). | 
The LM75A's I2C address is determined by the states of the A2, A1, and A0 pins. The base address is 0x48, and the full address is calculated as:
Address = 0x48 + (A2 * 4) + (A1 * 2) + A0
For example:
0x49.Below is an example of how to interface the LM75A with an Arduino UNO and read temperature data:
VCC to the Arduino's 5V pin.GND to the Arduino's GND pin.SDA to the Arduino's A4 pin.SCL to the Arduino's A5 pin.#include <Wire.h>
#define LM75A_ADDRESS 0x48 // Default I2C address of LM75A
void setup() {
  Wire.begin(); // Initialize I2C communication
  Serial.begin(9600); // Start serial communication for debugging
}
void loop() {
  float temperature = readTemperature();
  Serial.print("Temperature: ");
  Serial.print(temperature);
  Serial.println(" °C");
  delay(1000); // Wait 1 second before the next reading
}
float readTemperature() {
  Wire.beginTransmission(LM75A_ADDRESS); // Start communication with LM75A
  Wire.write(0x00); // Point to the temperature register
  Wire.endTransmission();
  Wire.requestFrom(LM75A_ADDRESS, 2); // Request 2 bytes from LM75A
  if (Wire.available() == 2) {
    // Read the two bytes of temperature data
    uint8_t msb = Wire.read(); // Most significant byte
    uint8_t lsb = Wire.read(); // Least significant byte
    // Combine the bytes and convert to temperature
    int16_t rawTemp = (msb << 8) | lsb;
    rawTemp >>= 7; // Right shift to remove unused bits
    return rawTemp * 0.5; // Each bit represents 0.5°C
  }
  return NAN; // Return NaN if no data is available
}
No Temperature Data Received
Inaccurate Temperature Readings
Alert Pin Not Functioning
Q: Can the LM75A operate at 3.3V?
A: Yes, the LM75A supports a supply voltage range of 2.7V to 5.5V.
Q: What is the default I2C address of the LM75A?
A: The default address is 0x48 when A2, A1, and A0 are all connected to GND.
Q: How do I change the temperature alert thresholds?
A: The alert thresholds can be configured by writing to the LM75A's over-temperature and hysteresis registers via I2C.
Q: Can the LM75A measure negative temperatures?
A: Yes, the LM75A can measure temperatures as low as -55°C. Negative temperatures are represented in two's complement format.