Circuit Documentation
Summary of the Circuit
This circuit consists of an Arduino Mega 2560 microcontroller board interfaced with an LM75 temperature sensor. The LM75 sensor communicates with the Arduino Mega 2560 via the I2C protocol, utilizing the SDA (data line) and SCL (clock line) connections. The sensor is powered by the 5V output from the Arduino and shares a common ground. The purpose of this circuit is to scan and detect I2C devices, specifically to read temperature data from the LM75 sensor.
Component List
Arduino Mega 2560
- Description: A microcontroller board based on the ATmega2560.
- Pins: IOREF, RESET, 3V3, 5V, GND, VIN, Analog Pins (A0-A15), Digital Pins (D0-D53), PWM Pins, AREF, SDA, SCL.
- Purpose: Acts as the main controller for the circuit, running the embedded code to communicate with I2C devices and process sensor data.
LM75 Temperature Sensor
- Description: An I2C digital temperature sensor and thermal watchdog.
- Pins: VCC, GND, SDA, SCL, OS.
- Purpose: Provides temperature readings to the Arduino Mega 2560 via I2C communication.
Wiring Details
Arduino Mega 2560
- 5V connected to LM75 VCC
- GND connected to LM75 GND
- D21/SCL connected to LM75 SCL
- D20/SDA connected to LM75 SDA
LM75 Temperature Sensor
- VCC connected to Arduino Mega 2560 5V
- GND connected to Arduino Mega 2560 GND
- SCL connected to Arduino Mega 2560 D21/SCL
- SDA connected to Arduino Mega 2560 D20/SDA
Documented Code
I2C Scanner Code for Arduino Mega 2560
/*I2C_scanner
This sketch tests standard 7-bit addresses.
Devices with higher bit address might not be seen properly.*/
#include <Wire.h>
void setup() {
Wire.begin();
Serial.begin(9600);
while (!Serial);
Serial.println("\nI2C Scanner");
}
void loop() {
byte error, address;
int nDevices;
Serial.println("Scanning...");
nDevices = 0;
for (address = 1; address < 127; address++ ) {
Wire.beginTransmission(address);
error = Wire.endTransmission();
if (error == 0) {
Serial.print("I2C device found at address 0x");
if (address < 16)
Serial.print("0");
Serial.print(address, HEX);
Serial.println(" !");
nDevices++;
}
else if (error == 4) {
Serial.print("Unknown error at address 0x");
if (address < 16)
Serial.print("0");
Serial.println(address, HEX);
}
}
if (nDevices == 0)
Serial.println("No I2C devices found\n");
else
Serial.println("done\n");
delay(5000);
}
This code is designed to run on the Arduino Mega 2560 and scans for devices on the I2C bus, reporting any found devices to the serial monitor. It is particularly useful for verifying connections and ensuring that the LM75 temperature sensor is properly communicating with the Arduino.
