본문 바로가기

교육 자료/Raduino

1. SPI와 I2C를 이용한 관성센서 제어

SPI와 I2C를 이용한 

관성센서 제어 





관성센서란




관성센서는 이동물체의 속도와 방향, 중력, 가속도를 측정하는 장치이다. 

과거 관성센서의 기술이 자동차의 에어백 시스템과 자동차 압력센서 등 

운송수단에 한해 적용되었다면최근 센서기술의 발전으로 작고 값싼 관성센서들이 

개발되면서 스마트폰, 콘솔 게임기 등 모션 감지 기능을 갖는 사용자 인터페이스로 활용되고 있다


이처럼, 관성센서를 이용한 다양한 장치들은 이미 우리의 생활에서 보편적으로 만날 수 있으며 

항공분야와 의료, 통신, 일반 가전분야 등 다양하게 응용되어 광범위하게 쓰이고 있다.



 


가속도센서

가속도(Accelerometer) 센서는 물체의 가속도와 진동, 충격 등 움직이는 힘을 측정하는 센서로, 가속도센서는 3축으로 구성되어 있어 3차원에서 움직일 때 x축과 y, z축 방향의 가속도를 측정할 수 있다. 가속도센서는 변화하는 값의 오차가 누적되지 않으나 노이즈와 이동, 진동에 취약하다는 단점이 있다.

때문에 가속도센서 하나만으로는 기울기를 정확하게 알 수 없어 이 단점을 보완하기 위해 자이로센서를 사용한다.

 

자이로센서

자이로(Gyro) 센서는 회전하는 물체의 각속도(degree/sec)를 측정하는 센서로, 각속도에서 각도를 구하려면 전체 시간에 해당하는 만큼 적분을 통해 물체의 회전각과 기울기 등을 알 수 있다. 가속도센서에 비해 자이로센서는 비교적 안정적인 값이 출력되지만 각도를 계산하는 과정에서 사용되는 적분에 의해 시간이 지날수록 누적된 오차가 발생한다따라서 자이로센서는 가속도센서와 함께 사용되어질 때, 동작 인식을 효과적으로 할 수 있으며 밸런스 감각을 구현해낼 수 있으나 이 2가지 센서만으로는 PitchRoll , Yaw값들의 회전량밖에 못 구하기 때문에 방위각을 구할 수 있는 지자기센서를 필요로 한다.



지자기센서

지자기센서(GeoMagnetic Sensor)는 지구 자기장을 이용해 물체의 방향측정 및 방위각을 측정할 수 있는 센서이다. 이 센서는 외부의 자기신호에 민감하기 때문에 자기장이 강한 공간에서는 그 사용이 제한될 수 있으며, 3축에 대해 자기장 보정을 해야 한다는 단점이 있지만 자북(Magnetic North)라는 절대 정보를 제공한다는 이점이 있다





센서에 대해 정리하자면, 가속도센서는 중력과 지표면이란 절대 기준치를 통해 rollpitch에 대한 정보를 제공하지만 지표면에 대한 기울기 외의 방위각 성분은 측정하기 어렵고 반응 속도가 느리다는 단점이 있다. 자이로센서는 반응 속도가 빠르고 비교적 짧은 시간 내에서의 측정값은 정확하지만절대적인 기준치가 없고 시간에 따라 측정값이 발산한다는 단점이 있다. 지자기센서는 자북에 대한 기준치가 없거나 상대적인 물리량만 측정 가능한 센서에 대해 방위각 정보를 제공하지만, 기기의 자세나 주위의 자성체와 같은 외부 요인에 영향을 많이 받기 때문에 rollpitch에 대한 부정확성이 나타나 정확도가 줄어드는 단점이 있다.

 

이처럼 가속도센서와 자이로센서, 지자기센서는 각각 특유의 오차를 갖고 있지만, 신호처리와 함께 상호보완적인 면을 갖고 있어 적절히 이용하면 하나의 센서를 사용할 때보다 더 나은 결과를 얻을 수 있다.

 

아두이노와 주변 장치 연결에 따르는 디지털 데이터를 전송하기 위해 다양한 통신방법들이 존재하고 사용되어지고 있다

아두이노와 주변장치 사이에서 사용되는 통신으로 SPI 통신과 I2C 통신이 있다. 아두이노 개발환경에는 I2CSPI통신을 위한 기본 라이브러리가 있으면 

각각 <Wire.h> <SPI.h> 헤더파일 선언하여 사용할 수 있다이 통신들 중 어떤 것을 선택해 연결할 지에 대해서는 주변장치에서 지원하는 통신 방법에 따라 결정된다