51单片机怎么使用MPU6050读取角度值程序 ??
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了51单片机怎么使用MPU6050读取角度值程序 ??,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1552字,纯文字阅读大概需要3分钟。
内容图文
#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); } } |
原文:https://www.cnblogs.com/zhb123456/p/10633253.html
内容总结
以上是互联网集市为您收集整理的51单片机怎么使用MPU6050读取角度值程序 ??全部内容,希望文章能够帮你解决51单片机怎么使用MPU6050读取角度值程序 ??所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。