飞思卡尔 加速度计MMA7660红树伟业.docx
- 文档编号:10965093
- 上传时间:2023-02-24
- 格式:DOCX
- 页数:13
- 大小:1.29MB
飞思卡尔 加速度计MMA7660红树伟业.docx
《飞思卡尔 加速度计MMA7660红树伟业.docx》由会员分享,可在线阅读,更多相关《飞思卡尔 加速度计MMA7660红树伟业.docx(13页珍藏版)》请在冰豆网上搜索。
飞思卡尔加速度计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坐标的时候,最好采用的就是MultipleByteRead的方式,这样才能保证XYZ三个坐标是同一次采样的结果。
如果分开读取,则有可能读取到不同组的采样数据。
二、工作原理:
MMA7660是一种电容式g-sensor. 电容式g-sensor大多为欧美厂商, 其技术是在wafer的表面做出梳状结构, 当产生动作时,由侦测电容差来判断变形量, 反推出加速度的值.
与压阻式不同的是, 电容式很难在同一个结构中同时感测到三个轴(X,Y,Z)的变化, 通常都是X,Y和Z分开来的,(这也就是为什么当板子水平放置时,无论如何改变X,Y的位置,都不会有中断产生,因为这时它只能检测Z轴的变化,X,Y的变化它检测不到, 只有当我们将板子倾斜一个角度后才能检测X,Y的变化). 而压阻式在同一个结构就能感测到三个轴的变化.
MMA7660加速度传感器主要由两部分组成:
G-单元和信号调理ASIC电路(见上图)。
G-单元是机械结构,它是用半导体制作技术、有多晶硅半导体材料制成,并且是密封的,图中的积分、放大、滤波、温度补偿、控制逻辑和EEPROM相关电路、振荡器、始终生成器、以及自检等电路组成,完成G-单元测量的电容值到电压输出的转换
G-单元的等效电路如上图所示,它相当于在两个固定的电容板中间放置一个可移动的极板。
当有加速度作用于系统时,中间极板偏离静止位置。
用中间极板偏离知之为止的距离测量加速度,中间极板与其中一个固定极板的距离增加,同时与另一个固定极板的距离减少,且距离变化值相等。
距离的变化使得两个极板间的电容改变(如图)。
信号调理ASIC电路将G-单元测量的两个电容值转换成加速度值,并使加速度与输出电压成正比。
当测量完毕后,在INT1/INT2输出高电平,用户可以通过IIC和SPI接口读取MMA7660内部的寄存器的值,判断运动的方向。
自检单元用于保证G-单元和加速计芯片中的电路工作正常,输出电压成比例。
三、工作模式:
MMA7660主要有三种工作模式.(MMA7660有10个寄存器可供设置其工作模式,采样速率,中断使能等。
)
1). Standby(待机)模式
此时只有I2C工作,接收主机来的指令. 该模式用来设置寄存器. 也就是说, 要想改变MMA7660的任何一个寄存器的值,必须先进入Standby模式. 设置完成后再进入Active或Auto-Sleep模式.
2).ActiveandAuto-Sleep(活动并且Auto-Sleep) 模式
MMA7660的工作状态分两种, 一种是高频度采样, 一种是低频度采样. 为什么这样分呢, 为了节省功耗,但是在活动时又保持足够的灵敏度.
所以说MMA7660的Active模式其实又分两种模式,一种是纯粹的Active模式, 即进了Active模式后一直保持高的采样频率,不变. 还有一种是Active&Auto-Sleep模式, 就是说系统激活后先进入高频率采样,经过一定时间后,如果没检测到有活动,它就进入低频率采样,所以就叫做Auto-Sleep,它不是睡眠模式, 它只是降低采样频率.
MMA7660有两种工作模式,一个为Auto-Sleep,即Running模式。
在该模式下,传感器可以配置较高的采样率。
3).Auto-Wake(自动唤醒) 模式
Auto-Sleep后就进入低频率采样模式,这种模式就叫做Auto-Wake摸式, 即自动唤醒模式.值得注意的是,该模式并非真正的休眠模式,而只是低速采样模式。
在该模式下,能够有效地降低芯片的运行功耗。
四、管脚介绍
四、 初始化:
六、模块原理图
七、模块接线图简图
八、参考程序
/**************************************
起始信号
**************************************/
voidIIC_Start()
{
SDA=1;//拉高数据线
SCL=1;//拉高时钟线
Delay5us();//延时
SDA=0;//产生下降沿
Delay5us();//延时
SCL=0;//拉低时钟线
}
/**************************************
停止信号
**************************************/
voidIIC_Stop()
{
SDA=0;//拉低数据线
SCL=1;//拉高时钟线
Delay5us();//延时
SDA=1;//产生上升沿
Delay5us();//延时
}
/**************************************
发送应答信号
入口参数:
ack(0:
ACK1:
NAK)
**************************************/
voidIIC_SendACK(bitack)
{
SDA=ack;//写应答信号
SCL=1;//拉高时钟线
Delay5us();//延时
SCL=0;//拉低时钟线
Delay5us();//延时
}
/**************************************
接收应答信号
**************************************/
bitIIC_RecvACK()
{
SCL=1;//拉高时钟线
Delay5us();//延时
CY=SDA;//读应答信号
SCL=0;//拉低时钟线
Delay5us();//延时
returnCY;
}
/**************************************
向IIC总线发送一个字节数据
**************************************/
voidIIC_SendByte(BYTEdat)
{
BYTEi;
for(i=0;i<8;i++)//8位计数器
{
dat<<=1;//移出数据的最高位
SDA=CY;//送数据口
SCL=1;//拉高时钟线
Delay5us();//延时
SCL=0;//拉低时钟线
Delay5us();//延时
}
IIC_RecvACK();
}
/**************************************
从IIC总线接收一个字节数据
**************************************/
BYTEIIC_RecvByte()
{
BYTEi;
BYTEdat=0;
SDA=1;//使能内部上拉,准备读取数据,
for(i=0;i<8;i++)//8位计数器
{
dat<<=1;
SCL=1;//拉高时钟线
Delay5us();//延时
dat|=SDA;//读数据
SCL=0;//拉低时钟线
Delay5us();//延时
}
returndat;
}
//*********************************
voidMMA7660_write(ucharREG_Address,ucharREG_data)
{
IIC_Start();//起始信号
IIC_SendByte(SlaveAddress);//发送设备地址+写信号
IIC_SendByte(REG_Address);//内部寄存器地址
IIC_SendByte(REG_data);//内部寄存器数据
IIC_Stop();//发送停止信号
Delay5us();//延时
}
//********单字节读取*****************************************
ucharMMA7660_read(ucharREG_Address)
{
ucharREG_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();//停止信号
returnREG_data;
}
voidMMA7660_Startup(void)
{
MMA7660_write(MMA7660_MODE,0x00);//standmodefirsttomodifytheregisters
MMA7660_write(MMA7660_SPCNT,0);//disablesleepcount
MMA7660_write(MMA7660_INTSU,0x84);//enabletapandshakexdetectioninterrupt
MMA7660_write(MMA7660_PDET,0x75);//enablez_axistapdetection10101counts
MMA7660_write(MMA7660_SR,0);//SPSregisters(samplespersecond)
MMA7660_write(MMA7660_PD,0x17);//tap/pulsedebouncecountregisters
MMA7660_write(MMA7660_MODE,0x41);//gotoactivemodeintpush_pull
}
九、模块说明
红树伟业推出的MMA7660模块,结构简单,尺寸小,不占据空间。
VCC采用5V电源供电,内部有622稳压芯片,转化成3.3V供给芯片MMA7660。
SCL和SDA为IIC总线上的时钟和信号线,时钟为高时,读取数据。
在上面的程序上,已经写的非常清楚了。
MMA7660特点鲜明,比起MMA7361来说,数据读取速度要快,这点对于C组模型车来说是非常重要的,采集速度越快,反馈速度越快,小车才能走得直。
而MMA7455是MMA7660的升级版,精度更高,且有SPI通信功能,速度更快。
MMA7660的INT为中断引脚,当数据准备发送时候,会发出信号给MCU。
模块的介绍就到此结束,下期再推出MMA7455的介绍,欢迎大家一起来讨论,关注我们红树伟业,一起学习,一起进步,你们的批评与建议,我们才能做到更好。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 飞思卡尔 加速度计MMA7660红树伟业 卡尔 加速度计 MMA7660 红树 伟业