

The Adafruit ADXL326 (Manufacturer Part ID: 1018) is a high-performance 3-axis accelerometer designed to measure acceleration in three dimensions (X, Y, and Z axes). It provides an analog output proportional to the acceleration experienced by the sensor. This component is ideal for applications such as motion detection, orientation sensing, vibration monitoring, and tilt measurement. Its compact size and high sensitivity make it suitable for use in robotics, wearable devices, gaming controllers, and industrial equipment.








The following table outlines the key technical details of the Adafruit ADXL326:
| Parameter | Value |
|---|---|
| Supply Voltage (Vcc) | 1.8V to 3.6V |
| Typical Operating Voltage | 3.3V |
| Measurement Range | ±16g |
| Sensitivity | 57 mV/g (at 3.3V supply) |
| Bandwidth | Selectable via capacitors |
| Output Type | Analog |
| Operating Temperature | -40°C to +85°C |
| Dimensions | 20mm x 20mm x 2mm |
The Adafruit ADXL326 has the following pin configuration:
| Pin Name | Pin Number | Description |
|---|---|---|
| VCC | 1 | Power supply input (1.8V to 3.6V). |
| GND | 2 | Ground connection. |
| XOUT | 3 | Analog output for X-axis acceleration. |
| YOUT | 4 | Analog output for Y-axis acceleration. |
| ZOUT | 5 | Analog output for Z-axis acceleration. |
| ST | 6 | Self-test pin (leave unconnected if unused). |
The following example demonstrates how to read acceleration data from the ADXL326 using an Arduino UNO:
// Define the analog input pins for the ADXL326
const int xPin = A0; // X-axis output connected to A0
const int yPin = A1; // Y-axis output connected to A1
const int zPin = A2; // Z-axis output connected to A2
void setup() {
Serial.begin(9600); // Initialize serial communication at 9600 baud
}
void loop() {
// Read analog values from the ADXL326
int xValue = analogRead(xPin); // Read X-axis acceleration
int yValue = analogRead(yPin); // Read Y-axis acceleration
int zValue = analogRead(zPin); // Read Z-axis acceleration
// Convert the analog values to voltage (assuming 3.3V reference)
float xVoltage = xValue * (3.3 / 1023.0);
float yVoltage = yValue * (3.3 / 1023.0);
float zVoltage = zValue * (3.3 / 1023.0);
// Print the voltage values to the Serial Monitor
Serial.print("X Voltage: ");
Serial.print(xVoltage);
Serial.print(" V, Y Voltage: ");
Serial.print(yVoltage);
Serial.print(" V, Z Voltage: ");
Serial.print(zVoltage);
Serial.println(" V");
delay(500); // Wait for 500ms before the next reading
}
No Output Signal:
Noisy Output:
Incorrect Readings:
Self-Test Fails:
Q: Can the ADXL326 be used with a 5V microcontroller?
A: Yes, but you must use a voltage divider or level shifter to ensure the analog output signals are compatible with the 5V microcontroller's ADC input range.
Q: How do I calculate acceleration from the output voltage?
A: Use the formula:
[
a = \frac{V_{out} - V_{zero-g}}{\text{Sensitivity}}
]
where ( V_{out} ) is the output voltage, ( V_{zero-g} ) is the zero-g voltage (typically 1.65V at 3.3V supply), and Sensitivity is 57 mV/g.
Q: What is the maximum bandwidth of the ADXL326?
A: The maximum bandwidth is 1600 Hz for the X and Y axes, and 550 Hz for the Z axis.
Q: Can I use the ADXL326 for vibration monitoring?
A: Yes, the ADXL326 is well-suited for vibration monitoring due to its high sensitivity and wide bandwidth.