Drone-Gyroscope 계산과정
Gyroscope
아래는 실제 Gyroscope의 사진이다.
이 전글에서 언급 하였듯이 Gyroscope는 각도의 변화율을 코리울리 힘을 이용해서 측정하는 장치이다.
자 이제 Gyrosensor가 회전을 계산하는 방식을 알아보자.
초기시간 T0, 이후 시간 T1이 있다고 할 때, 시간 변화에 따른 각도의 변화율을 측정하는 과정을 통해 어떻게 계산하는지 알아보자.
시간 T0에서 축 Y 주위의 회전 각도(즉, Axz 각도) (R을 xz 평면으로 정사형으로 만들고, 이 때 Z축과 정사형이 가지는 각도를 측정했을 때, Axz0으로 정의한다. 그리고 T1일 때의 이 각도를 Axz1이라 한다.
이 때, 변경율은 다음과 같이 계산할 수 있다.
RateAxz = (Axz1-Axz0)/(t1-t0)
Axz를 각도와 시간 단위로 표현하면 deg/sec로 표현할 수 있다. 이것이 Gyroscope가 측정하는 값이다.
이러한 각도변화를 측정하기 위해서는 관성력(코리울리 힘)을 측정해야 되는데 이는 다음과 같이 측정한다.
RateAxz = {AdcGyroXZ * [Vref(전압레퍼런스) / 1023(R의 초기값)] - VzeroRate}/Sensitivity(1g 일때 측정되는 전압)
RateAyz = {AdcGyroYZ * [Vref(전압레퍼런스) / 1023(R의 초기값)] - VzeroRate}/Sensitivity(1g 일때 측정되는 전압)
AdcGyroXZ, AdcGyroYZ는 ADC모듈을 통해서 얻은 것으로 YZ 평면과 XZ 평면에 정사형된 벡터 R의 Z축을 기준으로 한 회전을 측정한 값이다. 이 값을 센서의 snesitivity를 기준으로 하면 회전의 정도를 표현할 수 있다. 위의 두 가지 회전을 회전의 중심이 되는 축을 기준으로 보면 AdcGyroXZ는 Y축, AdcGyroYZ는 X축이 된다.
위 식에서 Vref = 3.3V를 사용한 경우의 ADC 기준 전압이다. 그리고 VzeroRate는 Zero Rate의 전압, 즉 Gyroscope가 회전하지 않을 때 출력하는 전압을 말하고, 여기서 이용한 보드의 경우 1.23V 이다.
Sensitivity는 mV/deg/s로 표시되는 Gyroscope의 감도로 mV/deg/s로 표시된다. 회전속도를 초당 1도 증가시키는데 얼마의 mV가 필요한지를 계산하는데 사용된다. LPR550AL보드를 기준으로 할 때, 2mv/deg/s 이다.
예제로 ADC 모듈이 다음과 같은 값을 가진다고 할 때를 기준으로 계산해 보자.
1. AdcGyrroXZ = 571, AdcGyroYZ = 323
그럼 아래와 같이 계산할 수 있다.
RateAxz = (571 * (3.3V/1023)-1.23V) /(0.002V/deg/s) = 306deg/s
RateAyz = (323*(3.3V/1023)-1.23V) /(0.002V/deg/s) =-94deg/s이 된다.
여기서 '-'부호는 기준 회전 방향과 역방향을 말한다.