日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁 > 單片機 > 單片機
[導(dǎo)讀] 溫度傳感器可以用來測量器件周圍的溫度(TA)。溫度傳感器在內(nèi)部和ADCx_IN16輸入通道相連接,此通道把傳感器輸出的電壓轉(zhuǎn)換成數(shù)字值。溫度傳感器模擬輸入推薦采樣時間是17.1μs。當(dāng)沒有被使用時,傳感器可

 

溫度傳感器可以用來測量器件周圍的溫度(TA)。
溫度傳感器在內(nèi)部和ADCx_IN16輸入通道相連接,此通道把傳感器輸出的電壓轉(zhuǎn)換成數(shù)字值。
溫度傳感器模擬輸入推薦采樣時間是17.1μs。
當(dāng)沒有被使用時,傳感器可以置于關(guān)電模式。
注意:必須設(shè)置TSVREFE位激活內(nèi)部通道:ADCx_IN16(溫度傳感器)和ADCx_IN17(VREFINT)的轉(zhuǎn)換。

主要特征
●支持的溫度范圍:-40到125度
●精確度:+/- 1.5° C

讀溫度
為使用傳感器:
1.選擇ADCx_IN16輸入通道
2.選擇采樣時間大于2.2 μs
3.設(shè)置ADC控制寄存器2(ADC_CR2)的TSVREFE位,以喚醒關(guān)電模式下的溫度傳感器
4.通過設(shè)置ADON位啟動ADC轉(zhuǎn)換(或用外部觸發(fā))
5.讀ADC數(shù)據(jù)寄存器上的VSENSE 數(shù)據(jù)結(jié)果
6.利用下列公式得出溫度
溫度(°C) = {(V25 - VSENSE) / Avg_Slope} + 25
這里:
V25 = VSENSE
在25°C時的數(shù)值
Avg_Slope = 溫度與VSENSE曲線的平均斜率(單位為mV/° C 或 μV/ °C)
參考電氣特性章節(jié)中V25 和Avg_Slope的實際值。
注意:傳感器從關(guān)電模式喚醒后到可以輸出正確水平的VSENSE前,有一個建立時間。ADC在上電后也
有一個建立時間,為了縮短延時,應(yīng)該同時設(shè)置ADON和TSVREFE位。

以下部分來自wolaiye945的博客:

首先將數(shù)據(jù)進行比例轉(zhuǎn)化,可以使用微軟系統(tǒng)自帶的計算器,根據(jù)參考電壓3.3V在12位AD轉(zhuǎn)換對應(yīng)最大值0xFFF可知,1.42V對應(yīng)0x6E2(1762D),而斜率每攝氏度4.35mV對應(yīng)每攝氏度0x05,故此時公式可以修正為:溫度(°C) = {(0x6E2- VSENSE) / 5} + 25

綜上所述,芯片的溫度已經(jīng)可以通過計算存入變量,在經(jīng)過相應(yīng)的位處理就可以顯示在LCD上。
本人使用的代碼僅供參考,如下:
//變量聲明部分略去
mytemp = (0x6E2- ADC_ConvertedValue_Bak) / 0x05 + 25;

for (v2=3;v2;v2--)
{
v1=mytemp;
mytemp/=10;
LCD_DrawChar(3,(v2-1)<<3,HexValueOffset[v1]);
}

最后,還需要提示一下,在使用的時候不要忘記喚醒溫度傳感器(默認處于休眠狀態(tài)),也就是需要設(shè)置ADC控制寄存器2(ADC_CR2)的TSVREFE位為1,否則會得到一個幾乎為零的極小AD值,通過公式得到一個遠遠超出范圍的溫度值,顯然是錯誤的。
給控制寄存器置位可以使用直接置位的方法,但為了增強程序的模塊化程度,我建議使用STM32預(yù)定義的函數(shù)ADC_TempSensorVrefintCmd(ENABLE);
在初始化ADC后和開始轉(zhuǎn)換前的代碼段中調(diào)用該函數(shù),即可喚醒溫度傳感器的檢測。

以下來自泡桐樹

 

ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;//獨立模式CR1
ADC_InitStructure.ADC_ScanConvMode = ENABLE;//掃描模式使能
ADC_InitStructure.ADC_ContinuousConvMode = ENABLE;//連續(xù)轉(zhuǎn)換模式使能
ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;//啟動轉(zhuǎn)換的外部事件--無CR2
ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;//轉(zhuǎn)換后的數(shù)據(jù)右對齊
ADC_InitStructure.ADC_NbrOfChannel = 2;//轉(zhuǎn)換的通道數(shù)為2
ADC_Init(ADC1, &ADC_InitStructure);

//內(nèi)部溫度傳感器添加這一句

ADC_TempSensorVrefintCmd(ENABLE);


ADC_RegularChannelConfig(ADC1,ADC_Channel_11, 1, ADC_SampleTime_55Cycles5);//通道11采樣時間


//################ Channel 11(電位器)###### 內(nèi)部溫度傳感器改為 Channel 16 ###################
ADC_RegularChannelConfig(ADC1,ADC_Channel_16, 2, ADC_SampleTime_239Cycles5);



ADC_Cmd(ADC1, ENABLE);

 

顯示和轉(zhuǎn)換公式如下

u16 GetVolt(u16 advalue)
{
return (u16)(advalue*330/4096);
}

u16 GetTemp(u16 advalue)
{
u32 Vtemp_sensor;
s32 Current_Temp;

Vtemp_sensor=advalue*330/4096;
Current_Temp=(s32)(143-Vtemp_sensor)*10000/43+2500;
return (s16)Current_Temp;
}

初始化ADC,DMA后,循環(huán)讀取AD_Value[2]來獲取計數(shù)值,進而進行轉(zhuǎn)換。

 

 

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除( 郵箱:macysun@21ic.com )。
換一批
延伸閱讀
關(guān)閉