如何較快製作溫度與電壓值對照表

2021-10-12 19:53:22 字數 1714 閱讀 3289

目錄

為什麼要寫這篇

有什麼難度

阻值-溫度**轉成mv值-溫度**

**及執行結果

前些天寫過adc資料濾波,寫過二分查詢表,都是很基礎的知識,但沒有提過查詢表如何得來的,本來工作接手的時候已經有了,直接拿過來用就好了。

結果今天就交給我乙個小任務。要做乙個電機的熱保護,電機工作時會持續發熱,當發熱達到某個閾值時則停止電機輸出。要測量發熱就需要溫度採集,你以為會是溫度感測器,直接單匯流排就讀出溫度值了,但實際工作中接觸到的都是ntc熱敏電阻(ntc: 負溫度係數,隨溫度增加熱敏電阻阻值減小)通過adc測量採集點的mv值,根據與確定阻值的電阻分壓(一般要求分壓電阻與基準電壓較精確),(串聯電路中流經兩個電阻的電流一致,電壓比就等於電流比)來判斷出當前熱敏電阻阻值是多少,再根據廠家給出的阻值與溫度對照表來了解到當前熱敏電阻採集到的溫度是多少。

那直接採電壓,然後經過乙個簡單的公式得到電阻值然後查表不就好了嗎。有什麼可說的,並不是這樣

那如何從廠家給出的pdf文件的阻值-溫度**轉成程式**的mv值-溫度**呢?

如果只是要求溫度的大致範圍,可能我就省些事,算出20°c~100°c中整10的溫度對應的mv值就好了(因為電機工作溫度不可能比環境溫度還低),沒幾個資料,算一下十分鐘左右就差不多了。

但要求做實驗,工作多久會發燙比較嚴重,要看到溫度上公升曲線(這個可以有,但非要求),當人體感覺發燙嚴重時實際溫度是多少,要乙個精確值,方便最後討論設定熱保護閾值。那就只能將0~100°c 的阻值-溫度對照表轉換成mv值-溫度對照表了。

每個溫度還對應乙個阻值上限乙個阻值下限,那就需要處理202個資料了,如何換算,首先考慮到的就是程式設計實現了。

處理**肯定要使用excel了,涉及到兩個基本操作,**數字後面加字尾 (字尾為f,)和 **列轉行,從pdf文件擷取**複製,在excel貼上後將將無用資料刪除(pdf的複製是基於行的,只能將那部分**整個複製過來),

然後換算,excel也能實現,但程式設計師有程式設計師的方法:先產生兩個偽阻值表,然後乙個公式完成換算,輸出到終端。後面有時間會將輸出到終端封裝成乙個函式。

再將資料拷貝到**中。

/* 電機工作發熱溫度採集,確立哪個溫度點採取熱保護 */

#include #include #include #define array_size 101

/* 用於熱保護 */

float motor_ntc_res_lower_limit[array_size] = ; ///< 陣列中未初始化元素自動置0

float motor_ntc_res_higher_limit[array_size] = ;

/** * main

* @brief 得到mv值-溫度表

* @note 關於motor_ntc_res_lower_limit 和 motor_ntc_res_higher_limit陣列元素 為模擬ntc電阻阻值的偽資料

* @note 12v供電,10k上拉分壓電阻 採集點的mv值為 y = 12.0 * (x/(10k + x)) x單位為k, 即**中數值,為得到單位為mv,乘以1000

* @note 以上基準電壓和分壓電阻阻值 為偽資料

ADC 與實際電壓值的關係

1.首先確定adc用幾位表示,最大數值是多少。比如乙個8位的adc,最大值是0xff,就是255。2.然後確定最大值時對應的參考電壓值。一般而言最大值對應3.3v。這個你需要看這個晶元adc模組的說明。暫存器中有對於輸入訊號參考電壓的設定。3.要計算電壓,就把你的adc數值除以剛才確定的最大數值再乘...

如何使用Arduino開發板製作溫度控制的風扇

在本篇文章中,我們將主要介紹如何使用dht22感測器和繼電器製作一款arduino溫控風扇。使用dht22感測器獲取溫度值,然後將在lcd顯示屏上列印此溫度值。我們將檢查溫度值是否大於35,如果溫度大於35,則啟動繼電器,風扇將開始旋轉。arduino uno開發板 lcd1602顯示屏 dht22...

電流(或電壓)的平均值與有效值

測量同乙個物體的長度,用公尺尺測量和用市尺測量的出得數椐不一樣,其原因就是公尺尺與市尺的量製 即單位長度 不同所造成的。為此人們找出它們之間的轉換關係,使得公尺尺與市尺都可用於測量長度。同樣在電路中測量電流 或電壓 的大小時,也有二種制式,即電流 或電壓 的平均值與電流 或電壓 的有效值。何謂電流 ...