

The Adafruit ISO1540 (Manufacturer Part ID: 4903) is an isolated I2C bus extender designed to enable communication between devices operating at different voltage levels while providing robust electrical isolation. This component is particularly useful in applications where sensitive electronics need protection from high voltages, noise, or ground loops. By isolating the I2C bus, the ISO1540 ensures safe and reliable data transfer in mixed-voltage environments.








| Parameter | Value |
|---|---|
| Operating Voltage (Side A) | 2.25V to 5.5V |
| Operating Voltage (Side B) | 2.25V to 5.5V |
| Isolation Voltage | 2500 VRMS |
| Maximum I2C Speed | 1 Mbps |
| Operating Temperature | -40°C to +125°C |
| Package Type | SOIC-8 |
| Communication Protocol | I2C (bidirectional, isolated) |
| Pin Number | Pin Name | Description |
|---|---|---|
| 1 | VCC1 | Power supply for Side A (2.25V to 5.5V) |
| 2 | GND1 | Ground for Side A |
| 3 | SDA1 | I2C data line for Side A |
| 4 | SCL1 | I2C clock line for Side A |
| 5 | SDA2 | I2C data line for Side B |
| 6 | SCL2 | I2C clock line for Side B |
| 7 | GND2 | Ground for Side B |
| 8 | VCC2 | Power supply for Side B (2.25V to 5.5V) |
Power Supply Connections:
VCC1 and GND1 to the power supply for Side A.VCC2 and GND2 to the power supply for Side B.I2C Bus Connections:
SDA1 and SCL1.SDA2 and SCL2.Pull-Up Resistors:
SDA and SCL lines on both sides of the ISO1540.Isolation:
GND1 and GND2) are not directly connected.Testing:
VCC1 and VCC2 pins to stabilize the power supply.The following example demonstrates how to use the Adafruit ISO1540 to isolate an I2C sensor from an Arduino UNO.
VCC1 to the Arduino's 5V pin and GND1 to the Arduino's GND.SDA1 and SCL1 to the Arduino's A4 and A5 pins, respectively.VCC2 and GND2 to the sensor's power supply.SDA2 and SCL2 to the sensor's I2C lines.#include <Wire.h>
// I2C address of the sensor
#define SENSOR_ADDRESS 0x40
void setup() {
Wire.begin(); // Initialize I2C communication
Serial.begin(9600); // Start serial communication for debugging
// Check if the sensor is connected
Wire.beginTransmission(SENSOR_ADDRESS);
if (Wire.endTransmission() == 0) {
Serial.println("Sensor detected!");
} else {
Serial.println("Sensor not detected. Check connections.");
}
}
void loop() {
// Example: Read data from the sensor
Wire.beginTransmission(SENSOR_ADDRESS);
Wire.write(0x00); // Command to read data (sensor-specific)
Wire.endTransmission();
Wire.requestFrom(SENSOR_ADDRESS, 2); // Request 2 bytes of data
if (Wire.available() == 2) {
int data = Wire.read() << 8 | Wire.read(); // Combine two bytes
Serial.print("Sensor Data: ");
Serial.println(data);
}
delay(1000); // Wait 1 second before the next read
}
No Communication on the I2C Bus:
VCC1, GND1, VCC2, GND2).Data Corruption or Noise:
Ground Loop Issues:
Overheating:
Q1: Can the ISO1540 be used with SPI or UART?
A1: No, the ISO1540 is specifically designed for I2C communication and does not support SPI or UART protocols.
Q2: What is the maximum cable length for the I2C bus?
A2: The maximum cable length depends on the pull-up resistor values, bus speed, and environmental noise. For standard I2C speeds (100 kHz), lengths up to 1 meter are typically reliable.
Q3: Can I use the ISO1540 with 3.3V and 5V devices?
A3: Yes, the ISO1540 supports mixed-voltage operation. Connect the 3.3V device to one side and the 5V device to the other side.
Q4: Does the ISO1540 require external isolation components?
A4: No, the ISO1540 has built-in isolation and does not require additional components for isolation.