MMA7455加速度传感器使用

来源:本站
导读:目前正在解读《MMA7455加速度传感器使用》的相关信息,《MMA7455加速度传感器使用》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《MMA7455加速度传感器使用》的详细说明。
简介:MMA7455加速度传感器使用

MMA7455加速度传感器是freescale公司的看下面的链接

http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=MMA745xL

这个页面可以下载它的datasheet,和应用笔记,很重要,里面还有一些参考例程。

MMA7455加速度传感器使用

简单说一下这个传感器的,是3轴加速度传感器。数字输出接口是IIC或者SPI,很容易使用单片机控制该芯片,它还有低功耗模式,可以用于电池供电。检测最大加速度是正负8g,有不同的灵敏度,如16/g,32/g,64/g,可以选择的,使用这个芯片最主要还是对芯片的寄存器的操作,我具体说一下

MMA7455加速度传感器使用

地址为06-08的寄存器保存的就是XYZ轴的加速度数值,可以同过IIC读出来,然后利用灵敏度转化为实际的加速度数值。那个DRDY是数值转换完成状态位,在读取数值前,要检测该位,只有它为1的时候,说明数据转换完成,可以读取。

因为这个芯片是利用变化的电容来检测加速度的,所以有个初始值的误差,需要校正,校正寄存器是下图,

MMA7455加速度传感器使用

就是说,上面的06-08寄存器的值,是加上这个校正值后的值,注意这个校正寄存器可以保存正负校正值,都是用二进制补码格式的,啥是二进制补码,可以去google,不多说了。不过这里说明一下这个校正值的权值是1/2灵敏度,就是说如果X值是5,你要给它归零,你就需要在X校正寄存器写入-5*2,也就是-10,-10的二进制补码是1111 0110 这是8位二进制的值,要是16位二进制的值就是1111 1111 1111 0110,就是0xFFF6,我们就要把0xFFF6写入10,11寄存器里面,那个是高低位就不用说了吧。

下面的图片是从它的应用技术文档里面截取的。

MMA7455加速度传感器使用

这个芯片有几种运行模式,省电模式,测量模式,水平检测模式,脉冲检测模式,我们使用测量模式。

MMA7455加速度传感器使用

主要的流程也就是这么多了。下面对照程序说明一下流程这样比较直观。

MMA7455加速度传感器使用

ISendStr(0x3a,0x16,0x09,1);是配置工作模式,测量模式,正负4G,

ISendStr(0x1D<<1,0x10,6,1);

ISendStr(0x1D<<1,0x11,0,1);

ISendStr(0x1D<<1,0x12,17,1);

ISendStr(0x1D<<1,0x13,0,1);

ISendStr(0x1D<<1,0x14,0xfd,1);

ISendStr(0x1D<<1,0x15,0xff,1);

添加校正值,要经过测试,自己选择比较合适的值。

while(!(readydata&0x01))

{

IRcvStr(0x3a,0x09,&readydata,1);

}

IRcvStr(0x3a,0x06,&xdata,1);

IRcvStr(0x3a,0x07,&ydata,1);

IRcvStr(0x3a,0x08,&zdata,1);

这就是读取XYZ轴的值了。

下面的if语句是判断语句,自己可以设置,然后点亮二极管啥的。

这里调用的函数都是IIC函数,不多说了了,就这样结束吧。下面传几张,我断点调试的图,显示XYZ轴的数据,原始的数据,也就是06-08寄存器的数据。至于是怎么放置的,我想你看看XYZ轴的数据就会明白了吧。

量程是正负4G,灵敏度是32/G.

MMA7455加速度传感器使用

MMA7455加速度传感器使用

MMA7455加速度传感器使用

MMA7455加速度传感器使用

最后说一点的啊,我上面的图片是瞬时截图,使用看着数据很好,其实,在我多次go运行的时候,有时候数据离实际值差的离谱,不知道为何会这样的啊,有网友知道,告诉我一下的啊。

MMA7455加速度传感器使用

我这张图片就是那种很不好的情况,芯片放置方向和上面四张图片的第一张方向一致。

提醒:《MMA7455加速度传感器使用》最后刷新时间 2024-03-14 01:21:24,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《MMA7455加速度传感器使用》该内容的真实性请自行鉴别。