智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 5427|回复: 8
打印 上一主题 下一主题

MMA7660 使用大汇总--红树伟业

[复制链接]

3

主题

4

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
376
威望
235
贡献
129
兑换币
0
注册时间
2011-12-18
在线时间
6 小时
跳转到指定楼层
1#
发表于 2012-3-31 18:40:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 harley881022 于 2012-3-31 18:40 编辑

     首先在介绍本篇技术文档之前,我先简单介绍一下我们这个团队,作为红树伟业背后技术支持也有一段时间了,对于绝大多是人来说,我们还没被大家所熟悉了解,可能我们做技术的都比较低调吧,呵呵,相信你们都懂的!
    其实我们的团队的成员还是比较有特点的,有在校大三的学生,有在校研究生,也有毕业一两年的社会初生虎,团队人数有十几个人,初具规模了,嘿嘿!我们有一个共同的特点,也是最重要的特点就是我们在科研的路上始终专注,精益求精,把现在最有限的时间奋力投入到科研的这条路上,我们喜欢所以我们专注。在电子设计比赛方面,我们有很丰富的比赛经验,相信能为你以后参加各种比赛或者项目开发出谋献策。好吧,废话不多说,让我们转入今天的正题:关于对MMA7660的探讨,前半部分是我们整理的资料,后半部分是我们产品的一些东西。用它就让我们去了解它吧!
一、简介
    MMA7660是-1.5g ~ 1.5g范围的XYZ三轴检测加速度大小,由数字IIC输出,是非常低功耗、小形容性MEMS传感器,具有低通滤波器,用于0g和增益误差的补偿以及用户可配置的转化成6位数值。模拟电压为2.4-3.6V,数字工作电压1.71-3.6V,可进行三轴取向/运动的检测,广泛应用与手机、PDA、便携PC的防盗、游戏的运动检测等
    由于MMA7660比较低端,因此也只有6BIT的精度,而且输出值上还会有3个刻度的误差,因此在值的输出上,必须经过一个软件的均值滤波处理。一般来说,如果传感器只是应用于方位检测的话,8个值的滤波就够了。而用于动作检测的话,一般使用32阶的均值滤波。
    MMA7660的采用IIC的接口。在读取XYZ坐标的时候,最好采用的就是Multiple Byte Read的方式,这样才能保证XYZ三个坐标是同一次采样的结果。如果分开读取,则有可能读取到不同组的采样数据。

二、工作原理:          MMA7660是一种电容式g-sensor. 与压阻式不同的是, 电容式很难在同一个结构中同时感测到三个轴的变化, 通常都是X,YZ分开来的, (这也就是为什么当板子水平放置时,无论如何改变X,Y的位置,都不会有中断产生,因为这时它只能检测Z轴的变化,X,Y的变化它检测不到, 只有当我们将板子倾斜一个角度后才能检测X,Y的变化) . 而压阻式在同一个结构就能感测到三个轴的变化.
    MMA7660加速度传感器主要由两部分组成:G-单元和信号调理ASIC电路(见上图)。G-单元是机械结构,它是用半导体制作技术、有多晶硅半导体材料制成,并且是密封的,图中的积分、放大、滤波、温度补偿、控制逻辑和EEPROM相关电路、振荡器、始终生成器、以及自检等电路组成,完成G-单元测量的电容值到电压输出的转换
    G-单元的等效电路如上图所示,它相当于在两个固定的电容板中间放置一个可移动的极板。当有加速度作用于系统时,中间极板偏离静止位置。用中间极板偏离知之为止的距离测量加速度,中间极板与其中一个固定极板的距离增加,同时与另一个固定极板的距离减少,且距离变化值相等。距离的变化使得两个极板间的电容改变(如图)。
    信号调理ASIC电路将G-单元测量的两个电容值转换成加速度值,并使加速度与输出电压成正比。当测量完毕后,在INT1/INT2输出高电平,用户可以通过IICSPI接口读取MMA7660内部的寄存器的值,判断运动的方向。自检单元用于保证G-单元和加速计芯片中的电路工作正常,输出电压成比例。

三、工作模式:
     MMA7660主要有三种工作模式.(MMA766010个寄存器可供设置其工作模式,采样速率,中断使能等。)

         1).  Standby(待机)模式
此时只有I2C工作,接收主机来的指令. 该模式用来设置寄存器. 也就是说, 要想改变MMA7660的任何一个寄存器的值,必须先进入Standby模式. 设置完成后再进入ActiveAuto-Sleep模式.
         2). Active and Auto-Sleep (活动并且Auto-Sleep) 模式
         MMA7660的工作状态分两种, 一种是高频度采样, 一种是低频度采样. 为什么这样分呢, 为了节省功耗,但是在活动时又保持足够的灵敏度.
         所以说MMA7660Active模式其实又分两种模式,一种是纯粹的Active模式, 即进了Active模式后一直保持高的采样频率,不变. 还有一种是Active & Auto-Sleep模式, 就是说系统激活后先进入高频率采样,经过一定时间后,如果没检测到有活动,它就进入低频率采样 ,所以就叫做Auto-Sleep,它不是睡眠模式, 它只是降低采样频率
         3). Auto-Wake (自动唤醒) 模式
              Auto-Sleep后就进入低频率采样模式,这种模式就叫做Auto-Wake摸式, 即自动唤醒模式.值得注意的是,该模式并非真正的休眠模式,而只是低速采样模式。在该模式下,能够有效地降低芯片的运行功耗。
  
四、管脚介绍


五、 初始化:

六、模块原理图
七、模块接线图简图
八、参考程序
/********************
起始信号
********************/
void IIC_Start()
{
    SDA = 1;                    //拉高数据线
    SCL = 1;                    //拉高时钟线
    Delay5us();                 //延时
    SDA = 0;                    //产生下降沿
    Delay5us();                 //延时
    SCL = 0;                    //拉低时钟线
}
/*******************
停止信号
*******************/
void IIC_Stop()
{
    SDA = 0;                    //拉低数据线
    SCL = 1;                    //拉高时钟线
    Delay5us();                 //延时
    SDA = 1;                    //产生上升沿
    Delay5us();                 //延时
}
/*****************
发送应答信号
入口参数:ack (0:ACK 1:NAK)
*****************/
void IIC_SendACK(bit ack)
{
    SDA = ack;                  //写应答信号
    SCL = 1;                    //拉高时钟线
    Delay5us();                 //延时
    SCL = 0;                    //拉低时钟线
    Delay5us();                 //延时
}
/***************
接收应答信号
***************/
bit IIC_RecvACK()
{
    SCL = 1;                    //拉高时钟线
    Delay5us();                 //延时
    CY = SDA;                   //读应答信号
    SCL = 0;                    //拉低时钟线
    Delay5us();                 //延时
    return CY;
}
/***********************
向IIC总线发送一个字节数据
***********************/
void IIC_SendByte(BYTE dat)
{
    BYTE i;
    for (i=0; i<8; i++)         //8位计数器
    {
        dat <<= 1;              //移出数据的最高位
        SDA = CY;               //送数据口
        SCL = 1;                //拉高时钟线
        Delay5us();             //延时
        SCL = 0;                //拉低时钟线
        Delay5us();             //延时
    }
    IIC_RecvACK();
}
/***********************
从IIC总线接收一个字节数据
***********************/
BYTE IIC_RecvByte()
{
    BYTE i;
    BYTE dat = 0;
    SDA = 1;                    //使能内部上拉,准备读取数据,
    for (i=0; i<8; i++)         //8位计数器
    {
        dat <<= 1;
        SCL = 1;                //拉高时钟线
        Delay5us();             //延时
        dat |= SDA;             //读数据               
        SCL = 0;                //拉低时钟线
        Delay5us();             //延时
    }
    return dat;
}
//*****************
void MMA7660_write(uchar REG_Address,uchar REG_data)
{
    IIC_Start();                  //起始信号
    IIC_SendByte(SlaveAddress);   //发送设备地址+写信号
IIC_SendByte(REG_Address);    //内部寄存器地址   
IIC_SendByte(REG_data);       //内部寄存器数据
    IIC_Stop();                   //发送停止信号
    Delay5us();                  //延时   
}
//********单字节读取*********
uchar MMA7660_read(uchar REG_Address)
{
    uchar REG_data;
    IIC_Start();                          //起始信号
    IIC_SendByte(SlaveAddress);           //发送设备地址+写信号
    IIC_SendByte(REG_Address);                   //发送存储单元地址,从0开始  
    IIC_Start();                          //起始信号
    IIC_SendByte(SlaveAddress+1);         //发送设备地址+读信号
    REG_data=IIC_RecvByte();              //读出寄存器数据
    IIC_SendACK(1);   
    IIC_Stop();                           //停止信号
    return REG_data;
}
void MMA7660_Startup(void)
{
                              
   MMA7660_write(MMA7660_MODE,0x00);             //stand mode first to modify the registers
   MMA7660_write(MMA7660_SPCNT,0);              //disable sleep count
   MMA7660_write(MMA7660_INTSU,0x84);          //enable tap and shake x detection interrupt
   MMA7660_write(MMA7660_PDET,0x75);          //enable z_axis tap detection  10101counts
   MMA7660_write(MMA7660_SR,0);              //SPS registers(samples per second)
   MMA7660_write(MMA7660_PD,0x17);          //tap/pulse debounce count registers   
   MMA7660_write(MMA7660_MODE,0x41);       //goto active mode int push_pull                             
}
九、模块说明
   
红树伟业推出的MMA7660模块,结构简单,尺寸小,不占据空间。VCC采用5V电源供电,内部有622稳压芯片,转化成3.3V供给芯片MMA7660SCLSDAIIC总线上的时钟和信号线,时钟为高时,读取数据。在上面的程序上,已经写的非常清楚了。MMA7660特点鲜明,比起MMA7361来说,数据读取速度要快,这点对于C组模型车来说是非常重要的,采集速度越快,反馈速度越快,小车才能走得直。而MMA7455MMA7660的升级版,精度更高,且有SPI通信功能,速度更快。MMA7660INT为中断引脚,当数据准备发送时候,会发出信号给MCU
模块的介绍就到此结束,下期再推出MMA7455的介绍,欢迎大家一起来讨论,关注我们红树伟业,一起学习,一起进步,你们的批评与建议,我们才能做到更好。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

评分

1

查看全部评分

4

主题

239

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2113
威望
1263
贡献
242
兑换币
20
注册时间
2011-10-15
在线时间
304 小时
2#
发表于 2012-3-31 23:04:39 | 只看该作者
好帖子
回复 支持 反对

使用道具 举报

6

主题

190

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1849

优秀会员奖章活跃会员奖章

威望
1002
贡献
495
兑换币
30
注册时间
2011-8-26
在线时间
176 小时
3#
发表于 2012-4-1 03:03:43 | 只看该作者
不错
回复 支持 反对

使用道具 举报

58

主题

1820

帖子

0

精华

跨届大侠

http://hongshuweiye.taobao.com

Rank: 10Rank: 10Rank: 10

积分
11669

资源大师奖章论坛元老奖章优秀会员奖章活跃会员奖章优秀版主奖章

QQ
威望
3175
贡献
7296
兑换币
819
注册时间
2011-1-19
在线时间
599 小时
4#
发表于 2012-4-1 19:49:48 | 只看该作者
谢谢大家对红树伟业的支持!


                                                 红树伟业------------------致力于服务师生
回复 支持 反对

使用道具 举报

21

主题

273

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2915
威望
1628
贡献
643
兑换币
264
注册时间
2012-1-15
在线时间
322 小时
5#
发表于 2012-4-3 15:07:55 | 只看该作者
停顿十秒 发表于 2012-4-1 19:49
谢谢大家对红树伟业的支持!

亲,7660精度是不是微低啊。。。。。
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

注册会员

Rank: 2

积分
35
威望
101
贡献
24
兑换币
0
注册时间
2012-5-2
在线时间
1 小时
毕业学校
cjlu&nuaa
6#
发表于 2012-5-5 15:35:52 | 只看该作者
停顿十秒 发表于 2012-4-1 19:49
谢谢大家对红树伟业的支持!

这个iic可以与5v单片机通信吗,我用了能行,会烧坏芯片吗?


回复 支持 反对

使用道具 举报

1

主题

258

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2019
威望
967
贡献
556
兑换币
123
注册时间
2012-2-9
在线时间
248 小时
7#
发表于 2012-7-6 20:10:14 | 只看该作者
先顶一个,比赛好像用的是模拟的加速度传感器吧??
回复 支持 反对

使用道具 举报

0

主题

27

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
222
威望
121
贡献
55
兑换币
72
注册时间
2013-1-12
在线时间
23 小时
毕业学校
安科院
8#
发表于 2013-8-12 22:07:00 | 只看该作者
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
237
威望
137
贡献
66
兑换币
65
注册时间
2013-11-8
在线时间
17 小时
毕业学校
东华大学
9#
发表于 2015-1-20 20:29:47 | 只看该作者
赞一个,这个太棒了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-9-21 13:54 , Processed in 0.121892 second(s), 37 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表