来源:http://www.fuhome.net/bbs/forum.php?mod=viewthread&tid=2141
DHT11那个单总线的温湿度传感器用的很多了,aosong推出了DHT12,这个精度更高,原来DHT11温度误差2°,这个12为0.5°,温度范围也从0-50°提高到-20-60°,这个就可以测量冬天的一般家里的室温了。
废话不多说,这个DHT12主要是比DHT11多了I2C接口,我用的stm32F103,文档说频率不超过400KHz,不过我用原子的at24c这个驱动来该,读不出来,waitack都不对,经过跟厂家技术沟通,实验,问题主要在与waitack时间要等待一会,否则就会出错,而且读取函数也要相应延时等待。
原子的程序基本是us,我实验得出了这个数据,见程序,亲测读出了温度 26°左右(空调坏了将就把),湿度54%
//读取函数,延时50us,太多ms级别貌似也有问题u8 IIC_Read_Byte(unsigned char ack){ unsigned char i,receive=0; SDA_IN(); for(i=0;i<8;i++ ) { IIC_SCL=0; delay_us(50); IIC_SCL=1; delay_us(50); receive<<=1; if(READ_SDA) receive++; } if (!ack) IIC_NAck();//nACK else IIC_Ack(); //ACK return receive;}
附:
http://www.aosong.com/pdf/DHT12%E6%95%B0%E5%AD%97%E6%B8%A9%E6%B9%BF%E5%BA%A6%E4%BC%A0%E6%84%9F%E5%99%A8%EF%BC%88V1.3-20160315%EF%BC%89.pdf
奥松官方DHT12 STM32例程
https://pan.baidu.com/s/1o7BUASE