Randy 发表于 2012-6-7 15:00:15

arduino学习笔记41 - Arduino Uno + MMA7361三轴加速度传感器演示实验

1、简介:
三轴加速度传感器是一种可以对物体运动过程中的加速度进行测量的电子设备,典型互动应用中的加速度传感器可以用来对物体的姿态或者运动方向进行检测,比如WII游戏机和iPhone手机中的经典应用。
Arduino三轴加速度传感器采用Freescale(飞思卡尔)公司生产的高性价比微型电容式三轴加速度传感器MMA7361芯片,对于普通的互动应用来讲应该是种不错的选择,可以应用到摩托车和汽车放倒报警、遥控航模、游戏手柄、人形机器人跌倒检测、硬盘冲击保护、倾斜度测量等场合。
MMA7361采用信号调理、单极低通滤波器和温度补偿技术,提供±1.5g/6g两个量程,用户可在这2个灵敏度中选择。该器件带有低通滤波并已做0g补偿,提供休眠模式,因而是电池供电的无线数据采集的理想之选。
具有电源指示灯,方便观察工作情况;±1.5g /6g两个量程可通过开关任意切换;预留排针焊接孔,客户可自行焊接排针,可通过多彩跳线连接插到Mini面包板上进行实验。
3个PH2.0插座配合模拟传感器连接线,可轻松连接到Aduino传感器扩展板上,可制作倾角、运动、姿态相关的互动作品

2、规格:
供电电压:3.3~8V
数据接口:模拟电压输出 兼容Arduino
可选灵敏度,±1.5g/6g,通过开关选择
低功耗,工作时电流为400μA,休眠模式下为3μA
高灵敏度,在1.5g量程下为800mV/g
低通滤波器具有内部信号调理功能
设计稳定,防震能力强
模块尺寸:25x27mm

3、引脚定义俯视图

此模块和MMA7360相比,在性能和性价比上完全是可以取代的,现在的应用领域也是摒弃了MMA7660而选择了MMA7361的这个模块。4、MMA7361典型的外围连接电路图
5、在1G时MMA7361模块放置的各种位置的三轴输出数字图
8、了解一下次实验时所用到的模块:
9、Arduino 与 MMA7361硬件连接情况

10、硬件连接完成以后我们开始编译代码进行测试了。这些烧写步骤相信入门的爱好者都会的了。我们提供的代码只供您测试使用,需其他的功能请自行编写!
代码一:#include <AcceleroMMA7361.h>
AcceleroMMA7361 accelero;
int x;
int y;
int z;
void setup()
{
Serial.begin(9600);
accelero.begin(13, 12, 11, 10, A0, A1, A2);
accelero.setARefVoltage(3.3); //sets the AREF voltage to 3.3V
accelero.setSensitivity(LOW); //sets the sensitivity to +/-6G
accelero.calibrate();
}
void loop()
{
x = accelero.getXRaw();
y = accelero.getYRaw();
z = accelero.getZRaw();
Serial.print("\nx: ");
Serial.print(x);
Serial.print("\ty: ");
Serial.print(y);
Serial.print("\tz: ");
Serial.print(z);
delay(500); //(make it readable)
}代码二:void setup()
{
Serial.begin(19200); // 19200 bps
}
void loop()
{
int x,y,z;
x=analogRead(0);
y=analogRead(1);
z=analogRead(2);
Serial.print("x= ");
Serial.print(x ,DEC);
Serial.print(',');
Serial.print("y= ");
Serial.print(y ,DEC);
Serial.print(',');
Serial.print("z= ");
Serial.println(z ,DEC);
delay(100);
}结果是这样子的(示例结果仅供参考,谢谢)!

下面介绍一下电容式传感器工作原理:
  电容式传感器也常常被人们称为电容式物位计,电容式物位计的电容检测元件是根据圆筒形电容器原理进行工作的,电容器由两个绝缘的同轴圆柱极板内电极和外电极组成,在两筒之间充以介电常数为e的电解质时,两圆筒间的电容量为C=2∏eL/lnD/d,式中L为两筒相互重合部分的长度;D为外筒电极的直径;d为内筒电极的直径;e为中间介质的电介常数。在实际测量中D、d、e是基本不变的,故测得C即可知道液位的高低,这也是电容式传感器具有使用方便,结构简单和灵敏度高,价格便宜等特点的原因之一。

库文件:

弘毅 发表于 2012-6-7 15:08:24

貌似输出地是模拟信号~~~不错不知道性能和ADXL345比性能差距大不大

Randy 发表于 2012-6-7 15:26:04

弘毅 发表于 2012-6-7 15:08 static/image/common/back.gif
貌似输出地是模拟信号~~~不错不知道性能和ADXL345比性能差距大不大

我发几个东西的区别你看看,具体性能需要仔细看datasheet!



幻生幻灭 发表于 2012-6-7 19:29:43

我的三轴加速度搁置一年了...我打算至少让它再搁置半年

Randy 发表于 2012-6-7 21:26:00

幻生幻灭 发表于 2012-6-7 19:29 static/image/common/back.gif
我的三轴加速度搁置一年了...我打算至少让它再搁置半年

呵呵,我是一时起兴就玩玩,还没到具体运用呢?有时间会深入的了解的!

Lucky仔kivi 发表于 2012-7-11 21:14:21

我也刚买了,但是跳动不稳定还是什么,捉不到固定值。乱跳。求指教!

Randy 发表于 2012-7-12 08:46:58

Lucky仔kivi 发表于 2012-7-11 21:14 static/image/common/back.gif
我也刚买了,但是跳动不稳定还是什么,捉不到固定值。乱跳。求指教!

不稳定的因素很多,我能想到的有以下几种:
1、芯片本身焊接的问题。
2、连接时线的松动引起的。
3、环境的影响所致。
4、没有按照datasheet的相关操作来使用!
你可以按照这几种情况去排除,因为我在调试ADXL345和MMA7361的时候,也会出现这样的情况!

124330190 发表于 2012-7-22 10:58:06

为什么我编译后显示:AcceleroMMA7361 does not name a type

124330190 发表于 2012-7-22 11:00:07

是不是我没有那个头文件,应该怎么添加啊?

Mone 发表于 2012-7-26 11:06:58

学习了,老大的教程不错!

心素闲 发表于 2012-7-26 12:54:17

版主,我想请问几个问题
1、请问代码二为什么没有对量程,休眠的拉高拉低
2、测试程序的返回值似乎三轴加速度都为0,按说明书,如果放的方向对的话,应该有一轴的值是不同的
3、说明书上似乎有说Supply Voltage 为2.2~3.6,是否是MMA7361也有不同的型号

Randy 发表于 2012-7-26 13:36:48

124330190 发表于 2012-7-22 11:00 static/image/common/back.gif
是不是我没有那个头文件,应该怎么添加啊?

是的,你的现象就是头文件没有加进去的原因!

Randy 发表于 2012-7-26 13:46:20

心素闲 发表于 2012-7-26 12:54 static/image/common/back.gif
版主,我想请问几个问题
1、请问代码二为什么没有对量程,休眠的拉高拉低
2、测试程序的返回值似乎三轴加 ...

回答你一下,具体的需要你自己去看datasheet.
1、代码二,只是简单的读取三轴的模拟值而已,没有设置什么量程。
2、您测试的返回值没有变化,有很大可能是你的芯片焊接有问题或者是散新的芯片。一般是正常工作的话都是会有数据变化的。
3、Supply Voltage 为是2.2-3.6V是说,你只要给这个模块的供电电压在这个区间就可以安全工作了。

心素闲 发表于 2012-8-1 22:15:15

求源代码{:soso_e122:}{:soso_e122:}{:soso_e122:}

心素闲 发表于 2012-8-1 22:15:40

楼主,可以给源代码学习下吗?
页: [1] 2 3
查看完整版本: arduino学习笔记41 - Arduino Uno + MMA7361三轴加速度传感器演示实验