技术文章—如何以最简单的方式获取传感器数据?

最新更新时间:2019-03-13来源: 互联网关键字:传感器 手机看文章 扫描二维码
随时随地手机看文章


传感器作为各个领域最重要的设备之一,产品种类之多,应用领域之广,随着“智能时代”的到来,传感器的使用将发挥更加关键的作用。那么,要如何以最简单,最高效的方式使用这些种类繁多,操作复杂的传感器呢?

 

传感器作为一种检测装置,它的应用早已渗透到诸如工业生产、宇宙探索、海洋探测、环境保护、资源调查、医学诊断、生物工程、甚至文物保护等等极其之广泛的领域。可以毫不夸张地说,从茫茫的太空,到浩瀚的海洋,以及各种复杂的工程系统,几乎每一个现代化项目,都离不开传感器。

 

目前,市面上已经存在大量各种类型,各种型号,不同厂家生产的各种传感器,例如,温度、湿度、电压、电流、压强、光照、加速度、角速度等等。它们的应用场景、产品参数、使用方法都不尽相同,这往往使许多项目开发人员在使用传感器时举步维艰:添加一个传感器,就要编写对应的驱动,提供一套访问这个传感器的接口。通常情况下,在一个复杂的系统中,传感器往往不止一个,可能存在几个或几十个甚至更多不同种类的传感器,若这些传感器的使用接口都不相同,那么可想而知,软件方面的工作量和复杂度又会有多大?无形中又增加了很大的开发难度。不仅如此,若基于多种传感器开发的应用程序想跨平台复用,而底层各个传感器的接口却千奇百怪,那么,这样的工作量和复杂度又会上升到什么程度?

 

为了解决这些问题,AWorks定义了通用的传感器接口,适用于各式各样的传感器,只要是挂载在AWorks系统中的传感器,都可以通过相同的操作接口来访问。同时,只要是基于这些通用接口开发的应用程序,都不会与具体的硬件设备绑定,换句话说,底层更换使用不同型号的传感器,对应用程序不会造成影响,应用程序可以不做任何改动。

 

从功能上看,传感器实现了对真实世界中某种物理信号(温度、湿度、气压等)的采集,在使用传感器时,最重要的操作就是从传感器中获取出相应的数据。接下来,进一步介绍如何通过接口获取传感器数据作。

 

1.      传感器通道ID

 

在介绍接口的使用方法之前,需要简单了解一个概念,AWorks之所以能够实现使用一套相同的接口访问所有类型的传感器,是因为AWorks对系统中的传感器进行了统一的管理。为了实现对各式各样的传感器进行统一管理,在AWorks中,定义了“传感器通道”的抽象概念,一路传感器通道用于完成一路物理信号的采集,系统为每个传感器通道分配了一个唯一的ID。例如,若此时系统中存在三个传感器,分别为温湿度传感器HTS221(能为系统提供一路温度和一路湿度通道),三轴磁传感器LIS3MDL(能位系统提供X,Y,Z轴三路磁数据通道和一路温度通道)和光照传感器BH1730(能为系统提供一路光照度采集通道),则对应的ID分配范例详见表 1。

 

表 1  传感器通道id分配

 

 

按照以上的传感器通道ID分配方式,理论上,系统中可以挂载无数个各种类型的传感器,新加入的传感器通道只需按照以上方式依次向后分配ID即可。通常情况下,该ID号的分配已经由系统完成,无需我们自行分配,我们只需简单知道当前系统中的有效ID号所对应的传感器通道类型即可。例如,当前AWorks系统中存在的传感器如表 1所示,有三个传感器,ID号为0~6,下文中函数接口ID的使用将以此为例。

 

2.      获取传感器数据

 

基于以上对传感器ID的描述,此时若想获取传感器的数据,只需在应用程序中调用获取传感器数据的函数接口即可,获取传感器数据的函数接口如下:

 

aw_err_t  aw_sensor_data_get (int id, aw_sensor_val_t *p_val);

 

其中,id即为传感器通道ID号,p_val为存放对应ID的传感器数据。此处aw_sensor_val_t类型为一个结构体,只需知道它是一个保存传感器数据的变量即可。

 

基于此,获取系统中任意传感器通道的数据只需调用该接口即可,例如,每隔500ms获取一次温度采样数据的程序范例如下:

 

1aw_sensor_val_t tem_val;

 

2while (1) {

 

3aw_sensor_data_get(0, &tem_val);  // 通道ID为0,对应表 1中的温度采集通道

 

4aw_mdelay(500);

 

5}

 

同样,若想获取光照度传感器采样数据,程序范例如下:

 

1aw_sensor_val_t als_val;

 

2while (1) {

 

3aw_sensor_data_get(6, &als_val);  // 通道ID为6,对应表 1中的光照度采集通道

 

4aw_mdelay(500);

 

5}

 

以此类推,只需要调用这一个相同的接口,便可以依次获取系统中所有传感器的数据。此时,或许有人会疑问,系统中那么多传感器,一个一个调用该接口,会不会显得繁琐?对于该问题,AWorks系统当然给出了答案,那就是提供同时获取多通道或者所有通道传感器数据的接口,该接口原型如下:

 

aw_err_t  aw_sensor_group_data_get (const int       *p_ids,

 

                                int                num,

 

                                aw_sensor_val_t *p_buf);

 

其中,p_ids为指向传感器通道id列表的指针;num表示通道的数目,即id列表的大小;p_buf指向用于存储各通道数据的缓存,缓存大小与num一致。基于该接口,可以同时获取多个或所有系统中传感器的采样数据,例如,每隔500ms获取当前表 1中所有的传感器通道采样数据的程序范例如下:

 

1const int        id_s[7] = {0, 1, 2, 3, 4, 5, 6}; // 应用程序使用7个通道

 

2aw_sensor_val_t  val_buf[7];           // 存储7个通道数据的缓存

 

3

 

4while (1) {

 

5aw_sensor_group_data_get(id_s, 7, val_buf);      // 获取当前系统所有传感器通道的采样数据

 

6aw_mdelay(500);

 

7}

 

基于此,AWorks系统的传感器接口已经完美的实现了使用同种接口获取所有传感器采样数据的功能。此时,或许有人又会提出疑问,这两个接口采用的似乎都是轮询的方式获取传感器数据,若在效率要求较高的场合,调用该接口是不是不太好呢?再者说,如今的许多传感器都可以采用中断触发的方式获取数据,这样可以大大提高应用程序的效率,那么能不能实现这种功能呢?当然!AWorks同样提供了这种接口,而且接口的调用非常方便,简洁。接下来将为你一一揭秘。

 

3.      触发方式获取传感器数据

 

如今大多数传感器内部都支持了通过中断触发的方式通知应用程序获取传感器数据的功能,应用程序只需检测触发类型做相应的处理即可,这样大大提高了应用程序的执行效率,避免了以查询这种耗时的方式主动获取传感器数据的操作。

 

传感器具有的触发方式一般由传感器本身决定。例如,温湿度传感器HTS221具有的可配置触发方式只有数据准备就绪触发;三轴磁传感器LIS3MDL具有的可配置触发方式有数据准备就绪触发和上下门限值触发。接下来将只以数据准备就绪触发方式,讲解如何高效的获取传感器数据。

 

在AWorks中,要实现通过触发方式获取传感器通道数据,只需要两步操作即可,第一步是配置传感器通道的触发回调函数,第二步则是打开该通道的触发。

 

首先,配置传感器通道触发模式的函数原型如下:

 

aw_err_t aw_sensor_trigger_cfg (int                   id,

 

uint32_t               flags,

 

                           aw_sensor_trigger_cb_t  pfn_cb,

 

                           void                 *p_arg);

 

其中,id为传感器通道的编号,flags参数为配置的触发模式对应的宏(此处只以数据准备就绪触发举例,其所对应的宏在AWorks中定义为AW_SENSOR_TRIGGER_DATA_READY,直接传入即可),pfn_cb为触发回调函数,p_arg为用户触发回调函数参数。触发回调函数的类型为aw_sensor_trigger_cb_t,定义如下:

 

typedef void (*aw_sensor_trigger_cb_t) (void *p_arg, uint32_t trigger_src);

 

其中,p_arg为用户触发回调函数参数,trigger_src为存放的触发类型。例如,此时要配置三轴磁传感器LIS3MDL的X轴采集通道(表 1通道2)的数据准备就绪触发,程序范例如下:

 

1/* 定义一个回调函数,用于当触发事件产生时,该函数被调用 */

 

2static void __pfn_trigger_callback (void *p_arg, uint32_t trigger_src)

 

3{

 

4    /* 数据准备就绪触发*/

 

5if (trigger_src & AW_SENSOR_TRIGGER_DATA_READY) {

 

6aw_sensor_data_get(2, &data_val);   // 触发方式获取该通道的采样数据

 

7   }

 

8}

 

9aw_sensor_trigger_cfg( 2,

 

10                      AW_SENSOR_TRIGGER_DATA_READY,

 

11                   __pfn_trigger_callback,

 

12                   NULL);               // 配置通道2的数据准备就绪触发

 

当以上程序完成通道的触发方式的配置后,接下来,只需打开该通道的触发即可,该函数接口的定义如下:

 

aw_err_t aw_sensor_trigger_on (int id);

 

该函数接口只需传入id即可。注意,aw_sensor_trigger_on函数接口必须在aw_sensor_trigger_cfg接口之后调用,先后顺序不能颠倒。此时,要通过触发方式获取三轴磁传感器LIS3MDL的X轴采集数据的完整程序范例如下:

 

1aw_sensor_val_t data_val;     // 定义传感器数据缓存区

 

2

 

3/* 定义一个回调函数,用于当触发事件产生时,该函数被调用 */

 

4static void __pfn_trigger_callback (void *p_arg, uint32_t trigger_src)

 

5{

 

6    /* 数据准备就绪触发*/

 

7if (trigger_src & AW_SENSOR_TRIGGER_DATA_READY) {

 

8aw_sensor_data_get(2, &data_val);   // 触发方式获取该通道的采样数据

 

9   }

 

10}

 

11

 

12int mian()

 

13{

 

14aw_sensor_trigger_cfg(2,

 

15                      AW_SENSOR_TRIGGER_DATA_READY,

 

16                  __pfn_trigger_callback,

 

17    NULL);   

 

18aw_sensor_trigger_on (2);

 

19while (1) {

 

20aw_mdelay(1000);

 

21}

 

22}

 

通过以上的接口,完美的实现了一种接口访问所有传感器数据的功能,并且这些接口可以在任何运行AWorks操作系统的平台上使用,且无论平台中的传感器类型和数目如何变化,只需要知道该平台传感器通道的ID信息,则都可以使用这些通用接口来进行访问。只要是基于该通用接口开发的应用程序,只要是在AWorks系统中,应用程序能实现“零”修改的移植。在软件意义上,真正实现了“一次编程、终生使用、跨平台”的历史难题。

 

4.      总结

 

AWorks是ZLG历时12年开发的下一代开源嵌入式开发平台,将MCU和OS的共性高度抽象为统一接口,支持平台组件“可插拔、可替换、可配置”,与硬件无关、与操作系统种类无关的方式设计,用户只需修改相应的头文件,即可实现“一次编程、终生使用、跨平台”。

 

并且ZLG推出了一系列搭载AWorks操作系统的Cortex-M0/3/4/7、Coterx-A7/8/9、ARM7/9、DSP等常用内核的核心板。使用这些核心板,即可在AWorks平台上快速完成产品开发。

 

 


关键字:传感器 编辑:muyan 引用地址:技术文章—如何以最简单的方式获取传感器数据?

上一篇:安森美半导体助力奥斯卡小金人更璀璨
下一篇:TE Connectivity推出M8/M12 传感器线束和全新 I/O 电缆组件

推荐阅读最新更新时间:2023-10-12 23:11

哪些传感器嵌入式功能适用于我的应用?
哪些传感器嵌入式功能适用于我的应用? 摘要: 本文介绍部分意法半导体MEMS传感器所具备的嵌入式可编程功能,特别介绍了有限状态机 (FSM)、机器学习内核 (MLC) 和智能传感器处理单元 (ISPU) 简介 意法半导体的数据处理方法不断变化,从传感器连续将数据流式传输到MCU进行处理和分析的标准解决方案,演变为在传感器中本地处理数据的边缘方法。 最近,意法半导体推出了独具匠心的MEMS传感器,它具有可编程逻辑和完全可编程DSP架构,能够降低功耗,减少I²C/SPI总线流量,减轻MCU负荷。 • 这种可编程逻辑架构旨在最大限度降低特定处理模型的功耗,同时可以运行FSM和MLC算法。触发中断时,MC
[传感器]
哪些<font color='red'>传感器</font>嵌入式功能适用于我的应用?
苹果LG黑莓等被告侵犯5项图像传感器专利
  据国外媒体报道,一家叫Imperium(IP)Holdings的公司将苹果告上法庭,声称苹果侵犯了他们了5项专利。一起被拉上被告席的还有其他几家科技巨头:京瓷、LG电子、RIM、Sony Ericsson、诺基亚和摩托罗拉。这次被称侵权的专利与上述公司在智能手机采用的图像传感器有关。      在提交给法院的诉讼中,Imperium(IP)Holdings公司直截了当地指出上述公司侵犯了哪几项专利,并未详细讲述该公司如何申请并被授予这些专利。      这五项专利技术分别是:      1. 用荧光灯减少图像闪烁的技术。   2. 高灵敏快照CMOS图像传感器。   3. 减少像素光影的CMOS图像感应装置。   4.
[手机便携]
电源电压传感器的使用注意事项
  1 传感器模块在使用时,应先接通副边 电源 ,再接通原边电流或电压。   2 在选用传感器模块时,要根据测量范围、精度、反应时间及接线方式等参数,选用不同型号的传感器。   3 测量电流时,最好使用单根导线充满传感器模块孔径,以便得到最佳的动态性能和灵敏度。   4 传感器模块的最佳测量精度是额定值下测得的,当测量值低于额定值时,原边用多匝绕线,使总的安匝数接近额定值,从而获得最佳测量精度。   5 电流母线温度不得超过100度。
[电源管理]
安森美半导体推出符合AEC-Q100认证的图像传感器
2018 年 3月 13 日 — 安森美半导体 (ON Semiconductor,美国纳斯达克上市代号: ON )是领先的汽车图像传感器供应商,针对其受欢迎的的 210 万像素(MP) CMOS图像传感器AR0237 推出完全符合AEC-Q100认证的版本,用于新兴的OEM配备的行车记录仪或车前市场车载DVR。 随着越来越多的保险公司推出财务激励计划,消费者对安全摄像机的需求也在不断增加。汽车制造商认识到这一点,开始将行车记录仪作为出厂标配。首款配备OEM行车记录仪的车型已经上市。 许多制造商在生产零件市场用行车记录仪时所选的传感器,AR0237AT是同款图像传感器的成本优化车用认证版本,它提供1080p / 60fp
[传感器]
安森美半导体推出符合AEC-Q100认证的图像<font color='red'>传感器</font>
测量距离达500米 先锋开发下一代3D激光雷达传感器
据外媒报道,先锋公司子公司先锋智能传感创新公司(Pioneer Smart Sensing Innovations Corporation,以下简称PSSI)正在开发下一代3D激光雷达传感器,测量距离达500米。 (图片来源:先锋公司官网) 3D激光雷达传感器被认为是实现L3及以上自动驾驶不可或缺的关键设备,PSSI正与佳能合作,共同开发此类产品。此前,PSSI还展出了一款波长为905nm的3D激光雷达传感器量产模型,采用了微电存储器系统(MEMS)镜像扫描方法与佳能的光学技术。而新开发的新一代3D激光雷达传感器模型波长为1550nm,尽管与之前的传感器一样,均采用来自PSSI和佳能的核心技术,但由于其还采用了SK电讯的
[汽车电子]
测量距离达500米 先锋开发下一代3D激光雷达<font color='red'>传感器</font>
用红外传感器制作的人体感应多功能控制器
  该装置通过开关SA1的转换后。可对公共场所的楼道、公厕等处照明灯进行自动控制,使之白天熄灭,夜间人来灯亮,人走灯灭,达到节能目的;可用于电扇、排风扇等的自动控制。   一、工作原理   本装置电路如图1所示。它主要 由红外传感器BH、放大器 、比较器、光敏元件及转换开关与控制电路等组成。红外传感器BH能在较远的距离探测到人体移动所发出的微弱红外线。当BH检测的人体移动所发出的红外线信号后。经转换成为低频电信号,由BH的②脚输出到IC2A进行放大,然后由IC2A的①脚输出经C1O耦合至IC2B对信号作进一步放大。          IC2C、IC2D构成电压比较器。当IC2B的⑦脚输出信号电压幅度在UA和
[嵌入式]
智能汽车传感器的如何降噪
导读 近年来,随着电动汽车的智能化和ADAS(高级驾驶员辅助系统)的普及,传感器的应用越来越广,噪声环境也变得越来越严峻。传感器的微弱环境信号需要通过运算放大器和比较器转换为电气信号,才能送到微控制器(MCU)进行计算,所以运算放大器和比较器的作用越来越重要。 问题在于,通常在汽车开发中,很难对电路板和系统单体做噪声评估,一般需要在系统组装后再评估,一旦评估结果NG(不通过),就需要大规模修改,因此降噪设计一直是一个棘手的课题。 1、运算放大器和比较器与传感器 运算放大器简称“运放”,是具有很高放大倍数的电路单元。在实际电路中,通常结合反馈网络共同组成某种功能模块。它是一种带有特殊耦合电路及反馈的放大器。其输
[汽车电子]
智能汽车<font color='red'>传感器</font>的如何降噪
高分辨率颜色传感器TCS230的原理和应用
摘要:TCS230是美国TAOS公司生产的一种可编程彩色光到频率的转换器。论文主要介绍它的原理和应用。该传感器具有分辨率高、可编程的颜色选择与输出定标、单电源供电等特点;输出为数字量,可直接与微处理器连接。文中还介绍色光和白平衡的知识,并用一个实例来介绍TCS230识别颜色的过程。 关键词:TCS230 颜色传感器 颜色识别 白平衡调整 引 言   随着现代工业生产向高速化、自动化方向的发展,生产过程中长期以来由人眼起主导作用的颜色识别工作将越来越多地被相应的颜色传感器所替代。例如:图书馆使用颜色区分对文献进行分类,能够极大地提高排架管理和统计等工作;在包装行业,产品包装利用不同的颜色或装磺来表示其不同的性质或用途。目前的颜
[应用]
小广播
最新传感器文章
换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved