完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
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 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倍 } } |
|
相关推荐
12个回答
|
|
|
本帖最后由 andeyqi 于 2018-6-23 15:33 编辑
不能,内部的传感器 应该是检测CPU温度用的,CPU运行起来温度肯定和室温不是一个量级的,而且精度也相对低些,主要是用来查看CPU温度变化的趋势。要测室温建议加温度传感器把 |
|
|
|
|
|
完全不能,不管单片机工不工作,室温对芯片内部温度的影响都完全不可测。
|
|
|
|
|
|
用热敏电阻去检测吧
|
|
|
|
|
|
肯定不能,内部温度测试的是MCU的温度,和室内温度不是一回事
|
|
|
|
|
|
内部温度传感器一般用来检测CPU的温度,测量室温一般需要别的温度传感器
|
|
|
|
|
|
试想一下,MCU内部温度传感器不是直接和外部环境接触,能得到环境温度吗?
|
|
|
|
|
|
最好还是用外部的,内部的要考虑MCU本身发热的问题,
|
|
|
|
|
|
|
|
|
|
|
|
不能,没有太大意义
|
|
|
|
|
|
一种方法是使用一个差分放大器接在热敏电阻两端,热敏电阻接在一个电阻分压器中,再将测量的电压和温度通过计算或实验一一对应起来。还有一种就是买现成的温度传感器,这样的传感器有很多,数字模拟的都有。
|
|
|
|
|
|
别开玩笑啦,一个18B20几元的事让你搞成复杂的事
|
|
|
|
|
|
关外设,进低功耗模式,然后你再测误差多大不会很夸张的,在没有外部芯片的时候还是勉强可以这么用的
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
STM32F405驱动DS1302时钟模块,输出时间错乱该怎么排查?
2810 浏览 2 评论
stm32f405rgt6驱动DS1302ZN出现时间错乱问题
2420 浏览 1 评论
stm32用fsmc读取ad7606采集数据,数据不变,只有开发版复位才更新数据
2288 浏览 0 评论
2404 浏览 1 评论
1643 浏览 1 评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-2 10:45 , Processed in 0.956297 second(s), Total 96, Slave 79 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
3546