你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

stm32f030内部温度值 与室温差距过大。能不能用来检查室温?

[复制链接]
qianrushian 提问时间:2018-6-23 13:59 /
void T_Adc_Init(void)  
{
ADC_InitTypeDef ADC_InitStructure;
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1,ENABLE);
  ADC_DeInit(ADC1);
  ADC_StructInit(&ADC_InitStructure);

  ADC_InitStructure.ADC_Resolution = ADC_Resolution_12b;         
  ADC_InitStructure.ADC_ContinuousConvMode = DISABLE;            
  ADC_InitStructure.ADC_ExternalTrigConvEdge = ADC_ExternalTrigConvEdge_None;
  ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;         
  ADC_InitStructure.ADC_ScanDirection = ADC_ScanDirection_Backward;   
  ADC_Init(ADC1, &ADC_InitStructure);

  ADC_ChannelConfig(ADC1,ADC_Channel_16, ADC_SampleTime_239_5Cycles );
  
ADC_TempSensorCmd(ENABLE);

ADC_GetCalibrationFactor(ADC1);                                
ADC_Cmd(ADC1, ENABLE);                                         
while(ADC_GetFlagStatus(ADC1,ADC_FLAG_ADEN)==RESET);               

ADC_StartOfConversion(ADC1);

}
uint16_t T_Get_Adc()   //读取采样值
{
ADC_ChannelConfig(ADC1,ADC_Channel_16, ADC_SampleTime_239_5Cycles );
ADC_StartOfConversion(ADC1);  
while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC ));
return ADC_GetConversionValue(ADC1);
}

uint16_t T_Get_Adc_Average(uint8_t times)//读取多次采样值求平均
{
uint32_t temp_val=0;
uint8_t t;
for(t=0;t<times;t++)
{
  temp_val+=T_Get_Adc();
  delay_ms(5);
}
return temp_val/times;
}

int main(void)
{
uint32_t adcx=0,temp_a=0;
  float temp;
T_Adc_Init();
while(1)
{
  adcx=T_Get_Adc_Average(10);
  temp=((float)adcx*(3.3/4096));
  temp=(1.43-temp)/0.0043+25;  
  temp_a=temp*1000;//   扩大温度值的1000倍

}
}

收藏 评论13 发布时间:2018-6-23 13:59

举报

13个回答
andey 回答时间:2018-6-23 15:30:44
提示: 作者被禁止或删除 内容自动屏蔽
电子星辰 回答时间:2018-6-23 19:10:09
完全不能,不管单片机工不工作,室温对芯片内部温度的影响都完全不可测。

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

勿忘心安110 回答时间:2018-6-24 11:56:59
用热敏电阻去检测吧

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

Bowen 回答时间:2018-6-24 16:12:21
肯定不能,内部温度测试的是MCU的温度,和室内温度不是一回事

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

jiguosheng 回答时间:2018-6-24 19:28:28
试想一下,MCU内部温度传感器不是直接和外部环境接触,能得到环境温度吗?

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

wudianjun2001 回答时间:2018-6-25 09:01:56
最好还是用外部的,内部的要考虑MCU本身发热的问题,

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

qianrushian 回答时间:2018-6-25 10:19:56
勿忘心安110 发表于 2018-6-24 11:56
用热敏电阻去检测吧

热敏电阻怎么检测温度?
STM1024 回答时间:2018-6-25 14:55:57
不能,没有太大意义
jiguosheng 回答时间:2018-6-25 19:20:14
一种方法是使用一个差分放大器接在热敏电阻两端,热敏电阻接在一个电阻分压器中,再将测量的电压和温度通过计算或实验一一对应起来。还有一种就是买现成的温度传感器,这样的传感器有很多,数字模拟的都有。

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

五哥1 回答时间:2018-6-26 00:35:46
别开玩笑啦,一个18B20几元的事让你搞成复杂的事

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

wyxy163@126.com 回答时间:2018-6-26 09:01:55
提示: 作者被禁止或删除 内容自动屏蔽
w1wwee 回答时间:2019-9-10 07:45:13
学习下则我们么样
mylovemcu 回答时间:2019-9-10 08:08:36
完全没有意义   温度相差太多  没有参考价值
但是可以作为CPU温度输出  可以检测单片机温度  温度太高  可以认为是引脚短路  或其他故障  导致电流过大

所属标签

相似问题

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版