6축 자이로/가속도 센서 MPU-6050 의 사용

https://deneb21.tistory.com/335


 MPU-6050 은 6축 (X,Y,Z축 자이로스코프-기울기 + 3축 가속도) 를 측정해 주는 센서 입니다.  여러곳에 사용이 되지만 요즘은 드론의 자세 제어용으로 많이 사용이 됩니다. 통신은 I2C 통신을 지원합니다. 스마트폰에도 이런 자이로 센서가 들어있어서 폰을 세로로 들거나 가로로 들게되면 자이로 센서가 그것을 감지해서 화면의 표시 방법을 다르게 합니다. 또 게임 같은데도 이용이 되는데 스마트폰으로 레이싱 게임을 할 때 스마트폰을 기울이면 자동차가 커브를 도는 것도 이런 센서를 이용하는 것입니다.  전자식 자이로 센서는 코리올리 힘을 측정하여 전기신호로 변환하고 힘에 대한 각속도를 계산한다고 합니다.  이 각속도의 변화를 이용하여 기울기를 측정하게 된다고 하는데... 이 코리올리의 힘이 궁금한 분은 밑줄 친 부분을 클릭해 보시면 됩니다. 조금 읽어봤는데 저는 어려워서 잘 모르겠습니다. ^^;  가속도는 중력가속도의 변화를 이용하여 측정 합니다.


MPU-6050 칩의 핀배열 및 자이로 및 가속도 센서 작동 원리 입니다. 이런류의 센서를 MEMS 센서라고 부릅니다. MEMS 는 Micro Electro Mechanical Systems 의 약자 입니다. 말 그대로 미세전자기계시스템으로서 전자와 기계가 결합한 센서라고 할 수 있겠습니다. 초고밀도 집적회로와 미세기계, 마이크로 크기의 모터와 미세기어 등도 MEMS에 해당 됩니다.


▲ 자이로 센서와 MEMS 에 대한 동영상 입니다. 가로 세로 5mm 크기의 MPU-6050 칩을 뜯어보면 위와 같은 초미세 기계장치가 들어 있을 것입니다.


■ MPU-6050 데이터시트

 MPU-6050_DataSheet_V3 4.pdf


MPU-6050 모듈은 위와 같이 생겼습니다. 모듈의 가운데 가로세로 5mm 정도 되는 MPU-6050 칩이 붙어 있습니다. 모듈은 구입 시 직선형, ㄱ자형의 2가지 커넥터를 제공합니다. 커넥터 핀의 납땜은 자신이 해야 합니다. 간격이 좁으므로 옆의 단자와 합선되지 않도록 조심해서 납땜해 줍니다.


아두이노 우노와 연결한 모습 입니다. 연결은 다음과 같이 하였습니다. 참고로 모듈은 3.3V 나 5V 어디에 연결해도 상관이 없습니다. 


 MPU-6050 모듈

아두이노 우노 

 VCC

5V 

 GND

 GND

 SCL

 A5

 SDA

 A4

 INT

 D2








위와 같이 연결을 하고 MPU6050 라이브러리와 I2C 통신을 위한 라이브러리를 아두이노 라이브러리 폴더에 복사해서 설치 합니다. 


■ MPU-6050 라이브러리

 MPU6050.zip


■ I2C Dev 라이브러리

 I2Cdev.zip



라이브러리를 설치하면 위와 같이 MPU6050_DMP6 라는 예제가 나옵니다. 예제를 열어서 업로드 해 봅니다. DMP 는 Digital Motion Processing 의 약자 입니다.


소스를 실행하고 시리얼모니터를 연 다음 전송값에 아무것이나 입력하고 전송버튼을 누르면 실행이 됩니다.  그러면 위와 같이 X,Y,Z 축에 대한 기울기 값이 센서에서 쏟아져 나옵니다. 너무 빨리 값이 나와서 하나 하나 보기는 힘들지만 센서를 움직이면 값이 변한다! 는 사실은 알게 되었습니다.


그런데 위와 같이 쏟아져 나오는 값들을 비주얼하게 보여줄 수 있는 툴이 있습니다. 바로 Processing 이라는 툴인데 이런 데이터들을 간편하게 비주얼화 해주는 것이라고 보면 되겠습니다. 아래와 같이 IDE 가 따로 있어서 설치해 주고 사용하면 됩니다. 



▲ Processing 소개 동영상



그래서 이번에는 MPU-6050 의 데이터를 Processing 을 이용해서 비주얼하게 표시해 보도록 하겠습니다.


Processing 다운로드 페이지의 모습입니다. 윈도우, 맥, 리눅스 모두 지원이 되니 자신의 OS에 맞는 소프트웨어를 다운로드 받으면 됩니다.  https://processing.org/download/?processing 이동해서 다운로드 받습니다. 


윈도우의 경우 별도의 설치과정은 없으며 압축을 풀고 폴더를 적절한 위치로 이동한 후  Processing.exe 를 실행하면 됩니다.


먼저 Processing 라이브러리를 하나 설치해야 합니다. toxi 라이브러리를 아래에서 다운로드 받거나 다운로드 URL 에서 다운로드 받습니다.


■ toxi 라이브러리 다운로드

 toxiclibs-complete-0020.zip


■ toxi 라이브러리 다운로드 URL : https://bitbucket.org/postspectacular/toxiclibs/downloads/toxiclibs-complete-0020.zip


다운로드 받은 라이브러리의 압축을 풀면 'toxiclibs-complete-0020' 라는 이름의 폴더가 나옵니다. 이것을 위의 그림과 같이 Processing 의 기본 라이브러리 폴더인 '내문서 -> Processing -> Libraries' 에 복사해 넣으면 됩니다. 그러면 일단 Processing 에서 라이브러리 설치는 끝난 것입니다.


그리고 위에서 실행했었던 예제 MPU6050_DMP6 를 아두이노 IDE 로 다시 열어서 다음의 그림과 같이 주석을 고쳐 줍니다.


위와 같이 #define OUTPUT_READABLE_YAWPITCHROLL 이라는 부분을 주석처리 합니다.


그리고 #define OUTPUT_TEAPOT 이라는 부분의 주석을 해제 합니다. 수정 후 아두이노에 업로드를 합니다.


이번에는 Processing 에서 다음의 파일을 엽니다. 파일 -> 열기를 눌러서 MPU6050 라이브러리를 설치한 폴더를 찾아서 MPUTeapot.pde 라는 파일을 엽니다.  저의 경우는 아두이노 설치폴더 하위의 Libraries 폴더에 라이브러리를 설치 했습니다.  상세한 MPUTeapot.pde 의 위치는 C:\Program Files (x86)\Arduino\libraries\MPU6050\Examples\MPU6050_DMP6\Processing\MPUTeapot\ 입니다.


위의 그림과 같이 MPUTeapot.pde 소스에서 아두이노가 작동되고 있는 포트를 수정해 줍니다. 윈도우의 경우에는 위의 그림과 같이 String portName... 부분을 주석처리 하면 되고 리눅스나 맥의 경우에는 반대로 주석처리를 하고 포트를 적어주면 됩니다.


모든 준비가 끝났으면 Processing 에서 ▶ 모양의 실행 버튼을 클릭하면 다음과 같이 MPU-6050 센서에서 보내주는 정보를 3D 비행기 모양을 이용해서 비주얼하게 볼 수 있습니다.



이상으로 6축 자이로 및 가속도 센서인 MPU-6050 에 대해서 알아보았습니다.



댓글

이 블로그의 인기 게시물

WSL2에서 X window를 세팅하는 법

[도서 목차]Do it! 프로그레시브 웹앱 만들기 반응형 웹 개발부터 하이브리드 앱 배포까지 PWA 완전 정복!

메쉬믹서(Meshmixer)] 모델링 부분 제거와 부드럽게 만들기