锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

python 驱动 歌儿声学气压传感器 SPL06系列

时间:2022-08-08 09:00:01 传感器中spl

1、IIC驱动

2、SPL06-001/SPL06-007

3、驱动部分

class SPL06():     I2C=I2C(I2c_CLK_PIN,I2c_SDA_PIN)         SPL06_SlaveAddr = 0x76      # 写单个寄存器     def setReg(self, reg, dat):         self.I2C.write(self.SPL06_SlaveAddr,reg, dat)      # 读取单个寄存器包装     def getReg(self, reg):         self.rb[0]=0         self.rb[0]=self.I2C.read(self.SPL06_SlaveAddr,reg)         return self.rb[0]      # 读取双寄存器数据     def get2Reg(self, reg):         return self.getReg(reg)   self.getReg(reg 1) * 256          # 传感器初始化     def __init__(self):         self.rb = bytearray(1)                 self.C0 = (self.getReg(0x10)<<4) ((self.getReg(0x11)&0xF0)>>4)         self.C0 = (0-((0xFFF^self.C0) 1)) if (self.C0 & (1<<11)) else self.C0          self.C1 = ((self.getReg(0x11)&0x0F)<<8) self.getReg(0x12)         self.C1 = (0-((0xFFF^self.C1) 1)) if (self.C1 & (1<<11)) else self.C1          self.C00 = (self.getReg(0x13)<<12) (self.getReg(0x14)<<4) (self.getReg(0x15)>>4)         self.C00 = (0-((0xFFFFF^self.C00) 1)) if (self.C00 & (1<<19)) else self.C00          self.C10 = ((self.getReg(0x15)&0x0F)<<16) (self.getReg(0x16)<<8) self.getReg(0x17)         self.C10 = (0-((0xFFFFF^self.C10) 1)) if (self.C10 & (1<<19)) else self.C10          self.C01 = (self.getReg(0x18)<<8) self.getReg(0x19)         self.C01 = (0-((0xFFFF^self.C01) 1)) if (self.C01 & (1<<15)) else self.C01          self.C11 = (self.getReg(0x1A)<<8) self.getReg(0x1B)         self.C11 = (0-((0xFFFF^self.C11) 1)) if (self.C11 & (1<<15)) else self.C11          self.C20 = (self.getReg(0x1C)<<8) self.getReg(0x1D)         self.C20 = (0-((0xFFFF^self.C20) 1)) if (self.C20 & (1<<15)) else self.C20          self.C21 = (self.getReg(0x1E)<<8) self.getReg(0x1F)         self.C21 = (0-((0xFFFF^self.C21) 1)) if (self.C21 & (1<<15)) else self.C21          self.C30 = (self.getReg(0x20)<<8) self.getReg(0x21)         self.C30 = (0-((0xFFFF^self.C30) 1)) if (self.C30 & (1<<15)) else self.C30          self.setReg(0x06,0x25.#气压测量配置   4 measurements   32 times         temp = self.getReg(0x09) #oversampling times>8时必须使用         self.setReg(0x09,temp|0x04)          self.setReg(0X07,0xa3) #温度测量配置 4 measurements  8 times          self.setReg(0x08,0x07)#测量模式配置 连续测量模式         self.T = 0         self.P = 0         self.Altitude = 0      # 读取数据并计算     def get(self):         adc_P = (self.getReg(0x00)<<16)   (self.getReg(0X01)<<8)   (self.getReg(0X02))         adc_P = (0-((adc_P^0xFFFFFF) 1)) if (adc_P & (1<<23))else adc_P         adc_T = (self.getReg(0x03)<<16)   (self.getReg(0X04)<<8)   (self.getReg(0X05))         adc_T= (0-((adc_T^0xFFFFFF) 1)) if (adc_T & (1<<23))else adc_T         Traw_src = adc_T/7864320.0   # 8times         Praw_src = adc_P/516096.0    # 32times         self.T = (0.5*self.C0 Traw_src*self.C1)-4.5 #板有热源做简单的偏差处理         self.P = self.C00 Praw_src*(self.C10 Praw_src*(self.C20 Praw_src*self.C30)) Traw_src*self.C01 Traw_src*Praw_src*(self.C11 Praw_src*self.C21)         self.Altitude = 44330*(1-(self.P/101325)**(1/5.255))         return [self.T,self.P,self.Altitude]           # 获取温度值:单位℃     def getTemp(self):         self.get()         return self.T      # 获取大气压力:单位pa     def getPress(self):         self.get()         return self.P      # 获得海拔:单位米     def getAltitude(self):         self.get()         return self.Altitude     #soft Reset         def reset(self):         self.setReg(0x0C, 0x09)      def SPL06Chack(self):#检查SPL06连接正常         print("ID:",self.getReg(0x0D))         if self.getReg(0x0D)==0x10:             return 1         else:             return 0

4.测试部分:

if __name__ == "__main__" :     SPL06_obj=SPL06()     if SPL06_obj.SPL06Chack()==1:         print('SPL06检测OK')     for  i in range(1,500):         print('Temp:%f ℃  Press:%f Pa  Altitude:%f m'%(SPL06_obj.getTemp(),SPL06_obj.getPress(),SPL06_obj.getAltitude()))         time.sleep(1)

5.测试结果:

请点击完整的驱动代码:https://download.csdn.net/download/DD_Boy_liang/85721891

7、模拟IIC请点击代码:https://download.csdn.net/download/DD_Boy_liang/85721934

锐单商城拥有海量元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章