温度湿度传感器用法笔记
- 芯科科技(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);
}
- 使用热敏电阻或电阻型温度传感器通过ADC读取温度
直接读出ADC值,根据热敏电阻的温度缺陷解析出相应的温度就可以了
void readTemperatureFromThermistor()
{float tempValue = 0;delayUs(100);externalTemperatureValue = p_aux_MeasureAD(CDRAUX_MUXINPUT_DCIN1, CDRAUX_SAMP_WND_12);temperatureValue =CaculateTrueTemp(externalTemperatureValue);
}
- 使用温度传感器,或温湿度传感器读取温度
大部分传感器都是使用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();
}
温度湿度传感器用法笔记相关推荐
- 树莓派+串口墨水电子屏幕+温度湿度传感器打造专属时钟
前言 前两天在http://shumeipai.nxez.com/上看到一篇文章<宅男必备:配备电子纸屏幕的抽纸盒>,发现作者使用树莓派和一些硬件设备打造了一款特别有趣的东西,于是我也特别 ...
- 基于 Arduino 的温度+湿度传感器
虽然根本不懂电路,但经过查阅资料,总算是实现了.在这里做一个记录,以免忘记. 开发环境 硬件 Arduino uno r3 开发板,点我看Arduino各版本的比较,uno的第3个版本,也是目前市面上 ...
- Qt温度湿度传感器采样上位机源代码C++数据记录功能Windows上位机
Qt温度湿度传感器采样上位机源代码C++数据记录功能Windows上位机 YID:765645958944466他也是来自江湖
- 温度湿度传感器流程图_温度传感器和湿度传感器在高铁轨道板智能养护中的应用...
导读:近日,国内首条高智能轨道板生产线产品在天津宝坻一次性通过验收.该生产线担负京唐高速铁路40991块轨道板的生产任务,年生产轨道板可达43800块,是目前国内规模最大的智能化轨道板生产线.其中,在 ...
- 温度湿度传感器流程图_为什么温湿度传感器用一段时间就会漂移?
温湿度是冷和热物体的物理量.温湿度作为衡量整体环境质量的重要标准,在生产和科学研究中,许多物理现象和化学过程在一定温度.湿度下进行.其中农业.工业.楼宇.办公室.机房等领域对温湿度传感器的需求量越来越 ...
- Arduino IDE 开发 ESP-01S/ESP-01物联网实战检测温度湿度上传MQTT服务器
一.硬件准备 USB转ESP8266两块.DHT11温度湿度传感器.ESP8266-01/ESP8266-01一块(如果学习的话多买几块,ESP-01/ESP-01S的区别) USB转ESP8266 ...
- Python通过云平台接口读取温度湿度传感器的实时监控数据
开学第一课:一定不要这样问老师Python问题 董付国老师Python系列教材推荐与选用参考 ============= 版权声明:由于公众号后台规则问题,本文暂时无法设置原创标记,但仍属原创内容,微 ...
- Arduino与Proteus仿真实例-DHT11温度湿度传感器驱动仿真
DHT11温度湿度传感器驱动仿真 DHT11 是一款基本的超低成本数字温度和湿度传感器. 它使用电容式湿度传感器和热敏电阻来测量周围的空气,并在数据引脚上吐出数字信号(不需要模拟输入引脚). 它使用起 ...
- 基于STM32单片机甲醛二氧化碳温度湿度采集系统
实践制作DIY- GC008-甲醛二氧化碳温度湿度采集系统 一.功能说明: 基于STM32单片机设计-甲醛二氧化碳温度湿度采集系统 功能介绍: 1.基于STM32F103C系列,甲醛二氧化碳传感器,O ...
最新文章
- Phabricator是什么,代码审查工具
- 机器学习项目模板:ML项目的6个基本步骤
- 张萍萍 计科高职13-1 201303014010 实践三结对项目
- 【命令】usemod 的用法
- 《C程序猿从校园到职场》勘误
- 爬虫的基本知识第一个请求requests模块的基本使用
- 最后8小时 | 最新智能驾驶视觉技术行业研究报告出炉!圈内从业者、投资人不可错过...
- windows nt service 框架
- 微信小程序自定义组件方案
- 【渝粤教育】电大中专电子商务网站建设与维护 (27)作业 题库
- 同一个闭区间上有界变差函数的和与积都是有界变差函数
- linux下c语言俄罗斯方块,c语言做俄罗斯方块
- HALCON 20.11:深度学习笔记(10)---分类
- 加密解密:使用对称密码加密文件
- php addslash,php addslashes用法详解
- ttk python_python GUI ttk库 -- Apple的学习笔记
- HDRP高清渲染管线-学习资料汇总
- yuque-hexo:语雀写文,自动部署 Hexo 博客
- select 之分组查询
- Windows XP系统常见故障简单排除