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

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管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版