這篇介紹如何用加速度取得傾斜角度,使用的是arduino nano和mpu6050,利用Arduino IDE 環境編譯。
要利用加速度計算傾斜角度需要用一點三角函數。
當mpu6050傾斜時,將重力(g)分為ay az(感測器讀取到的加速度數值)。
tanθ=ay/az ,要找到θ 用反三角函數arctan(ay/az) 可找到角度。
以下是程式,用的是和前篇一樣的<basicMpu6050.h>,這個是從範例程式修改成的。
使用這個程式需將mpu6050前後旋轉做陀螺儀校正,校正後數值才會出現。
#include <basicMPU6050.h>
// Create instance
basicMPU6050<> imu;
float pitch_angle,roll_angle;
void setup() {
// Set registers - Always required
imu.setup();
// Initial calibration of gyro
imu.setBias();
// Start console
Serial.begin(38400);
}
void loop() {
// Update gyro calibration
imu.updateBias();
//-- Scaled and calibrated output:
// Accel
Serial.print( imu.ax() );
Serial.print( " " );
Serial.print( imu.ay() );
Serial.print( " " );
Serial.print( imu.az() );
Serial.println( " " );
//Angle
//*180/3.1415964 將角度radian(弧度) 轉為 度
//atan2 計算 arctan 求角度
pitch_angle=atan2(imu.ay(),imu.az())*180/3.14159264;
roll_angle=atan2(imu.ax(),imu.az())*180/3.14159264;
Serial.print(pitch_angle);
Serial.print(" ");
Serial.println(row_angle);
delay(100);
}
得到的數值如下圖
將mpu6050 在y軸做傾斜,像是飛機起飛時的仰角(pitch)
將mpu6050 在x軸做傾斜,像是飛機的滾轉(roll)
這些是利用mpu6050加速度數值取得傾斜角度變化。