概述
InfraredPD 主要作用是通過與 STHS34PF80 紅外傳感器配合,提供對存在感應和運動檢測的支持,同時對傳感器獲取的物體溫度數據進行環境溫度變化補償。InfraredPD庫通過從 STHS34PF80 傳感器采集紅外數據,實時檢測視野中的人或物體的存在和運動情況。它可以判斷目標是否在移動,并提供一個精確的輸出信號來標識存在或運動狀態。 使用特定算法補償環境溫度的變化對物體溫度測量的影響,確保在環境溫度波動時,傳感器輸出的物體溫度依然準確。補償算法可以根據應用場景選擇線性或非線性補償。
InfraredPD 庫中的算法可以替代 STHS34PF80 傳感器內置的智能算法,特別是在傳感器工作于低增益模式(寬溫度范圍)時。它增強了傳感器的檢測性能,尤其是在溫度漂移和視野內物體移動的場景下。
最近在弄ST的課程,需要樣片的可以加群申請:615061293 。
視頻教學
[https://www.bilibili.com/video/BV16MtYe9Erx/]
樣品申請
[https://www.wjx.top/vm/OhcKxJk.aspx#]
完整代碼下載
[https://download.csdn.net/download/qq_24312945/89781469]
硬件準備
首先需要準備一個開發板,這里我準備的是自己繪制的開發板,需要的可以進行申請。
主控為STM32H503CB,TMOS為STHS34PF80。
開啟CRC
串口設置
設置串口速率為2000000。
開啟X-CUBE-MEMS1
InfraredPD文件
使用 InfraredPD 庫對傳感器數據的實時處理和存在檢測的功能。
● MX_MEMS_Init() 和 MX_MEMS_Process() 是與 InfraredPD 庫交互的核心函數。
○ MX_MEMS_Init() 負責初始化 InfraredPD 庫的參數,并調用 InfraredPD_manager_init() 初始化庫實例(main)。
○ MX_MEMS_Process() 調用了存在和運動檢測算法,并輸出相應的結果(main)。
InfraredPD算法庫
傳感器數據采樣頻率在 1 Hz 到 30 Hz 之間。 對于不同架構的 Cortex-M 微控制器,庫的代碼和數據內存需求略有不同 ,主流內核都是支持的。
庫的三個主要部分:
- 物體溫度的環境補償:算法會對物體溫度進行補償,以減少環境溫度變化對測量結果的影響。該補償是基于傳感器的環境溫度數據。
- 運動檢測:通過對補償后的物體溫度數據的變化率進行分析,檢測視野中的物體是否移動。
- 存在檢測:根據補償后的物體溫度數據來判斷是否有物體存在。
● 獨立運行的算法:這三個功能(溫度補償、運動檢測、存在檢測)是通過三個獨立的算法在庫的每次迭代中依次執行的。
● 寬模式支持:即使在傳感器啟用了增益減少模式(“寬模式”),導致嵌入式算法不能使用時,庫仍然能夠執行補償和運動、存在檢測。
● 庫僅支持 STHS34PF80 傳感器:該庫專為 STHS34PF80 傳感器設計,不能保證在其他傳感器上有相同的性能或功能表現。
注意事項
在使用 InfraredPD 庫進行存在檢測時,開機后的10秒內視野內不能有人或物體。這是因為存在檢測算法在初始化時默認視野是空的,也就是說它假定初始化時傳感器前沒有任何人或物體。如果在這段時間內有物體存在,算法可能會錯誤地檢測到“存在”狀態,并在后續檢測中卡在這個狀態,導致無法準確反映實際情況。
同時,該庫允許在初始化后通過重置補償算法來重新校準環境溫度。因此,如果在開機時發生了溫度變化,建議在溫度穩定后重新初始化算法,以確保更準確的檢測結果。
10分鐘內傳感器再次檢測到運動,存在狀態會被恢復;但如果超過10分鐘沒有任何運動檢測到,傳感器將保持在缺席狀態,即使之后檢測到運動也不會自動恢復存在狀態。這一機制幫助系統處理長時間靜止的情景,并避免誤判。
對應DEMO
MX_MEMS_Init
在使用 InfraredPD 庫進行存在檢測時,開機后的10秒內視野內不能有人或物體。這是因為存在檢測算法在初始化時默認視野是空的,也就是說它假定初始化時傳感器前沒有任何人或物體。如果在這段時間內有物體存在,算法可能會錯誤地檢測到“存在”狀態,并在后續檢測中卡在這個狀態,導致無法準確反映實際情況。
同時,該庫允許在初始化后通過重置補償算法來重新校準環境溫度。因此,如果在開機時發生了溫度變化,建議在溫度穩定后重新初始化算法,以確保更準確的檢測結果。
10分鐘內傳感器再次檢測到運動,存在狀態會被恢復;但如果超過10分鐘沒有任何運動檢測到,傳感器將保持在缺席狀態,即使之后檢測到運動也不會自動恢復存在狀態。這一機制幫助系統處理長時間靜止的情景,并避免誤判。
MX_MEMS_Process
MX_MEMS_Process() 函數的核心是調用 MX_PresenceDetection_Process(),該函數負責從傳感器獲取數據,并通過 InfraredPD 庫對這些數據進行處理和分析(app_mems)。
在 MX_PresenceDetection_Process() 中,調用了 PD_Data_Handler() 函數,這個函數負責處理傳感器的溫度數據(如環境溫度和物體溫度),并將這些數據輸入到 InfraredPD 庫中進行分析(app_mems)。
庫的算法會根據輸入數據,判斷是否有物體存在(通過 pres_flag)以及是否有運動(通過 mot_flag),然后輸出相應的檢測結果(app_mems)。
t_obj_comp(補償后的物體溫度)
● 定義:t_obj_comp 表示經過環境溫度補償后的物體溫度數據。
● 作用:由于環境溫度變化可能影響物體溫度的測量結果,t_obj_comp 是通過對原始物體溫度 (t_obj) 進行補償后得到的溫度數據,能夠更準確地反映真實的物體溫度。補償算法可以是線性或非線性的,取決于你選擇的補償類型(UM3169)。
t_obj_change(物體溫度變化率)
● 定義:t_obj_change 是補償后物體溫度的變化率。
● 作用:t_obj_change 用于檢測物體溫度的變化情況,特別是在進行運動檢測時,它可以幫助算法判斷物體是否正在移動。一般情況下,快速的溫度變化通常意味著有運動發生。通過這個數據,系統可以更精確地識別溫度變化是否源于物體的移動(UM3169)。
測試結果
當開機時候,檢測范圍內盡量不要出現人體之類的熱源。
當出現人體的時候,算法庫可以很好的識別到熱源。
審核編輯 黃宇
-
mems
+關注
關注
129文章
3931瀏覽量
190623 -
紅外感應器
+關注
關注
0文章
11瀏覽量
8364
發布評論請先 登錄
相關推薦
評論