0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

三轴加速度计MMA8451和TS-7680开发板的应用

星星科技指导员 来源:嵌入式计算设计 作者:Michael Schmidt 2022-10-12 09:53 次阅读

本项目所用的 TS-7680 开发板搭载 MMA8451 三轴加速度计芯片Linux 支持该芯片通过轮询驱动。不幸的是,这种轮询架构严重限制了采样率。在实践中,它每秒产生20-30个样本,即使在最高的轮询速率下,与芯片能够达到的800 Hz的原始速率相比也是如此。使用像泰诺系统公司设计的定制驱动器可以实现更高的采样率。但是,对于我们的目的,低采样率就足够了。

TS-7680 上的默认磁盘区目前并未编译 MMA8451 芯片支持。虽然版本将载入日后,但该内核必须先编译并安装于主板上 TS-7680 使用手册中的说明。

注意:加速度计是电路板选项。如果您的开发板上没有加速度计,您仍然可以运行此演示。但是,您需要从 中删除或注释掉以下行:ts7680-demo-server.js

.API(“mma8451”)

如果您的内核不支持加速计,则这样做尤其重要,因为缺少某些文件将导致服务器终止。

设置加速度计

加速度计可以通过/特殊文件访问。每次读取此文件都将返回整数个事件,因此无需设置某种状态机来处理部分数据返回。但是,每个加速度计示例通常由至少 4 个事件组成:一个事件用于加速度计的每个轴,另一个表示数据已完成。

在实现中只有三个函数。第一个要查看的变量被分配给变量,该变量在包首次初始化时被调用。该函数将从检查选项开始。如果有字符串选项,则该选项将用作终结点,而不是默认终结点:

接下来,我们向日志发送一条消息,指示已输入服务。虽然日志记录框架已经记录了调用方的 IP 地址和 URL,但这是指示请求路由正确的附加信息

之后,需要初始化加速度计。可以通过将 值 写入 sys 文件系统中的相应文件来启用加速度计:1

轮询周期应设置为 10 毫秒。这是我们可用于此内核的最小值。

比例因子应设置为 +/-2 gs,或最多 2 gs (19.62 m/s^2),方法是写入值 。如果需要更高的加速度范围,但以较低的分辨率为代价,则可以将其设置为更高的值,例如+/-4 gs(通过写入)或+/-8 gs(通过写入)。

最后,调用快速应用,通过调用函数来响应来自终结点的 GET 请求。将参数附加到提供的基本终结点 – express 会将提供的名称转换为传递给我们的服务函数的请求对象中“param”对象中的键:

现在将调用该函数来处理以“”开头的任何URL或选项中传递的任何端点上对加速度计数据的HTTP请求。将接受此字符串之后的 URL 中的任何其他字符,从而允许传递参数。处理程序的函数原型看起来与其他快速处理程序类似,采用请求对象 () 和响应对象 ()。

处理加速度计数据的 HTTP 请求

在函数中要做的第一件事是将参数解释为一个数字 - 这是加速度计将被采样的毫秒数。健全性检查此值,允许任何正时间最多一小时。在实践中,这么长的采样时间可能没有用,但我们必须在某个地方画线:

此时,我们致力于将加速计值发送到客户端,因此请继续写出 HTTP 标头。

我们将发送纯文本,每行一个样本,其中逗号分隔时间值(自 Epoch 以来的毫秒数),x、y 和 z 轴值作为原始加速度计报告的整数。要开始采样,需要调用该函数,该函数采用回调函数,每当收到样本时,它将向该函数传递时间,x,y和z值。将这些值直接写入响应数据:listen

这存储了变量中的返回值。返回值是一个包含名为 的函数的对象,当调用该函数时将终止采样过程。调用 setTimeout 以客户端指定的毫秒数接收回调,并在收到时调用 stop 函数,然后结束对客户端的响应:

现在进入函数,其中发生了流式传输数据并将其转换为示例的实际工作。

流式处理和采样加速度计数据

首先,声明一些局部变量:

该变量将保存事件文件的文件描述符。、 、 和 变量将保存每个样本的分量,直到它们准备好发送给调用方。该变量保存输入流的当前状态(每个样本作为多个事件发送,并且此变量将跟踪何时收到整个样本)。最后,该变量将保存返回值,该值将是一个包含停止采样过程的函数的对象。fdxyztstateret

首先打开事件设备文件。完成此操作后,加速度计将开始采集样本。

每当采集样本时,都会收到多个事件。Node.js将负责在数据可用时自动读取数据,因此请设置回调以接受此数据并对其进行处理:

该参数将是包含从文件中读取的数据的缓冲区。首先要做的是从块中读取事件。每个事件的长度为 16 个字节。在 C 中,事件的结构如下所示:chunk

来自事件设备的数据将始终以 16 字节的倍数提供,因此不需要特殊的逻辑来处理部分事件。下面是处理事件数据块的代码:

while 循环让我们一直阅读,只要至少剩下一个数据块。索引变量 用于跟踪接下来要处理的块中的偏移量。Buffer 函数,用于从缓冲区中的指定偏移量以小字节序格式读取 16 位和 32 位整数。

读取事件后,前进索引。然后检查事件是否为3,表示存在示例元素;如果是,请查看代码以确定它是示例的 x、y 或 z 轴部分。type

请注意,时间在每个事件中都是冗余的,并且对于同一示例的所有部分应该相同,因此可以直接使用来自事件的值。当收到事件 0, 0 时,这表示示例已完成。但是,您可以使用该变量来跟踪已记录的样本的哪些部分,并且仅当已收到所有部分时才发送样本。通常,只有在样本中间开始读取事件(实际上确实发生)时,才会遗漏样本的某些部分。typecodestate

最后,在设置函数以处理从内核流式传输的样本后,使用该函数设置返回值对象,这会关闭文件描述符以停止流式处理。

在下一期中,我们将介绍如何实现对模数转换器ADC) 的支持。

审核编辑:郭婷

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 加速度计
    +关注

    关注

    6

    文章

    661

    浏览量

    45421
  • 开发板
    +关注

    关注

    25

    文章

    4436

    浏览量

    94053
收藏 人收藏

    评论

    相关推荐

    加速度计加速度计的使用区别?

    有个问题请教一下:在静态测量的情况下,两加速度计在测得X、Y上的加速度后,是不是就可以根据这两个值和重力加速度g算出Z
    发表于 12-29 06:06

    基于单片机和mma7455数字加速度传感器设计振动加速度计

    不会编程啊来个大神教教我采用STC89C52单片机和MMA7455数字加速度传感器模块设计加速度计 量程可通过命令选择 3 个
    发表于 05-06 12:05

    论,MPU6050,MMA8451加速度传感器X,Y,Z加速度原始值的稳定性

    最近本人在研究使用加速度传感器 计算倾角角度研究了几款芯片,MPU6050,MMA8451,以及SCA3000,通过对芯片加速度原始值的
    发表于 08-07 14:17

    USB微机电加速度计

    加速度传感器甚至可用来分析发动机的振动,测量牵引力产生的加速度;现在微信中的“摇一摇”功能,就利用了加速度计的功能,通过它来确定位置……加速度计按输入
    发表于 07-10 11:09

    请问两加速度计加速度计的使用区别是什么?

    有个问题请教一下:在静态测量的情况下,两加速度计在测得X、Y上的加速度后,是不是就可以根据这两个值和重力加速度g算出Z
    发表于 08-08 09:12

    请问adis 16365静止时X加速度计输出是26.69是什么原因?

    新买的adis 16365bmlz传感器,用EVAL-ADIS开发板读取出来的数据,静止时X加速度计输出是26.69,其他数据正常。是不是传感器有问题?
    发表于 08-27 11:43

    加速度计的技术规格详解

    忽略不计。封装对齐误差:加速度计检测与封装参考的夹角(参加图2)。 "输入对齐"是此误差的另一种术语。 封装对齐误差的单位为"度"。 封装技术通常会将裸片
    发表于 10-18 10:47

    基于加速度计的倾角测量精度提高

    作者:Allen Fan本文旨在探讨如何用组合器件一类的加速度计提高倾角测量的精度。在乘用车上,电动驻车制动器(EPB)被用于使汽车在平坦的分级道路上保持静止。这是通过用一个单或双加速度计
    发表于 07-18 07:23

    2476-100加速度计

    `SDI的高级型号2470和2476高性能MEMS可变电容式加速度计坚固耐用,即插即用适用于各种苛刻要求的测量设备应用程序。两种型号的性能均优于在零至中频应用中使用的温度经历大的或快速的温度变化
    发表于 05-27 19:18

    2460-010加速度计

    `SDI的2460和2466型低成本MEMS可变电容加速度计是坚固的即插即用测量设备,适用于各种苛刻的应用程序。两种型号在零到中等方面都出类拔萃频率商业和工业应用,特别是在可靠的情况下性能,极低
    发表于 05-28 14:41

    2422H-400加速度计

    在零到中频应用中经历过大或快速的温度过高温度变化或长时间保持极端高温或低温。SDI 2422H型包含个正交安装的高级加速度计LCC,使它们对-55至+ 125°C的温度变化和梯度更加不敏感,并大大
    发表于 05-28 14:44

    2227-050加速度计模块

    `2227型模块结合了专门设计的高温,开放式印刷电路(PCB)提供惯性应用和SDI的1527型战术级惯性所需的高稳定性导航MEMS加速度计。 2227是一种低质量,低功耗的模块,在电气和机械方面
    发表于 05-28 14:56

    设计具有成本效益的加速度计

    描述LIS3DSH 评估我正在为地震目的设计具有成本效益的加速度计(MEMS 加速度计 + 数字化仪)。如今,我们可以找到几个使用 SBC(如 Raspberry Pi 和其他 MEMS
    发表于 08-23 06:20

    MMA8451模块 数字三轴加速度模块 高精度倾斜度模块

    MMA8451模块 数字三轴加速度模块 高精度倾斜度模块
    发表于 11-20 17:07 0次下载

    使用I2C的通信方式驱动MMA8451加速度计的代码免费下载

    本文档的主要内容详细介绍的是使用I2C的通信方式驱动MMA8451加速度计的代码免费下载。
    发表于 07-31 17:35 11次下载
    使用I2C的通信方式驱动<b class='flag-5'>MMA8451</b><b class='flag-5'>加速度计</b>的代码免费下载