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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1306|回復: 11
收起左側

請問這里的NTC溫度檢測要怎么寫

[復制鏈接]
ID:1041297 發表于 2024-8-26 08:12 | 顯示全部樓層 |閱讀模式
請問這里的NTC溫度檢測要怎么寫
1.PNG
回復

使用道具 舉報

ID:404160 發表于 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的工作模式、分辨率等。
回復

使用道具 舉報

ID:1109793 發表于 2024-8-26 14:38 | 顯示全部樓層
跟廠家索取表格,然后論壇里面下載一個軟件,生成ADC的結果表格,然后查表
回復

使用道具 舉報

ID:309610 發表于 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采樣轉換后電壓
要求不高可以使用上面程序,按硬件修改相應電阻值
回復

使用道具 舉報

ID:1041297 發表于 2024-8-28 07:59 | 顯示全部樓層
xiaobendan001 發表于 2024-8-26 14:38
跟廠家索取表格,然后論壇里面下載一個軟件,生成ADC的結果表格,然后查表

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

使用道具 舉報

ID:1109793 發表于 2024-8-28 10:23 | 顯示全部樓層
1314love 發表于 2024-8-28 07:59
兄弟,這個軟件在哪里獲取

論壇里面搜搜吧
回復

使用道具 舉報

ID:1130995 發表于 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;
}
回復

使用道具 舉報

ID:1041297 發表于 2024-8-28 14:55 | 顯示全部樓層
guobaox1981 發表于 2024-8-26 20:41
#include
float T_c=0.0;   //溫度值
// 定義常量

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

使用道具 舉報

ID:1041297 發表于 2024-8-28 16:02 | 顯示全部樓層
guobaox1981 發表于 2024-8-26 20:41
#include
float T_c=0.0;   //溫度值
// 定義常量

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

使用道具 舉報

ID:309610 發表于 2024-8-28 21:09 | 顯示全部樓層
1314love 發表于 2024-8-28 14:55
請問你這個voltage是ADC值嗎,還是說這個voltage是獲取的ADC值后轉化為電壓

voltage是ADC采樣轉換后的電壓值為浮點數。
回復

使用道具 舉報

ID:309610 發表于 2024-8-31 16:17 | 顯示全部樓層
1314love 發表于 2024-8-28 16:02
兄弟  我有個疑問 我不知道理解的對不對,您幫我看看,就是先用ADC去算出ADC值,然后返回回來去算NTC電阻 ...

是的 我是多通道ADC采樣,采樣定時器中斷開啟,ADC轉換完成中斷保存結果,所以統一采樣完成12位ADC值保存到數組內,建立完成標志。采樣完成后主程序統一計算和濾波轉換為真實電壓值。再根據熱電阻電壓及電源電壓計算熱電阻阻值,再根據計算出溫度值,無需查表,一般精度夠用。 比起查表法,由于使用大量浮點計算,比較吃硬件,51單片機的話比較占系統資源,計算時間也較長,查表法就比較快,不占太多資源。
回復

使用道具 舉報

ID:13282 發表于 2024-9-1 00:52 | 顯示全部樓層
1314love 發表于 2024-8-28 07:59
兄弟,這個軟件在哪里獲取

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

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日韩美女爱爱 | 精品国产乱码久久久久久闺蜜 | 亚洲精品白浆高清久久久久久 | 成人一区二区视频 | 久久爆操 | 91久久| 午夜羞羞 | 成人片网址| 亚洲国产欧美国产综合一区 | 欧美综合在线观看 | 伊人二区 | 日韩一级免费大片 | 伊人网在线播放 | 国产精品久久久久久久久久久久久 | 亚洲二区在线观看 | 亚洲精品一二三 | 亚州精品天堂中文字幕 | 99在线观看视频 | 国产99久久精品一区二区永久免费 | 99精品免费久久久久久日本 | 五月婷婷色 | 黑人巨大精品欧美黑白配亚洲 | 精品视频一区二区在线观看 | 国产成人在线视频 | 久久国色 | 香蕉视频一区二区 | 日韩精品一区二区三区视频播放 | av一级久久 | 欧美在线一区视频 | 97国产精品视频人人做人人爱 | 久久国产综合 | 欧美一级在线观看 | 蜜臀网 | 超碰导航 | 欧美一级片免费看 | 免费一看一级毛片 | 91精品国产综合久久久亚洲 | 亚洲视频一区在线播放 | 欧美国产一区二区 | 午夜影院| 国产激情偷乱视频一区二区三区 |