본문 바로가기

program life/aduino

[아두이노] 기울기센서(6축 가속도+자이로) MPU-6050 / Arduino Sensor MPU6050

MPU-6050

구매 : EDUINO


그림과 같이 땜질이 되어 있지 않습니다.

어떻게 선으로 잘 우겨 넣어도 잘 안되니 오른쪽과 같이 꼭 땜질 하셔야 합니다.

땜질은 ㄱ로 되어있는 녀석으로 했습니다. (구부린것 아닙니다.)

    


배선 은 아래와 같습니다.

이미지 출처 : http://www.eduino.kr/product/detail.html?product_no=54&cate_no=60


코딩 예제 

#include<Wire.h>
const int MPU_addr = 0x68;  
int16_t AcX,AcY,AcZ,Tmp,GyX,GyY,GyZ;
 
void setup(){
  Wire.begin();
  Wire.beginTransmission(MPU_addr);
  Wire.write(0x6B);  
  Wire.write(0);    
  Wire.endTransmission(true);
  Serial.begin(9600);
}
 
void loop(){
  Wire.beginTransmission(MPU_addr);
  Wire.write(0x3B);
  Wire.endTransmission(false);
  Wire.requestFrom(MPU_addr,14,true);
  AcX=Wire.read()<<8|Wire.read();      
  AcY=Wire.read()<<8|Wire.read();
  AcZ=Wire.read()<<8|Wire.read();
  Tmp=Wire.read()<<8|Wire.read();  
  GyX=Wire.read()<<8|Wire.read();  
  GyY=Wire.read()<<8|Wire.read();  
  GyZ=Wire.read()<<8|Wire.read();  
  Serial.print("AcX = "); Serial.print(AcX);
  Serial.print(" | AcY = "); Serial.print(AcY);
  Serial.print(" | AcZ = "); Serial.print(AcZ);
  Serial.print(" | Tmp = "); Serial.print(Tmp/340.00+36.53);
  Serial.print(" | GyX = "); Serial.print(GyX);
  Serial.print(" | GyY = "); Serial.print(GyY);
  Serial.print(" | GyZ = "); Serial.println(GyZ);
  delay(333);
}


마찬가지로 저장 후 업데이트


시리얼 모니터

시리얼 모니터(툴 -> 시리얼 모니터)로 확인하시면 됩니다.

문제가 없다면 아래와 같은 화면이 출력 됩니다.

센서를 움직이면 값이 변동을 감상해 봅시다.


센서 사용 후기

테스트를 해보니 노이즈가 상당히 발생합니다.

그래서 칼만필터 적용 하여 어느정도 제어가 되었으나 유독 Y축 데이터 노이즈가 심해 다른 센서로 테스트 해보려 합니다.

칼만필터 설명 : https://ko.wikipedia.org/wiki/%EC%B9%BC%EB%A7%8C_%ED%95%84%ED%84%B0

칼만필터 적용 소스 : https://github.com/TKJElectronics/KalmanFilter



"MPU6050 STM32" 칼만필터 내장형 버전입니다.  

우선 테스트 먼저 하고 비교 하겠습니다.