How does the shock detection feature of the ADXL375 work?

The figure below illustrates how the ADXL375 generates an interrupt when a shock event is detected. For detecting a single shock event, the accelerometer uses two parameters: minimum shock threshold (THRESH_SHOCK) and maximum shock duration (DUR).

The THRESH_SHOCK register is eight bits in length and contains the unsigned threshold value for generating shock interrupts. The magnitude of the shock event is compared with the value in the THRESH_SHOCK register for shock detection. The DUR register is eight bits in length and contains an unsigned time value representing the maximum time that an event can be above the THRESH_SHOCK threshold to qualify as a shock event.

Any tips for improving the accuracy of shock measurements using ADXL375?

Several factors should be considered for improving accuracy including threshold setting, noise and output data rate.

Since the shock duration setting has a finite resolution (625µs/LSB), the threshold value to trigger a shock interrupt should be set as low as possible to effectively differentiate between shock pulses using their pulse width. However, noise is also an important consideration when setting the minimum threshold. In order to minimize false positives and be reliably above the device noise floor, it is useful to know the peak value of the noise. Peak-to-peak noise can only be estimated statistically assuming a Gaussian noise distribution. For example, the percentage of time that noise will exceed a peak-to-peak value of 8 times the rms value is 0.006%. This corresponds to 2g or at least 3LSB. In addition to the accelerometer, any background noise in the application also has to be considered.

The shock detection function always utilizes undecimated data sampled at 3200 Hz. Lower output data rates (100 Hz to 1600 Hz) are achieved by decimating the internal 3200 Hz sampling frequency. Since the −3 dB bandwidth varies with the output data rate and can be lower than the bandwidth of the undecimated data, the high frequency and high-g data that is used to determine shock events may not be present if the output of the accelerometer is examined. This may result in a situation where the shock interrupt is triggered, however the output data does not appear to meet the conditions set by the user for the corresponding function. So ideally, the accelerometer should be set to 3200Hz output data rate to match the sampling of the shock interrupt function.

Individual axes can be enabled or disabled from detecting shock events by setting the appropriate bits in the SHOCK_AXES register.

The following application note describes a technique for autonomously detecting and capturing shock events using the ADXL375 with minimal intervention from the host processor.