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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1668|回復: 11
打印 上一主題 下一主題
收起左側

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

[復制鏈接]
跳轉到指定樓層
樓主
ID:1041297 發表于 2024-8-26 08:12 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
請問這里的NTC溫度檢測要怎么寫

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

1.PNG
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

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

使用道具 舉報

5#
ID:1041297 發表于 2024-8-28 07:59 | 只看該作者
xiaobendan001 發表于 2024-8-26 14:38
跟廠家索取表格,然后論壇里面下載一個軟件,生成ADC的結果表格,然后查表

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

使用道具 舉報

6#
ID:1109793 發表于 2024-8-28 10:23 | 只看該作者
1314love 發表于 2024-8-28 07:59
兄弟,這個軟件在哪里獲取

論壇里面搜搜吧
回復

使用道具 舉報

7#
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;
}
回復

使用道具 舉報

8#
ID:1041297 發表于 2024-8-28 14:55 | 只看該作者
guobaox1981 發表于 2024-8-26 20:41
#include
float T_c=0.0;   //溫度值
// 定義常量

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

使用道具 舉報

9#
ID:1041297 發表于 2024-8-28 16:02 | 只看該作者
guobaox1981 發表于 2024-8-26 20:41
#include
float T_c=0.0;   //溫度值
// 定義常量

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

使用道具 舉報

10#
ID:309610 發表于 2024-8-28 21:09 | 只看該作者
1314love 發表于 2024-8-28 14:55
請問你這個voltage是ADC值嗎,還是說這個voltage是獲取的ADC值后轉化為電壓

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

使用道具 舉報

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

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

使用道具 舉報

12#
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 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日韩在线欧美 | 男人添女人囗交图 | 欧美日韩中文字幕在线观看 | 日韩av中文字幕在线播放 | 成人国产综合 | 国产成人三级 | 在线国产小视频 | 中文字幕精品在线观看 | 一区二区三区黄色 | av网页在线观看 | 国产天堂网 | 毛片一级片 | 婷婷色av| 亚洲黄色一级 | 在线观看免费黄色 | 8x8ⅹ国产精品一区二区 | 在线视频亚洲 | 日韩欧美在线一区 | 欧美日韩免费视频 | cao在线 | 国产精品偷乱一区二区三区 | 中文在线字幕免费观 | 日韩在线小视频 | 在线观看黄色小视频 | 国产一区二三区 | 成人免费福利 | 亚洲国产毛片 | 一级特黄妇女高潮 | 成人精品免费视频 | 亚洲一级黄色 | 日韩精品综合 | 国产精品欧美在线 | 色妞网站| 欧美日韩国产在线 | 日本中文字幕在线观看 | 日韩免费精品视频 | 欧美日韩国产成人 | 亚洲激情综合网 | 久久国产美女 | 国产精品一区二区av | 视频在线一区二区 |