51單片機怎么使用MPU6050讀取角度值程序 ??



#include <REG52.H>        
#include <math.h>    //Keil library  
#include <stdio.h>   //Keil library        
#include <INTRINS.H>


typedef unsigned char  uchar;
typedef unsigned short ushort;
typedef unsigned int   uint;

//******功能模塊頭文件*******
//#include "DELAY.H"                    //延時頭文件
#include "lcd1602.H"                        //LCD1602文件
#include "MPU6050.H"                //MPU6050頭文件

//******角度參數************
float Accel_ax;
float Accel_az;             //X軸加速度值暫存
float Angle;         //小車最終傾斜角度
uchar value;                 //角度正負極性標記
//float  Accel_x;
//float  Angle_ax;
//float Gyro_y;        //Y軸陀螺儀數據暫存
//*********************************************************
// 傾角計算(卡爾曼融合)
//*********************************************************

float Angle_Calcu(void)         
{
        //------加速度--------------------------

        //范圍為2g時,換算關系:16384 LSB/g
        //角度較小時,x=sinx得到角度(弧度), deg = rad*180/3.14
        //因為x>=sinx,故乘以1.3適當放大

        Accel_ax  = GetData(ACCEL_XOUT_H);          //讀取X軸加速度
        Accel_az  = GetData(ACCEL_ZOUT_H);          //讀取X軸加速度
        Angle = (int)(atan(Accel_ax/Accel_az)*180/3.14);
/*        Accel_x  = GetData(ACCEL_XOUT_H);          //讀取X軸加速度
        Angle_ax = (Accel_x - 1100) /16384;   //去除零點偏移,計算得到角度(弧度)
        Angle_ax = Angle_ax*1.2*180/3.14;     //弧度轉換為度,
    return        Angle_ax;
        Gyro_y = GetData(GYRO_YOUT_H);              //靜止時角速度Y軸輸出為-30左右
        Gyro_y = -(Gyro_y + 30)/16.4;         //去除零點偏移,計算角速度值,負號為方向處理 
        Angle  = Angle + Gyro_y*0.01;  //角速度積分得到傾斜角度.*/        
        return         Angle;                                                                                                          


void main()
{         //float ax,ay,az,xx,yy,zz;
    float xx;
        delay(500);                //上電延時                
        InitLcd();                //液晶初始化
        InitMPU6050();        //初始化MPU6050
        delay(150);
        while(1)
        {                
                xx=Angle_Calcu();
                lcd_printf(dis,xx);                        //轉換數據顯示
            DisplayListChar(2,0,dis,4);  
        }
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM