|
版本歷史
日期 版本 負責人 IAR MDK 描述
2020-02-20 0.1 Lux xxx 5.26 first version
================================================================================
功能描述
================================================================================
本額溫槍樣例為開發過程版本,旨在提供基本功能模塊單元的操作及架構,為應用開發者提供快速原型構建,
將更多的精力用在業務開發上及系統調試上。
================================================================================
測試環境
================================================================================
測試用板:
---------------------
HC32L13X_STK
輔助工具:
---------------------
配套硬件參考:
---------------------
“Hm-Meter-源文件.rar”及“Hm-Meter-PDF BOM.rar”
================================================================================
操作步驟
================================================================================
1) 程序編譯后下載到HC32L13X_STK;
2) 復位或初次上電LCD全顯閃爍兩次,保持全顯;
3) 按下USER按鍵后進行數據采樣(需外接參考電壓及調理后的傳感器信號)
4) LCD顯示環境溫度約1s,然后顯示被測物溫度約3s,最后LCD熄滅;
5) 可重復步驟3、4;
================================================================================
功能說明
================================================================================
1)打開工程編譯并運行。
2)可根據不同的具體硬件功能修改"stkhc32l13x.h"板級接口文件,或自行定義功能。
3)數據采集部分使用內部ADC連續16次采樣取均值的方式采樣外部經過OPA調理過的信號。
4) 顯示部分提供了配套原理圖“Hm-Meter-源文件.rar”及“Hm-Meter-PDF BOM.rar” 所使用LCD的數據結構及操作,同時包括HC32L13X_STK的LCD參考。
5) 數據處理部分算法僅針對當前實驗室測試的一款傳感器進行部分數據的簡單整理,不代表通用算法。
6) 按鍵及其他基礎功能模塊較為簡單,通常為基本的IO操作,本應用提供了基本的初始化操作。
================================================================================
注意
================================================================================
本樣例實現了額溫槍方案的基本方法及架構,基于華大MCU HC32L136進行構建,未經過充分產品級測試,
僅可為應用開發者提供快速原型參考,具體的端口、業務功能、數據處理應以實際采納的硬件為準,進行程序修改及調試。
================================================================================
單片機源程序如下:
int main(void)
{
/* 90379 s = 0.021052 室溫25度,黑體30度 ADC 數據放大后得到 90379,計算出S校準系數
這里放大多少倍都可以。主要是找到一個合適S值。但是這個指標必須準的。也就是所謂的校準
*/
// float V = 90379; //紅外ADC數據
// float tt = 30; //目標溫度
// float ta = 25; //室溫
// float s = 0.021052; // 90379 s = 0.021052 S 校準系數
//Tobj=(V/(s*5e-10*(1+2e-3*Tamb)+(Tamb+273.15)^4)^0.25-273.15;
float Tobj = pow((tt + 273.15),4);
float Tamb = pow((ta + 273.15),4);
float ee = 5e-10*(1+2e-3*Tamb);//0.0000000005*(1+0.002*Tamb)
double s = (V/(Tobj- Tamb))/ee;
printf("%1f\n", s);
double t = V / pow(s*ee+Tamb,0.25) - 273.15;
printf("%1f\n", t);
}
|
評分
-
查看全部評分
|