首先
我們需要明確電路結構
熱敏電阻的原理就不再贅述,本文不湊字數,只講乾貨
必須要知道的就是串聯電阻R9程式中定義為resistanceInSeries ,精度越高越好
為了方便,先在程式中定義好你的熱敏型別和相關引數
float resistanceInSeries = 10000.0; //ntc的串聯電阻
float ntcBvalue = 3950.0; //Bֵ值
float ntcR25 = 100000.0; //25度時電阻ֵ
float KelvinsZero = 273.15; //絕對零度
uint16_t systemPowerVoltage = 3300;
uint16_t adcValue;
float resolution = 0.805664;
float T25 = 298.15; //25 =KelvinsZero+25
具體計算辦法 先通過NTC的電壓推算出串聯電阻的分壓
然後再計算出線路電流
再計通過歐姆定律從計算出熱敏電阻當前的阻值
最後計算出溫度
這些計算,需要引入math.h
務必注意
uint16_t ntcVoltage = adcValue * resolution;
float ntcCurrent = (sysPowerVoltage- ntcVoltage)/ resistanceInSeries; //計算NTC的電流(A)
float ntcResistance = ntcVoltage / ntcCurrent; //計算當前電阻值
float temperature = (ntcBvalue * T25)
/ (T25 * (log(ntcResistance) - log(ntcR25)) + ntcBvalue);
temperature -= KelvinsZero; //計算最終溫度
這個計算辦法,消耗記憶體少,消耗FLASH也少,即使小容量微控制器也可以用
先來看一下遮蔽這段程式碼後的程式佔用容量
在看一下執行這段程式碼後的程式佔用 消耗了大概120多個位元組的RAM和,flash佔用10kb左右