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

    文章

    698

    浏览量

    45856
  • 开发板
    +关注

    关注

    25

    文章

    4943

    浏览量

    97185
收藏 人收藏

    评论

    相关推荐

    基于加速度计的评估的设计演示

    加速度计是任何需要响应运动或设备方向的便携式或非固定式设备的关键部件 - 不仅仅是游戏控制器和手机,还包括工业机器人和过程控制机械。仅从其数据表中选择加速度计是不够的;你需要在实践中评估它的表现。本文将介绍飞思卡尔和德州仪器公司的两款基于
    的头像 发表于 03-07 08:18 4575次阅读

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

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

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

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

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

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

    2460-010加速度计

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

    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>的代码免费下载

    digilentPmodACL加速度计介绍

    PmodACL是一个数字加速度计模块,可为主板提供相应的输入。
    的头像 发表于 12-02 11:23 2219次阅读
    digilentPmodACL<b class='flag-5'>三</b><b class='flag-5'>轴</b><b class='flag-5'>加速度计</b>介绍

    UG-242:加速度计评估

    UG-242:加速度计评估
    发表于 03-19 13:26 11次下载
    UG-242:<b class='flag-5'>三</b><b class='flag-5'>轴</b><b class='flag-5'>加速度计</b>评估<b class='flag-5'>板</b>

    微机械数字加速度计MMA8451Q的主要特性及应用解决方案

    飞思卡尔公司的MMA8451Q是智能低功耗容性微机械数字加速度计,具有14位分辨率,3x3x1mmQFN封装,电源电压1.95V-3.6V,接口电压1.6V-3.6V,动态替代满刻
    的头像 发表于 03-30 15:04 4201次阅读
    微机械数字<b class='flag-5'>加速度计</b><b class='flag-5'>MMA8451</b>Q的主要特性及应用解决方案

    ADXL311EB:双加速度计评估

    ADXL311EB:双加速度计评估
    发表于 04-26 15:39 2次下载
    ADXL311EB:双<b class='flag-5'>轴</b><b class='flag-5'>加速度计</b>评估<b class='flag-5'>板</b>

    EVAL-ADXL325Z:加速度计评估

    EVAL-ADXL325Z:加速度计评估
    发表于 05-13 11:29 11次下载
    EVAL-ADXL325Z:<b class='flag-5'>三</b><b class='flag-5'>轴</b><b class='flag-5'>加速度计</b>评估<b class='flag-5'>板</b>

    EVAL-ADXL335Z:加速度计评估

    EVAL-ADXL335Z:加速度计评估
    发表于 05-14 16:26 2次下载
    EVAL-ADXL335Z:<b class='flag-5'>三</b><b class='flag-5'>轴</b><b class='flag-5'>加速度计</b>评估<b class='flag-5'>板</b>

    EVAL-ADXL327Z:加速度计评估

    EVAL-ADXL327Z:加速度计评估
    发表于 05-24 12:31 5次下载
    EVAL-ADXL327Z:<b class='flag-5'>三</b><b class='flag-5'>轴</b><b class='flag-5'>加速度计</b>评估<b class='flag-5'>板</b>

    加速度计、陀螺仪和磁力的应用原理

    加速度计是一种惯性传感器,能够测量物体的比力,即去掉重力后的整体加速度或者单位质量上作用的非引力。当加速度计保持静止时,
    的头像 发表于 10-09 15:43 7271次阅读