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

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

3天内不再提示

STHS34PF80高灵敏度红外感应器(1)----获取人体存在状态

嵌入式单片机MCU开发 来源:嵌入式单片机MCU开发 作者:嵌入式单片机MCU开 2024-10-14 10:36 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

概述

STHS34PF80是一款高性能的红外(IR)传感器,特别适用于检测存在感和运动。其主要特点是高灵敏度,能在没有透镜的情况下探测到4米远的物体(尺寸为70 x 25厘米),并配有集成的硅红外滤波器。这款传感器能够区分静止和移动物体,并具有80°的视场角。它出厂时已校准,且设计为低功耗,包含用于提高探测效果的智能算法。
其应用范围广泛,不仅包括存在感和接近感应、报警/安全系统、智能家居、智能照明、物联网、智能储物柜和智能墙板,还特别适用于检测人体的存在。由于其高灵敏度和精确度,它能够有效地用于人体检测,如在安保系统中探测潜在的入侵者,或在智能家居系统中监测房间内的人员动态。
最近在弄ST的课程,需要样片的可以加群申请:615061293 。

视频教学

[https://www.bilibili.com/video/BV1om4ae5EBR/]

样品申请

[https://www.wjx.top/vm/OhcKxJk.aspx#]

完整代码下载

[https://download.csdn.net/download/qq_24312945/89741150]

主要特点

高灵敏度探测: 专为探测红外线的存在和运动设计,具有高灵敏度。
探测范围: 能够在没有透镜的情况下,探测到70 x 25厘米大小的物体,最远达4米。
集成硅红外滤波器: 通过滤除非红外波长,确保精确探测。
静态和运动物体探测: 能够检测到静止和移动的物体。
视场角: 提供80°的视场角。
出厂校准: 出厂即校准,保证了即插即用的可靠性和准确性。
低功耗设计: 设计注重能效,确保低能耗。
嵌入式智能算法: 用于提升存在感和运动探测的效果。

硬件准备

首先需要准备一个开发板,这里我准备的是自己绘制的开发板,需要的可以进行申请。

主控为STM32H503CB,TMOS为STHS34PF80。

接口

STHS34PF80模块接口的示意图如下所示,支持IIC或者SPI通讯。

最大速率可以达到1M。

最小系统图

生成STM32CUBEMX

用STM32CUBEMX生成例程,这里使用MCU为STM32H503CB。 配置时钟树,配置时钟为250M。

串口配置

查看原理图,PA9和PA10设置为开发板的串口。

配置串口,速率为2000000。

IIC配置

STHS34PF80配置IIC速度为400k

CS设置

STS34PF80IO设置如下所示。 在IIC模式下CS需要给个高电平。

官方提供IIC接线如下所示。

设置PB8为输出口。

串口重定向

打开魔术棒,勾选MicroLIB

在main.c中,添加头文件,若不添加会出现 identifier "FILE" is undefined报错。

/* USER CODE BEGIN Includes */
#include "stdio.h"
/* USER CODE END Includes */

函数声明和串口重定向:

/* USER CODE BEGIN PFP */
int fputc(int ch, FILE *f){
    HAL_UART_Transmit(&huart1 , (uint8_t *)&ch, 1, 0xFFFF);
    return ch;
}
/* USER CODE END PFP */

参考案例

[https://github.com/STMicroelectronics/sths34pf80-pid]

获取ID

参考例程序中对应的获取ID驱动程序,如下所示。

获取ID可以查看0x0F,读出来的值应该为0xD3。

对应的获取ID驱动程序,如下所示。

printf("HELLO!n");
  HAL_GPIO_WritePin(CS_GPIO_Port, CS_Pin, GPIO_PIN_SET);

    HAL_Delay(100);


  stmdev_ctx_t dev_ctx;
  uint8_t whoami;
  sths34pf80_lpf_bandwidth_t lpf_m, lpf_p, lpf_p_m, lpf_a_t;
  sths34pf80_drdy_status_t status;
  sths34pf80_func_status_t func_status;

  /* Initialize mems driver interface */
  dev_ctx.write_reg = platform_write;
  dev_ctx.read_reg = platform_read;
  dev_ctx.mdelay = platform_delay;
  dev_ctx.handle = &SENSOR_BUS;

  /* Initialize platform specific hardware */
//  platform_init();

  /* Wait sensor boot time */
  platform_delay(BOOT_TIME);

  /* Check device ID */
  sths34pf80_device_id_get(&dev_ctx, &whoami);
    printf("STHS34PF80_ID=0x%x,whoamI=0x%xn",STHS34PF80_ID,whoami);
  if (whoami != STHS34PF80_ID)
    while(1);

温度测量滤波方式

首先需要设置AVG_TRIM (10h) 寄存器用于配置温度平均值滤波的参数,以控制环境温度和目标温度测量的平滑度和稳定性。在温度测量中,可能会受到噪声和干扰的影响,这可能导致短期内测量值的波动。通过应用平均值滤波,可以平滑这些波动,从而得到更加稳定的温度数据。AVG_TRIM 寄存器中的设置会决定平均值滤波的级别,从而影响滤波的时间常数以及平滑度。

这里默认参数如下

  1. 在AVG_TRIM(10h)寄存器中写入02h // AVG_T = 8,AVG_TMOS = 32
  2. 在CTRL1(20h)寄存器中写入07h // ODR = 15 Hz

AVG_T[1:0]: 这个设置位用于选择环境温度的平均值滤波样本数。

AVG_TMOS[2:0]: 这个设置位用于选择目标温度的平均值滤波样本数以及与之相关的噪声水平。

对象温度的平均值数量 (sths34pf80_avg_tobject_num_set 函数): 这个函数设置用于测量对象温度的平均值数量。参数 val 可以是多种不同的值,例如 AVG_TMOS_2, AVG_TMOS_8, AVG_TMOS_32, 等等,表示不同的平均值数量。这些设置影响传感器输出的平滑程度和响应速度,高的平均值数量会增加输出数据的平滑度,但也可能增加响应时间。

环境温度的平均值数量 (sths34pf80_avg_tambient_num_set 函数): 类似地,这个函数设置环境温度测量的平均值数量。参数 val 可以是 AVG_T_8, AVG_T_4, AVG_T_2, AVG_T_1 等,用于设置不同的平均值数量。这也会影响传感器输出的平滑程度和响应速度。

在你提供的代码段中,使用了 STHS34PF80_AVG_TMOS_32 和 STHS34PF80_AVG_T_8 作为参数,分别用于设置对象温度和环境温度的平均值数量。这意味着传感器会对对象温度使用32个数据点的平均值,对环境温度使用8个数据点的平均值。这样的设置有助于在传感器的测量中实现一定程度的数据平滑和过滤噪声,同时保持适当的响应速度。

/* Set averages (AVG_TAMB = 8, AVG_TMOS = 32) */
  sths34pf80_avg_tobject_num_set(&dev_ctx, STHS34PF80_AVG_TMOS_32);
  sths34pf80_avg_tambient_num_set(&dev_ctx, STHS34PF80_AVG_T_8);

智能识别算法

STHS34PF80嵌入了智能数字算法,以支持以下三种检测模式:
• 存在检测
• 运动检测
• 环境温度冲击检测
这些算法分别使用不同的低通滤波器(LPF_P、LPF_M和LPF_A_T)。此外,存在和运动检测算法使用另一个共同的低通滤波器(LPF_P_M)。这些滤波器用于生成中间信号(TPRESENCE、TMOTION和TAMB_SHOCK),可以用于对算法本身进行微调。这些滤波器的截止频率值可以通过它们各自的位范围进行配置,这些位范围可以在LPF1(0Ch)和LPF2(0Dh)寄存器中找到,如下所示。

寄存器LPF1 (0Ch)和LPF2 (0Dh)如下所示。

案例中只是对滤波器进行了读取以及打印。

/* read filters */
  sths34pf80_lpf_m_bandwidth_get(&dev_ctx, &lpf_m);
  sths34pf80_lpf_p_bandwidth_get(&dev_ctx, &lpf_p);
  sths34pf80_lpf_p_m_bandwidth_get(&dev_ctx, &lpf_p_m);
  sths34pf80_lpf_a_t_bandwidth_get(&dev_ctx, &lpf_a_t);

  printf("lpf_m: %02d, lpf_p: %02d, lpf_p_m: %02d, lpf_a_t: %02drn", lpf_m, lpf_p, lpf_p_m, lpf_a_t);

使用块数据更新(BDU)功能

在很多传感器中,数据通常被存储在输出寄存器中,这些寄存器分为两部分:MSB和LSB。这两部分共同表示一个完整的数据值。例如,在一个加速度计中,MSB和LSB可能共同表示一个加速度的测量值。
连续更新模式(BDU = ‘0’):在默认模式下,输出寄存器的值会持续不断地被更新。这意味着在你读取MSB和LSB的时候,寄存器中的数据可能会因为新的测量数据而更新。这可能导致一个问题:当你读取MSB时,如果寄存器更新了,接下来读取的LSB可能就是新的测量值的一部分,而不是与MSB相对应的值。这样,你得到的就是一个“拼凑”的数据,它可能无法准确代表任何实际的测量时刻。
块数据更新(BDU)模式(BDU = ‘1’):当激活BDU功能时,输出寄存器中的内容不会在读取MSB和LSB之间更新。这就意味着一旦开始读取数据(无论是先读MSB还是LSB),寄存器中的那一组数据就被“锁定”,直到两部分都被读取完毕。这样可以确保你读取的MSB和LSB是同一测量时刻的数据,避免了读取到代表不同采样时刻的数据。
简而言之,BDU位的作用是确保在读取数据时,输出寄存器的内容保持稳定,从而避免读取到拼凑或错误的数据。这对于需要高精度和稳定性的应用尤为重要。

案例也是设置了BDU。 BDU在CTRL1 (20h)寄存器中。

/* Set BDU */
  sths34pf80_block_data_update_set(&dev_ctx, 1);

设置ODR速率

初始化完毕之后需要通过CTRL1(20h)寄存器中的ODR[3:0]位范围选择其中一种操作模式(连续模式),或者在CTRL2(21h)寄存器中将ONE_SHOT位设置为1(单次触发模式)。

当配置了寄存器LPF1 (0Ch)和LPF2 (0Dh) 的LPF_P、LPF_M和LPF_A_T、LPF_P_M滤波器之后,可以去设置ODR速率。

这里设置速率为8Hz。

/* Set ODR */
  sths34pf80_odr_set(&dev_ctx, STHS34PF80_ODR_AT_30Hz);

获取状态

STATUS (地址为0x23U) 用于表示传感器的状态。
drdy(1位):这个位用于指示数据就绪(Data Ready)状态。当传感器有新的数据可供读取时,这个位会被设置。

FUNC_STATUS(25h)主要检测三个标志位:PRES_FLAG、MOT_FLAG 和 TAMB_SHOCK_FLAG,这些标志位用于检测不同类型的事件。
PRES_FLAG是存在检测标志位。当存在检测到人员存在时,此位变为1。
MOT_FLAG:运动检测标志位。当检测到运动时,此位变为1。
TAMB_SHOCK_FLAG:环境温度冲击检测标志位。当检测到环境温度冲击时,此位变为1。

/* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
  sths34pf80_drdy_status_t status;
  sths34pf80_func_status_t func_status;

  sths34pf80_drdy_status_get(&dev_ctx, &status);
  if (status.drdy)
  {
    sths34pf80_func_status_get(&dev_ctx, &func_status);

    printf("TAmbient Shock: %d - Presence: %d - Motion: %drn",func_status.tamb_shock_flag, func_status.pres_flag, func_status.mot_flag);
 }        

    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
  }
  /* USER CODE END 3 */

测试结果

在未有人的情况下。

在人体纯在情况下。

审核编辑 黄宇

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

    关注

    2577

    文章

    55483

    浏览量

    793828
  • 智能算法
    +关注

    关注

    0

    文章

    84

    浏览量

    12439
  • 红外感应器
    +关注

    关注

    0

    文章

    11

    浏览量

    8647
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    霍尔元件应用与选型,尼塞拉高灵敏度系列解锁磁传感新玩法

    磁传感技术是工业控制、消费电子中实现转速检测、位置定位的核心技术,霍尔元件作为磁电转换的关键器件,其灵敏度、线性与温度稳定性直接影响检测精度。尼塞拉霍尔元件凭借超高灵敏度、宽温工作特性与优异
    的头像 发表于 03-30 14:48 154次阅读
    霍尔元件应用与选型,尼塞拉<b class='flag-5'>高灵敏度</b>系列解锁磁传感新玩法

    热释电红外传感器核心选型指南,尼塞拉爆款型号全解析

    在智能感应硬件的设计中,热释电红外传感器是实现人体感应的核心器件,其灵敏度、抗干扰性与环境适应性直接决定产品体验。作为
    的头像 发表于 03-30 14:45 160次阅读
    热释电<b class='flag-5'>红外传感器</b>核心选型指南,尼塞拉爆款型号全解析

    探索TMAG511x-Q1:2D双通道高灵敏度霍尔效应锁存的卓越性能

    探索TMAG511x-Q1:2D双通道高灵敏度霍尔效应锁存的卓越性能 在电子工程师的设计世界里,选择合适的传感对于实现高效、可靠的系统至关重要。今天,我们将深入探讨德州仪器(TI
    的头像 发表于 02-11 15:10 210次阅读

    OPT4060 高速高灵敏度 RGBW 颜色传感:设计与应用指南

    的 OPT4060 高速高灵敏度 RGBW 颜色传感,凭借其出色的性能和丰富的功能,为工程师们提供了一个强大的解决方案。今天我们就来深入了解一下 OPT4060 的特点、应用场景、详细设计以及使用中的注意事项。 文件下载: opt4060.pdf 一、关键特性概览
    的头像 发表于 02-11 10:45 333次阅读

    2025人体红外感应模块选购指南与传感应用方案解析

    人体红外感应模块是基于人体热辐射原理设计的传感模块,广泛应用于智能家居、安防监控、智能照明、消费电子等领域。进入2025年,随着物联网和人工智能技术的普及,
    的头像 发表于 02-05 10:42 499次阅读
    2025<b class='flag-5'>人体</b><b class='flag-5'>红外感应</b>模块选购指南与传感<b class='flag-5'>器</b>应用方案解析

    FZH34 一款使用电容式感应原理设计的触摸 IC 原厂技术支持

    μA(@VDD=3V)。 快速模式下响应时间更快(60ms),但功耗稍高(8.0μA)。 灵敏度调节: 可通过外部电容(0~50pF)调节各按键的灵敏度感应焊盘尺寸和面板
    发表于 01-04 09:31

    【新品发布】让AIoT设备更轻薄!艾为推出高灵敏度、超小尺寸电容触控SoC

    列采用创新的自互容一体电容感应技术,具有高灵敏度、强抗干扰、低动态功耗等优点,实现精准触控手势识别和可靠的人体佩戴检测。艾为全新推出的3/5通道高灵敏度、小封装触控S
    的头像 发表于 11-24 18:34 1009次阅读
    【新品发布】让AIoT设备更轻薄!艾为推出<b class='flag-5'>高灵敏度</b>、超小尺寸电容触控SoC

    Vishay高灵敏度接近与环境光传感—VCNL4200

    VishayVCNL4200接近与环境光传感将940nm红外发射(IRED)、环境光传感(ALS)以及高灵敏度长距离(长达1.5m)接
    的头像 发表于 10-31 13:54 1521次阅读
    Vishay<b class='flag-5'>高灵敏度</b>接近与环境光传感<b class='flag-5'>器</b>—VCNL4200

    STHS34PF80红外传感器技术解析与应用指南

    STMicroelectronics STHS34PF80高灵敏度红外传感器是一款非制冷、出厂校准的红外传感器,工作波长范围为5µm至20µm。ST
    的头像 发表于 10-29 14:47 859次阅读
    ‌<b class='flag-5'>STHS34PF80</b><b class='flag-5'>红外传感器</b>技术解析与应用指南

    STEVAL-MKI231KA评估套件技术解析与应用指南

    STMicroelectronics STEVAL-MKI231KA评估套件包含 STHS34PF80工业板和标准DIL24设备适配器。STHS34PF80是一款高灵敏度红外 (IR)
    的头像 发表于 10-24 11:02 847次阅读
    STEVAL-MKI231KA评估套件技术解析与应用指南

    STEVAL-PDETECT1:多传感融合的存在检测评估套件

    STEVAL-PDETECT1套件支持低功耗应用和用户隐私。该器件采用多传感模式,可减少错误触发。采用菊花链配置,最多可同时使用三个附加板。该套件采用三个传感STHS34PF80
    的头像 发表于 10-21 11:23 665次阅读
    STEVAL-PDETECT<b class='flag-5'>1</b>:多传感<b class='flag-5'>器</b>融合的<b class='flag-5'>存在</b>检测评估套件

    9米远距离高精准度24G人体存在感知雷达模块

    01模块介绍人体存在感知雷达模块HLK-LD2412是海凌科电子开发的一款高灵敏度的24GHz人体存在
    的头像 发表于 09-22 12:04 1361次阅读
    9米远距离高精准度24G<b class='flag-5'>人体</b><b class='flag-5'>存在</b>感知雷达模块

    高灵敏度氧化钒非制冷探测热成像机芯

    热成像技术在现代生活中发挥着越来越重要的作用。高灵敏度氧化钒非制冷探测KC-2R02U-15热成像机芯正是这一领域的一项先进产品。它采用氧化钒材料,具有高灵敏度和非制冷特点,能够有效地探测热量并
    的头像 发表于 09-04 10:13 889次阅读

    红外感应迎宾方案(方案介绍及产品功能)

    店铺、办公室、仓库门口,传统迎宾不是“你好欢迎光临”循环播放扰民,就是误报率太高。市场急需一款“人来即报、人走即止、安装简单、成本极低”的红外感应迎宾。辉芒微单片机把「人体
    发表于 08-26 11:48

    高灵敏度霍尔元件的应用实例

    在《全面认知·霍尔元件》中, 我们介绍了三种霍尔元件:超高灵敏度霍尔元件, 高灵敏度霍尔元件和低漂移霍尔元件。
    的头像 发表于 07-10 14:25 2436次阅读
    <b class='flag-5'>高灵敏度</b>霍尔元件的应用实例