實驗環境
Matlab版本: 2021b
操作系統 :Win10專業版
硬件平臺 :YF-STM32-ALPHA 1R4
實驗內容 :讀取溫度傳感器電壓值并轉換成實際℃溫度顯示出來
模型與原理圖
本次實驗所用到的simulink模型如圖5.1所示,電路原圖如圖5.2所示,其中溫度傳感器在開發板中的位置如圖5.3所示,實驗效果為讀取NTC溫度傳感器所在引腳PA4的電壓值,然后通過查表算法將其轉換成實際℃溫度值并通過儀表或“display”模型控件顯示出來。
圖5.1 NTC溫度傳感器采集simulink模型
圖5.2 溫度傳感器電路圖
圖5.3 溫度傳感器在電路板中位置
基礎模型介紹與分析
本次實驗所用到的NTC(負溫度系數)傳感器外觀如圖5.4所示,因其低廉的價格和使用方便的特性,被廣泛應用于家庭與工業電子設備中(空調、電飯鍋、洗衣機等)。表5.1為該溫度傳感器基本使用參數,詳細的溫度電阻特性參考其特性表鏈接,里面詳細整理了該傳感器電阻值與溫度的對應關系。電壓采集原理圖采用“分壓式”接法,如圖5.5所示,單片機端采集電壓公式計算方法 MCU_ADC = Rt*3.3V/(10+Rt)。
圖5.4 溫度傳感器外觀
表5.1 基本參數表
型號 | B值 | 使用溫度范圍 |
---|---|---|
MF52-103/3435 10K ±1% | 3435 1% | -55℃~125℃ |
溫度阻值特性表:https://pan.baidu.com/s/1dF19CoL? at =1700414024610
圖5.5 NTC溫度傳感器“分壓”測電壓接法
Analog Input”模型外觀如圖5.6所示,通過更改“Pin”欄參數可以讀取該引腳的電壓值,讀取的數值范圍為0~1,需要注意的是“Pin”欄參數只有該芯片引腳支持模擬量功能才能使用
圖5.6 "Analog Input"模型
為方便讀者以往單片機使用習慣和計算方便性,實驗中使用到乘法模型“Product”將讀取的ADC值乘以3.3倍放大處理,得到的最終值范圍為0~3.3,如圖5.7所示。
圖5.7 "Product"模型使用方法
查表法轉換溫度值
這是本次實驗中的關鍵算法部分,也是在嵌入式開發中針對A/D方式讀取原始傳感器數據參數常用的轉換方法,即大家熟知的“以空間換時間“法,“ Lookup with Linear Lagrange Interpolation ”模型與參數設置窗口如圖5.8所示。
圖5.8 " Lookup with Linear Lagrange Interpolation"模型
我們首先通過“溫度阻值特性表”得到溫度電壓表關系,考慮到在單片機中不占用太大存儲空間,這里采取每5℃間隔制作表格,一般對于精度要求不是特別高的場合,我們可以大致認為5℃內的溫度變化是線性的,其中“V”的電壓值計算公式為V = R*3.3V/(10+R),將其中的R值代入,就可以得到V的最終值,詳情請參考表5.2。
NTC_Value_table.xlsx
表 5.2 溫度-阻值-分壓表
T | R | V |
---|---|---|
-40 | 190.5562 | 3.135457592 |
-35 | 151.5975 | 3.09578892 |
-30 | 116.3519 | 3.038824663 |
-25 | 90.0326 | 2.970107545 |
-20 | 70.5811 | 2.890474689 |
-15 | 55.7284 | 2.797933922 |
-10 | 44.1201 | 2.690245029 |
-5 | 35.0362 | 2.567256118 |
0 | 28.0170 | 2.431967278 |
5 | 22.6597 | 2.289580431 |
10 | 18.5600 | 2.144537815 |
15 | 16.2797 | 2.044277903 |
20 | 12.6900 | 1.845614808 |
25 | 10.0000 | 1.65 |
30 | 8.1600 | 1.482819383 |
35 | 6.8133 | 1.337268115 |
40 | 5.7340 | 1.202631244 |
45 | 4.8286 | 1.074570762 |
50 | 4.065 | 0.953750444 |
55 | 3.4146 | 0.839993738 |
60 | 2.825 | 0.726900585 |
65 | 2.5076 | 0.661604145 |
70 | 2.135 | 0.580593325 |
75 | 1.8225 | 0.508712201 |
80 | 1.586 | 0.451734852 |
85 | 1.4006 | 0.405415504 |
90 | 1.236 | 0.363011748 |
95 | 1.0744 | 0.320154591 |
100 | 0.918 | 0.277468401 |
105 | 0.787 | 0.240762028 |
110 | 0.713 | 0.219630356 |
點擊“Lookup with Linear Lagrange Interpolation”模型參數設置窗口中的“編輯表和斷點...”如圖5.9所示,彈出的查找表參數設置如圖5.10所示,將表5.2中的溫度T和電壓值V填入該表中的“表數據”和“斷點 1”處,注意數據的升降序和填寫位置
圖5.9 表格參數設置按鈕
圖5.10 查找表參數填好效果
點擊“線性圖”按鈕查看填寫的數據對應的曲線是否正確,如圖5.11所示,最終填寫好的數據效果如圖5.12所示。
圖5.11 點擊查看線性圖曲線
圖5.12 填寫好查找表數據的模型參數設置部分效果
總結
本次實驗以一個基本的溫度傳感器為例,通過在其中加入查表算法將其轉換成我們熟知的攝氏度(℃)溫度值,但是在實際場景中經常會出現一些雜波電壓或采集的數據與我們所需要的數據穩定的情況,讀者朋友可以思考下面對這種問題該如何去解決?以往使用C代碼方式一般是在前面加入雜波濾除算法然后再求平均值,simulink中又該如何使用呢?
拓展延申
1、本次實驗又用到一個數據顯示儀表,但是文章中并沒有做過多介紹,其位于“Dashboard”庫中,里面又很多顯示儀表和按鈕開關,在實際模型測試中非常方便,讀者朋友可以多去嘗試使用。
圖5.13 “Dashboard”庫位置
2、在查表法建立表格過程中,有一個操作非常繁瑣,復制到表格中的數據非常不方便,如果有多種傳感器需要建立表格,那工作量是不可想象的,其實這里有個更方便的方法,可以先建立一個excel表格,然后使用matlab打開并導入到matlab中,如圖5.14和圖5.15所示,然后在matlab中直接定義兩個數組變量,然后在“表數據”和“斷點1”中引入即可,如圖5.16所示,至于該方式更深入的用法,大家可以積極去探索下,這里暫時不做過多介紹。
圖5.14 打開Excel表格
圖5.15 將Excel表格的數據導入為變量表
圖5.16 通過變量數組引入查找表
-
原理圖
+關注
關注
1298文章
6343瀏覽量
234052 -
溫度傳感器
+關注
關注
48文章
2940瀏覽量
156073 -
NTC
+關注
關注
7文章
426瀏覽量
52065 -
STM32
+關注
關注
2270文章
10900瀏覽量
356005 -
Simulink
+關注
關注
22文章
535瀏覽量
62399
發布評論請先 登錄
相關推薦
評論