

The L3G4200D is a 3-axis gyroscope sensor designed to measure angular velocity along the X, Y, and Z axes. It is housed in a compact LGA16 (4x4 mm) package, making it ideal for space-constrained applications. This sensor is widely used in motion sensing, robotics, gaming devices, and image stabilization systems. Its high precision and low power consumption make it a popular choice for embedded systems and IoT devices.








| Parameter | Value |
|---|---|
| Supply Voltage (Vdd) | 2.4V to 3.6V |
| I/O Voltage (Vdd_IO) | 1.8V to Vdd |
| Angular Rate Range | ±250, ±500, ±2000 dps (selectable) |
| Sensitivity | 8.75, 17.5, 70 mdps/digit |
| Output Data Rate (ODR) | 100 Hz to 800 Hz |
| Communication Interface | I²C (up to 400 kHz) / SPI (up to 10 MHz) |
| Operating Temperature | -40°C to +85°C |
| Package Dimensions | 4x4x1 mm (LGA16) |
The L3G4200D has 16 pins in an LGA package. Below is the pinout description:
| Pin Number | Pin Name | Description |
|---|---|---|
| 1 | Vdd | Power supply (2.4V to 3.6V) |
| 2 | Vdd_IO | I/O interface voltage (1.8V to Vdd) |
| 3 | GND | Ground |
| 4 | GND | Ground |
| 5 | SCL/SPC | I²C clock / SPI serial port clock |
| 6 | SDA/SDI/SDO | I²C data / SPI data input/output |
| 7 | CS | SPI chip select (active low) |
| 8 | INT1 | Interrupt 1 output |
| 9 | INT2 | Interrupt 2 output |
| 10 | NC | Not connected |
| 11 | NC | Not connected |
| 12 | NC | Not connected |
| 13 | NC | Not connected |
| 14 | NC | Not connected |
| 15 | NC | Not connected |
| 16 | NC | Not connected |
Below is an example of how to interface the L3G4200D with an Arduino UNO using the I²C protocol:
#include <Wire.h>
// L3G4200D I2C address
#define L3G4200D_ADDRESS 0x69
// Register addresses
#define CTRL_REG1 0x20
#define OUT_X_L 0x28
void setup() {
Wire.begin(); // Initialize I2C communication
Serial.begin(9600); // Initialize serial communication for debugging
// Configure the L3G4200D
Wire.beginTransmission(L3G4200D_ADDRESS);
Wire.write(CTRL_REG1); // Select control register 1
Wire.write(0x0F); // Enable X, Y, Z axes and set power mode
Wire.endTransmission();
}
void loop() {
int16_t x, y, z;
// Read angular velocity data
Wire.beginTransmission(L3G4200D_ADDRESS);
Wire.write(OUT_X_L | 0x80); // Set auto-increment for multi-byte read
Wire.endTransmission();
Wire.requestFrom(L3G4200D_ADDRESS, 6); // Request 6 bytes (X, Y, Z)
if (Wire.available() == 6) {
x = Wire.read() | (Wire.read() << 8); // Combine low and high bytes
y = Wire.read() | (Wire.read() << 8);
z = Wire.read() | (Wire.read() << 8);
}
// Print angular velocity values
Serial.print("X: ");
Serial.print(x);
Serial.print(" Y: ");
Serial.print(y);
Serial.print(" Z: ");
Serial.println(z);
delay(100); // Delay for readability
}
No Data Output:
Incorrect or Noisy Readings:
Communication Errors:
Q: Can the L3G4200D operate at 5V?
A: No, the maximum supply voltage for the L3G4200D is 3.6V. Exceeding this limit may damage the sensor.
Q: How do I select the angular rate range?
A: The angular rate range can be configured by writing to the CTRL_REG4 register. Refer to the datasheet for specific register settings.
Q: What is the default I²C address of the L3G4200D?
A: The default I²C address is 0x69. If the SDO pin is connected to GND, the address changes to 0x68.
Q: Can I use the L3G4200D with a 1.8V microcontroller?
A: Yes, connect the Vdd_IO pin to 1.8V to ensure compatibility with the microcontroller's I/O voltage levels.