- 1、本文档共7页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Arduino入门教程实验28DHT11温湿度实验
【蓝宙每日一讲】第75讲Arduino入门教程实验28DHT11温湿度实验1实验原理????图5-28-1 DHT11温湿度实物图DHT11 数字温湿度传感器(图5-28-1)是一款含有已校准数字信号输出的温湿度复合传感器。它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高的可靠性与卓越的长期稳定性。传感器包括一个电阻式感湿元件和一个NTC 测温元件,并与一个高性能8 位单片机相连接。因此该产品具有品质卓越、超快响应、抗干扰能力强、性价比极高等优点。每个DHT11 传感器都在极为精确的湿度校验室中进行校准。校准系数以程序的形式储存在OTP 内存中,传感器内部在检测信号的处理过程中要调用这些校准系数。单线制串行接口,使系统集成变得简易快捷。超小的体积、极低的功耗,信号传输距离可达20 米以上,使其成为各类应用甚至最为苛刻的应用场合的最佳选则。DHT11数字温湿度传感器模块为3 针PH2.0 封装。连接方便。性能描述供电电压:3-5.5V供电电流:最大2.5Ma温度范围:0-50℃误差±2℃湿度范围:20-90%RH 误差±5%RH响应时间: 1/e(63%) 6-30s测量分辨率分别为 8bit(温度)、8bit(湿度)采样周期间隔不得低于1 秒钟模块尺寸:30x20mm传感器的时序DATA 用于微处理器与 DHT11之间的通讯和同步,采用单总线数据格式,一次通讯时间4ms左右,数据分小数部分和整数部分,具体格式在下面说明,当前小数部分用于以后扩展,现读出为零.操作流程如下:一次完整的数据传输为40bit,高位先出。数据格式:8bit湿度整数数据+8bit湿度小数数据+8bi温度整数数据+8bit温度小数数据+8bit校验和数据传送正确时校验和数据等于“8bit湿度整数数据+8bit湿度小数数据+8bi温度整数数据+8bit温度小数数据”所得结果的末8位。用户MCU发送一次开始信号后,DHT11从低功耗模式转换到高速模式,等待主机开始信号结束后,DHT11发送响应信号,送出40bit的数据,并触发一次信号采集,用户可选择读取部分数据.从模式下,DHT11接收到开始信号触发一次温湿度采集,如果没有接收到主机发送开始信号,DHT11不会主动进行温湿度采集.采集数据后转换到低速模式。2硬件电路遥控灯实验器件参考表5-28-2。?实验器件?数量landzoduino开发板1编程线1杜邦线若干面包板1DTH111图5-28-2 遥控灯实验器件表遥控灯实验电路图参考图5-28-3。图5-28-3 实验连接实物图3程序设计#define DHT11_PIN 0 // ADC0 接到模拟口0byte read_dht11_dat(){byte i = 0;byte result=0;for(i=0; i 8; i++){while(!(PINC _BV(DHT11_PIN))); // waitfor 50usdelayMicroseconds(30);if(PINC _BV(DHT11_PIN))result |=(1(7-i));while((PINC _BV(DHT11_PIN))); // wait1 finish}return result;}void setup(){DDRC |= _BV(DHT11_PIN);PORTC |= _BV(DHT11_PIN);Serial.begin(19200);Serial.println(Ready);}void loop(){byte dht11_dat[5];byte dht11_in;byte i;//start condition//1. pull-down i/o pin from 18msPORTC = ~_BV(DHT11_PIN);delay(18);PORTC |= _BV(DHT11_PIN);delayMicroseconds(40);DDRC = ~_BV(DHT11_PIN);delayMicroseconds(40);dht11_in= PINC _BV(DHT11_PIN);if(dht11_in){Serial.println(dht11 start condition 1not met);return;}delayMicroseconds(80);dht11_in = PINC _BV(DHT11_PIN);if(!dht11_in){Serial.println(dht11 start condition 2not met);return;}delayMicroseconds(80);//now ready for data receptionfor(i=0; i5; i++)dht11_dat = read_dht11_dat();D
文档评论(0)