差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

两侧同时换到之前的修订记录 前一修订版
后一修订版
前一修订版
barometersensors [2023/07/24 09:59]
huangyuan
barometersensors [2023/07/25 12:07] (当前版本)
huangyuan
行 58: 行 58:
  
 天气预报:气压是天气变化的重要指标之一。气压传感器可以用于测量大气压力的变化,并根据这些数据来预测天气的变化。通过监测气压的趋势,可以预测是否有即将来临的降雨、气温变化等天气情况。 天气预报:气压是天气变化的重要指标之一。气压传感器可以用于测量大气压力的变化,并根据这些数据来预测天气的变化。通过监测气压的趋势,可以预测是否有即将来临的降雨、气温变化等天气情况。
 +
 +{{ ::​气压传感器在天气预报中的应用.jpg?​500 |}}
  
 导航和高度测量:气压传感器可以用于测量高度和海拔高度。它们可用于飞机、导航系统、高空气球等应用中,帮助确定物体或载具相对于地面的高度位置。例如,在航空中,气压传感器配合其他传感器(如加速度计、陀螺仪等)使用,可提供精确的高度测量数据。 导航和高度测量:气压传感器可以用于测量高度和海拔高度。它们可用于飞机、导航系统、高空气球等应用中,帮助确定物体或载具相对于地面的高度位置。例如,在航空中,气压传感器配合其他传感器(如加速度计、陀螺仪等)使用,可提供精确的高度测量数据。
 +
 +{{ ::​气压计.jpg?​500 |}}
  
 环境监测:气压传感器可用于环境监测和气候研究。它们可以测量大气压力的变化,帮助科学家了解和研究气候模式、气象现象以及大气层的变化。这些传感器广泛应用于气象站、环境监测设备和气候研究项目中。 环境监测:气压传感器可用于环境监测和气候研究。它们可以测量大气压力的变化,帮助科学家了解和研究气候模式、气象现象以及大气层的变化。这些传感器广泛应用于气象站、环境监测设备和气候研究项目中。
 +
 +{{ :​wiki:​环境监测.jpg?​500 |}}
  
 气压补偿:气压传感器可以用于补偿其他传感器的测量误差。在某些应用中,如液位测量、气体流量测量等,气压传感器可以测量环境大气压力的变化,并将其应用于修正其他传感器的输出,以提供更准确的测量结果。 气压补偿:气压传感器可以用于补偿其他传感器的测量误差。在某些应用中,如液位测量、气体流量测量等,气压传感器可以测量环境大气压力的变化,并将其应用于修正其他传感器的输出,以提供更准确的测量结果。
 +
 +{{ :​wiki:​气压补偿.jpg?​500 |}}
  
 总之,气压传感器在天气预报、导航和高度测量、环境监测以及补偿其他传感器等方面发挥着重要作用。它们帮助我们获得关于大气压力的信息,从而推断气候变化、确定高度位置和改进其他测量系统的准确性 总之,气压传感器在天气预报、导航和高度测量、环境监测以及补偿其他传感器等方面发挥着重要作用。它们帮助我们获得关于大气压力的信息,从而推断气候变化、确定高度位置和改进其他测量系统的准确性
行 79: 行 87:
 ### 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 |}}