цифровая электроника
вычислительная техника
встраиваемые системы

 
» » Один вывод прерываний сообщает о выходе акселерометра из сна и об отсутствии движения

Один вывод прерываний сообщает о выходе акселерометра из сна и об отсутствии движения

Автор: Mike(admin) от 1-09-2013, 15:57

МЭМС-акселерометры могут выдавать различные сигналы прерываний, сообщающие о готовности данных, свободном падении, горизонтальном/вертикальном расположении или каком-то воздействии. Некоторые акселерометры имеют функцию пробуждения и функцию определения отсутствия движения, для того, чтобы уменьшать скорость передачи данных в режиме пониженного энергопотребления, и увеличивать ее в нормальном режиме работы. Но такая функция сокращает энергопотребление только самого акселерометра.


Некоторые микропроцессоры имеют две или более линии ввода/вывода общего назначения, и пользователи могут подключить к ним выводы прерываний по пробуждению и определению отсутствия движения. Однако, в некоторых случаях микропроцессор может обладать только одной такой свободной линией, но пользователю нужно подключить два прерывания.


Ниже приводится метод, позволяющий с помощью одной линии прерывания определить начало движения, при котором акселерометр выходит из сна, и отсутствие движения, используя фильтр верхних частот (ФВЧ) и логическую операцию «И», на входе которой присутствует сигнал, сообщающий о свободном падении. При этом микропроцессору не нужно вмешиваться в работу акселерометра. Когда микропроцессор регистрирует передний фронт сигнала прерывания от акселерометра, это говорит об отсутствии движения, а появление заднего фронта сообщает о том, что устройство находится в движении.



Аппаратная часть

На рисунке 1 показано соединение хост-процессора или микроконтроллера с акселерометром. Хост-процессор после подачи питания должен по интерфейсу I2C или SPI один раз настроить акселерометр. Настройка производится в подпрограмме инициализации. Затем акселерометр начнет непрерывный мониторинг движения в фоновом режиме, потребляя при этом небольшое количество энергии.


Хост-процессор и акселерометр

Рисунок 1 — соединение хост-процессора с акселерометром

Вывод акселерометра INT1 по умолчанию является двухтактным и настроен на активный высокий уровень выходного сигнала. Пользователь может переконфигурировать его на выход с открытым коллектором или на активный низкий уровень. Уровень напряжения INT1 в состоянии лог. «1» составляет минимум 0.9 * Vdd_IO, а в состоянии лог. «0» - максимум 0.1 * Vdd_IO.


Когда портативное устройство переходит в состояние покоя, то по прошествии некоторого времени акселерометр посылает сигнал прерывания, и на выводе INT1 появляется передний фронт. После этого хост-процессор может отключить другие компоненты и сам перейти в режим сна для экономии энергии.


Когда будет зарегистрировано движение, акселерометр пошлет сигнал прерывания, который приведет к появлению заднего фронта. Тогда процессор выйдет из режима сна и включит остальные компоненты.


Если портативное устройство остается в движении при нормальном режиме работы, то на выводе INT1 сохраняется состояние нижнего логического уровня. Когда устройство продолжительное время находится в состоянии покоя в любом наклонном положении, то на INT1 сохраняется состояние верхнего логического уровня. Процессор периодически может считывать уровень напряжения на выводе INT1 для дополнительной проверки того, находится ли портативное устройство в покое или движется.



Пример кода

Нижеприведенный пример кода был написан для акселерометра LIS3DH компании STMicroelectronics.



void init_ACC(void)
{
//конфигурация регистров управления
Write 27h into CTRL_REG1; // [записать 27h в регистр CTRL_REG1] включение датчика
//с частотой передачи данных 10 Гц в нормальном режиме
Write 01h into CTRL_REG2; // Включение ФВЧ с частотой среза 0.2 Гц
// при активной генерации прерываний на INT1 (AOI1)
Write 40h into CTRL_REG3; // сигнал прерывания AOI1 привязываем к выводу INT1
Write 88h into CTRL_REG4; // шкала +/-2 g, включение битов BDU (обновление блока данных)
// и HR (высокое разрешение выходных данных)
Write 00h into CTRL_REG5; // значение по умолчанию

//конфигурация функций пробуждения и определения движения
Write 08h into INT1_THS; // Порог (THS) = 8LSBs * 15.625mg/LSB = 125mg.
// LSB — наименее значимый бит
Write 32h into INT1_DURATION; // продолжительность = 50LSBs * (1/10 Гц) = 5 с.
Write 95h into INT1_CFG; // включение генерации прерываний XLIE, YLIE и ZLIE
// и логической функции «И». Это означает, что прерывания будут
// генерироваться, когда данные об ускорениипо осям X, Y и Z
// будут одновременно в пределах порога ±THS.
}


Конфигурация INT1_CFG производится как и при настройке определения свободного падения за исключением того, что для функции определения свободного падения не нужно включать ФВЧ и продолжительность такого падения составляет миллисекунды. 5 секунд в данном случае означало бы, что дистанция свободного падения составляет 122.5 метров, что редко случается с портативными устройствами.


Результат приведенной выше настройки показан на рисунке 2.


логика работы акселерометра

Рисунок 2 — логика работы акселерометра


Когда портативное устройство находится в состоянии покоя в любом наклонном положении в течение более 5 секунд, состояние вывода INT1 сменится с низкого на высокое и останется таким, пока это устройство будет находиться в покое, потому что после ФВЧ данные об ускорении по осям X,Y,Z будут в пределах ±125mg THS.


Свободное падение портативного устройства не переведет INT1 из низкого логического уровня в высокое, потому что данные по осям X,Y,Z будут в пределах ±125mg THS менее 5 секунд.


Если показания любой из осей выдут за пределы ±125mg THS, выход INT1 перейдет из высокого логического уровня в низкое и будет оставаться в нем состоянии до тех пор, пока устройство будет находиться в движении.


Если устройство находилось в покое менее 5 секунд и снова начало движение, то логический уровень INT1 останется в низким, и когда устройство снова перейдет в состояние покоя, начнется отсчет пятисекундного интервала от 50 LSB до 0 LSB при частоте передачи данных 10 Гц.



Заключение

Благодаря использованию встроенного ФВЧ и схемы определения свободного падения акселерометр способен выдавать процессору сигнал прерывания как по выходу из сна, так и при отсутствии движения. Акселерометр работает в фоновом режиме, и вмешательство процессора в его работу не требуется. Пользователи могут настроить порог (THS) и длительность в зависимости от нужд их приложений. С точки зрения экономии энергии при выключении экрана, это решение является более эффективным, чем нажатие кнопки и выдержка по таймеру процессора.


Перевод © digitrode.ru


<Источник>


Теги: акселерометр




Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

Комментарии:

Оставить комментарий