差别
这里会显示出您选择的修订版和当前版本之间的差别。
两侧同时换到之前的修订记录 前一修订版 后一修订版 | 前一修订版 | ||
barometersensors [2023/07/24 09:36] huangyuan |
barometersensors [2023/07/25 12:07] (当前版本) huangyuan |
||
---|---|---|---|
行 28: | 行 28: | ||
* 低功耗:这种传感器通常具有低功耗的特点,适用于电池供电或对能源消耗敏感的应用场景。 | * 低功耗:这种传感器通常具有低功耗的特点,适用于电池供电或对能源消耗敏感的应用场景。 | ||
- | + | ||
- | {{:压电电阻式气压传感器.png?500|}} | + | {{ :压电电阻式气压传感器.png?500 |}} |
图1:压阻电阻式气压传感器结构 | 图1:压阻电阻式气压传感器结构 | ||
行 47: | 行 47: | ||
* 小型化和集成化:这种类型的传感器通常具有小型化的设计。它们占用空间较小,适用于对尺寸要求严格的应用场景。此外,静电电容式气压传感器也可以与其他传感器或电路集成在一起,以实现更多功能的综合系统。 | * 小型化和集成化:这种类型的传感器通常具有小型化的设计。它们占用空间较小,适用于对尺寸要求严格的应用场景。此外,静电电容式气压传感器也可以与其他传感器或电路集成在一起,以实现更多功能的综合系统。 | ||
- | {{:静电电容式气压传感器结构.png?500|}} | + | {{ :静电电容式气压传感器结构.png?500 |}} |
图2:静电电容式气压传感器结构 | 图2:静电电容式气压传感器结构 | ||
行 58: | 行 58: | ||
天气预报:气压是天气变化的重要指标之一。气压传感器可以用于测量大气压力的变化,并根据这些数据来预测天气的变化。通过监测气压的趋势,可以预测是否有即将来临的降雨、气温变化等天气情况。 | 天气预报:气压是天气变化的重要指标之一。气压传感器可以用于测量大气压力的变化,并根据这些数据来预测天气的变化。通过监测气压的趋势,可以预测是否有即将来临的降雨、气温变化等天气情况。 | ||
+ | |||
+ | {{ ::气压传感器在天气预报中的应用.jpg?500 |}} | ||
导航和高度测量:气压传感器可以用于测量高度和海拔高度。它们可用于飞机、导航系统、高空气球等应用中,帮助确定物体或载具相对于地面的高度位置。例如,在航空中,气压传感器配合其他传感器(如加速度计、陀螺仪等)使用,可提供精确的高度测量数据。 | 导航和高度测量:气压传感器可以用于测量高度和海拔高度。它们可用于飞机、导航系统、高空气球等应用中,帮助确定物体或载具相对于地面的高度位置。例如,在航空中,气压传感器配合其他传感器(如加速度计、陀螺仪等)使用,可提供精确的高度测量数据。 | ||
+ | |||
+ | {{ ::气压计.jpg?500 |}} | ||
环境监测:气压传感器可用于环境监测和气候研究。它们可以测量大气压力的变化,帮助科学家了解和研究气候模式、气象现象以及大气层的变化。这些传感器广泛应用于气象站、环境监测设备和气候研究项目中。 | 环境监测:气压传感器可用于环境监测和气候研究。它们可以测量大气压力的变化,帮助科学家了解和研究气候模式、气象现象以及大气层的变化。这些传感器广泛应用于气象站、环境监测设备和气候研究项目中。 | ||
+ | |||
+ | {{ :wiki:环境监测.jpg?500 |}} | ||
气压补偿:气压传感器可以用于补偿其他传感器的测量误差。在某些应用中,如液位测量、气体流量测量等,气压传感器可以测量环境大气压力的变化,并将其应用于修正其他传感器的输出,以提供更准确的测量结果。 | 气压补偿:气压传感器可以用于补偿其他传感器的测量误差。在某些应用中,如液位测量、气体流量测量等,气压传感器可以测量环境大气压力的变化,并将其应用于修正其他传感器的输出,以提供更准确的测量结果。 | ||
+ | |||
+ | {{ :wiki:气压补偿.jpg?500 |}} | ||
总之,气压传感器在天气预报、导航和高度测量、环境监测以及补偿其他传感器等方面发挥着重要作用。它们帮助我们获得关于大气压力的信息,从而推断气候变化、确定高度位置和改进其他测量系统的准确性 | 总之,气压传感器在天气预报、导航和高度测量、环境监测以及补偿其他传感器等方面发挥着重要作用。它们帮助我们获得关于大气压力的信息,从而推断气候变化、确定高度位置和改进其他测量系统的准确性 | ||
- | ### 4. 主要的气压传感器供应商 | + | ### 4. 主要的气压传感器供应商[[http://example.com|外部链接]] |
- | [[http:// honeywell.com| honeywell]](霍尼韦尔)- Honeywell 是一家知名的传感器制造商,提供各种类型的气压传感器,包括绝对压力传感器和差压传感器。 | + | [[http://www.honeywell.com|honeywell]]:(霍尼韦尔)- Honeywell 是一家知名的传感器制造商,提供各种类型的气压传感器,包括绝对压力传感器和差压传感器。 |
- | [[http:// bosch-sensortec.com| bosch-sensortec]](博世传感器技术) - Bosch Sensortec 专注于MEMS(微机电系统)传感器技术,其产品线包括气压传感器,广泛应用于手机、智能手表和其他移动设备中。 | + | [[http://bosch-sensortec.com|bosch-sensortec]]:(博世传感器技术) - Bosch Sensortec 专注于MEMS(微机电系统)传感器技术,其产品线包括气压传感器,广泛应用于手机、智能手表和其他移动设备中。 |
- | [[http:// sensirion.com| sensirion]](森赛龙)- Sensirion 是一家瑞士公司,专注于各种环境传感器,包括气压传感器。他们提供高精度的数字式气压传感器,适用于工业、医疗和消费电子等领域。 | + | [[http://sensirion.com|sensirion]]:(森赛龙)- Sensirion 是一家瑞士公司,专注于各种环境传感器,包括气压传感器。他们提供高精度的数字式气压传感器,适用于工业、医疗和消费电子等领域。 |
- | [[http:// te.com| TE Connectivity]](泰科电子)- TE Connectivity 是一家综合性电子元器件制造商,他们提供气压传感器解决方案,用于航空航天、汽车、医疗和工业等领域。 | + | [[http://te.com|TE Connectivity]]:(泰科电子)- TE Connectivity 是一家综合性电子元器件制造商,他们提供气压传感器解决方案,用于航空航天、汽车、医疗和工业等领域。 |
### 5. 参考案例 | ### 5. 参考案例 | ||
- | [[https:// www.murata.com/en-us/products/productdetail?partno=ZPA4756-0311A-R]] | + | from machine import I2C, Pin |
- | + | import time | |
- | [[https://en.wikipedia.org/wiki/Barometer]] | + | i2c = I2C(0, scl=Pin(21), sda=Pin(20), freq=400_000) |
+ | ms5611_c = [0, 0, 0, 0, 0, 0, 0, 0] | ||
+ | GY63_ADDRESS = 0x77 | ||
+ | print(i2c.scan()) | ||
+ | def reset(): | ||
+ | i2c.writeto(GY63_ADDRESS, bytearray([0x1E])) | ||
+ | time.sleep(0.01) | ||
+ | def init(): | ||
+ | reset() | ||
+ | for i in range(8): | ||
+ | ms5611_c[i] = prom(i) | ||
+ | def prom(coef_num): | ||
+ | rxbuff = i2c.readfrom_mem(GY63_ADDRESS, 0XA0+coef_num*2, 3) | ||
+ | return rxbuff[0] << 8 | rxbuff[1] | ||
+ | def read_pressure(): | ||
+ | i2c.writeto(GY63_ADDRESS, bytearray([0x48])) | ||
+ | time.sleep(0.02) | ||
+ | data = i2c.readfrom_mem(GY63_ADDRESS, 0, 3) | ||
+ | pressure = (data[0] << 16) + (data[1] << 8) + data[2] | ||
+ | return pressure | ||
+ | def read_temperature(): | ||
+ | i2c.writeto(GY63_ADDRESS, bytearray([0x58])) | ||
+ | time.sleep(0.02) | ||
+ | data = i2c.readfrom_mem(GY63_ADDRESS, 0, 3) | ||
+ | temperature = (data[0] << 16) + (data[1] << 8) + data[2] | ||
+ | return temperature | ||
+ | def calculate(ut, up): | ||
+ | dT = ut - (ms5611_c[5] << 8) | ||
+ | off = (ms5611_c[2] << 16) + ((ms5611_c[4]*dT) >> 7) | ||
+ | sens = (ms5611_c[1] << 15) + ((ms5611_c[3]*dT) >> 8) | ||
+ | temp = 2000 + ((dT*ms5611_c[6]) >> 23) | ||
+ | if (temp < 2000): | ||
+ | delt = temp - 2000 | ||
+ | delt = 5 * delt *delt | ||
+ | off = off - (delt >> 1) | ||
+ | sens = sens - (delt >> 2) | ||
+ | if (temp < -1500): | ||
+ | delt = temp + 1500 | ||
+ | delt = delt * delt | ||
+ | off = off - (7 * delt) | ||
+ | sens = sens - ((11 * delt) >> 1) | ||
+ | temp = temp - ((dT*dT) >> 31) | ||
+ | press = (((int(up)*sens) >> 21) - off) >> 15 | ||
+ | return press, temp | ||
+ | init() | ||
+ | while True: | ||
+ | up = read_pressure() | ||
+ | ut = read_temperature() | ||
+ | pressure, temperature = calculate(ut, up) | ||
+ | print("Pressure:", pressure) | ||
+ | print("Temperature:", temperature) | ||
+ | time.sleep(1) | ||
+ | |||
+ | 结果显示: | ||
+ | |||
+ | {{ ::qiya.png?500 |}} | ||