ADXL345传感器测量三轴加速度/倾斜角

  • 一、本例程实现功能
  • 二、基本概念
  • 三、 传感器参数配置描述
  • 四、接线图
  • 六、完整代码
  • 七、代码运行结果
  • 八、测量倾斜角
  • 九、ADXL345传感器的低功耗休眠及唤醒功能

一、本例程实现功能

通过ADXL345三轴加速度传感器模块测量传感器自身在自然界中X、Y、Z三个轴向的加速度,开发者可以利用这三个加速度值计算传感器自身相对于自然界中各个轴向的倾斜角。

二、基本概念

通过调用Core提供的库函数可以获得以传感器自身为坐标中心的XYZ三轴加速度,单位为mg(1g=1000mg,1g= 9.80665 m/s2),测量范围为-16000mg~16000mg。

ADXL345传感器芯片的三轴加速度测量轴向定义如下图:

下图举例了ADXL345传感器以各种不同方式静置时传感器的理想输出值(实际中由于器件偏差,尤其是Z轴很难保证输出纯正的±1g):

三、 传感器参数配置描述

通过调用Core提供的库函数会自动将ADXL345传感器的ODR(输出频率)设置为100Hz,即您可以在1秒内从传感器最多读取100组三轴数据。建议每次读取的时间间隔不要小于10毫秒,可以根据您的应用需求适当延长这个间隔。

另外,三轴的每个轴测量范围均固定为-16000mg~16000mg。

四、接线图

六、完整代码

--配置USB以虚拟串口模式工作,这样调用print()函数就会在电脑串口终端打印输出
LIB_UsbConfig("CDC")
--配置ADXL345开始工作,占用IIc0接口,三轴加速度测量结果输出频率默认100Hz,测量范围默认+-16000mg
LIB_ADXL345Config("IIC0")
--开始大循环
while(GC(1) == true)
do--每隔200ms查询一次传感器是否出数。注意:最低可以每隔10ms查询一次LIB_DelayMs(200)flag, acc_x, acc_y, acc_z = LIB_ADXL345GetAccXYZ()if flag == 1 then--打印三轴加速度,单位mgprint(string.format("acc_x:%dmg,acc_y:%dmg,acc_z:%dmg",acc_x,acc_y,acc_z))end
end

七、代码运行结果





通过上面几种测试情况可以发现ADXL345这颗传感器在Z轴的上的数据表现不是很好,不管以什么方向摆放都会出现100~200mg的固定偏差。事实上网上已有大量的工程师遇到相同问题,但是不管是在各种论坛还是芯片原厂的论坛上都没有相应的解释及解决方案。所以我们也不要完全迷信芯片厂家的产品就%100的OK,再大的半导体厂家研发人员水平也是参差不齐的,开发出的产品也是需要经历一代一代的小白鼠用户的打磨才能逐渐完善的,尤其是传感器类的产品,开发者一定不要指望厂家能够完全保证出厂产品的一致性和准确性。所以需要我们在开发的过程中躲开它的一些不足之处,只要能解决我们的需求即可,比如我们可以用如下方式来解决:

(1)校准:在传感器放在水平面静置时,采集一定数量的值,求平均后作为校准偏移量保存起来,之后可以 在每次的结果中减去这个偏移量。

(2)既然Z轴的偏移太大,我们就只用它的相对变化量,事实上很多运动算法更多关注的只是加速度的相对 变化量,而初始偏移值的大小对算法的结果影响也不是太大(比如振动的判断)。

八、测量倾斜角

方法1:
该方法计算方式比较简单,适合于判断静态情况下(传感器只受重力加速度g)传感器相对于实际空间中的X、Y、Z轴的角度

方法2:
如果您需要更高精度的倾斜角度计算,可以参考ADXL345官方提供的文档来计算倾斜角,这里面讲的会稍微复杂一些,里面会考虑到除重力之外的其他力对倾角计算的影响。

倾角计算时需要注意的问题
(1)ADXL345的Z轴在不受外力情况下并不是+g或-g,而是有一定的偏移,这个需要通过校准或者您在计算时 进行相应的考虑。其他轴虽然偏移不大,但是如果您对精度要求高的话也需要校准。

(2)尽量不要用Z轴来计算倾角,可以调整传感器的安装位置,通过X轴和Y轴来测量倾斜角会更可行一些。

九、ADXL345传感器的低功耗休眠及唤醒功能

如果您的项目中需要利用三轴传感器根据外部的受力情况来决定系统是休眠还是唤醒工作,可以参看ADXL345三轴传感器的休眠及唤醒功能这篇文章。

更多详情请参看 shineblink.com官网链接

shineblink ADXL345传感器测量三轴加速度/倾斜角相关推荐

  1. ADI Blackfin DSP处理器-BF533的开发详解58:DSP控制ADXL345三轴加速度传感器的应用(含源码)

    硬件准备 ADSP-EDU-BF533:BF533开发板 AD-HP530ICE:ADI DSP仿真器 软件准备 Visual DSP++软件 硬件链接 MEMS三轴加速度传感器 我做了一个三轴加速度 ...

  2. ADI Blackfin DSP处理器-BF533的开发详解60:DSP控制ADXL345三轴加速度传感器-电子水平仪(含源码)

    硬件准备 ADSP-EDU-BF533:BF533开发板 AD-HP530ICE:ADI DSP仿真器 软件准备 Visual DSP++软件 硬件链接 MEMS三轴加速度传感器 我做了一个三轴加速度 ...

  3. ADI Blackfin DSP处理器-BF533的开发详解61:DSP控制ADXL345三轴加速度传感器-LCD(含源码)

    硬件准备 ADSP-EDU-BF533:BF533开发板 AD-HP530ICE:ADI DSP仿真器 软件准备 Visual DSP++软件 硬件链接 MEMS三轴加速度传感器 我做了一个三轴加速度 ...

  4. ADI Blackfin DSP处理器-BF533的开发详解62:DSP控制ADXL345三轴加速度传感器-贪食蛇游戏(含源码)

    硬件准备 ADSP-EDU-BF533:BF533开发板 AD-HP530ICE:ADI DSP仿真器 软件准备 Visual DSP++软件 硬件链接 MEMS三轴加速度传感器 我做了一个三轴加速度 ...

  5. 溢出检测单符号位法_设计经验:如何用三轴加速度传感器检测倾斜角?

    本文介绍了三轴加速度传感器的特性,并通过一个典型的应用--检测倾斜角--对单轴.双轴和三轴加速度传感器进行了比较,并给出了选型建议. 在前两篇文章中,我们介绍了单/双轴加速度传感器在来检测倾斜角上的应 ...

  6. ADI Blackfin DSP处理器-BF533的开发详解59:DSP控制ADXL345三轴加速度传感器的应用2(含源码)

    硬件准备 ADSP-EDU-BF533:BF533开发板 AD-HP530ICE:ADI DSP仿真器 软件准备 Visual DSP++软件 硬件链接 MEMS三轴加速度传感器 我做了一个三轴加速度 ...

  7. STC8H开发(六): SPI驱动ADXL345三轴加速度检测模块

    目录 STC8H开发(一): 在Keil5中配置和使用FwLib_STC8封装库(图文详解) STC8H开发(二): 在Linux VSCode中配置和使用FwLib_STC8封装库(图文详解) ST ...

  8. 三轴加速度传感器和六轴惯性传感器_美泰产品推介MSV3100A三轴加速度传感器

    1 产品介绍 MSV3100A三轴加速度传感器 MSV3100A是一款三轴向模拟输出的MEMS加速度传感器.传感器由三个相互正交的微加速度计和信号变换电路组成.能够承受高达10,000g的冲击载荷和恒 ...

  9. 三轴加速度传感器BMA250解读

    BMA250凭借其超小的封装,低功耗越来越多的产品在这个芯片作为辅助,比如GPS定位时防止静止时定位信息漂移,可以借助其判断物体是静止还是运动.还有实现计步功能.角度测试等------ 经过几天对BM ...

最新文章

  1. 【杂谈】GAN最成功的3个商业化落地领域,你是否了解过?
  2. 并发库应用之三 线程池与定时器应用
  3. 基于Linux系统中进程调度分析
  4. python实现语音播放_用Python实现语音播报
  5. 分页池内存持续增长_鸿蒙内核源码分析(从进程/线程视角看内存)
  6. Airflow 中文文档:命令行界面
  7. 第五:RobotFramework测试开发环境部署
  8. java map集合使用_JAVA中Map集合的使用举例
  9. 干货来袭丨资产可用性真的是终极目标吗?
  10. 网站SEO诊断优化有那些不利操作
  11. python做估值模型_理解债券估值中的摊销/摊余成本,利用EXCEL+Python估值建模
  12. Typescript中定义接口(interface)
  13. [Unity]PureMVC框架解读(上)
  14. 血色冲锋队洛谷P1332(福建省历届夏令营)
  15. Cascade Classification
  16. ldpc译码讲解_LDPC码及其译码实现
  17. NVMe协议详解(一)
  18. centos部署rocketMQ,172.xx.xx.xx:10911,failed错误
  19. jQuery 鼠标指针 悬浮在文字上提示信息
  20. c语言三子棋详解!!! (电脑智能下棋)(附上完整代码)

热门文章

  1. 用matlab怎么画出y=sin(t)的导函数图像?用diff为什么一阶导函数会缩小100倍,二阶导函数会缩小1000倍。求大神指教
  2. 网站绑定域名后不能用IP直接访问了?
  3. 我最喜欢的计算机专业课作文,我喜欢电脑课作文
  4. kettle的数据库连接
  5. 金山云云服务器访问控制和操作审计
  6. 【无标题】东城搬家公司大件家具如何搬家
  7. 新手小白 linux 常用命令笔记
  8. 天玑1300和骁龙870哪个好 天玑1300和高通骁龙870差距
  9. makefile.in
  10. 精选| 2020年5月R新包推荐(第42期)