Arduino

자이로 센서(Gyro Sensor) : MPU-6050 센서 데이터 일기

작성자 임베디드코리아 작성일25-05-16 00:45 조회161회 댓글0건

첨부파일

<* MPU-6050 센서 데이터 읽기 *>
● 자이로 센서(Gyro Sensor)

• 자이로스코프가 내장된 물체가 회전 운동을 하면 생기는 회전 반발력을 측정하여 전기신호로 바꾸어 출력하고 이를 수치화하여 활용한다.
• 기울기 센서는 가속도 센서와 자이로 센서의 기능을 통합하여 자세나 위치를 추정할 수 있는 센서이다.
• 항공기 및 배(Ship) 등에 사용되는 관성항법장치(INS)는 이동거리와 방향까지 추정할 수 있도록 되어 있다.

● MPU-6050 자이로 센서 모듈
•  자이로센서는 각속도를 측정할 수 있는 센서로서 3축의 물리량을 측정하여 센서의 움직임을 감지하고 기울기를 측정할 수 있다.
• X,Y,Z축 자이로 스코프,기울기, 3축가속도를 측정해주는 센서이다.
• 아두이노 드론 등에 자주 사용된다.


----- < 기울기 센서 GY-521(MPU6050)로 동작 소스 코드 > ------------------
▶ 가속도 x, y, z 축 값과  자이로 x, y, z 축 값를 시리얼 모니터로 출력한다.

#include<Wire.h>
const int MPU_ADDR = 0x68;    // I2C통신을 위한 MPU6050의 주소
int16_t AcX, AcY, AcZ, Tmp, GyX, GyY, GyZ;  // 가속도(Acceleration) 와
void ReadData();  // 센서값 얻는 서브함수의 프로토타입 선언

void setup() {
  Wire.begin();
  Wire.beginTransmission(MPU_ADDR);  // I2C 통신용 어드레스(주소)
  Wire.write(0x6B);    // MPU6050과 통신을 시작하기 위해서는 0x6B번지에   
  Wire.write(0);      // MPU6050을 동작 대기 모드로 변경
  Wire.endTransmission(true);

  Serial.begin(9600);
  delay(200);

}

void loop() {
  ReadData();          // 센서값 얻어오는 함수 호출
  Serial.print("AcX:");
  Serial.print(AcX);
  Serial.print("  AcY:");
  Serial.print(AcY);
  Serial.print("  AcZ:");
  Serial.print(AcZ);
  Serial.print("  GyX:");
  Serial.print(GyX);
  Serial.print("  GyY:");
  Serial.print(GyY);
  Serial.print("  GyZ:");
  Serial.print(GyZ);
  Serial.println();
  delay(300); 

}

void ReadData() {
  Wire.beginTransmission(MPU_ADDR);
  Wire.write(0x3B);  // AcX 레지스터 위치(주소)를 지칭합니다
  Wire.endTransmission(false);
  Wire.requestFrom(MPU_ADDR, 14, true);  // AcX 주소 이후의 14byte의 데이터를 요청

  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();
}