Ning-Jia-Headshot-webFor humans, an unobserved fall can have very serious consequences. In some cases, the initial injury can become more traumatic if not treated within a short time. In other cases, an individual can suffer an accidental fall as the result of weakness or dizziness due to a diminished self-care and self-protective ability. Since the elderly tend to be fragile, these accidents can be made worse if aid is not given in time. Statistics show that the majority of serious consequences are not the direct result of falling, but rather are due to a delay in assistance and treatment. Post-fall consequences can be greatly reduced if relief personnel can be alerted in time.

Besides senior citizens, many other conditions and activities would benefit from an immediate alert to a possible fall, especially from substantial height—by mountaineers, construction workers, window washers, painters, and roofers, for example.

In light of this need to warn of falls, the development of devices for detection and prediction of all types of falls has become a hot topic. In recent years, technological advances in micro-electromechanical system (MEMS) acceleration sensors have made it possible to design fall detectors based on a 3-axis integrated MEMS accelerometer. The technique is based on the principle of detecting changes in motion and body position of an individual, wearing a sensor, by tracking acceleration changes in three orthogonal directions. The data is continuously analyzed algorithmically to determine whether the individual’s body is falling or not. If an individual falls, the device can employ GPS and a wireless transmitter to determine the location and issue an alert in order to get assistance. The core elements of fall detection are an effective, reliable detection principle and an algorithm that judges the existence of an emergency fall situation.


Based on research into the principles of fall detection for an individual body, this article proposes a new solution for detection of fall situations—utilizing a new generation of  low-g, 3-axis digital MEMS accelerometers whose performance features match the requirements of this application. For this research, ADI’s ADXL345 iMEMS® accelerometer and ADuC7026 MicroConverter were used in developing this algorithm.

AD43_07_FIG 02-web

Acceleration-Change Characteristics While Falling
The main research on the principles of fall detection focuses on the changes in acceleration that occur when a human is falling. Figure 3 illustrates changes in acceleration that occur when (a) walking downstairs, (b) walking upstairs, (c) sitting down, and (d) standing up from a chair. The fall detector is mounted to a belt on the individual’s body. The red trace is the Y-axis (vertical) acceleration; it is –1 g at equilibrium. The black and yellow traces are the respective X-axis (forward) and Z-axis (sideways) accelerations. They are both 0 g at equilibrium. The green trace is the vector sum magnitude, 1 g at equilibrium.


Because the movement of elderly people is comparatively slow, the acceleration change will not be very conspicuous during the walking motions. The most pronounced acceleration is a 3-g spike in Y (and the vector sum) at the instant of sitting down. The accelerations during falling are completely different. Figure 4 shows the acceleration changes during an accidental fall. By comparing Figure 4 with Figure 3, we can see four critical differences characteristic of a falling event that can serve as the criteria for fall detection. They are marked in the red boxes and explained in detail as follows:


1. Start of the fall: The phenomenon of weightlessness will always occur at the start of a fall. It will become more significant during free fall, and the vector sum of acceleration will tend toward 0 g; the duration of that condition will depend on the height of freefall. Even though weightlessness during an ordinary fall is not as significant as that during a freefall, the vector sum of acceleration will still be substantially less than 1 g (while it is generally 1 g under normal conditions). Therefore, the first basis for determining the fall status could be detected by the ADXL345’s FREE_FALL interrupt.

2. Impact: After experiencing weightlessness, the human body will impact the ground or other objects; the acceleration curve shows this as a large shock. This shock is detected by the ACTIVITY interrupt of ADXL345. Therefore, the second basis for determining a fall is the ACTIVITY interrupt right after the FREE_FALL interrupt.

3. Aftermath: Generally speaking, the human body, after falling and making impact, can not rise immediately; rather it remains in a motionless position for a short period (or longer as a possible sign of unconsciousness). On the acceleration curve, this presents as an interval of flat line, and is detected by the INACTIVITY interrupt of ADXL345. Therefore, the third basis for determining a fall situation is the INACTIVITY interrupt after the ACTIVITY interrupt.

4. Comparing before and after: After a fall, the individual’s body will be in a different orientation than before, so the static acceleration in three axes will be different from the initial status before the fall (Figure 4). Suppose that the fall detector is belt-wired on the individual’s body, to provide the entire history of acceleration, including the initial status. We can read the acceleration data in all three axes after the INACTIVITY interrupt and compare those sampling data with the initial status. In Figure 4, it is evident that the body fell on its side, since the static acceleration has changed from –1 g on the Y axis to +1 g on the Z-axis. So, the fourth basis for determining a fall is if the difference between sampling data and initial status exceeds a certain threshold, for example, 0.7 g.

The combination of these qualifications forms the entire fall detection algorithm, which, when exercised, can cause the system to raise an appropriate alert that a fall has occurred. Of course, the time interval between interrupts has to be within a reasonable range. Normally, the time interval between FREE_FALL interrupt (weightlessness) and ACTIVITY interrupt (impact) is not very long unless one is falling from the top of a very high building! Similarly, the time interval between ACTIVITY interrupt (impact) and INACTIVITY interrupt (essentially motionless) should not be very long. A practical example will be given in the next section with a set of reasonable values. The related interrupt detection threshold and time parameters can be flexibly set as needed.

If a fall results in serious consequences, such as unconsciousness, the human body will remain motionless for an even longer period of time, a status that can still be detected by the INACTIVITY interrupt, so a second critical alert could be sent out if the inactive state was detected to continue for a defined long period of time after a fall.

Typical Circuit Connection
The circuit connection between the accelerometer and a microcontroller is very simple. For this article, the test platform uses the ADXL345 and an ADuC7026 analog microcontroller—an ARM7 core processor. Other MCU or processor types could be used to access the ADXL345, with similar circuit connections to Figure 5, but the ADuC7026 also provides a data-acquisition facility including multichannel analog-to-digital and digital-to-analog conversion. The ADXL345 data sheet describes SPI-mode applications to achieve higher data rates.

Using the ADXL345 to Simplify Fall Detection
Table 1, Figure 5, and the Appendix define the realization of the algorithm for the solution mentioned above. The function of each register is included in the table, and the values used in the present algorithm are as indicated. Please refer to the ADXL345 data sheet for the detailed definition of each register bit. Some of the registers in Table 1 will have two values. This indicates that the algorithm switches between these values for different aspects of detection. Figure 6 is an algorithm flow chart.


AD43_07_FIG-06-webEach interrupt threshold, and the related time parameter in the algorithm, is as described below.

1. After initialization, the system waits for the FREE_FALL interrupt (weightlessness). Here THRESH_FF is set to 0.75 g and TIME_FF is set to 30 ms.

2. After FREE_FALL interrupt is asserted, the system begins waiting for the ACTIVITY interrupt (impact). THRESH_ACT is set to 2 g and the ACTIVITY interrupt is in dc-coupled mode.

3. Time interval between FREE_FALL interrupt (weightlessness) and ACTIVITY interrupt (impact) is set to 200 ms. If the time between these two interrupts is greater than 200 ms, the status is not valid. The 200-ms counter is realized through the MCU timer.

4. After the ACTIVITY interrupt is asserted, the system begins waiting for the INACTIVITY interrupt (motionless after impact). THRESH_INACT is set to 0.1875 g and TIME_INACT is set to 2 s. INACTIVITY interrupt works in ac-coupled mode.

5. The INACTIVITY interrupt (motionless after impact) should be asserted within 3.5 s after the ACTIVITY interrupt (impact). Otherwise, the result is invalid. The 3.5-s counter is realized through the MCU timer.

6. If the acceleration difference between stable status and initial status exceeds the 0.7-g threshold, a valid fall is detected, and the system will raise a fall alert.

7. After detecting a fall, the ACTIVITY interrupt and INACTIVITY interrupt have to be continuously monitored to determine if there is a long period of motionlessness after the fall. The THRESH_ACT is set to 0.5 g and the ACTIVITY interrupt is running in the ac-coupled mode. THRESH_INACT is set to 0.1875 g, TIME_INACT is set to 10 s, and the INACTIVITY interrupt is working in ac-coupled mode. In other words, if the subject’s body remains motionless for 10 s the INACTIVITY interrupt will be asserted and the system raises a critical alert. Once the subject’s body moves, the ACTIVITY interrupt will be generated to complete the entire sequence.

8. The algorithm can also detect if the individual’s body freefalls from a high place. Here, we consider that the two FREE_FALL interrupts are continuous if the interval between them is shorter than 100 ms. A critical freefall alert will be raised if the FREE_FALL interrupt (weightlessness) is continuously asserted for 300 ms

This algorithm is developed in C language to be executed on the ADuC7026 MicroController (See Appendix). A test case is also presented with the proposed solution to verify the algorithm. Each position, including falling forward, falling backward, falling to the left, and falling to the right is tested 10 times. Table 2 presents the test results. Check marks (?) indicate each condition that is satisfied.

This experiment shows that falling status can be effectively detected with the proposed solution, based on the ADXL345. This is only a simple experiment. More comprehensive, effective, and long-term experimentation will be required to verify the reliability of the proposed solution.

APPENDIX—An Example of the Code
This section presents an example of C code for the proposed solution, based on the ADXL345 and ADuC7026 platform. There are four .h files and one .c file in the project, compiled by Keil UV3. The .c file code is listed below.

The Author
Ning Jia [], a field applications engineer, has been a member of the Analog Devices China Applications Support Team for two years. He is responsible for the technical support of a broad range of analog products across China. He graduated in 2007 from Beijing University of Posts and Telecommunications with a master’s degree in signal and information processing.


1 Information on all ADI components can be found at
2 products/product.html.