FastBond智能建筑之倾角测量
智能建筑方向的水平倾角测量。代码中使用反正切函数,实现将xy轴的加速度数值,与z轴数值反正切,得到xy方向的倾斜角度。
标签
智能建筑
倾角测量
反切函数
xingxingli
更新2021-12-17
826

项目介绍

本次我所做项目是参加硬禾和得捷发起的Fastbond活动中智能建筑方向的水平倾角测量,主要是用三轴加速度传感器倾斜一定角度,在串口上同步倾斜的角度。

水平仪常用在机械行业和仪表制造中,主要用于测量相对于水平位置的倾斜角、机床类设备导轨的平面度和直线度、设备安装的水平位置和垂直位置等。

 

倾角传感器的基本原理

FmcKEZabNbS_Ro9h3T8rBGtLTd2D

倾角传感器可以用来测量相对于水平面的倾角变化量。理论基础就是牛顿第二定律,根据基本的物理原理,在一个系统内部,速度是无法测量的,但却可以测量其加速度。如果初速度已知,就可以通过积分计算出线速度,进而可以计算出直线位移。所以它其实是运用惯性原理的一种加速度传感器。

当倾角传感器静止时也就是侧面和垂直方向没有加速度作用,那么作用在它上面的只有重力加速度。重力垂直轴与加速度传感器灵敏轴之间的夹角就是倾斜角了。

 

设计思路

本次使用的是ADI的ADXL345三轴加速度传感器,它以重力作为输入矢量来决定物体在空间的方向。当重力与其敏感轴垂直时,它对倾斜最敏感,在该方位上其对倾角的灵敏度最高。当敏感轴与重力平行时,每倾斜1 °所引起输出加速度的变化被忽略。当加速度计敏感轴与重力垂直时,每倾斜1 °所引起输出加速度的变化约为17. 5mgn ,但在45°时,每倾斜1 °所引起输出加速度的变化仅为12. 5mgn ,而且,分辨力降低。表1为X, Y轴在铅垂面内倾斜±90 °时,X, Y 轴的输出。

Fo0QKRNgbfcIu3xFs_zKgSVYd5WQ

ADXL345是一款小而薄的超低功耗3轴加速度计,分辨率高(13位),测量范围达±16 g。数字输出数据为16位二进制补码格式,可通过SPI(3线或4线)或I2C数字接口访问。ADXL345非常适合移动设备应用。它可以在倾斜检测应用中测量静态重力加速度,还可以测量运动或冲击导致的动态加速度。其高分辨率(3.9 mg/LSB),能够测量不到1.0°的倾斜角度变化。

该器件提供多种特殊检测功能。活动和非活动检测功能通过比较任意轴上的加速度与用户设置的阈值来检测有无运动发生。敲击检测功能可以检测任意方向的单振和双振动作。自由落体检测功能可以检测器件是否正在掉落。这些功能可以独立映射到两个中断输出引脚中的一个。正在申请专利的集成式存储器管理系统采用一个32级先进先出(FIFO)缓冲器,可用于存储数据,从而将主机处理器负荷降至最低,并降低整体系统功耗。

我这次用的是美信的控制器MAX32660开发套件,是一款超低功耗、性价比突出、集成度非常高的32位控制器。芯片封装非常小,4mm x 4mm 的TQFN已经是这个系列里最大封装,非常适合电池供电或是无线传感器的应用。

MAX32660采用了带浮点运算功能的Cortex-M4内核,最大主频96MHz, 带256KB Flash和96KB SRAM,性能很强劲,常用于可穿戴医疗设备,运动手表等。

 

关键代码

代码中使用反正切函数,实现将xy轴的加速度数值,与z轴数值反正切,得到xy方向的倾斜角度。

int main()
{
   int16_t ACC_345[3]={0};
   float ACC_345_F[3]={0};

   float ACC_f[3];
   

   UART_Init(ConsoleUART1, &console_uart_cfg1, &console_uart_sys_cfg1);
 
  SPI_Init(SPI0A,3,5000000);
      
   ADXL345_Init();


    while(1)
   {
     ADXL345RegisterRead6(ACC_345);

     ACC_345_F[0] = ACC_345[0]*16.0f/4096;
     ACC_345_F[1] = ACC_345[1]*16.0f/4096;
     ACC_345_F[2] = ACC_345[2]*16.0f/4096;  
     
     ACC_f[0] = ACC_f[0]*0.9 + ACC_345_F[0]*0.1;
     ACC_f[1] = ACC_f[1]*0.9 + ACC_345_F[1]*0.1;
     ACC_f[2] = ACC_f[2]*0.9 + ACC_345_F[2]*0.1; 
  
      printf("x:%4.1f y:%4.1f\n \n",57*atan2(ACC_f[0],-ACC_f[2]),57*atan2(ACC_f[1],-ACC_f[2]),ACC_f[2]);
   }

}  

 

项目结果展示

这个便是我搭建好的电路,接下来看下现象:

Fn-dzb6FILvyZ-C3fqsHTjH7v_bB

上电之后,在电脑上打开串口,板子倾斜下,可以看到串口上有数据显示,正是倾斜的角度,这样能清楚的看到倾斜角度测量。

FiwdzdV7wWPP8MZp2sk_18A6QQCr

 

心得体会

赶在截止时间前提交了项目,头次接触这样的项目,花费了些时间。这次调试过程中角度显示总是不准确,好在在硬禾老师的帮助下更正了,感谢硬禾所有老师的帮助,也感谢这个活动,从发现问题到解决问题都是一步步成长,希望接下来多多参加这样的活动。

 

附件下载
ADXL345_SPI代码.zip
团队介绍
初学者,希望通过硬禾的活动提升自己。
评论
0 / 100
查看更多
目录
硬禾服务号
关注最新动态
0512-67862536
info@eetree.cn
江苏省苏州市苏州工业园区新平街388号腾飞创新园A2幢815室
苏州硬禾信息科技有限公司
Copyright © 2023 苏州硬禾信息科技有限公司 All Rights Reserved 苏ICP备19040198号