久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

標題: 請問這里的NTC溫度檢測要怎么寫 [打印本頁]

作者: 1314love    時間: 2024-8-26 08:12
標題: 請問這里的NTC溫度檢測要怎么寫
請問這里的NTC溫度檢測要怎么寫

1.PNG (149.29 KB, 下載次數: 15)

1.PNG

作者: 飛云居士    時間: 2024-8-26 13:18
#include "sc92f7411.h" // 包含SC92F7411的寄存器定義頭文件

// 定義常量
#define ADC_CHANNEL 0  // 假設NTC連接到ADC0通道
#define FIXED_RESISTOR 10000  // 固定電阻值
#define VCC 3.3  // 假設參考電壓為3.3V
#define NTC_BETA 3950  // NTC的B參數

// 初始化ADC
void adc_init() {
    // 配置ADC時鐘、參考電壓、轉換模式等
    // ... 根據數據手冊配置ADC寄存器
    ADCCON = 0x00; // 初始化ADC控制寄存器,具體配置根據數據手冊
    ADCCON |= (1 << ADCEN); // 使能ADC
}

// 讀取ADC值
uint16_t read_adc(uint8_t channel) {
    // 設置ADC通道
    ADCCON &= ~(0x0F); // 清除通道選擇位
    ADCCON |= channel;
    // 啟動轉換
    ADCCON |= (1 << ADCS);
    // 等待轉換完成
    while (!(ADCCON & (1 << ADRDY)));
    // 讀取ADC結果
    return ADCDAT;
}

// 計算溫度
float calculate_temperature(uint16_t adc_value) {
    // ... 同樣根據Steinhart-Hart方程計算溫度
}

int main() {
    adc_init();
    while (1) {
        uint16_t adc_reading = read_adc(ADC_CHANNEL);
        float temperature = calculate_temperature(adc_reading);
        // 顯示或處理溫度數據
    }
}
NTC的參數: 根據你用的NTC的B參數、阻值修改程序。以及ADC的配置: 您希望ADC的工作模式、分辨率等。
作者: xiaobendan001    時間: 2024-8-26 14:38
跟廠家索取表格,然后論壇里面下載一個軟件,生成ADC的結果表格,然后查表
作者: guobaox1981    時間: 2024-8-26 20:41
#include <math.h>
float T_c=0.0;   //溫度值
// 定義常量
#define R_FIXED 10000.0 // 固定電阻值10kΩ
#define B_CONST 3950.0 // NTC的B常數
#define T0 298.15 // 25℃轉換為開爾文
#define R0 10000.0 // NTC在25℃時的電阻值10kΩ

float calculate_temperature(float voltage) {
    float R_ntc, T;
    float V_supply = 3.3; // 電源電壓3.3V

    // 計算NTC電阻值
    R_ntc = R_FIXED * (V_supply / voltage - 1);

    // 計算溫度(開爾文)
    T = 1 / (1 / T0 + log(R_ntc / R0) / B_CONST);

    // 轉換為攝氏度
    T = T - 273.15;

    return T;
}

        T_c=calculate_temperature( filtered_voltage[1]); //電壓轉溫度計算  filtered_voltage[1]為ADC采樣轉換后電壓
要求不高可以使用上面程序,按硬件修改相應電阻值
作者: 1314love    時間: 2024-8-28 07:59
xiaobendan001 發表于 2024-8-26 14:38
跟廠家索取表格,然后論壇里面下載一個軟件,生成ADC的結果表格,然后查表

兄弟,這個軟件在哪里獲取

作者: xiaobendan001    時間: 2024-8-28 10:23
1314love 發表于 2024-8-28 07:59
兄弟,這個軟件在哪里獲取

論壇里面搜搜吧
作者: WilliamKui    時間: 2024-8-28 13:30
1314love 發表于 2024-8-28 07:59
兄弟,這個軟件在哪里獲取

#define VREF    5000  //電壓,單位mv
#define NTC_K   273.15
#define NTC_T2  298.15
#define NTC_B   3950.0
#define NTC_R   10000.0  //熱敏電阻標稱值10K
#define R14       4700.0   //與NTC電阻并聯的電阻 阻值   

//計算熱敏電阻對應的溫度值,返回值放大10倍,例如:152表示15.2度
//u16 dat:采集的電壓值,單位毫伏
u16 Cal_Temperature(u16 dat)
{        
          u16 tmp = 0;
                float tmp1 = 0.0;
                float tmp2 = 0.0;
          float Resisit = 0.0;
        
          tmp = VREF - dat;
                Resisit = R14*tmp;
                Resisit = Resisit/dat;  //計算出當前溫度下熱敏電阻的阻值
                tmp1 = Resisit/NTC_R;
                tmp2 = log(tmp1);   
                tmp1 = tmp2/NTC_B;
                tmp2 = 1/NTC_T2;
                tmp1 = (tmp1+tmp2);
                tmp2 = 1.0/tmp1;
    if(tmp2 <= 274)tmp2 = 274;
                tmp2 -= 273.15;
          tmp1 = tmp2+0.05;
          tmp1 = (int)(tmp1*10);
         
                return tmp1;
}
作者: 1314love    時間: 2024-8-28 14:55
guobaox1981 發表于 2024-8-26 20:41
#include
float T_c=0.0;   //溫度值
// 定義常量

請問你這個voltage是ADC值嗎,還是說這個voltage是獲取的ADC值后轉化為電壓

作者: 1314love    時間: 2024-8-28 16:02
guobaox1981 發表于 2024-8-26 20:41
#include
float T_c=0.0;   //溫度值
// 定義常量

兄弟  我有個疑問 我不知道理解的對不對,您幫我看看,就是先用ADC去算出ADC值,然后返回回來去算NTC電阻值,再去算溫度,然后比如我有個加熱模式,我設定了150°,那我把這個算出來的溫度去和這個設定的溫度去比較,如果相等,就是等于加熱完成了對不對?還有就是那個查表法,我看你這邊沒有用,是不是查表法只是方便不用總是去看手冊,然后把它列到數組里面方便看

作者: guobaox1981    時間: 2024-8-28 21:09
1314love 發表于 2024-8-28 14:55
請問你這個voltage是ADC值嗎,還是說這個voltage是獲取的ADC值后轉化為電壓

voltage是ADC采樣轉換后的電壓值為浮點數。
作者: guobaox1981    時間: 2024-8-31 16:17
1314love 發表于 2024-8-28 16:02
兄弟  我有個疑問 我不知道理解的對不對,您幫我看看,就是先用ADC去算出ADC值,然后返回回來去算NTC電阻 ...

是的 我是多通道ADC采樣,采樣定時器中斷開啟,ADC轉換完成中斷保存結果,所以統一采樣完成12位ADC值保存到數組內,建立完成標志。采樣完成后主程序統一計算和濾波轉換為真實電壓值。再根據熱電阻電壓及電源電壓計算熱電阻阻值,再根據計算出溫度值,無需查表,一般精度夠用。 比起查表法,由于使用大量浮點計算,比較吃硬件,51單片機的話比較占系統資源,計算時間也較長,查表法就比較快,不占太多資源。
作者: xmcolong    時間: 2024-9-1 00:52
1314love 發表于 2024-8-28 07:59
兄弟,這個軟件在哪里獲取

把數據復制到EXCEL表一個列中, 然后用EXCEL函數計算ADC值就可以啦




歡迎光臨 (http://m.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 一级大片免费看 | 欧美黄色一区二区 | 精品免费在线观看 | 久久视频一区二区 | 中文字幕免费视频 | 亚洲国产精 | 夜晚福利视频 | 黄色大片在线免费观看 | 久久久久九九九 | 国产一区二区日韩 | 国产美女av | 在线不卡视频 | aaa黄色| 青青草手机在线视频 | 婷婷一区二区三区 | 欧美国产在线观看 | 成人三级在线 | 日本中文字幕在线观看 | 亚洲精品在线视频 | 久久日韩精品 | 国产精品国产三级国产 | 欧美黄色一区 | 人人爱av| 青草福利视频 | 亚洲精品中文字幕乱码三区91 | 黄色网址在线视频 | 午夜精品福利视频 | 中文字幕在线观 | 天天操夜夜爽 | 色婷婷色| 色综合欧美 | txvlog.com| 亚洲精品一二区 | 青青草国产在线视频 | 亚洲三级网 | 五月网站| 日韩精品在线播放 | 日韩在线视频免费观看 | 亚洲午夜一区 | 午夜在线免费视频 | 亚洲综合网站 |