배너
닫기

테크노트

배너

한 개의 가속도계 인터럽트 핀으로 웨이크업 및 비활동 감지

  • 등록 2013.02.28 10:27:02
URL복사

한 개의 가속도계 인터럽트 핀으로
웨이크업 및 비활동 감지


스마트폰은 전력 소모를 줄이기 위해 스크린이 자동으로 켜지고 꺼지는 기능을 갖고 있다. 여기서는 웨이크업 및 비활동 감지를 위해 한 개의 가속도계 인터럽트 핀을 사용하는 방법에 대해 설명한다. 마이크로프로세서는 인터럽트 소스 등록을 판독할 필요 없이 가속도계 인터럽트 아웃풋 핀의 에지 전이만 모니터링하면 된다.

Jay Esfandyari, Gang Xu, Fabio Pasolini ST마이크로일렉트로닉스

스마트폰, 태블릿 PC와 같은 디바이스에는 터치 스크린을 비롯하여 다양한 기능을 위한 버튼이 있다. 얼마간 스크린을 터치하지 않거나 버튼을 누르지 않으면, 배터리를 아끼기 위해 스크린이 자동적으로 꺼진다. 사용자가 다시 디바이스를 사용하려면 스크린을 켜기 위해 버튼을 눌러야 한다.
디지털 MEMS 가속도계는 보통 한 개 또는 두 개의 인터럽트 아웃풋 핀이 있어서 외부 마이크로프로세서의 I/O 핀과 인터페이스할 수 있다. 마이크로프로세서가 다른 기능을 수행하거나 단순한 절전 수면 모드로 유지되는 동안 백그라운드의 가속 또는 모션을 모니터링하도록 가속도계를 설정할 수 있다.
가속도계가 인터럽트를 감지하면 마이크로프로세서는 그 인터럽트에 대해 대응해야할지의 여부를 결정하기 위해 재가동(웨이크업) 될 수 있다.
MEMS 가속도계는 데이터 준비, 자유 낙하, 인물/배경, 싱글 클릭/더블 클릭 및 충격 감지 등과 같은 다양한 종류의 인터럽트 시그널을 출력할 수 있다. 일부 가속도계는 모션에 따라 절전 모드에서 낮은 아웃풋 데이터 속도(ODR)와 일반 모드에서 높은 ODR 사이에 자동으로 이동하기 위하여 웨이크업 및 비활동 감지 기능을 내장하고 있다.
일부 마이크로프로세서는 두 개 이상의 GPIO 핀을 갖고 있으며 사용자들은 동시 웨이크업 및 모션 감지를 위해 두 개의 가속도계 인터럽트 아웃풋 핀을 구축할 수 있다.
하지만 다른 경우에는 사용자들이 한 개의 인터럽트 핀으로 두 기능을 모두 활용할 수 있기를 바라지만 마이크로프로세스가 한 개의 GPIO만 갖고 있는 경우도 있다.
여기서는 한 개의 인터럽트 아웃풋에서 웨이크업 모션과 비활동 상황을 감지하기 위해 고역 통과 필터(HPF), 자유낙하 및 로직 스킴(scheme)을 사용하는 방법에 대해 설명한다. 마이크로프로세서는 개입될 필요가 없다.
마이크로프로세서가 가속도계 인터럽트 시그널 상승 에지(edge)를 감지하면 디바이스의 비활동 상황이 확인되었다는 것을 뜻한다. 반대로 마이크로프로세서가 가속도계 인터럽트 시그널의 하강 에지를 감지하면 디바이스가 모션 중에 있다는 것을 의미한다.

하드웨어 연결
그림 1은 호스트 프로세서와 마이크로컨트롤러, 가속도계 사이의 전형적인 하드웨어 연결을 나타낸 것이다. 호스트 프로세서는 초기화 설정 시 I2C 또는 SPI를 통해 전력을 공급받을 때 가속도계를 한 번만 구성하면 된다. 그 후 가속도계는 아주 낮은 전력을 소모하며 지속적으로 백그라운드의 모션을 모니터링할 것이다.
가속도계의 INT1 아웃풋 핀은 푸시풀 및 능동 하이 컨피규레이션으로 기본 설정되어 있다. 사용자들은 이 구성을 애플리케이션에 맞게 오픈-드레인 또는 능동 로우 컨피규레이션으로 변경할 수 있다.
INT1 핀의 전압 레벨은 하이 컨피규레이션일 때 최소 0.9 * Vdd_IO이고 로우 컨피규레이션일 때 최대 0.1 * Vdd_IO이다. 가속도계 Vdd_IO는 유연하므로, 호스트 프로세서 디지털 IO 전압 레벨 Vcc_IO에 맞출 수 있다. 만약 호스트 프로세서가 전력 공급원을 한 개만 갖고 있다면 이 전력 공급원에 가속도계 Vdd 및 Vdd_IO를 결합하여 바로 연결할 수 있다. 단말기 디바이스가 일정 시간 이상 모션이 없는 휴지 상태로 들어가면 가속도계는 INT1 핀 상에서 로우로부터 하이 상승 에지로 인터럽트 시그널을 보낼 것이다. 그러면 호스트 프로세서는 다른 부품을 정지시킬 수 있으며, 전력을 아끼기 위해서 수면 모드로 들어갈 수 있다.
가속도계는 모션이 있을 때마다 하이에서 로우 하강 에지로 인터럽트 시그널을 보낼 것이다. 그러면 호스트 프로세서는 정상으로 작동하기 위해 기타 부품을 재가동하거나 켤 수 있다.
만약 단말기 디바이스가 정상 작동 모드에서 모션 상태로 있으면 INT1 핀 상의 가속도계 인터럽트 시그널은 계속 로우 상태로 유지된다. 디바이스가 특정 기울기 위치에서 항상 휴지 상태로 있을 경우, 가속도계 인터럽트 시그널은 계속 하이 상태로 유지된다. 따라서 호스트 프로세서는 단말기 디바이스가 휴지 상태인지 모션 상태인지 재확인하기 위해 가속도계 INT1 핀의 레벨을 주기적으로 판독할 수 있다.



샘플 코드
여기서는 ST마이크로일렉트로닉스의 LIS3DH 디지털 가속도계에 기반을 둔 예(2)에 대해 살펴본다(그림 2).
INT1_CFG 컨피규레이션은 자유 낙하 발생 감지와 동일하다. 차이점은 다음과 같다.



① 자유낙하 인터럽트는 HPF를 활성화할 필요가 없다
② 자유낙하 시간은 천분의 1초 범위이다. 자유낙하 시간이 5초라는 것은 자유낙하 거리가 약 122.5 미터라는 뜻인데, 이와 같은 경우는 단말기 디바이스에서 거의 발생하지 않는다.
예에 대해서는 그림 3을 보면 알 수 있다.



③ 단말기 디바이스가 기울어진 채 5초 이상 휴지 상태로 있을 경우 가속도계 INT1 핀은 디바이스가 휴지 상태로 있는 동안 하이에서 로우로 바뀐다. 그 이유는 HPF 이후, X/Y/Z축 가속이 동시에 모두 ±125mg THS 범위 내에 있기 때문이다.
④ 단말기 디바이스의 자유낙하는 INT1 핀을 로우에서 하이로 바뀌게 하지 않는다. 왜냐하면±125 mg THS 범위 내 동시 X/Y/Z 축 가속 발생은 5초 이상 유지되지 않기 때문이다.
⑤ X, Y, Z 중 어떤 축 가속이 모션으로 인해 ±125mg THS를 넘으면 INT1 핀은 하이에서 로우로 바뀌며, 디바이스가 모션 상태인 동안에는 계속 로우 상태에 머문다.
⑥ 디바이스가 5초보다 짧은 시간 동안 휴지 상태이고 모션이 다시 발생하면 INT1 핀은 로우 상태로 머물며, 5초의 시간은 디바이스가 다시 휴지에 들어갈 경우 10Hz ODR에서 50LSBs로부터 0LSB로 떨어지기 시작한다.



내장 고역 통과 필터와 자유 낙하 감지 스킴(Scheme)을 이용하면, 가속도계는 한 개의 인터럽트 핀으로부터 마이크로프로세서에 웨이크업 및 비활동을 위한 인터럽트 시그널을 보낼 수 있다. 가속도계는 백그라운드에서 동작하며 마이크로프로세서의 개입을 필요로 하지 않는다. 사용자는 그들의 애플리케이션에 맞게 가속도계 한계값 및 시간을 자유롭게 구성할 수 있다.
이 솔루션은 절전 면에서 스크린을 끄기 위해 단말기 디바이스 터치 스크린 및 버튼 누르기 그리고 마이크로프로세서 타이머 사용하기보다 훨씬 더 효과적이다.










배너










주요파트너/추천기업