Падение может быть опасно для человека вдвойне. Помимо травм от самого падения, ситуация может усугубиться из-за осложнений, если медицинская помощь не оказана своевременно. Статистика показывает, что большинство серьезных осложнений не являются прямым следствием падения, а связаны с задержкой в помощи и лечении. Поэтому актуальна задача обнаружения падения и оповещения о нем. Решить эту задачу можно с помощью акселерометров, объединенных в систему с микроконтроллерами, обрабатывающими полученную от акселерометров информацию. Такую систему разработали специалисты компании Analog Devices на основе акселерометров и микроконтроллеров, выпускаемых этой компанией.
iMEMS-акселерометр ADXL345
Полупроводниковые интегрированные MEMS-технологии (iMEMS) сочетают микромеханические структуры и электрические схемы на одном кремниевом кристалле. Используя эти технологии, iMEMS-акселерометры определяют ускорение по одной, двум или даже трем осям и формируют аналоговый или цифровой выходной сигнал. В зависимости от применения, акселерометр может работать в различных диапазонах обнаружения – от нескольких g до десятков g. Версия с цифровым выходом может иметь несколько режимов прерывания.
Недавно на рынке был представлен 3-осевой акселерометр ADXL345 с цифровым входом, выполненный по технологии iMEMS (рис.1) [1]. Он имеет диапазон измерений ±2g, ±4g, ±8g, или ±16g, выбираемый пользователем; разрешение до 13 бит; маленький корпус 3×5×1 мм; сверхнизкую потребляемую мощность (от 25 до 130 мкА); стандартные последовательные цифровые интерфейсы I2C и SPI, а также 32-уровневый буфер FIFO. Различные встроенные функции, в том числе определение характера движения и гибкая система прерываний, значительно упрощают выполнение алгоритма определения падения.
Решение задачи обнаружения падения, предлагаемое здесь, в полной мере использует эти внутренние функции, сводя к минимуму сложность алгоритма. Чтобы понять, как работает алгоритм обнаружения падения, рассмотрим систему прерываний акселерометра ADXL345, а также характерные показания акселерометра в различных режимах движения.
Система прерываний
Система прерываний акселерометра ADXL345 включает в общей сложности восемь функций прерывания: DATA_READY, SINGLE_TAP, DOUBLE_TAP, ACTIVITY, INACTIVITY, FREE_FALL, WATERMARK и OVERRUN. Прерывания могут передаваться через два программируемых вывода – INT1 и INT2 (см. рис.1). Все функции прерываний могут быть использованы одновременно – единственным ограничением является то, что некоторым функциям, возможно, придется делить выводы прерываний между собой. Функции прерывания определяются следующим образом [1, 2]:
1. DATA_READY – сигнал прерывания выдается (т.е. на линии прерываний устанавливается напряжение высокого логического уровня), когда новые данные доступны, и сбрасывается, когда никаких новых данных не имеется.
2. SINGLE_TAP – сигнал прерывания выдается, когда наблюдается одно ускорение, превышающее значение, хранящееся в регистре THRESH_TAP акселерометра, в течение времени, меньше указанного в регистре DUR (рис.2).
3. DOUBLE_TAP – сигнал прерывания выдается, когда фиксируются два ускорения, большие, чем значение в регистре THRESH_TAP, и менее продолжительные, чем указано в реестре DUR, при условии, что разница во времени между двумя ускорениями не меньше, чем указано в регистре LATENT, и не больше, чем указано в регистре WINDOW (см. рис.2).
4. ACTIVITY – сигнал прерывания выдается, когда имеет место ускорение, большее, чем значение, хранящееся в регистре THRESH_ACT.
5. INACTIVITY – сигнал прерывания выдается, когда ускорение, меньшее, чем значение, хранящееся в регистре THRESH_INACT, длится дольше времени, указанного в регистре TIME_INACT. Максимальное значение для TIME_INACT составляет 255 с. Отметим, что прерывания ACTIVITY и INACTIVITY пользователь может настраивать для каждой оси акселерометра в отдельности. Например, прерывание ACTIVITY по оси X может быть активировано, а по осям Y и Z – нет.
6. FREE_FALL – сигнал прерывания выдается, если регистрируется ускорение, меньшее значения, хранящегося в реестре THRESH_FF, в течении более длительного времени, чем задано в регистре TIME_FF. Прерывание FREE_FALL используется главным образом при обнаружении свободного падения. От INACTIVITY прерывание FREE_FALL отличается тем, что при его определении участвуют все оси акселерометра, а временные пороги значительно ниже.
7. WATERMARK – сигнал прерывания выдается, если число образцов в FIFO-памяти заполнено до значения, хранящегося в регистре SAMPLES.
8. OVERRUN – сигнал прерывания выдается, когда новые данные заменяют непрочитанные данные.
Подробное описание регистров акселерометра ADXL345 приведено в работах [1, 2].
Изменения ускорения во время падения
Задача определения падения с помощью акселерометра сводится к тому, чтобы отличить показания акселерометра, соответствующие падению, от показаний при других видах движения. Оказывается, что различным видам движения соответствуют разные комбинации показаний акселерометра по разным осям (рис.3). Красным цветом на рис.3 показано ускорение по вертикальной оси (Y). В положении равновесия оно равно -1g. Черный и желтый цвета соответствуют ускорениям по осям X (вперед) и Z (вбок). Они оба составляют 0g в равновесии. Зеленый график является векторной суммой ускорений по трем осям, которая в равновесии равна 1g.
Поскольку движение пожилых людей является сравнительно медленным, изменение ускорений во время ходьбы не будет очень заметным. Наиболее выраженное ускорение – это скачок по Y (и векторной суммы), когда человек садится.
Ускорения во время падения совершенно иные (рис.4). Сравнивая рис.4 с рис.3, мы видим четыре важнейших различия в характеристиках падения, которые могут служить в качестве критериев для его обнаружения. Они отмечены красными рамками. Прокомментируем их.
1. Начало падения. Явление невесомости всегда будет наблюдаться в начале падения. Оно станет еще более значительным при свободном падении, и сумма векторов ускорений будет стремиться к 0g. Продолжительность этого состояния будет зависеть от высоты свободного падения. Даже несмотря на то, что длительность невесомости в ходе обычного падения не столь значительна, как во время свободного падения, сумма векторов ускорений все равно будет значительно меньше 1g (в нормальных условиях это значение, как правило, больше 1g). Этот критерий для определения состояния падения может быть зафиксирован посредством функции прерывания FREE_FALL в ADXL345.
2. Столкновение. После пребывания в состоянии невесомости тело человека ударится об землю или другие объекты. Кривая ускорения показывает это как большой скачок на графике. Этот скачок обнаруживается прерыванием ACTIVITY акселерометра ADXL345. Таким образом, вторым критерием для определения падения является наличие прерывания ACTIVITY сразу после прерывания FREE_FALL.
3. Последствия. Как правило, человек после падения и удара о землю не может встать сразу же, он остается в неподвижном состоянии в течение короткого периода времени (или дольше – это возможный признак бессознательного состояния). На кривой ускорений это состояние выглядит как интервал плоских линий и обнаруживается прерыванием INACTIVITY в ADXL345. Так что третий критерий падения – это прерывание INACTIVITY после прерывания ACTIVITY.
4. Сравнение показаний до и после падения. После падения тело будет ориентировано иначе, чем до него. Поэтому статическое ускорение по трем осям будет отличаться от первоначального состояния до падения (см. рис. 4). Можно считать данные об ускорении по всем трем осям после прерывания INACTIVITY и сравнить эти данные с начальным состоянием. Разность между начальными и конечными значениями ускорения должна превышать определенный порог, например 0,7g.
Сочетание этих критериев и является основой алгоритма определения падения. Конечно, интервал времени между прерываниями должен находиться в разумных пределах. Как правило, интервал между прерыванием FREE_FALL (невесомость) и прерыванием ACTIVITY (столкновение) не очень велик – если тело не падает с высоты очень высокого здания! Интервал времени между прерыванием ACTIVITY (столкновение) и прерыванием INACTIVITY (неподвижное состояние) также не должен быть очень длинным.
Если падение приводит к серьезным последствиям, таким как потеря сознания, человек будет оставаться неподвижным в течение более долгого времени. Это состояние может быть обнаружено прерыванием INACTIVITY, и в этом случае может быть послано второе предупреждение о критической ситуации.
Типичная схема соединения
Схема соединения между ADXL345 и микроконтроллером очень проста. В нашей тестовой платформе акселерометр ADXL345 использовался вместе с аналоговым микроконтроллером ADuC7026 [2, 3] (рис.5). Контроллер ADuC7026 имеет 12-битные аналоговые порты ввода-вывода и ядро ARM7TDMI. С установленным в "1" выводом ADXL345 работает в режиме передачи данных через интерфейс I2C. Линии передачи данных и синхронизации (SDA и SCL) шины I2C подключены к соответствующим выводам ADuC7026. Порт ввода-вывода общего назначения (GPIO) контроллера ADuC7026 подключен к выводу ALT акселерометра ADXL345 для выбора I2C-адреса ADXL345 на шине (возможна адресация до двух акселерометров на одной шине). Вывод INT1 ADXL345 подключен ко входу IRQ ADuC7026 для генерации сигнала прерывания.
Для доступа к ADXL345 могут быть использованы и другие контроллеры или процессоры, подсоединенные по аналогичной схеме, но в состав ADuC7026 входит также система сбора данных, включающая многоканальные аналого-цифровые и цифроаналоговые преобразователи.
Алгоритм обнаружения падения
Рассмотрим теперь сам алгоритм обнаружения падения (рис.6). Он включает последовательность следующих действий.
1. После инициализации система ждет прерывания FREE_FALL (состояние невесомости). В тестовом примере значение THRESH_FF было задано равным 0,75 g, а TIME_FF – 30 мс.
2. После того, как зафиксировано прерывание FREE_FALL, система ждет прерывания ACTIVITY (столкновение). Значение THRESH_ACT было выбрано равным 2 g.
3. Временной интервал между прерыванием FREE_FALL (невесомость) и прерыванием ACTIVITY (воздействие) устанавливается в 200 мс. Если время между этими двумя прерываниями превышает 200 мс, система возвращается на этап 1.
4. После фиксации прерывания ACTIVITY система начинает ждать прерывания INACTIVITY (неподвижность после удара). THRESH_INACT установлен равным 0,1875 g, а TIME_INACT – равным 2 с.
5. Прерывание INACTIVITY должно быть выдано в течение 3,5 с после прерывания ACTIVITY (столкновение). В противном случае результат является недействительным.
6. Если разница ускорений между исходным и конечным состоянием превышает порог в 0,7 g, падение считается обнаруженным, и система посылает сигнал тревоги.
7. После обнаружения падения прерывание ACTIVITY и прерывание INACTIVITY должны быть под постоянным контролем, чтобы определить, существует ли длительное обездвиженное состояние после падения. Значение THRESH_ACT для этого случая установлено равным 0,5 g, THRESH_INACT – 0,1875 g, а TIME_INACT – 10 с. Иными словами, если тело остается неподвижным в течение 10 с, будет выработано прерывание INACTIVITY и система пошлет дополнительный сигнал тревоги. После того, как тело начнет движение, система сгенерирует прерывание ACTIVITY и завершит всю последовательность действий.
8. Алгоритм может обнаружить также свободное падение человека с большой высоты. Сигнал о свободном падении будет выставлен, если прерывание FREE_FALL постоянно установлено в течение 300 мс, что соответствует высоте падения
Рассматриваемый алгоритм реализован на языке C [2] и может быть выполнен на микроконтроллере ADuC7026.
Проведенные эксперименты показали, что с помощью предлагаемого решения на основе ADXL345 падение может быть обнаружено с достаточно высокой точностью.
Если падение зафиксировано, можно использовать GPS-приемник и беспроводной передатчик для определения местоположения и передачи сигнала тревоги, чтобы вызвать помощь.
Таким образом, оборудование компании Analog Devices позволяет эффективно решать задачу обнаружения падения человека. Его широкое применение поможет существенно снизить ущерб для здоровья, вызываемый последствиями падения.
Литература
1. ADXL345: 3-Axis, ±2 g/±4 g/±8 g/±16 g Digital Accelerometer. – www.analog.com/en/mems-and-sensors/imems-accelerometers/adxl345/products/product.html.
2. Ning Jia. Detecting Human Falls with a 3-Axis Digital Accelerometer. – www.analog.com/library/analogdialogue/archives/43-07/fall_detector.pdf
3. ADUC7026: Precision Analog Microcontroller, 12-Bit Analog I/O, ARM7TDMI® MCU. – www.analog.com/en/analog-microcontrollers/ADuC7026/products/product.html.
Полупроводниковые интегрированные MEMS-технологии (iMEMS) сочетают микромеханические структуры и электрические схемы на одном кремниевом кристалле. Используя эти технологии, iMEMS-акселерометры определяют ускорение по одной, двум или даже трем осям и формируют аналоговый или цифровой выходной сигнал. В зависимости от применения, акселерометр может работать в различных диапазонах обнаружения – от нескольких g до десятков g. Версия с цифровым выходом может иметь несколько режимов прерывания.
Недавно на рынке был представлен 3-осевой акселерометр ADXL345 с цифровым входом, выполненный по технологии iMEMS (рис.1) [1]. Он имеет диапазон измерений ±2g, ±4g, ±8g, или ±16g, выбираемый пользователем; разрешение до 13 бит; маленький корпус 3×5×1 мм; сверхнизкую потребляемую мощность (от 25 до 130 мкА); стандартные последовательные цифровые интерфейсы I2C и SPI, а также 32-уровневый буфер FIFO. Различные встроенные функции, в том числе определение характера движения и гибкая система прерываний, значительно упрощают выполнение алгоритма определения падения.
Решение задачи обнаружения падения, предлагаемое здесь, в полной мере использует эти внутренние функции, сводя к минимуму сложность алгоритма. Чтобы понять, как работает алгоритм обнаружения падения, рассмотрим систему прерываний акселерометра ADXL345, а также характерные показания акселерометра в различных режимах движения.
Система прерываний
Система прерываний акселерометра ADXL345 включает в общей сложности восемь функций прерывания: DATA_READY, SINGLE_TAP, DOUBLE_TAP, ACTIVITY, INACTIVITY, FREE_FALL, WATERMARK и OVERRUN. Прерывания могут передаваться через два программируемых вывода – INT1 и INT2 (см. рис.1). Все функции прерываний могут быть использованы одновременно – единственным ограничением является то, что некоторым функциям, возможно, придется делить выводы прерываний между собой. Функции прерывания определяются следующим образом [1, 2]:
1. DATA_READY – сигнал прерывания выдается (т.е. на линии прерываний устанавливается напряжение высокого логического уровня), когда новые данные доступны, и сбрасывается, когда никаких новых данных не имеется.
2. SINGLE_TAP – сигнал прерывания выдается, когда наблюдается одно ускорение, превышающее значение, хранящееся в регистре THRESH_TAP акселерометра, в течение времени, меньше указанного в регистре DUR (рис.2).
3. DOUBLE_TAP – сигнал прерывания выдается, когда фиксируются два ускорения, большие, чем значение в регистре THRESH_TAP, и менее продолжительные, чем указано в реестре DUR, при условии, что разница во времени между двумя ускорениями не меньше, чем указано в регистре LATENT, и не больше, чем указано в регистре WINDOW (см. рис.2).
4. ACTIVITY – сигнал прерывания выдается, когда имеет место ускорение, большее, чем значение, хранящееся в регистре THRESH_ACT.
5. INACTIVITY – сигнал прерывания выдается, когда ускорение, меньшее, чем значение, хранящееся в регистре THRESH_INACT, длится дольше времени, указанного в регистре TIME_INACT. Максимальное значение для TIME_INACT составляет 255 с. Отметим, что прерывания ACTIVITY и INACTIVITY пользователь может настраивать для каждой оси акселерометра в отдельности. Например, прерывание ACTIVITY по оси X может быть активировано, а по осям Y и Z – нет.
6. FREE_FALL – сигнал прерывания выдается, если регистрируется ускорение, меньшее значения, хранящегося в реестре THRESH_FF, в течении более длительного времени, чем задано в регистре TIME_FF. Прерывание FREE_FALL используется главным образом при обнаружении свободного падения. От INACTIVITY прерывание FREE_FALL отличается тем, что при его определении участвуют все оси акселерометра, а временные пороги значительно ниже.
7. WATERMARK – сигнал прерывания выдается, если число образцов в FIFO-памяти заполнено до значения, хранящегося в регистре SAMPLES.
8. OVERRUN – сигнал прерывания выдается, когда новые данные заменяют непрочитанные данные.
Подробное описание регистров акселерометра ADXL345 приведено в работах [1, 2].
Изменения ускорения во время падения
Задача определения падения с помощью акселерометра сводится к тому, чтобы отличить показания акселерометра, соответствующие падению, от показаний при других видах движения. Оказывается, что различным видам движения соответствуют разные комбинации показаний акселерометра по разным осям (рис.3). Красным цветом на рис.3 показано ускорение по вертикальной оси (Y). В положении равновесия оно равно -1g. Черный и желтый цвета соответствуют ускорениям по осям X (вперед) и Z (вбок). Они оба составляют 0g в равновесии. Зеленый график является векторной суммой ускорений по трем осям, которая в равновесии равна 1g.
Поскольку движение пожилых людей является сравнительно медленным, изменение ускорений во время ходьбы не будет очень заметным. Наиболее выраженное ускорение – это скачок по Y (и векторной суммы), когда человек садится.
Ускорения во время падения совершенно иные (рис.4). Сравнивая рис.4 с рис.3, мы видим четыре важнейших различия в характеристиках падения, которые могут служить в качестве критериев для его обнаружения. Они отмечены красными рамками. Прокомментируем их.
1. Начало падения. Явление невесомости всегда будет наблюдаться в начале падения. Оно станет еще более значительным при свободном падении, и сумма векторов ускорений будет стремиться к 0g. Продолжительность этого состояния будет зависеть от высоты свободного падения. Даже несмотря на то, что длительность невесомости в ходе обычного падения не столь значительна, как во время свободного падения, сумма векторов ускорений все равно будет значительно меньше 1g (в нормальных условиях это значение, как правило, больше 1g). Этот критерий для определения состояния падения может быть зафиксирован посредством функции прерывания FREE_FALL в ADXL345.
2. Столкновение. После пребывания в состоянии невесомости тело человека ударится об землю или другие объекты. Кривая ускорения показывает это как большой скачок на графике. Этот скачок обнаруживается прерыванием ACTIVITY акселерометра ADXL345. Таким образом, вторым критерием для определения падения является наличие прерывания ACTIVITY сразу после прерывания FREE_FALL.
3. Последствия. Как правило, человек после падения и удара о землю не может встать сразу же, он остается в неподвижном состоянии в течение короткого периода времени (или дольше – это возможный признак бессознательного состояния). На кривой ускорений это состояние выглядит как интервал плоских линий и обнаруживается прерыванием INACTIVITY в ADXL345. Так что третий критерий падения – это прерывание INACTIVITY после прерывания ACTIVITY.
4. Сравнение показаний до и после падения. После падения тело будет ориентировано иначе, чем до него. Поэтому статическое ускорение по трем осям будет отличаться от первоначального состояния до падения (см. рис. 4). Можно считать данные об ускорении по всем трем осям после прерывания INACTIVITY и сравнить эти данные с начальным состоянием. Разность между начальными и конечными значениями ускорения должна превышать определенный порог, например 0,7g.
Сочетание этих критериев и является основой алгоритма определения падения. Конечно, интервал времени между прерываниями должен находиться в разумных пределах. Как правило, интервал между прерыванием FREE_FALL (невесомость) и прерыванием ACTIVITY (столкновение) не очень велик – если тело не падает с высоты очень высокого здания! Интервал времени между прерыванием ACTIVITY (столкновение) и прерыванием INACTIVITY (неподвижное состояние) также не должен быть очень длинным.
Если падение приводит к серьезным последствиям, таким как потеря сознания, человек будет оставаться неподвижным в течение более долгого времени. Это состояние может быть обнаружено прерыванием INACTIVITY, и в этом случае может быть послано второе предупреждение о критической ситуации.
Типичная схема соединения
Схема соединения между ADXL345 и микроконтроллером очень проста. В нашей тестовой платформе акселерометр ADXL345 использовался вместе с аналоговым микроконтроллером ADuC7026 [2, 3] (рис.5). Контроллер ADuC7026 имеет 12-битные аналоговые порты ввода-вывода и ядро ARM7TDMI. С установленным в "1" выводом ADXL345 работает в режиме передачи данных через интерфейс I2C. Линии передачи данных и синхронизации (SDA и SCL) шины I2C подключены к соответствующим выводам ADuC7026. Порт ввода-вывода общего назначения (GPIO) контроллера ADuC7026 подключен к выводу ALT акселерометра ADXL345 для выбора I2C-адреса ADXL345 на шине (возможна адресация до двух акселерометров на одной шине). Вывод INT1 ADXL345 подключен ко входу IRQ ADuC7026 для генерации сигнала прерывания.
Для доступа к ADXL345 могут быть использованы и другие контроллеры или процессоры, подсоединенные по аналогичной схеме, но в состав ADuC7026 входит также система сбора данных, включающая многоканальные аналого-цифровые и цифроаналоговые преобразователи.
Алгоритм обнаружения падения
Рассмотрим теперь сам алгоритм обнаружения падения (рис.6). Он включает последовательность следующих действий.
1. После инициализации система ждет прерывания FREE_FALL (состояние невесомости). В тестовом примере значение THRESH_FF было задано равным 0,75 g, а TIME_FF – 30 мс.
2. После того, как зафиксировано прерывание FREE_FALL, система ждет прерывания ACTIVITY (столкновение). Значение THRESH_ACT было выбрано равным 2 g.
3. Временной интервал между прерыванием FREE_FALL (невесомость) и прерыванием ACTIVITY (воздействие) устанавливается в 200 мс. Если время между этими двумя прерываниями превышает 200 мс, система возвращается на этап 1.
4. После фиксации прерывания ACTIVITY система начинает ждать прерывания INACTIVITY (неподвижность после удара). THRESH_INACT установлен равным 0,1875 g, а TIME_INACT – равным 2 с.
5. Прерывание INACTIVITY должно быть выдано в течение 3,5 с после прерывания ACTIVITY (столкновение). В противном случае результат является недействительным.
6. Если разница ускорений между исходным и конечным состоянием превышает порог в 0,7 g, падение считается обнаруженным, и система посылает сигнал тревоги.
7. После обнаружения падения прерывание ACTIVITY и прерывание INACTIVITY должны быть под постоянным контролем, чтобы определить, существует ли длительное обездвиженное состояние после падения. Значение THRESH_ACT для этого случая установлено равным 0,5 g, THRESH_INACT – 0,1875 g, а TIME_INACT – 10 с. Иными словами, если тело остается неподвижным в течение 10 с, будет выработано прерывание INACTIVITY и система пошлет дополнительный сигнал тревоги. После того, как тело начнет движение, система сгенерирует прерывание ACTIVITY и завершит всю последовательность действий.
8. Алгоритм может обнаружить также свободное падение человека с большой высоты. Сигнал о свободном падении будет выставлен, если прерывание FREE_FALL постоянно установлено в течение 300 мс, что соответствует высоте падения
Рассматриваемый алгоритм реализован на языке C [2] и может быть выполнен на микроконтроллере ADuC7026.
Проведенные эксперименты показали, что с помощью предлагаемого решения на основе ADXL345 падение может быть обнаружено с достаточно высокой точностью.
Если падение зафиксировано, можно использовать GPS-приемник и беспроводной передатчик для определения местоположения и передачи сигнала тревоги, чтобы вызвать помощь.
Таким образом, оборудование компании Analog Devices позволяет эффективно решать задачу обнаружения падения человека. Его широкое применение поможет существенно снизить ущерб для здоровья, вызываемый последствиями падения.
Литература
1. ADXL345: 3-Axis, ±2 g/±4 g/±8 g/±16 g Digital Accelerometer. – www.analog.com/en/mems-and-sensors/imems-accelerometers/adxl345/products/product.html.
2. Ning Jia. Detecting Human Falls with a 3-Axis Digital Accelerometer. – www.analog.com/library/analogdialogue/archives/43-07/fall_detector.pdf
3. ADUC7026: Precision Analog Microcontroller, 12-Bit Analog I/O, ARM7TDMI® MCU. – www.analog.com/en/analog-microcontrollers/ADuC7026/products/product.html.
Отзывы читателей