OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 15200|回复: 32

ADXL345角度转换疑问

[复制链接]

5

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
60
金钱
60
注册时间
2013-1-19
在线时间
0 小时
发表于 2013-3-7 20:59:03 | 显示全部楼层 |阅读模式
 一直在学习原子哥的例程,今天看到了ADXL345,对其中的角度转换有些不明。
弧度转化为角度应该是*180/3.14的关系,但是程序中却是*1800/3.14,不知这个10倍的关系是怎么出来的呢?请大家指教~谢谢
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165536
金钱
165536
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-3-7 23:20:31 | 显示全部楼层
看代码都不看注释的,这年头是不是很流行啊?

//得到角度
//x,y,z:x,y,z方向的重力加速度分量(不需要单位,直接数值即可)
//dir:要获得的角度.0,与Z轴的角度;1,与X轴的角度;2,与Y轴的角度.
//返回值:角度值.单位0.1°.
short ADXL345_Get_Angle(float x,float y,float z,u8 dir)
{
float temp;
  float res=0;
switch(dir)
{
case 0://与自然Z轴的角度
  temp=sqrt((x*x+y*y))/z;
  res=atan(temp);
  break;
case 1://与自然X轴的角度
  temp=x/sqrt((y*y+z*z));
  res=atan(temp);
  break;
  case 2://与自然Y轴的角度
  temp=y/sqrt((x*x+z*z));
  res=atan(temp);
  break;
  }
return res*1800/3.14;
}

注意单位!!!
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

5

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
60
金钱
60
注册时间
2013-1-19
在线时间
0 小时
 楼主| 发表于 2013-3-7 23:52:36 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
为什么要以0.1°作为单位呢?用1°作为单位不是更加直观么?是截断误差和精度方面的考虑么?
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165536
金钱
165536
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-3-8 00:08:22 | 显示全部楼层
你认为呢?
回复 支持 反对

使用道具 举报

6

主题

30

帖子

0

精华

初级会员

Rank: 2

积分
74
金钱
74
注册时间
2012-2-26
在线时间
0 小时
发表于 2014-7-7 10:38:39 | 显示全部楼层
回复【4楼】正点原子:
---------------------------------
请问原子哥,我参考你的例程,静态输出是正常。但是在运动过程中,比如速度的快慢会对数据输出有影响吗?谢谢!
他山之石,可以攻玉.
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165536
金钱
165536
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-7-7 23:44:49 | 显示全部楼层
回复【5楼】内有元基:
---------------------------------
当然有影响了,速度就是受加速度影响啊...
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

14

主题

1592

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
2622
金钱
2622
注册时间
2014-7-17
在线时间
350 小时
发表于 2014-8-31 22:16:52 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
想问下原子,res变量的值是角度吗?
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165536
金钱
165536
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-9-1 00:34:56 | 显示全部楼层
回复【7楼】FantaSy_:
---------------------------------
公式这么明白还不清楚??
弧度 角度 怎么转换的?高中数学还是小学数学就教了吧?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

8

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
159
金钱
159
注册时间
2014-12-9
在线时间
18 小时
发表于 2015-1-4 12:11:28 | 显示全部楼层
x,y,z是直接在345里面读出来的吗  不用进行修改吗
回复 支持 反对

使用道具 举报

15

主题

181

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
389
金钱
389
注册时间
2014-11-8
在线时间
40 小时
发表于 2015-1-20 10:41:12 | 显示全部楼层
因为要显示小数点后面的数,所以给他乘以十倍(乘以十倍单位就是0.1度,即1度=10*0.1度),这样才可以 LCD_ShowNum(x+32,y,num%10,1,16);  //显示小数部分
Good good study , day day up...
回复 支持 反对

使用道具 举报

9

主题

44

帖子

0

精华

初级会员

Rank: 2

积分
108
金钱
108
注册时间
2014-10-29
在线时间
2 小时
发表于 2015-4-20 21:14:11 | 显示全部楼层
回复【8楼】正点原子:
---------------------------------
原子哥  我想用这个ADXL345模块 做角度传感器  要用到很多块    一块STM32能用多少块ADXL345?
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165536
金钱
165536
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-4-21 00:03:47 | 显示全部楼层
回复【11楼】忘川:
---------------------------------
2个IO就可以挂一个ADXL
有多少个IO?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

9

主题

44

帖子

0

精华

初级会员

Rank: 2

积分
108
金钱
108
注册时间
2014-10-29
在线时间
2 小时
发表于 2015-4-28 19:46:21 | 显示全部楼层
回复【12楼】正点原子:
---------------------------------
但芯片不是只提供 两I2C  I2C1: B6->SCL B7->SDA  I2C2:  B10->SCL B11->SDA   STM32F103C8T6  还是说模拟?模块的ADXL345的地址都是一样的啊  多块同一地址怎样搭在总线上?
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165536
金钱
165536
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-4-28 22:47:38 | 显示全部楼层
回复【13楼】忘川:
---------------------------------
我说的是模拟iic
硬件iic那就只有2~3个了。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

9

主题

44

帖子

0

精华

初级会员

Rank: 2

积分
108
金钱
108
注册时间
2014-10-29
在线时间
2 小时
发表于 2015-5-7 11:50:47 | 显示全部楼层
回复【14楼】正点原子:
---------------------------------
是这样的  原子哥  我手上的书Mini开发板   和一个ADXL345模块   我下载了战舰开发板的例程  介绍里说了使用了一个中断接在F11口  但我在例程里找不到这个口的定义初始化  怎样能改成在MINI开发板上用?
回复 支持 反对

使用道具 举报

9

主题

44

帖子

0

精华

初级会员

Rank: 2

积分
108
金钱
108
注册时间
2014-10-29
在线时间
2 小时
发表于 2015-5-7 12:57:29 | 显示全部楼层
回复【14楼】正点原子:
---------------------------------
ADXL345_WR_Reg(INT_ENABLE,0x00); //不使用中断  这里是不是不用ADXL345的中断?  那么为什么我模块上电3.3v  SCL->B10   SDA->B11  直接连接  读出来的数据没有变化?这是模块的电路图


回复 支持 反对

使用道具 举报

9

主题

44

帖子

0

精华

初级会员

Rank: 2

积分
108
金钱
108
注册时间
2014-10-29
在线时间
2 小时
发表于 2015-5-7 13:37:47 | 显示全部楼层
回复【14楼】正点原子:
---------------------------------
在文件里改成接地的地址就可以了   但为什么初始化模块水平平放不动  数据不是从0 0 0  开始呢?还有就是  固定好一个位置  它的数据也是有比较大的波动范围
回复 支持 反对

使用道具 举报

9

主题

44

帖子

0

精华

初级会员

Rank: 2

积分
108
金钱
108
注册时间
2014-10-29
在线时间
2 小时
发表于 2015-5-12 19:13:33 | 显示全部楼层
回复【14楼】正点原子:
-------------------------------
原子哥 求助  我使用战舰开发板的例程三轴读取ADXL345的例程  模拟串口我改成B0 B1 B6B2  B5  B7都可以  但B3 B4却读取数据不正确  或者输出全是000  其它文件里的代码没改 
[mw_shl_code=c,true]void IIC_Init(void) { GPIO_InitTypeDef GPIO_InitStructure; //RCC->APB2ENR|=1<<4;//?????????èIO PORTC?±?? RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOB, ENABLE ); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_10|GPIO_Pin_11; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP ; //???ì???? GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOB, &GPIO_InitStructure); IIC_SCL=1; IIC_SDA=1; }[/mw_shl_code]

[mw_shl_code=c,true]#define SDA_IN() {GPIOB->CRL&=0XFFFF0FFF;GPIOB->CRL|=8<<12;} #define SDA_OUT() {GPIOB->CRL&=0XFFFF0FFF;GPIOB->CRL|=3<<12;} #define IIC_SCL PBout(0) //SCL #define IIC_SDA PBout(3) //SDA #define READ_SDA PBin(3) //????SDA ///////// #define SDA_IN() {GPIOB->CRL&=0XFFF0FFFF;GPIOB->CRL|=8<<16;} #define SDA_OUT() {GPIOB->CRL&=0XFFF0FFFF;GPIOB->CRL|=3<<16;} #define IIC_SCL PBout(0) //SCL #define IIC_SDA PBout(4) //SDA #define READ_SDA PBin(4) //????SDA [/mw_shl_code]

回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165536
金钱
165536
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-5-12 22:50:35 | 显示全部楼层
PB3,PB4 先禁止JTAG。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

9

主题

44

帖子

0

精华

初级会员

Rank: 2

积分
108
金钱
108
注册时间
2014-10-29
在线时间
2 小时
发表于 2015-5-30 21:22:24 | 显示全部楼层
回复【19楼】正点原子:
---------------------------------
恩  多谢原子哥
回复 支持 反对

使用道具 举报

4

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
50
金钱
50
注册时间
2015-7-6
在线时间
0 小时
发表于 2015-12-16 10:29:57 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
我想用这款传感器测震动波形,想了解传感器输出的数据是什么?是加速度的值吗?另外原子哥有没这方面的例程,实在不信给我指个方向也好,写了很久都没效果。。。。
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165536
金钱
165536
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-12-16 23:04:21 | 显示全部楼层
回复【21楼】卢平光同志:
---------------------------------
输出是加速度值
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

4

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
50
金钱
50
注册时间
2015-7-6
在线时间
0 小时
发表于 2015-12-17 08:47:27 | 显示全部楼层
回复【22楼】正点原子:
---------------------------------
可是我用迷你版外挂adxl345模块,得到的原始数据非常离谱,校准后X,Y轴差不多正确,但是Z轴确是1000多(正常应该256左右吧),代码完全是战舰的源码,我实在是想不出问题在哪了,想哭。
回复 支持 反对

使用道具 举报

5

主题

36

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
208
金钱
208
注册时间
2015-3-14
在线时间
33 小时
发表于 2016-2-27 14:57:45 | 显示全部楼层
正点原子 发表于 2013-3-7 23:20
看代码都不看注释的,这年头是不是很流行啊?

//得到角度
//x,y,z:x,y,z方向的重力加速度分量(不需要单位, ...

原子哥你好我画了个图与Z轴的夹角 计算temp=sqrt((x*x+y*y))/z;
能理解,那为什么与X的和与Y的都变倒数了,我觉得与X的夹角应该是temp=sqrt((z*z+y*y))/x;
回复 支持 反对

使用道具 举报

4

主题

11

帖子

0

精华

初级会员

Rank: 2

积分
74
金钱
74
注册时间
2016-1-28
在线时间
9 小时
发表于 2016-2-27 18:05:51 | 显示全部楼层
正点原子 发表于 2013-3-7 23:20
看代码都不看注释的,这年头是不是很流行啊?

//得到角度
//x,y,z:x,y,z方向的重力加速度分量(不需要单位, ...

原子哥,怎么测出90°
回复 支持 反对

使用道具 举报

5

主题

36

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
208
金钱
208
注册时间
2015-3-14
在线时间
33 小时
发表于 2016-3-4 16:01:38 | 显示全部楼层
忆...殇 发表于 2016-2-27 18:05
原子哥,怎么测出90°

垂直就90度;了
回复 支持 反对

使用道具 举报

21

主题

299

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1836
金钱
1836
注册时间
2013-7-29
在线时间
278 小时
发表于 2016-3-4 16:18:49 | 显示全部楼层
ALX345可以用SPI接口,这样就可以接很多,只要有足够的引脚做CS控制脚。
回复 支持 反对

使用道具 举报

4

主题

11

帖子

0

精华

初级会员

Rank: 2

积分
74
金钱
74
注册时间
2016-1-28
在线时间
9 小时
发表于 2016-3-5 19:18:22 | 显示全部楼层
阿凯 发表于 2016-3-4 16:01
垂直就90度;了

但垂直测得不是90°
回复 支持 反对

使用道具 举报

5

主题

36

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
208
金钱
208
注册时间
2015-3-14
在线时间
33 小时
发表于 2016-3-17 09:40:03 | 显示全部楼层
忆...殇 发表于 2016-3-5 19:18
但垂直测得不是90°

达不到90么

回复 支持 反对

使用道具 举报

18

主题

94

帖子

0

精华

高级会员

Rank: 4

积分
571
金钱
571
注册时间
2016-5-30
在线时间
87 小时
发表于 2017-2-8 11:35:31 | 显示全部楼层
FantaSy_ 发表于 2014-8-31 22:16
回复【2楼】正点原子:
---------------------------------
想问下原子,res变量的值是角度吗?

角度 = 弧度 *180/3.14
回复 支持 反对

使用道具 举报

18

主题

94

帖子

0

精华

高级会员

Rank: 4

积分
571
金钱
571
注册时间
2016-5-30
在线时间
87 小时
发表于 2017-2-8 11:39:16 | 显示全部楼层
阿凯 发表于 2016-2-27 14:57
原子哥你好我画了个图与Z轴的夹角 计算temp=sqrt((x*x+y*y))/z;
能理解,那为什么与X的和与Y的都变倒数 ...

同问  哈哈
回复 支持 反对

使用道具 举报

18

主题

94

帖子

0

精华

高级会员

Rank: 4

积分
571
金钱
571
注册时间
2016-5-30
在线时间
87 小时
发表于 2017-2-8 11:48:29 | 显示全部楼层
本帖最后由 pcqboys 于 2017-2-8 19:01 编辑
FantaSy_ 发表于 2014-8-31 22:16
回复【2楼】正点原子:
---------------------------------
想问下原子,res变量的值是角度吗?

1孤度 = 180/3.14 =57.3角度
回复 支持 反对

使用道具 举报

18

主题

155

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3955
金钱
3955
注册时间
2016-7-8
在线时间
824 小时
发表于 2017-11-1 22:07:28 | 显示全部楼层
你好,请问这个例程在哪里?我找了迷你和精英开发板上都没有,能否指点一下?
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-9 02:01

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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