블로그 이미지
래머
오늘도 열심히 개발하는 개발자입니다.

calendar

1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

Notice

2015. 7. 25. 18:58 아두이노

자이로 와 가속도 센서가 포함된 센서입니다.

매우 유명하여 딱히 설명할 필요가 없는 센서인데,

예제또한 풍부합니다.

하지만 깔끔하게 센서제어 및 액세스에 관련한 부분만 만들어진것은 안보이는것 같아

제가 참고 했던 예제중 하나를 클래스로 래핑하여, 라이브러리화 했습니다.


사용법은 아래와 같습니다.


첨부 파일을 아두이노 라이브러리에 추가 하시고 사용하면됩니다.

칼만필터라는 예제를 수정한 버전인데 혹 이미 같은 라이브러리를 추가해놓으신경우에는

에러가 날 수 도 있겠습니다.

그런경우에는 CMPU6050.h 파일만 칼만필터 라이브러리 폴더내에 복사해 넣으시면되겠습니다.


첨부라이브러리

KalmanFilter.zip


예제소스코드


mpu6050test.zip



아두이노 작품 메뉴에 있는 밸런싱 로봇은 아래 라이브러리를 활용하여 만든것이니, 동작에 별문제 없다고 생각합니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#include <Arduino.h>
#include <Wire.h>
#include <Kalman.h>
#include <CMPU6050.h>
 
//mpu6050 매니저입니다. 단순히 누군가 만들어놓은 유명한 예제에서 mpu6050부분만 뽑아 클래스화 시킨겁니다.
CMpu6050Manager g_Mpu6050;
 
void setup()
{
  g_Mpu6050.Init(); //setup에서 반드시 한번 호출해 줍니다.
  Serial.begin(9600);
}
 
void loop()
{
 
  //매 루프마다 호출되게 해줍니다.
  g_Mpu6050.Update();
  
  //x값은 -90 ~ 90
  //y값은 -180 ~ 180범위
  //상보 필터(Complementary Filter) 
  float companglex = g_Mpu6050.GetCompAngleX();
  float compangley = g_Mpu6050.GetCompAngleY();
  
  //칼만 필터, 
  float kalmananglex = g_Mpu6050.GetKalAngleX();
  float kalmanangley = g_Mpu6050.GetKalAngleY();
 
  Serial.print("kalx : ");
  Serial.print(kalmananglex, 2);
  
  Serial.print("\tkaly : ");
  Serial.print(kalmanangley, 2);
  
  Serial.println();
  
  delay(500);
}
cs




'아두이노' 카테고리의 다른 글

밸런싱로봇 종합사항  (3) 2015.12.21
밸런싱로놋 mpu6050 센서방향  (0) 2015.12.19
DHT11 온습도 센서  (0) 2015.05.25
아두이노 visual studio 연동  (0) 2015.05.16
아두이노 tone()함수  (0) 2015.05.12
posted by 래머