mpu6050模块需要adc模块吗

MPU6050的初始化 - CSDN博客
MPU6050的初始化
传感器简介以及用法
MPU6050是运动处理传感器,它集成了3轴陀螺仪,3轴加速度计以及DMP,其中的DMP是一个可通过IIC接口扩展的数字运动处理器。
对于DMP可以用 InvenSense 公司提供的资料库,使MPU6050可以解算出姿态,通过IIC接口直接输出陀螺仪和加速度数据融合后的四元数,减轻了处理器的负荷,非常适合简单的开发应用。但是,使用DMP的这种硬件解算也存在问题,有时会无法读出数据,因此,在四轴的应用中通常都会采用软件解算,常见的姿态解算方法有:非线性互补滤波算法,卡尔曼滤波算法,Mahony互补滤波算法(可参见Crazypony的开源项目)。
MPU6050通过IIC协议与处理器进行通信。我使用STM32时通常采用软件模拟IIC的方式。
接着来了解一下MPU6050的引脚,通过一个芯片的硬件接口及定义,我们就可以大概的了解到芯片的主要功能,再去搜索芯片手册的时,就可以着重的按照这些信息去检索。
IIC通信数据线
IIC通信时钟线
地址设置: ID:0x68(AD0=0)、 0x69(AD0=1)
6050的供电电压支持2.5v、3.0v、3.3v,一般的模块都会加一个稳压芯片如:662K 使6050兼容5V以及3.3V供电
MPU6050有一个可编程的中断系统,可在INT中断引脚上产生中断信号。可编程的主要中断源有:自由落体中断,静止中断……
寄存器的查阅
MPU6050的所有寄存器都可以在官方文档“MPU-6000 and MPU-6050 Register Map and Descriptions”中找到,平时使用中最为重要的有以下几种:电源管理寄存器1和2、陀螺仪配置寄存器、陀螺仪采样率分频寄存器、加速度传感器配置寄存器、配置寄存器。
以电源管理寄存器为例:
寄存器地址:0x6B(Hex)或107(十进制)。
表格后面的几位Bit7~Bit0代表八位二进制,给该寄存器赋值就是改变这几位的值。各个位代表的意义可看表下方的说明:如DEVICE_RESET :When set to 1, this bit resets all internal registers to their default values.The bit automatically clears to 0 once the reset is done.表明DEVICE_RESET被置1时芯片就会将所有内部寄存器复位。
对MPU6050的初始化驱动就是通过IIC的协议,对MPU6050的寄存器进行初始化配置,我选择配置的有:
设置电源管理寄存器1(0X6B),复位MPU6050 (下面举例)
设置陀螺仪配置寄存器(0X1B),将量程设置为 2000dps
设置加速度计配置寄存器(0X1C),将量程设置为 2g
设置采样频率分频器(0X19),将采样率设置为50Hz
设置中断使能寄存器(0X38),关闭中断
设置电源管理寄存器2(0X6C),使加速度陀螺仪都工作
char MPU_Reset()
IIC_Start();
IIC_Send_Byte((0x68&&1)|0);
if(IIC_Wait_Ack())
IIC_Stop();
IIC_Send_Byte(0x6B);
IIC_Wait_Ack();
IIC_Send_Byte(0x80);
if(IIC_Wait_Ack())
IIC_Stop();
IIC_Stop();
按照相同的方法对其余的寄存器进行配置之后,MPU6050就可以正常工作了。接下来的任务就是不断读取它的数据,计算出芯片的姿态了。。。
读取原始数据
使用IIC协议读取以上寄存器的值,每个轴的值由16位二进制表示(0–65535),以X轴为例:ACCEL_XOUT[15:8]、ACCEL_XOUT[7:0]分别为X轴加速度的高八位和低八位,每次读取八位再将它们拼起来即可。
ax=( (unsigned int)buffer[0]&&8 ) | buffer[1];
此时就获得了MPU6050输出的ADC值了,它是以LSB为单位的,而不是以实际值的 g 为单位,它对应的实际值与你在初始化的时候设置的量程有关。比如说我们设置的量程是+-2g,那对应的灵敏度=65536/4 LSB/g , 那么实际的加速度值=ADC的值LSB / 16384 LSB/g
通过这些我们就可以得到原始数据了,下面就是姿态解算的问题了。DMP的驱动官方有,网上也已经有人移植到了STM32上面,简单使用效果还差强人意,但是用到对稳定性要求较高的四轴上的时候就不够了,我们可不想四轴飞着飞着抽搐一下,那可怪吓人。所以,在四轴的姿态解算里,通常都是使用一些滤波算法和融合算法来对原始数据进行处理,,
,' /, )_______
本文已收录于以下专栏:
相关文章推荐
这里重点讲解AD0的作用,I2C通讯中从机是要有地址的,以区别多个从机。当AD0管脚接低电平的时候,从机地址是0x68。从MPU6050的寄存器中我们可以得到答案,MPU6050作为一个IIC从机设备...
最近需要做一个测试角度的东西,被介绍使用MPU6050,网上查了一下数据手册,只需要使用IIC配置一下,然后就可以IIC读取结果了(PS:之前调试过一些小摄像头,使用IIC熟手了)。
废话不多说,我使...
接下来得真正进入到实践环节来了,导师的任务是给了MPU6050六轴传感器,要实现测出步速\步频。
本实验,通过3个IO口连接MPU6050,程序先初始化MPU6050等外设,然后利用DMP库,初始化M...
MPU6050相关寄存器写满数据后产生数据中断,主机检测外部中断用于读取数据,如此节省CPU资源
void MPU6050_Init(void)
int i=0,j=0;
//加入中断...
一般情况下, 大家买的 mpu 6050 有两种。
1: 就是 单个的 mpu6050 芯片
2: 就是 mpu6050 模块
如果 是第一种情况的话 , 大家可以参考 下图所示
如果是第二种...
MPU6050的原始数据分析个人经验来讲,如果对IIC总线协议很熟悉的情况下,获取6050的原始数据就不是什么太大的难题,毕竟再怎么复杂也只是一个传感器而已,就像你打电话给传感器,要它的数据,然后它返...
MPU6050 为全球首例集成六轴传感器的运动处理组件,内置了运动融合引擎,用于手持和桌面的应用程序、游戏控制器、体感遥控以及其他消费电子设备。它内置一个三轴 MEMS 陀螺仪、一个三轴 MEMS 加...
MPU6050的原始数据分析个人经验来讲,如果对IIC总线协议很熟悉的情况下,获取6050的原始数据就不是什么太大的难题,毕竟再怎么复杂也只是一个传感器而已,就像你打电话给传感器,要它的数据,然后它返...
他的最新文章
讲师:董岩
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)&>&mpu6050 i2c驱动及测试程序
mpu6050 i2c驱动及测试程序
上传大小:50KB
讲述Mpu6050陀螺仪i2c驱动,包含测试例程,很好的学习资料,节省开发时间
综合评分:2(2位用户评分)
下载个数:
{%username%}回复{%com_username%}{%time%}\
/*点击出现回复框*/
$(".respond_btn").on("click", function (e) {
$(this).parents(".rightLi").children(".respond_box").show();
e.stopPropagation();
$(".cancel_res").on("click", function (e) {
$(this).parents(".res_b").siblings(".res_area").val("");
$(this).parents(".respond_box").hide();
e.stopPropagation();
/*删除评论*/
$(".del_comment_c").on("click", function (e) {
var id = $(e.target).attr("id");
$.getJSON('/index.php/comment/do_invalid/' + id,
function (data) {
if (data.succ == 1) {
$(e.target).parents(".conLi").remove();
alert(data.msg);
$(".res_btn").click(function (e) {
var q = $("#form1").serializeArray();
console.log(q);
var res_area_r = $.trim($(".res_area_r").val());
if (res_area_r == '') {
$(".res_text").css({color: "red"});
$.post("/index.php/comment/do_comment_reply/", q,
function (data) {
if (data.succ == 1) {
var $target,
evt = e || window.
$target = $(evt.target || evt.srcElement);
var $dd = $target.parents('dd');
var $wrapReply = $dd.find('.respond_box');
console.log($wrapReply);
var mess = $(".res_area_r").val();
var str = str.replace(/{%header%}/g, data.header)
.replace(/{%href%}/g, 'http://' + window.location.host + '/user/' + data.username)
.replace(/{%username%}/g, data.username)
.replace(/{%com_username%}/g, _username)
.replace(/{%time%}/g, data.time)
.replace(/{%id%}/g, data.id)
.replace(/{%mess%}/g, mess);
$dd.after(str);
$(".respond_box").hide();
$(".res_area_r").val("");
$(".res_area").val("");
$wrapReply.hide();
alert(data.msg);
}, "json");
/*删除回复*/
$(".rightLi").on("click",'.del_comment_r', function (e) {
var id = $(e.target).attr("id");
$.getJSON('/index.php/comment/do_comment_del/' + id,
function (data) {
if (data.succ == 1) {
$(e.target).parent().parent().parent().parent().parent().remove();
$(e.target).parents('.res_list').remove()
alert(data.msg);
//填充回复
function KeyP(v) {
$(".res_area_r").val($.trim($(".res_area").val()));
评论共有3条
根本不是linux系统的
我也下载看了 确实不是基于Linux 系统的,是在单片机上的程序测试
不是基于Linux 系统的,是在单片机上的程序测试
审核通过送C币
电子书《Linux Perf Master》
创建者:zijingshanke
创建者:lijunhu
创建者:chenhongxin
上传者其他资源上传者专辑
linux ext4文件系统分析
MMC-System-Spec
操作系统热门标签
VIP会员动态
CSDN下载频道资源及相关规则调整公告V11.10
下载频道用户反馈专区
下载频道积分规则调整V1710.18
spring mvc+mybatis+mysql+maven+bootstrap 整合实现增删查改简单实例.zip
资源所需积分/C币
当前拥有积分
当前拥有C币
为了良好体验,不建议使用迅雷下载
mpu6050 i2c驱动及测试程序
会员到期时间:
剩余下载个数:
剩余C币:593
剩余积分:0
为了良好体验,不建议使用迅雷下载
积分不足!
资源所需积分/C币
当前拥有积分
您可以选择
程序员的必选
绿色安全资源
资源所需积分/C币
当前拥有积分
当前拥有C币
(仅够下载10个资源)
为了良好体验,不建议使用迅雷下载
资源所需积分/C币
当前拥有积分
当前拥有C币
为了良好体验,不建议使用迅雷下载
资源所需积分/C币
当前拥有积分
当前拥有C币
您的积分不足,将扣除 10 C币
为了良好体验,不建议使用迅雷下载
你当前的下载分为234。
你还不是VIP会员
开通VIP会员权限,免积分下载
你下载资源过于频繁,请输入验证码
您因违反CSDN下载频道规则而被锁定帐户,如有疑问,请联络:!
若举报审核通过,可奖励20下载分
被举报人:
举报的资源分:
请选择类型
资源无法下载
资源无法使用
标题与实际内容不符
含有危害国家安全内容
含有反动色情等内容
含广告内容
版权问题,侵犯个人或公司的版权
*详细原因:
mpu6050 i2c驱动及测试程序查看: 4903|回复: 15
我想用CC2540加MPU6050处理运动请问有人试过吗?效果如何
主题帖子精华
新手上路, 积分 45, 距离下一级还需 5 积分
在线时间0 小时
最近我在尝试着用CC2540加MPU6050处理运动,在串口助手看数据,发现CC2540输出好像跟不上。如果用STM32的话,串口助手看起来完全没问题的。CC2540的主频也有64M啊,用STM32的32M也是可以处理得了的,不知道是什么原因。cc2540的程序用的是TI自带的从机例程,在里面改的。有哪位大神试过的,指点下,CC2540加MPU6050是否可以?
主题帖子精华
金牌会员, 积分 2213, 距离下一级还需 787 积分
在线时间36 小时
没用过,你用蓝牙芯片呀。
专业制作STM32 物联网通信模块板,模块交流群:。
主题帖子精华
新手上路, 积分 45, 距离下一级还需 5 积分
在线时间0 小时
回复【2楼】ST-FAE-SALE:
---------------------------------
是啊,就是想和蓝牙设备连接的,现在的办法是外挂了一个STM32芯片,但是这样的话,功耗就很大,很想去掉M3,只用CC2540搞定
主题帖子精华
初级会员, 积分 194, 距离下一级还需 6 积分
在线时间9 小时
CC2540的主频是32MHz吧!
你说的输出跟不上是指串口输出跟不上吗?不可能吧!CC2540串口可以用DMA传输呢。
功夫再高、也怕羊刀
主题帖子精华
新手上路, 积分 45, 距离下一级还需 5 积分
在线时间0 小时
回复【4楼】加速度:
---------------------------------
确实是32M,记错了。不是输出跟不上,而是有时候传感器动了,然后CC2540那里的处理程序不跑,所以串口没输出,但是用STM32的32M跑起来没问题
主题帖子精华
初级会员, 积分 194, 距离下一级还需 6 积分
在线时间9 小时
回复【5楼】chen_jp:
---------------------------------
你用的是什么传感器,加速度传感器吗?用什么做接口?
会不会是程序中某个地方处理出现阻塞了。
功夫再高、也怕羊刀
主题帖子精华
初级会员, 积分 194, 距离下一级还需 6 积分
在线时间9 小时
回复【5楼】chen_jp:
---------------------------------
刚刚看了下MPU6050,用的是I2C或者SPI总线接口。
我觉得你应该先测试一下,总线接口的通信是否正常。
功夫再高、也怕羊刀
主题帖子精华
新手上路, 积分 45, 距离下一级还需 5 积分
在线时间0 小时
回复【6楼】加速度:
---------------------------------
我用的是IIC的,现在的情况是,它能工作,但不是每次都能感应到运动,差不多都是动两三次,识别到一次,我的程序是一感应到有动作就串口输出。感觉就是不灵敏,用STM32来接MPU6050的话,就很灵敏。我猜想会不会是CC2540的内核是51的,处理速度跟不上啊?
主题帖子精华
初级会员, 积分 194, 距离下一级还需 6 积分
在线时间9 小时
回复【8楼】chen_jp:
---------------------------------
这个应该跟内核无关,CC2540加强的51核,一条指令只需一个时钟周期,32MHz的主频跑个传感器绰绰有余。
CC2540是没有IIC接口的,CC2541才有,你应该是IO口模拟的吧?!这样会占用CPU,同时降低任务处理的速度,可以考虑用SPI模式或换个型号(cc2541);
另外检查下是否有涉及浮点数的运算的耗时处理;
CC2540代码里不要有任何一个类似于Delay()的函数。
功夫再高、也怕羊刀
主题帖子精华
新手上路, 积分 45, 距离下一级还需 5 积分
在线时间0 小时
回复【9楼】加速度:
---------------------------------
是模拟IIC,我在试试看,用下SPI模式
主题帖子精华
新手上路, 积分 22, 距离下一级还需 28 积分
在线时间0 小时
回复【10楼】chen_jp:
---------------------------------
楼主您好,我现在也在用MPU6050和单片机相连,请问你的MPU6050和stm32的串口连接的吗,为什么我的和串口连接的时候用串口助手在电脑上看的时候,发现有丢包,期待楼主的回复,另外想问问楼主你用的波特率是115200的还是9600的,以前我也考虑用CC2540来做,但是也是担心速度跟不上去……
主题帖子精华
新手上路, 积分 45, 距离下一级还需 5 积分
在线时间0 小时
回复【11楼】电子的说:
---------------------------------
不是,是用模拟IIC的,串口只是拿来看IIC通信得到的数据
主题帖子精华
高级会员, 积分 643, 距离下一级还需 357 积分
在线时间113 小时
回复【8楼】chen_jp:
---------------------------------
你是怎么把数据直接输出的,是把蓝牙当串口吗
主题帖子精华
新手上路, 积分 45, 距离下一级还需 5 积分
在线时间0 小时
回复【13楼】炫色康康:
---------------------------------
是直接用CC2540的串口输出的
主题帖子精华
新手上路, 积分 28, 距离下一级还需 22 积分
在线时间0 小时
怎么样搞定了没,我移植过去但是数据不正确。
主题帖子精华
初级会员, 积分 50, 距离下一级还需 150 积分
在线时间0 小时
代理NORDIC蓝牙4.0芯片NRF51822
联系人:刘工
QQ:
手机:
NRF51822是一款为超低功耗无线应用(ULP&wirelesss&applications)打造的多协议单芯片解决方案。
它整合了Nordic一流的无线传送器,同时支持Bluetooth(R)&low&energy&和专用的2.4GHz协议栈。
基本情况是:
2.4GHZ多协议无线射频
32位ARM&Cortex&M0&处理器
128位AES硬件加密处理器
256kB&flash&/&16kB&RAM
可编程外设接口PPI
全功能数字接口:&SPI&/&I2C&/&UART
10位ADC
可编程的输出功率:&+4dBm&to&-20dBm
应用开发和协议堆栈完全独立
与NRF24L系列完全兼容
与NRF51xxx系列管脚兼容
全局独立电源管理
工作电压范围(1.8&V&~&3.6&V)
Powered byMPU 6050模块 文档资料_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
MPU 6050模块 文档资料
阅读已结束,下载文档到电脑
想免费下载更多文档?
定制HR最喜欢的简历
你可能喜欢用STM32读取MPU6050模块的原始数据
在很多应用领域,加速度传感器和陀螺仪传感器都必不可少,MPU6050既简单又经济小巧,很适合做一些要求不高的开发。
1、MPU6050是6轴运动处理组件,包括3轴加速度和3轴陀螺仪
2、MPU6050为IIC接口,简单方便
3、加速度传感器即力传感器,检测上下左右前后都收到多少力的作用,然后计算角度
4、陀螺仪即角速度传感器,若以X为轴心,在1秒的时间里转动的90度,那么X轴上的角速度就是90度/秒
5、3个加速度传感器和3个陀螺仪传感器每轴一个16位ADC,输出数据为2^16,即-3
&MPU6050为寄存器控制,读取其中寄存器数据即可,若要了解具体寄存器请参看数据手册
6、输出数据代表的含义:以加速度传感器为例,若选择量程为-2g~+2g(如何设置在程序中会提到),那么32768就对应2g,陀螺仪也是一个道理
7、IIC通信有软件模拟IIC和硬件IIC,对于STM32,本人程序用软件模拟的方式
8、直接得到的数据有AccX(X轴加速度值)、AccY(Y轴加速度值)、AccZ(Z轴加速度值)、GyroX(X轴陀螺仪值)、GyroY(Y轴陀螺仪值)、GyroZ(Z轴陀螺仪值),经过计算可以得到Pitch(俯仰角)、Roll(翻转角)、Yaw(偏航角)
引脚说明:MPU6050模块8个引脚,若只使用MPU6050模块采集6轴传感器的数据,那仅用其中的4个引脚即可,分别是VCC,GND,SCL,SDA(后两个为IIC接口)
由于新浪博客无法添加程序中注释,以下附上程序源代码的云盘链接
&&/s/1dEU1HFr
以上为我对MPU6050的理解,浅薄之处请读者见谅,qq交流
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。}

我要回帖

更多关于 gy521 mpu6050模块 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信