MPU6050 내장 LPF 사용해보기 / MPU6050 / 가속도 / 자이로 / 각속도 / 6축 /

용가리치킨 2017-02-28 (화) 11:52 1년전 2991  

안녕하세요 메카솔루션입니다.

이번에는 MPU6050으로 값을 측정해보기 앞서 내장된 기능중 하나인 DLPF(Digital Low Pass Filter)의 사용법을 알아보도록 하겠습니다.


테스트에 필요한 상품은 다음과 같습니다.


http://mechasolution.com/shop/goods/cart_share.php?share=1&mode=addItem&goodsno[]=6&ea[]=1&goodsno[]=71796&ea[]=1&goodsno[]=514&ea[]=1


LPF란? 

Low Pass filter 혹은 저주파 통과 필터, 또는 이동평균 필터라고 합니다. 저주파랑 고주파라고 하면 뭐가 생각 나시나요? 우선 아래의 그래프를 봅시다.




첫번째의 sin(x * pi) 그래프가 두번째의 sin(x * pi * 3) 그래프보다 주파수의 밀도가 작습니다. 그렇다면 sin(x * pi) 가 상대적으로 저주파고 sin(x * pi * 3) 이 상대적으로 고주파가됩니다. 그렇다면 이렇게 서로 다른 주파수가 합쳐진다면 어떻게 될까요? 

전체적으로 크기가 큰 주파수(진폭이 넓은 저주파)에  크기가 작은 주파수(진폭이 좁은 고주파) 가 붙어있어 전체적인 모습은 보이지만 정확한 값을 얻어내기가 어렵습니다. 이럴때 고주파만 따로 걸러내고 저주파만 다로 내보내주는 LOW(저주파) PASS(통과) 필터가 사용됩니다.


이러한 고주파는 전류노이즈, 주위의 미세한 진동등으로 우리들이 읽으려고 하는 값에 잡음으로 등작하기 때문에 저주파 통과 필터를 이용해 간편하게 측정이 가능합니다.


하지만 이러한 저주파 통과필터의 저주파와 고주파의 구분을 위해 n개이상의 최신값이 필요함으로 필터링된 값을 받아오는것이 원래 값을 받아오는 것에 비해 지연이 생깁니다. 그렇기 때문에 빠른 반응속도가 필요한곳에서는 LPF필터를 많이 사용하면 좋지 않습니다.


MPU6050 에서 DLPF 사용하기 


http://blog.naver.com/roboholic84/220944115661

이전에 블로깅된 MPU6050 예제에서 라이브러리 설치법을 확인할 수 있습니다.


기본 예제인 MPU6050_raw 를 수정하도록 합니다.



 

accelgyro.setDLPFMode(MPU6050_DLPF_BW_5); 의 함수로 입력하였는데, 

이뿐만이아닌 

MPU6050_DLPF_BW_256

MPU6050_DLPF_BW_188

MPU6050_DLPF_BW_98

MPU6050_DLPF_BW_42

MPU6050_DLPF_BW_20

MPU6050_DLPF_BW_10

MPU6050_DLPF_BW_5

의값들을 넣어줄 수 있습니다.

소스코드속 initialize(); 아랫줄에 DLP모드의 설정을 하면 DLP기능의 사용이 가능합니다.


DLP를 돌리지 않은 소스에서의 그래프와 돌렸을때의 그래프를 비교해보도록 하겠습니다.



짜잘한 잡음은 잡히고 어느정도 부드럽게 보이는것을 확인할 수 있습니다.


MPU6050을 이용한 프로젝트를 하다가 잡음이 너무 심하면 LPF를 사용해보는 것도 좋겠지요?


감사합니다.






0도리 2017-09-10 (일) 21:08 1년전
* 비밀글 입니다.
주소
모바일 버전으로 보기