<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

基于STM32CUBEMX驅動TMOS模塊STHS34PF80(6)----獲取狀態數據

嵌入式單片機MCU開發 ? 來源:嵌入式單片機MCU開發 ? 作者:嵌入式單片機MCU開 ? 2023-12-01 15:39 ? 次閱讀

概述

STHS34PF80傳感器項目種修改 Arduino 腳本,重新移植到STM32MCU中。
該項目基于STHS34PF80 IR溫度傳感器,能夠檢測環境和物體溫度,并且在最大4米范圍內檢測存在和運動。有一個Arduino腳本,顯示如何為基本環境和物體溫度測量配置傳感器,并如何配置嵌入式功能算法,并使用它們檢測存在和運動。腳本允許連續或一次性模式,允許更改低通濾波器和檢測閾值以實現各種檢測行為。腳本利用內嵌的中斷引擎來檢測溫度數據的就緒狀態,以及通知存在和運動事件。
本節將在上節代碼中繼續配置,通過獲取模塊的狀態標志位來檢測是否有人體存在。
最近在弄ST和瑞薩RA的課程,需要樣片的可以加群申請:6_15061293 。
在這里插入圖片描述

視頻教學

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

樣品申請

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

參考Demo

[hthttps://github.com/kriswiner/STHS34PF80/tree/main](

完整代碼下載

[https://download.csdn.net/download/qq_24312945/88257572](

參考程序獲取數據

在這里插入圖片描述

獲取數據標志位

使用狀態寄存器(STATUS,地址為23h)來檢查何時有新的數據集可用。這里的數據集可能包括多種數據輸出:物體溫度、環境溫度,以及可能的其他幾個由嵌入式智能算法生成的輸出(如存在檢測、動作檢測和環境溫度沖擊檢測)。

在這里插入圖片描述

參考文檔設置如下所示。

在這里插入圖片描述

修改如下。

/**
  * @brief  獲取DRDY
  *
  * @param  add      設備地址
  * @param  val      設備ID.
  * @retval ret   		正常返回HAL_OK
  *
  */	
	
uint8_t STHS34PF80_getDataReadyStatus(uint8_t add)
{
	uint8_t temp = 0;//STHS34PF80_STATUS- >0x23
	sths34pf80_read_reg(add, STHS34PF80_STATUS, (uint8_t *)&temp, 1);

   return temp;
  }

使用數據準備就緒信號

FUNC_STATUS 寄存器(地址為25h)是一個只讀寄存器,它包含了設備的嵌入式智能算法的狀態標志。

在這里插入圖片描述

PRES_FLAG: 這是一個存在檢測標志。當檢測到存在時,此位變為1;當沒有檢測到存在時,此位變回0。默認值為0。
(0: 沒有檢測到存在;1: 檢測到存在)
MOT_FLAG: 這是一個運動檢測標志。當檢測到運動時,此位變為1;當沒有檢測到運動時,此位變回0。默認值為0。
(0: 沒有檢測到運動;1: 檢測到運動)
TAMB_SHOCK_FLAG: 這是一個環境溫度沖擊檢測標志。當檢測到環境溫度沖擊時,此位變為1;當沒有檢測到環境溫度沖擊時,此位變回0。默認值為0。
(0: 沒有檢測到環境溫度沖擊;1: 檢測到環境溫度沖擊)

在這里插入圖片描述

參考文檔設置如下所示。

在這里插入圖片描述

獲取代碼如下所示。

/**
  * @brief  清零DRDY
  *
  * @param  add      設備地址
  * @param  val      設備ID.
  * @retval ret   		正常返回HAL_OK
  *
  */
uint8_t STHS34PF80_getFuncStatus(uint8_t add)
{
	uint8_t temp = 0;//STHS34PF80_FUNC_STATUS- >0x25
	sths34pf80_read_reg(add, STHS34PF80_FUNC_STATUS, (uint8_t *)&temp, 1);

   return temp;
  }

嵌入式智能數字算法的輸出數據

在4.5.4節中,描述了嵌入式智能數字算法的輸出數據。這些數據包括存在檢測、運動檢測和環境沖擊檢測的輸出數據,分別發送到TPRESENCE_H (3Bh) 和 TPRESENCE_L (3Ah) 寄存器,TMOTION_H (3Dh) 和 TMOTION_L (3Ch) 寄存器,以及 TAMB_SHOCK_H (3Fh) 和 TAMB_SHOCK_L (3Eh) 寄存器。
這些數據沒有內在的物理意義,只是嵌入式智能數字算法用來斷言相應的標志。

在這里插入圖片描述

在這里插入圖片描述
在這里插入圖片描述
獲取代碼如下所示。

/**
  * @brief  					嵌入式智能數字算法產生的存在檢測輸出數據
  *
  * @param  add      設備地址
  * @param  val      設備ID.
  * @retval ret   		正常返回HAL_OK
  *
  */	
	

int16_t STHS34PF80_readPresence(uint8_t add)
{
	uint8_t rawData[2];  //STHS34PF80_TPRESENCE_L- >0x3A
	sths34pf80_read_reg(add, STHS34PF80_TPRESENCE_L, (uint8_t *)&rawData[0], 2);	

	return (int16_t)(((int16_t)rawData[1]) < < 8 | rawData[0]);			
  }

/**
  * @brief  					嵌入式智能數字算法產生的運動檢測輸出數據
  *
  * @param  add      設備地址
  * @param  val      設備ID.
  * @retval ret   		正常返回HAL_OK
  *
  */	
int16_t STHS34PF80_readMotion(uint8_t add)
{
	uint8_t rawData[2];  //STHS34PF80_TMOTION_L- >0x3C
	sths34pf80_read_reg(add, STHS34PF80_TMOTION_L, (uint8_t *)&rawData[0], 2);	

	return (int16_t)(((int16_t)rawData[1]) < < 8 | rawData[0]);				

  }

/**
  * @brief  					嵌入式智能數字算法產生的環境沖擊輸出數據
  *
  * @param  add      設備地址
  * @param  val      設備ID.
  * @retval ret   		正常返回HAL_OK
  *
  */	
int16_t STHS34PF80_readAmbShock(uint8_t add)
{
	uint8_t rawData[2]; //STHS34PF80_TAMB_SHOCK_L- >0x3E
	sths34pf80_read_reg(add, STHS34PF80_TAMB_SHOCK_L, (uint8_t *)&rawData[0], 2);	

	return (int16_t)(((int16_t)rawData[1]) < < 8 | rawData[0]);			

  }

4.5.3節中提供了一個簡單的例子,展示了如何從傳感器獲取物體溫度數據(以最低有效位LSB表示)并將其轉換為攝氏度°C。
該例子的過程也適用于獲取環境溫度數據。

在這里插入圖片描述

代碼如下所示。

/**
  * @brief  
  *
  * @param  add      視場內對象發出的紅外輻射量(未補償)
  * @param  val      設備ID.
  * @retval ret   		正常返回HAL_OK
  *
  */	
int16_t STHS34PF80_readObjTemp(uint8_t add)
{
	uint8_t rawData[2];  //STHS34PF80_TOBJECT_L- >0x26
	sths34pf80_read_reg(add, STHS34PF80_TOBJECT_L, (uint8_t *)&rawData[0], 2);	

	return (int16_t)(((int16_t)rawData[1]) < < 8 | rawData[0]);	
  }

4.5.2節描述了如何獲取環境溫度數據,并在哪些寄存器中這些數據可以被找到。
寄存器存儲:環境溫度數據被發送到TAMBIENT_H(29h)和TAMBIENT_L(28h)寄存器中。其中,TAMBIENT_H存儲了環境溫度值的最高有效字節(MSB),而TAMBIENT_L存儲了最低有效字節(LSB)。
數據格式:通過拼接TAMBIENT_H和TAMBIENT_L,可以得到完整的環境溫度輸出數據。這個值被表示為一個16位的有符號二進制補碼數字。
單位轉換:每個環境溫度輸出樣本可以通過一個靈敏度值(在這個例子里是100 LSB/°C)來轉換成攝氏度。公式如下:

在這里插入圖片描述

應用場景:環境溫度數據代表了與設備熱耦合的環境的實際溫度。這些數據可用于校正由于與傳感器熱耦合的環境溫度變化而導致的物體溫度輸出數據的變化(詳見4.6節)。

在這里插入圖片描述

代碼如下所示。

/**
  * @brief  
  *
  * @param  add      環境溫度數據
  * @param  val      設備ID.
  * @retval ret   		正常返回HAL_OK
  *
  */		
	
	
int16_t STHS34PF80_readAmbTemp(uint8_t add)
{
	uint8_t rawData[2];//STHS34PF80_TAMBIENT_L- >0x28
	sths34pf80_read_reg(add, STHS34PF80_TAMBIENT_L, (uint8_t *)&rawData[0], 2);	

   return (int16_t)(((int16_t)rawData[1]) < < 8 | rawData[0]);
}

補償后的物體溫度數據存儲在TOBJ_COMP_L(38h)和TOBJ_COMP_H(39h)寄存器中。其中,TOBJ_COMP_H包含最高有效字節(MSB),TOBJ_COMP_L包含最低有效字節(LSB)。
需要注意的是,即使補償算法處于活動狀態,26h和27h寄存器中仍然包含原始物體溫度數據。如果補償沒有激活,38h和39h寄存器會與26h和27h寄存器對齊。
補償后的物體溫度數據(以LSB為單位)與使用的光學系統的透射率成比例。您可以通過實際的靈敏度值來轉換這些補償后的數據,以獲得相應的攝氏度值。不過,這些補償后的數據并不實際代表視場內物體的溫度。
如果啟用了增益減小功能(見第4.7節),則不能啟用嵌入式補償算法。

在這里插入圖片描述

代碼如下所示。

/**
  * @brief  					嵌入式智能數字算法產生的視場內物體發射的紅外輻射量輸出數據(已經經過環境溫度補償)
  *
  * @param  add      設備地址
  * @param  val      設備ID.
  * @retval ret   		正常返回HAL_OK
  *
  */		
int16_t STHS34PF80_readCompObjTemp(uint8_t add)
{
	uint8_t rawData[2];//STHS34PF80_TOBJ_COMP_L- >0x38
	sths34pf80_read_reg(add, STHS34PF80_TOBJ_COMP_L, (uint8_t *)&rawData[0], 2);	

	return (int16_t)(((int16_t)rawData[1]) < < 8 | rawData[0]);		
  }

主程序

/* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
//		printf("PA7=%d",HAL_GPIO_ReadPin  ( GPIOA, GPIO_PIN_7));
//		if(HAL_GPIO_ReadPin  ( GPIOA, GPIO_PIN_7))
//		{
		
			status = STHS34PF80_getDataReadyStatus(STHS34PF80_ADDRESS);		
		
			if(FUNCTIONS) 
			{		
				funcstatus = STHS34PF80_getFuncStatus(STHS34PF80_ADDRESS);				
				if(funcstatus & 0x04) printf("(存在)Presence detected !n");
				if(funcstatus & 0x02) printf("(運動)Motion detected !n");
				if(funcstatus & 0x01) printf("(環境溫度沖擊)T Shock detected !n");				
			}
		
			if(status & 0x04)   // when data ready		
			{
				Presence = STHS34PF80_readPresence(STHS34PF80_ADDRESS);//嵌入式智能數字算法產生的存在檢測輸出數據
				Motion =   STHS34PF80_readMotion(STHS34PF80_ADDRESS); // 嵌入式智能數字算法產生的運動檢測輸出數據
				AmbTemp =  STHS34PF80_readAmbTemp(STHS34PF80_ADDRESS);//環境溫度數據
				ObjTemp =  STHS34PF80_readObjTemp(STHS34PF80_ADDRESS);//視場內對象發出的紅外輻射量(未補償)
				CompObjTemp =  STHS34PF80_readCompObjTemp(STHS34PF80_ADDRESS);//嵌入式智能數字算法產生的視場內物體發射的紅外輻射量輸出數據(已經經過環境溫度補償)				
				AmbShock = STHS34PF80_readAmbShock(STHS34PF80_ADDRESS);//嵌入式智能數字算法產生的環境沖擊輸出數據

				printf("(原始數據)Raw countsn");
				printf("(視場內對象發出的紅外輻射量(未補償))STHS34PF80 ObjTemp = %dn",ObjTemp);  
				printf("(視場內物體發射的紅外輻射量輸出(經過環境溫度補償))STHS34PF80 Compensated ObjTemp = %dn",CompObjTemp);  				
				printf("(環境溫度)STHS34PF80 AmbTemp = %dn",AmbTemp);  
				printf("(存在檢測)STHS34PF80 Presence = %dn",Presence);  
				printf("(運動檢測輸出)STHS34PF80 Motion = %dn",Motion);  
				printf("(環境沖擊輸出)STHS34PF80 AmbShock = %dn",AmbShock);  

				printf("(環境溫度)STHS34PF80 Ambient Temperature = %.2fn",(float)(AmbTemp) / 100.0f); //環境溫度數據
				printf("(對象溫度)STHS34PF80 Object Temperature = %.2fn",((float)(ObjTemp) / (float)(ObjSense) ) ); 
	
			}
		
//		}			
		
		
		HAL_Delay(1000);		
				
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
  }
  /* USER CODE END 3 */
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 模塊
    +關注

    關注

    7

    文章

    2520

    瀏覽量

    46712
  • 數據
    +關注

    關注

    8

    文章

    6542

    瀏覽量

    87806
  • stm32cubemx
    +關注

    關注

    5

    文章

    269

    瀏覽量

    14485
收藏 人收藏

    評論

    相關推薦

    基于STM32CUBEMX驅動TMOS模塊STHS34PF80(1)----獲取ID

    STHS34PF80 是一款非冷卻、工廠校準的紅外運動和存在檢測傳感器,工作波長在 5 μm 至 20 μm 之間。
    的頭像 發表于 12-01 15:28 ?5670次閱讀
    基于<b class='flag-5'>STM32CUBEMX</b><b class='flag-5'>驅動</b><b class='flag-5'>TMOS</b><b class='flag-5'>模塊</b><b class='flag-5'>STHS34PF80</b>(1)----<b class='flag-5'>獲取</b>ID

    基于STM32CUBEMX驅動TMOS模塊STHS34PF80(2)----驅動STHS34PF80進行人體檢測

    由 ASIC 進行數字處理,可以對其進行編程以監控運動、存在或過熱狀況。 本章主要驅動STHS34PF80,進行人體檢測。
    的頭像 發表于 12-01 15:29 ?466次閱讀
    基于<b class='flag-5'>STM32CUBEMX</b><b class='flag-5'>驅動</b><b class='flag-5'>TMOS</b><b class='flag-5'>模塊</b><b class='flag-5'>STHS34PF80</b>(2)----<b class='flag-5'>驅動</b><b class='flag-5'>STHS34PF80</b>進行人體檢測

    基于STM32CUBEMX驅動TMOS模塊STHS34PF80(3)----修改檢測閾值

    用于配置和設置 STHS34PF80 傳感器的一些參數,以便進行存在檢測和運動檢測。
    的頭像 發表于 12-01 15:30 ?449次閱讀
    基于<b class='flag-5'>STM32CUBEMX</b><b class='flag-5'>驅動</b><b class='flag-5'>TMOS</b><b class='flag-5'>模塊</b><b class='flag-5'>STHS34PF80</b>(3)----修改檢測閾值

    基于STM32CUBEMX驅動TMOS模塊STHS34PF80(4)----中斷獲取信號

    SHS34PF80數據準備信號提供了一種機制,允許設備在新的測量數據可讀取時通知系統,并觸發同步操作,通過正確配置相關寄存器,可以確保系統及時捕獲和處理來自設備的新數據,從而提高整體
    的頭像 發表于 12-01 15:31 ?4096次閱讀
    基于<b class='flag-5'>STM32CUBEMX</b><b class='flag-5'>驅動</b><b class='flag-5'>TMOS</b><b class='flag-5'>模塊</b><b class='flag-5'>STHS34PF80</b>(4)----中斷<b class='flag-5'>獲取</b>信號

    基于STM32CUBEMX驅動TMOS模塊STHS34PF80(5)----配置嵌入式函數

    STHS34PF80傳感器項目種修改 Arduino 腳本,重新移植到STM32的MCU中。
    的頭像 發表于 12-01 15:33 ?466次閱讀
    基于<b class='flag-5'>STM32CUBEMX</b><b class='flag-5'>驅動</b><b class='flag-5'>TMOS</b><b class='flag-5'>模塊</b><b class='flag-5'>STHS34PF80</b>(5)----配置嵌入式函數

    通過STEVAL-MKI109V3在unico上識別不到STHS34PF80是為什么?怎么處理?

    TMOS測試:通過STEVAL-MKI109V3在unico上識別不到STHS34PF80。
    發表于 03-26 08:31

    stm32cubemx教程

    stm32cubemx教程,需要學習的看看,免積分
    發表于 11-02 10:16 ?0次下載

    STM32CubeMX和HAL驅動庫的嵌入式系統設計淺談

    課程 | 基于STM32CubeMX和HAL驅動庫的嵌入式系統設計
    的頭像 發表于 01-09 13:59 ?3791次閱讀

    STM32CubeMX學習筆記(一)---LED與蜂鳴器

    STM32CubeMX學習筆記(一)—點亮LED這里寫目錄標題STM32CubeMX學習筆記(一)---點亮LED一、開發板二、STM32CubeMX工程創建1、打開 STM32CubeMX
    發表于 12-05 13:21 ?19次下載
    <b class='flag-5'>STM32CubeMX</b>學習筆記(一)---LED與蜂鳴器

    意法半導發布了新型人體存在和移動檢測芯片:STHS34PF80

    近期,意法半導發布了新型人體存在和移動檢測芯片:STHS34PF80,它是一款帶有微加工熱敏晶體管(TMOS)的高集成度、超低功耗的紅外(IR)傳感器,可取代傳統的被動紅外(PIR)傳感技術,提升安保監視系統、家庭自動化設備和物聯網設備等場景的的監測性能。
    的頭像 發表于 07-30 09:47 ?1346次閱讀

    ST TMOS熱敏紅外傳感器: 精準檢測人員存在和移動

    意法半導發布新型人體存在和移動檢測芯片。STHS34PF80是一款帶有微加工熱敏晶體管(TMOS)的高集成度、超低功耗的紅外(IR)傳感器,可取代傳統的被動紅外(PIR)傳感技術,提升安保監視系統、家庭自動化設備和物聯網設備等場景的的監測性能。
    發表于 08-08 14:48 ?362次閱讀

    STM8CubeMXSTM32CubeMX功能一樣嗎?

    STM8CubeMXSTM32CubeMX功能一樣嗎?
    的頭像 發表于 10-31 16:59 ?1326次閱讀
    STM8<b class='flag-5'>CubeMX</b>和<b class='flag-5'>STM32CubeMX</b>功能一樣嗎?

    STHS34PF80人體存在傳感器(1)----獲取人體存在狀態

    STHS34PF80是一款高性能的紅外(IR)傳感器,特別適用于檢測存在感和運動。其主要特點是高靈敏度,能在沒有透鏡的情況下探測到4米遠的物體(尺寸為70 x 25厘米),并配有集成的硅紅外濾波器
    的頭像 發表于 01-09 15:51 ?317次閱讀
    <b class='flag-5'>STHS34PF80</b>人體存在傳感器(1)----<b class='flag-5'>獲取</b>人體存在<b class='flag-5'>狀態</b>

    e2studio開發STHS34PF80人體存在傳感器(1)----獲取人體存在狀態

    STHS34PF80是一款高性能的紅外(IR)傳感器,特別適用于檢測存在感和運動。其主要特點是高靈敏度,能在沒有透鏡的情況下探測到4米遠的物體(尺寸為70 x 25厘米),并配有集成的硅紅外濾波器
    的頭像 發表于 01-09 16:00 ?297次閱讀
    e2studio開發<b class='flag-5'>STHS34PF80</b>人體存在傳感器(1)----<b class='flag-5'>獲取</b>人體存在<b class='flag-5'>狀態</b>

    基于ST 紅外傳感器STHS34PF80 搭配菲涅爾透鏡針對投影機應用方案

    STHS34PF80 是一款紅外線感測器,可用于偵測靜止和移動物體的存及超溫條件。它采用獨特的 TMOS 技術測量物體的紅外線輻射,當物體位于視野內時檢測其存在或移動。
    的頭像 發表于 01-30 14:16 ?447次閱讀
    基于ST 紅外傳感器<b class='flag-5'>STHS34PF80</b> 搭配菲涅爾透鏡針對投影機應用方案
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>