1. 芯科科技(Silicon labs)的Gecko系列芯片内部ADC集成有内部参考电压和温度传感器,温度精度很低,误差超过±3摄氏度,优点就是在精度要求不高的Z-Wave/Zigbee系统中提供了一个免费的温度传感器

ADC读取芯片内部温度传感器的方法

static void AdcSetup(void)
{// Enable ADC clockCMU_ClockEnable(cmuClock_ADC0, true);ADC_Init_TypeDef init = ADC_INIT_DEFAULT;ADC_InitSingle_TypeDef sInit = ADC_INITSINGLE_DEFAULT;init.timebase = ADC_TimebaseCalc(0);init.prescale = ADC_PrescaleCalc(400000, 0);ADC_Init(ADC0, &init);//Set input to temperature sensor. Reference must be 1.25VsInit.reference = adcRef1V25;sInit.acqTime = adcAcqTime8; /* Minimum time for temperature sensor */sInit.posSel = adcPosSelTEMP;ADC_InitSingle(ADC0, &sInit);
}static uint32_t AdcRead(void)
{ADC_Start(ADC0, adcStartSingle);while ( (ADC0->STATUS & ADC_STATUS_SINGLEDV) == 0 ){ }return ADC_DataSingleGet(ADC0);
}static float ConvertToCelsius(int32_t adcSample)
{uint32_t calTemp0;uint32_t calValue0;int32_t readDiff;float temp;//Factory calibration temperature from device information page. calTemp0 = ((DEVINFO->CAL & _DEVINFO_CAL_TEMP_MASK) >> _DEVINFO_CAL_TEMP_SHIFT);calValue0 = ((DEVINFO->ADC0CAL3 /* _DEVINFO_ADC0CAL3_TEMPREAD1V25_MASK is not correct in current CMSIS. This is a 12-bit value, not 16-bit. */ & 0xFFF0) >> _DEVINFO_ADC0CAL3_TEMPREAD1V25_SHIFT);if ((calTemp0 == 0xFF) || (calValue0 == 0xFFF)){//The temperature sensor is not calibrated return -100.0;}//Vref = 1250mV TGRAD_ADCTH = 1.84 mV/degC (from datasheet) readDiff = calValue0 - adcSample;temp = ((float)readDiff * 1250);temp /= (4096 * -1.84);//Calculate offset from calibration temperature temp = (float)calTemp0 - temp;return temp * 100;
}void customWriteAttributeEventHandler()
{int32_t sample = 0;int16_t temp = 0;emberEventControlSetInactive(customWriteAttributeEventData);sample = AdcRead();temp = ConvertToCelsius(sample);emberAfCorePrintln("sample=%d", sample);emberAfCorePrintln("temp=%d", temp);emberAfWriteServerAttribute(1, ZCL_TEMP_MEASUREMENT_CLUSTER_ID, ZCL_TEMP_MEASURED_VALUE_ATTRIBUTE_ID, &temp, ZCL_INT16S_ATTRIBUTE_TYPE);emberEventControlSetDelayMS(customWriteAttributeEventData, 30000);
}
  1. 使用热敏电阻或电阻型温度传感器通过ADC读取温度
    直接读出ADC值,根据热敏电阻的温度缺陷解析出相应的温度就可以了
void readTemperatureFromThermistor()
{float tempValue = 0;delayUs(100);externalTemperatureValue = p_aux_MeasureAD(CDRAUX_MUXINPUT_DCIN1, CDRAUX_SAMP_WND_12);temperatureValue =CaculateTrueTemp(externalTemperatureValue);
}
  1. 使用温度传感器,或温湿度传感器读取温度
    大部分传感器都是使用I2C总线通信,也有一些采用单总线方式例如:广州奥松的DHT11
    广州奥松电子国内知名的温湿度传感器厂家
    敏源传感科技
    SENSIRION–SHTC3,SHT3X
    TI的HDC1080,TMP75C等,
    RENESAS的MVH3004D
    单总线应用电路

    单总线读取温度数据

void dht_Rst(void)
{                 dht_IO_OUT();     dht_data_OUT_0;     nrf_delay_ms(25);    dht_data_OUT_1;    dht_data_OUT_1;     nrf_delay_us(30);
}
u8 dht_Check(void)
{   u8 time=0;dht_IO_IN();//SET INPUT   while (dht_data_IN&&time<100){time++;nrf_delay_us(1);} if(time>=100){printf("error\r\n");return 1;}else time=0;while (!dht_data_IN&&time<100){time++;nrf_delay_us(1);}if(time>=100){printf("error  2\r\n");return 1;}return 0;
}
u8 dht_Read_Bit(void)
{u8 time=0;while(dht_data_IN&&time<100){time++;nrf_delay_us(1);}time=0;while(!dht_data_IN&&time<100){time++;nrf_delay_us(1);}nrf_delay_us(40);if(dht_data_IN)return 1;else return 0;
}u8 dht_Read_Byte(void)
{        u8 i,dat;dat=0;for (i=0;i<8;i++) {dat<<=1; dat|=dht_Read_Bit();}                            return dat;
}
u8 dht_Read_Data(u8 *temp,u8 *humi)
{        u8 dat[5];u8 i;dht_Rst();if(dht_Check()==0){for(i=0;i<5;i++){dat[i]=dht_Read_Byte();}if((dat[0]+dat[1]+dat[2]+dat[3])==dat[4]){*humi=dat[0];*temp=dat[2];}}else {return 1;}return 0;
}u8 dht_Init(void)
{dht_Rst();return dht_Check();
}

温度湿度传感器用法笔记相关推荐

  1. 树莓派+串口墨水电子屏幕+温度湿度传感器打造专属时钟

    前言 前两天在http://shumeipai.nxez.com/上看到一篇文章<宅男必备:配备电子纸屏幕的抽纸盒>,发现作者使用树莓派和一些硬件设备打造了一款特别有趣的东西,于是我也特别 ...

  2. 基于 Arduino 的温度+湿度传感器

    虽然根本不懂电路,但经过查阅资料,总算是实现了.在这里做一个记录,以免忘记. 开发环境 硬件 Arduino uno r3 开发板,点我看Arduino各版本的比较,uno的第3个版本,也是目前市面上 ...

  3. Qt温度湿度传感器采样上位机源代码C++数据记录功能Windows上位机

    Qt温度湿度传感器采样上位机源代码C++数据记录功能Windows上位机 YID:765645958944466他也是来自江湖

  4. 温度湿度传感器流程图_温度传感器和湿度传感器在高铁轨道板智能养护中的应用...

    导读:近日,国内首条高智能轨道板生产线产品在天津宝坻一次性通过验收.该生产线担负京唐高速铁路40991块轨道板的生产任务,年生产轨道板可达43800块,是目前国内规模最大的智能化轨道板生产线.其中,在 ...

  5. 温度湿度传感器流程图_为什么温湿度传感器用一段时间就会漂移?

    温湿度是冷和热物体的物理量.温湿度作为衡量整体环境质量的重要标准,在生产和科学研究中,许多物理现象和化学过程在一定温度.湿度下进行.其中农业.工业.楼宇.办公室.机房等领域对温湿度传感器的需求量越来越 ...

  6. Arduino IDE 开发 ESP-01S/ESP-01物联网实战检测温度湿度上传MQTT服务器

    一.硬件准备 USB转ESP8266两块.DHT11温度湿度传感器.ESP8266-01/ESP8266-01一块(如果学习的话多买几块,ESP-01/ESP-01S的区别) USB转ESP8266 ...

  7. Python通过云平台接口读取温度湿度传感器的实时监控数据

    开学第一课:一定不要这样问老师Python问题 董付国老师Python系列教材推荐与选用参考 ============= 版权声明:由于公众号后台规则问题,本文暂时无法设置原创标记,但仍属原创内容,微 ...

  8. Arduino与Proteus仿真实例-DHT11温度湿度传感器驱动仿真

    DHT11温度湿度传感器驱动仿真 DHT11 是一款基本的超低成本数字温度和湿度传感器. 它使用电容式湿度传感器和热敏电阻来测量周围的空气,并在数据引脚上吐出数字信号(不需要模拟输入引脚). 它使用起 ...

  9. 基于STM32单片机甲醛二氧化碳温度湿度采集系统

    实践制作DIY- GC008-甲醛二氧化碳温度湿度采集系统 一.功能说明: 基于STM32单片机设计-甲醛二氧化碳温度湿度采集系统 功能介绍: 1.基于STM32F103C系列,甲醛二氧化碳传感器,O ...

最新文章

  1. Phabricator是什么,代码审查工具
  2. 机器学习项目模板:ML项目的6个基本步骤
  3. 张萍萍 计科高职13-1 201303014010 实践三结对项目
  4. 【命令】usemod 的用法
  5. 《C程序猿从校园到职场》勘误
  6. 爬虫的基本知识第一个请求requests模块的基本使用
  7. 最后8小时 | 最新智能驾驶视觉技术行业研究报告出炉!圈内从业者、投资人不可错过...
  8. windows nt service 框架
  9. 微信小程序自定义组件方案
  10. 【渝粤教育】电大中专电子商务网站建设与维护 (27)作业 题库
  11. 同一个闭区间上有界变差函数的和与积都是有界变差函数
  12. linux下c语言俄罗斯方块,c语言做俄罗斯方块
  13. HALCON 20.11:深度学习笔记(10)---分类
  14. 加密解密:使用对称密码加密文件
  15. php addslash,php addslashes用法详解
  16. ttk python_python GUI ttk库 -- Apple的学习笔记
  17. HDRP高清渲染管线-学习资料汇总
  18. yuque-hexo:语雀写文,自动部署 Hexo 博客
  19. select 之分组查询
  20. Windows XP系统常见故障简单排除

热门文章

  1. waitfor 的用法
  2. 明星时尚春装搭配不费事
  3. 这应该是雅思界的天花板
  4. 096《活出生命的意义》简记
  5. 河海大学计算机与信息学院研究生导师,信息工程学院 |研究生导师| 详细内容...
  6. 最新青龙面板一键搭建及拉库脚本教程----JD挂机一体化平台搭建之篇一【2022.11.29】
  7. php分页显示类——在线拍卖行(1)
  8. 应用链的兴起将带来哪些风险和机遇?未来将会如何发展?
  9. 国内不加班的IT公司
  10. Vue--provide, inject--使用/教程/实例