差别
这里会显示出您选择的修订版和当前版本之间的差别。
两侧同时换到之前的修订记录 前一修订版 后一修订版 | 前一修订版 | ||
humidity_sensor [2023/07/17 15:51] chengshunkai |
humidity_sensor [2023/09/13 13:55] (当前版本) litter47 |
||
---|---|---|---|
行 5: | 行 5: | ||
湿度传感器是一种用于测量环境湿度水分含量的设备。它们通常使用一种被称为湿度传感器或湿度检测器的技术来检测大气中的水分含量。 | 湿度传感器是一种用于测量环境湿度水分含量的设备。它们通常使用一种被称为湿度传感器或湿度检测器的技术来检测大气中的水分含量。 | ||
- | ### 2. 湿度传感器的工作原理 | + | {{ :yuanli.jpg?500 |}} |
+ | |||
+ | ### 2. 湿度传感器的分类及原理 | ||
{{ :湿度传感器.jpg?600 |}} | {{ :湿度传感器.jpg?600 |}} | ||
行 20: | 行 22: | ||
电阻式湿度传感器通过测量这种电阻值的变化来推断环境中的湿度水分含量。它们通常与电路中的测量电桥或调谐电路结合使用,以获取湿度的准确读数。 | 电阻式湿度传感器通过测量这种电阻值的变化来推断环境中的湿度水分含量。它们通常与电路中的测量电桥或调谐电路结合使用,以获取湿度的准确读数。 | ||
+ | |||
+ | {{ :dianzushidu.png?600 |}} | ||
**类型:** | **类型:** | ||
行 47: | 行 51: | ||
4.响应时间:电阻湿度传感器的响应时间通常较慢。 | 4.响应时间:电阻湿度传感器的响应时间通常较慢。 | ||
- | ####电容式温度传感器 | + | ####电容式湿度传感器 |
电容式湿度传感器通常由两个电极组成,它们之间形成一个电容。其中一个电极通常是湿度敏感材料,例如一层吸湿材料或涂层。 | 电容式湿度传感器通常由两个电极组成,它们之间形成一个电容。其中一个电极通常是湿度敏感材料,例如一层吸湿材料或涂层。 | ||
行 54: | 行 58: | ||
通过测量电容的变化,可以推断环境中的湿度水分含量。电容式湿度传感器通常使用电路中的振荡器或谐振电路来测量电容值。传感器的输出可以是模拟信号或数字信号,经过相应的信号处理和转换后,得到湿度的读数。 | 通过测量电容的变化,可以推断环境中的湿度水分含量。电容式湿度传感器通常使用电路中的振荡器或谐振电路来测量电容值。传感器的输出可以是模拟信号或数字信号,经过相应的信号处理和转换后,得到湿度的读数。 | ||
+ | |||
+ | {{ :dianrongshidu.jpg?600 |}} | ||
**类型:** | **类型:** | ||
行 96: | 行 102: | ||
热导湿度传感器的工作原理是测量两个传感元件之间的温度变化,一个传感元件暴露在湿度下,另一个保持在干燥的参考环境中。 通过分析这个温差,可以确定湿度水平。 这些传感器具有良好的精度、线性度和稳定性等优点,适合工业、环境监测和 HVAC 系统中的各种应用。 | 热导湿度传感器的工作原理是测量两个传感元件之间的温度变化,一个传感元件暴露在湿度下,另一个保持在干燥的参考环境中。 通过分析这个温差,可以确定湿度水平。 这些传感器具有良好的精度、线性度和稳定性等优点,适合工业、环境监测和 HVAC 系统中的各种应用。 | ||
+ | |||
+ | {{ :redaoshidu.jpg?500 |}} | ||
**类型:** | **类型:** | ||
行 196: | 行 204: | ||
模拟输出,通常采用与测量的相对湿度水平成正比的电压信号形式 | 模拟输出,通常采用与测量的相对湿度水平成正比的电压信号形式 | ||
- | **SHT3X** | + | **DHT11** |
+ | {{ :dht11.jpg?300 |}} | ||
+ | |||
+ | 介绍: | ||
+ | |||
+ | DHT11是一款数字温湿度传感器。它是一种经济实惠、简单易用的环境传感器,广泛应用于各种电子项目和设备中。DHT11传感器可以同时测量环境的温度和湿度。 | ||
+ | |||
+ | 测量范围: | ||
+ | |||
+ | DHT11传感器可以测量的温度范围为摄氏0度至50度。测量相对湿度范围为20%到90%。这些范围通常适用于室内环境的监测。 | ||
+ | |||
+ | 测量精度: | ||
+ | |||
+ | 温度测量,DHT11的精度约为±2摄氏度。湿度测量,其精度约为±5%。 | ||
+ | |||
+ | 输出接口: | ||
+ | |||
+ | DHT11传感器使用数字单线接口进行数据通信。它只需要一根数据线与主控设备相连,通过该线路进行数据传输。数据传输采用一种简单的协议,传感器将温度和湿度数据编码后发送给主控设备,主控设备再解析数据并进行相应的处理。 | ||
### 6. 参考使用案例 | ### 6. 参考使用案例 | ||
+ | |||
+ | **DHT11测量温湿度** | ||
+ | |||
+ | {{ :dht11.jpg?300 |}} | ||
+ | |||
+ | {{:dht11.mp4|}} | ||
+ | |||
+ | import machine | ||
+ | from oled import oled | ||
+ | from ssd1306 import SSD1306_SPI | ||
+ | from board import pin_cfg | ||
+ | import time | ||
+ | import framebuf | ||
+ | |||
+ | # 定义连接到 DHT11 数据线的引脚 | ||
+ | data_pin=machine.Pin(17, machine.Pin.IN, machine.Pin.PULL_UP) | ||
+ | |||
+ | def readdata(): | ||
+ | # 向 DHT11 传感器发送启动信号 | ||
+ | data_pin.init(machine.Pin.OUT) | ||
+ | data_pin.low() | ||
+ | time.sleep_ms(20)#微处理器的I/O设置为输出同时输出低电平,且低电平保持时间不能小于18ms(最大不得超过30ms) | ||
+ | data_pin.high() | ||
+ | data_pin.init(machine.Pin.IN, machine.Pin.PULL_UP) | ||
+ | # 等待 DHT11 传感器响应 | ||
+ | while data_pin.value() == 1: | ||
+ | pass | ||
+ | while data_pin.value() == 0: | ||
+ | pass | ||
+ | while data_pin.value() == 1: | ||
+ | pass | ||
+ | data_pro = [] | ||
+ | j=0 | ||
+ | k=0 | ||
+ | while j < 40: | ||
+ | k = 0 | ||
+ | while data_pin.value() == 0: | ||
+ | pass | ||
+ | while data_pin.value() == 1: | ||
+ | k += 1 | ||
+ | if k > 100: | ||
+ | break | ||
+ | if k < 3: | ||
+ | data_pro.append(0) | ||
+ | else: | ||
+ | data_pro.append(1) | ||
+ | j += 1 | ||
+ | return data_pro | ||
+ | |||
+ | def read(): | ||
+ | # 读取传感器数据并验证校验和 | ||
+ | data=[] | ||
+ | data = readdata() | ||
+ | humidity_bit=data[0:8] | ||
+ | humidity_point_bit=data[8:16] | ||
+ | temperature_bit=data[16:24] | ||
+ | temperature_point_bit=data[24:32] | ||
+ | check_bit=data[32:40] | ||
+ | humidity=0 | ||
+ | humidity_point=0 | ||
+ | temperature=0 | ||
+ | temperature_point=0 | ||
+ | check=0 | ||
+ | #温度、湿度、校验位计算 | ||
+ | for i in range(8): | ||
+ | #湿度计算 | ||
+ | humidity+=humidity_bit[i]*2**(7-i) | ||
+ | humidity_point+=humidity_point_bit[i]*2**(7-i) | ||
+ | #温度计算 | ||
+ | temperature+=temperature_bit[i]*2**(7-i) | ||
+ | temperature_point+=temperature_point_bit[i]*2**(7-i) | ||
+ | #校验位计算 | ||
+ | check+=check_bit[i]*2**(7-i) | ||
+ | tmp=humidity+humidity_point+temperature+temperature_point | ||
+ | return temperature, humidity | ||
+ | |||
+ | while True: | ||
+ | # 尝试从DHT11传感器读取温度和湿度数据 | ||
+ | temperature, humidity = read() | ||
+ | print("Temperature:", temperature, "°C") | ||
+ | print("Humidity:", humidity, "%") | ||
+ | oled.fill(0) | ||
+ | oled.show() | ||
+ | oled.text("Humidity:"+str(humidity)+"%",16,20) | ||
+ | oled.text("Temperature:"+str(temperature)+"C",5,30) | ||
+ | oled.show() | ||
+ | time.sleep(2) # 等待 2 秒,然后进行下一次读数 | ||