Fall detection in Light / Deep Sleep

Hello,

I am struggling to figure out the right logic to combine a fall detection logic with the light (WFI) or deep sleep modes (ie linking to hardware interrupts). So far I’ve been working with the freefall threshold (FF_THS) which works well when testing with an actual free fall (ie dropping the device).

However, a real life fall tends to happen slower, with most g “suspension” only being around 0.6 - 0.75g (vs <0.5g in free fall). The max threshold under FF_THS is 0.5g, so it doesn’t register these “realistic” falls.

Has anyone tried to solve this before and found a solution? If I go through an always-on solution it works fine but I’m trying to optimise for battery life as much as possible.

I am working with the Seeed Xiao BLE Sense (nRf52840 chip).

Thanks in advance for any insights!

Free-fall threshold alone is not reliable. Real falls are slow and irregular. Use wake-on-motion interrupt instead of free-fall. Keep IMU in low-power motion mode. Wake MCU only on movement detection. Capture short burst of acceleration data. Detect impact using high-g spikes.
Check post-fall inactivity for stability. Combine motion variance and jerk features. Use simple event-based state machine logic. Do not rely on single thresholds. Free-fall interrupt should be secondary only. Deep sleep is possible between events. This approach improves battery life and accuracy.
It matches real human fall behavior better.

1 Like