2024-06-09|閱讀時間 ‧ 約 24 分鐘

mpu6050 感測器 加速度 傾斜角度

這篇介紹如何用加速度取得傾斜角度,使用的是arduino nano和mpu6050,利用Arduino IDE 環境編譯。

要利用加速度計算傾斜角度需要用一點三角函數。


g 為重力 ay az為y軸加速度和z軸加速度

當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加速度數值取得傾斜角度變化。

分享至
成為作者繼續創作的動力吧!
小妹愛玩空拍機,也在練習寫程式,把寫過的程式放上來。
© 2024 vocus All rights reserved.