搜索
bottom↓
回复: 38

MMA7361加速度传感器是如何测量角度的

[复制链接]

出0入0汤圆

发表于 2012-8-8 08:56:13 | 显示全部楼层 |阅读模式
MMA7361加速度传感器是如何测量角度的呢,哪位用过m16做过关于MMA7361的大神帮忙解释一下

出0入0汤圆

 楼主| 发表于 2012-8-8 10:13:55 | 显示全部楼层
它的self——test引脚如何连接

出0入0汤圆

发表于 2012-8-8 10:44:48 | 显示全部楼层
这个做过,但是角度转换不是很好,抖动很大,而且到72读后直接90度,不太准,高手赐教

出0入0汤圆

发表于 2012-8-8 11:08:34 | 显示全部楼层
看资料啊,一些数字加速度传感器,测试角度一般都不是很精细。分辨率比较差。

出0入0汤圆

 楼主| 发表于 2012-8-8 19:50:29 | 显示全部楼层
snail_dongbin 发表于 2012-8-8 10:44
这个做过,但是角度转换不是很好,抖动很大,而且到72读后直接90度,不太准,高手赐教 ...

请问你在做的时候self-test引脚是怎么连接的,我的角度显示一直不稳,一直再跳

出0入0汤圆

 楼主| 发表于 2012-8-8 20:25:49 | 显示全部楼层
Hunter 发表于 2012-8-8 11:08
看资料啊,一些数字加速度传感器,测试角度一般都不是很精细。分辨率比较差。 ...

资料好多地方看不懂,能不能指点一下,是不是连上VCC和GND,直接就可以在X.Y.Z轴取信号啊?

出0入0汤圆

 楼主| 发表于 2012-8-9 16:06:18 | 显示全部楼层
自己解释一下吧,sleep引脚没有接,

出0入0汤圆

发表于 2012-8-9 16:48:51 | 显示全部楼层
大角度不是很准,我做的±80°还可以~

本帖子中包含更多资源

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

x

出0入0汤圆

 楼主| 发表于 2012-8-10 19:19:34 | 显示全部楼层
irobot07 发表于 2012-8-9 16:48
大角度不是很准,我做的±80°还可以~

sleep引脚接+5v,会出现什么状况,我的x,y,z 三端的输出电压从1.1~3.5v了。不会把芯片烧了吧?

出0入0汤圆

发表于 2012-8-10 19:24:08 | 显示全部楼层
g senor角度测量!mark!

出0入0汤圆

发表于 2012-8-10 19:25:21 | 显示全部楼层
不难,我做过。;

出0入0汤圆

 楼主| 发表于 2012-8-10 19:44:25 | 显示全部楼层
xuwuyang 发表于 2012-8-10 19:24
g senor角度测量!mark!

不是GS的问题

出0入0汤圆

 楼主| 发表于 2012-8-10 19:47:42 | 显示全部楼层
huzhiyang 发表于 2012-8-10 19:25
不难,我做过。;

那输出电压过高是怎么回事,一开始好好的,当SLEEP引脚接了一下+5V发现芯片发热,马上拔了下来,然后电压值和电压变化范围都增大了,有没有可能是芯片出了什么问题

出0入0汤圆

发表于 2012-8-10 19:56:25 | 显示全部楼层
pine222 发表于 2012-8-10 19:47
那输出电压过高是怎么回事,一开始好好的,当SLEEP引脚接了一下+5V发现芯片发热,马上拔了下来,然后电压 ...

我记得应该是模拟量输出吧。。你的是数字量?

出0入0汤圆

发表于 2012-8-10 19:59:18 | 显示全部楼层
huzhiyang 发表于 2012-8-10 19:56
我记得应该是模拟量输出吧。。你的是数字量?

模拟量输出,首先第一个问题:你的电源要稳定在5V,第二个你的MCU跟传感器共地。。

出0入0汤圆

 楼主| 发表于 2012-8-10 20:08:35 | 显示全部楼层
错了,原来是单片机参考电压的问题

出0入0汤圆

 楼主| 发表于 2012-8-10 21:10:16 | 显示全部楼层
huzhiyang 发表于 2012-8-10 19:59
模拟量输出,首先第一个问题:你的电源要稳定在5V,第二个你的MCU跟传感器共地。。 ...

是模拟量,后面用的M16的ad,现在好了,不过误差比较大,在2度左右

出0入0汤圆

发表于 2012-8-11 09:35:08 | 显示全部楼层
pine222 发表于 2012-8-10 21:10
是模拟量,后面用的M16的ad,现在好了,不过误差比较大,在2度左右

那你可以软件补偿一下。。。简单的分布P一下,。。或者整体PI。。就没问题了

出0入0汤圆

 楼主| 发表于 2012-8-11 21:44:48 | 显示全部楼层
huzhiyang 发表于 2012-8-11 09:35
那你可以软件补偿一下。。。简单的分布P一下,。。或者整体PI。。就没问题了 ...

它是在2度的范围内一直跳。稳不住

出0入0汤圆

发表于 2012-8-11 21:48:51 | 显示全部楼层
pine222 发表于 2012-8-11 21:44
它是在2度的范围内一直跳。稳不住

那可能就是硬件的问题

出0入0汤圆

发表于 2012-8-11 22:23:37 | 显示全部楼层
以前做过,感觉还行,不过因为项目需要只测了+-30度的角度变化,经过了数字滤波,稳定在0.1度左右,至于精度嘛,没设备测试

出0入0汤圆

发表于 2012-8-15 10:51:09 | 显示全部楼层
请问,这个芯片可以测车轮转角吗

出0入0汤圆

 楼主| 发表于 2012-8-25 10:57:57 | 显示全部楼层
caicyan 发表于 2012-8-15 10:51
请问,这个芯片可以测车轮转角吗

不知道诶,没见过

出0入0汤圆

发表于 2012-8-27 19:45:47 | 显示全部楼层
可不可以用ENC-03和7260测出小车的横摆角速度,然后推出转角吗,

出0入0汤圆

发表于 2012-8-27 19:56:31 | 显示全部楼层
这个传感器输出的不是 数字量么 。。。    三角函数一算就出来了啊                                                                              

出0入0汤圆

 楼主| 发表于 2012-8-28 10:18:29 | 显示全部楼层
trent5145 发表于 2012-8-11 22:23
以前做过,感觉还行,不过因为项目需要只测了+-30度的角度变化,经过了数字滤波,稳定在0.1度左右,至于精 ...

数字滤波很管用,谢谢了
头像被屏蔽

出0入0汤圆

发表于 2012-9-6 11:30:22 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

出0入0汤圆

发表于 2012-10-31 21:42:45 | 显示全部楼层
irobot07 发表于 2012-8-9 16:48
大角度不是很准,我做的±80°还可以~

请问能把角度计算部分代码发给我参考一下吗?
最近在调,但是一直没有弄明白怎么通过传感器输出计算出角度。

出0入0汤圆

发表于 2012-11-7 11:52:45 | 显示全部楼层
irobot07 发表于 2012-8-9 16:48
大角度不是很准,我做的±80°还可以~

潜水久了,不能发消息,直接回帖了
谢谢了。邮箱:cq19900608@163.com

出0入0汤圆

发表于 2012-12-10 23:29:50 | 显示全部楼层

出0入0汤圆

发表于 2013-1-9 00:48:17 | 显示全部楼层
楼主,小弟现在在做这个,但小弟菜鸟一个,资料比较难找,,可不可以共享一下资料,及你的实验原理图或者程序啊,,小弟邮箱:seeyou2013@qq.com,或你开源一下呗呵呵呵

出0入0汤圆

发表于 2013-1-12 10:25:29 | 显示全部楼层
irobot07 发表于 2012-8-9 16:48
大角度不是很准,我做的±80°还可以~

你好,小弟最近也在做MMA7361的实验,,请问mma7361的self-test管脚,与0g-test管脚,我看你的电路图是悬空了吗。,,这样是对的吗,对实验有没有影响啊,,小弟菜鸟,,看英文pdf慎得慌!!!

出0入0汤圆

发表于 2013-1-12 10:26:41 | 显示全部楼层
irobot07 发表于 2012-8-9 16:48
大角度不是很准,我做的±80°还可以~

你好,小弟最近也在做MMA7361的实验,,请问mma7361的self-test管脚,与0g-detect管脚,我看你的电路图是悬空了吗。,,这样是对的吗,对实验有没有影响啊,,小弟菜鸟,,看英文pdf慎得慌!!!

出0入0汤圆

发表于 2013-1-12 16:30:57 | 显示全部楼层
seeyou2013 发表于 2013-1-12 10:26
你好,小弟最近也在做MMA7361的实验,,请问mma7361的self-test管脚,与0g-detect管脚,我看你的电路图是 ...

悬空没问题~

出0入0汤圆

 楼主| 发表于 2013-1-14 20:28:53 | 显示全部楼层
seeyou2013 发表于 2013-1-12 10:25
你好,小弟最近也在做MMA7361的实验,,请问mma7361的self-test管脚,与0g-test管脚,我看你的电路图是悬 ...

//-------------------------------------------------------------------
// MMA7361 Demo code, show the 3 axis date through UART periodically
// Hardware connection:        X_out           PC2
//                        Y_out                PC1
//                        Z_out                PC0
//                        MMA7361_En        PC3
//                        UART_Tx         PD1
// Software UART baudrate 115200 when main frequency is 4M
//-------------------------------------------------------------------
                                                                                               
#include "avr/io.h"
//#include "inAVR.h"
#include "stdio.h"
#include "stdbool.h"

#define Max_Axis        3
#define X_Channel        0        //PC2
#define Y_Channel       1        //PC1
#define Z_Channel        2        //PC0
#define MMA7361_EN        0x08        //PC3

const unsigned char Channel_Tbl[Max_Axis]={0x42,0x41,0x40};     //Z,Y,X
const unsigned char Axis_Name[Max_Axis]={'X','Y','Z'};
unsigned char Temp, Temp1, ADC_Done,ShowDebug_Cnt;              //Temporary saving cells
unsigned int Axis_Data[Max_Axis];
unsigned long SumReg = 0;                                        //Storage variable
static char        SampCnt;                                        //ADC samples counter

#include        "functions.c"

int main(void)
{
  unsigned char i;
  IO_Ports_Init();                                //Initialize IO ports
  Timers_Init();                                //Initialize timers
  ADC_Init();                                        //Initialize ADC
  PRR = 0x82;                                   //Reduce consumption 86 (don't stop SPI)
  CLKPR = 0x80;                                        //Increase Fcpu
  CLKPR = 0x00;
  TCCR2B = 0x06;

  __disable_interrupt();
  __watchdog_reset();
    WDTCSR = 0x18;                                //Enable watchdog, timeout 256ms
    WDTCSR = 0x0D;
  __enable_interrupt();                                //Enable interrupts
  
  MMA7361_Init();
  while(1)
  {
    __watchdog_reset();                                //Reset watchdog timer
      
    if(ShowDebug_Cnt==0)                                                       
    {
            ShowDebug_Cnt=30;//13;                                  //Get data periodically
            for(i=0;i<Max_Axis;i++)                                        //Get Axis data
                          Axis_Data=Get_ADC(i,10);
                  for(i=0;i<Max_Axis;i++)                                //Show Axis data through UART
                  {
                    SW_UART_Tx(Axis_Name);
                          Put_Axis(Axis_Data);
                    SW_UART_Tx(' ');
                  }
            SW_UART_Tx(' ');                                        //Next Line
            SW_UART_Tx(0x0d);
          }
  }
  
  
}

//SIGNAL(SIG_OVERFLOW2)
#pragma vector=TIMER2_OVF_vect

__interrupt void TMR2irq( void )

{
  if(ShowDebug_Cnt!=0)
          ShowDebug_Cnt--;
}

//SIGNAL(SIG_ADC)
#pragma vector=ADC_vect

__interrupt void ADCirq( void )
{
  SumReg += ADC;                                                                 //Add result to common sum
  if(--SampCnt == 0)                                                                //Check number of samples
  {
        ADC_Done=1;                                                                //Measuring is complete
        ADCSRA = 0x80;                                                                //Stop ADC
  }
  else
  {
        ADCSRA |= 0x40;                                                                //Start next ADC cycle
  }
}

//SIGNAL(__vector_default)
//#pragma vector=default

出0入0汤圆

发表于 2013-1-15 09:36:42 | 显示全部楼层
pine222 发表于 2013-1-14 20:28
//-------------------------------------------------------------------
// MMA7361 Demo code, show t ...

这是你写的程序嘛,,谢谢啦

出0入0汤圆

发表于 2013-7-24 14:09:23 | 显示全部楼层
seeyou2013 发表于 2013-1-15 09:36
这是你写的程序嘛,,谢谢啦

有原理图和资料吗

出0入0汤圆

发表于 2013-9-14 12:37:26 | 显示全部楼层
请教一下,能否发份资料,参考程序,谢谢了,邮箱:1766558466@qq.com

出0入0汤圆

发表于 2014-8-5 13:52:06 | 显示全部楼层
能否说明一下采样到的AD值是怎么转化成角度的算法,谢谢!
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-6 10:22

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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