Digital Pressure Sensor- With Humidity.
The module I am using is the GYBMEP and can be had for about $10
default Hi2c address is $EC but can be rejumpered to use $EE also.
On the back has a 3.3v regulator .They suggest 1.8 to 5v can be used to supply this board.
I would perhaps prefer to feed it with about 4v but is working perfectly from my 3.3v supply.
And also a Hi2c translator chip so can be used @ 3.3v and 5v logic.
Hopefully the trim values I expect will be similar for all BME280 sensors the signed negative values may need
to be checked for compatibility .
This seems to be a good upgrade from the BMP180 the filter works surprising well!
attached is bosch api C driver for interest.
The module I am using is the GYBMEP and can be had for about $10
default Hi2c address is $EC but can be rejumpered to use $EE also.
On the back has a 3.3v regulator .They suggest 1.8 to 5v can be used to supply this board.
I would perhaps prefer to feed it with about 4v but is working perfectly from my 3.3v supply.
And also a Hi2c translator chip so can be used @ 3.3v and 5v logic.
Hopefully the trim values I expect will be similar for all BME280 sensors the signed negative values may need
to be checked for compatibility .
This seems to be a good upgrade from the BMP180 the filter works surprising well!
attached is bosch api C driver for interest.
Code:
#picaxe 18m2 'marks
#no_data
pause 4000
#terminal 19200
SETFREQ M16
SYMBOL Calibrate_MSL_hPa = 0 ' No Adjust
'SYMBOL Calibrate_MSL_hPa = 38 ' Adjust to suit your elevation (3.8 hPa)at my location
SYMBOL T. = W0 SYMBOL F. = W0
SYMBOL UT = W0 SYMBOL UH = W1 SYMBOL UP = W0
SYMBOL C. = W0 SYMBOL H. = W1 SYMBOL P. = W0 SYMBOL Temp = W0
SYMBOL T1 = W1 SYMBOL H1 = W0 SYMBOL P1 = W1 SYMBOL P7 = W1
SYMBOL T2 = W2 SYMBOL H2 = W2 SYMBOL P2 = W2 SYMBOL rr = b4 SYMBOL r = b5
SYMBOL T3 = W3 SYMBOL H3 = W3 SYMBOL P3 = W3 SYMBOL P8 = W3
SYMBOL X1 = W4 SYMBOL H4 = W4 SYMBOL P4 = W4 SYMBOL P9 = W4
SYMBOL X2 = W5 SYMBOL H5 = W5 SYMBOL P5 = W5 SYMBOL p4Lsb = b10 SYMBOL index = b11
SYMBOL X3 = W6 SYMBOL H6 = W6 SYMBOL P6 = W6 SYMBOL inX2 = W6
SYMBOL Tfine = W12 'global
SYMBOL sign = b27 'global
SYMBOL xLsb = b26 SYMBOL signF = b26
Initialize:
HI2CSETUP I2CMASTER, $EC, I2Cfast_16, I2CBYTE ' set to 400kbps BME280 @ 3.3v
Hi2Cout $F2,($01) ' UHx1 sampling
Hi2Cout $F5,($10) ' Filter x16 changes sampling UT and UP to 20bit
Main:
Hi2Cout $F4,($56) ' UTx2 UPx16 sampling , force start of conversion
ConvertTemperatureBME280:
Hi2Cin $88,(b2,b3,b4,b5,b6,b7) ' t1 t2 t3 compensation parameter values from BME280
Hi2Cin $FA,(b1,b0,XLsb) ' UT bit data
sign=" " : T2 = T2 *2
T3 = T3 *2 ; BME280
; T3 = -T3 *2 ; BMP280 ?
X1 = UT -T1 : IF UT <T1 THEN : sign = "-" : X1 = -X1 : ENDIF
xLsb = xLsb /64
x2 = x1 +xLsb *x1 **4
X2 = X1 +xLsb **X1 *4 +x2 **T3
x3 = x1 +x1 +2 **t2
X1 = X1 +X1 +xLsb **T2 +x3
IF sign = "-" THEN : X2 = -X2 :ENDIF
Tfine = X1 +X2 ; BME280
; Tfine = X1 -X2 ; BMP280 ?
ConvertPressureBME280:
T. = 16000 -Tfine : signF = "^"
IF sign = " " AND Tfine > 15999 THEN : T. = Tfine -16000 : signF = "+" : ENDIF
IF sign = "-" THEN : T. = Tfine +16000 : ENDIF
Hi2Cin $94,(b8,b9,b10,b11,b12,b13)'p4 p5 p6 compensation parameter values from BME280
P6 = -P6 *2048 **T. **T.
P5 = P5 *512 **T.
IF signf = "^" THEN : P5 = P5 +P6 +8 /16: P5 = -P5 : ELSE : P5 = P5 -P6 +8 /16 : ENDIF
P4 = P4 *16 +P5
p4Lsb = P4//16 : P4 = P4 /16
Hi2Cin $8E,(b2,b3,b4,b5,b6,b7)'p1 p2 p3 compensation parameter values from BME280
P3 = P3 *5 **T. **T. **P1
P2 = -P2 *5 **T. *2 +1 **P1
IF signf = "^" THEN : P2 = P2 +P3 +5/10 : ELSE : P2 = P2 -P3 +5 /10 : P2 = -P2 : ENDIF
P1 = P1 +P2
inX2 = $FFFF /P1 : Temp = $FFFF //P1 +1
rr = P1 //10 : P1 = P1 /10
FOR index = 1 TO 4
inX2 = inX2 *10 : inX2 = Temp /P1 +inX2
r = inX2 //10 *rr
Temp = Temp //P1 *10 -r
NEXT index
Hi2Cin $F7,(B1,b0,xLsb) 'Up data
P. = $FFFF -UP -P4 : xLsb = $10 -xLsb -p4Lsb
IF xLsb =16 THEN : P. = P.+2 : ENDIF
IF xLsb >15 THEN : xLsb = xLsb //16 : P. =P.-1 : ENDIF
P5 = p. *inX2 **1000'
P2 = xLsb *625 **inX2 **10486
P5 = P5 +P2 : P2 = P5 //1000 /100
P5 = P5 /1000
P.= P. **inX2 +P5
P4 = P2 *5 : P6 = P4 //10 /5
P4 = P4 /10
P5 = P. *5 +P4
Hi2Cin $9A,(b2,b3,b6,b7,b8,b9)'p7 p8 p9 compensation parameter values from BME280
P9 = P9 *8 **P5 +P6 **P5
P8 = -P8 *4 **P5
P7 = P8 -P7 -P9 /16
P5 = P7 //10
P7 = P7 /10
P2 = P2 +10 -P5
IF P2 <10 THEN: DEC P.:ENDIF
P2 = P2 //10
P. = P. -P7 +Calibrate_MSL_hPa
sertxd (#P.,#P2," hPa ")
C.= Tfine **10240
sertxd (" ",sign,#C.,"'C ")
F.= Tfine **18432 +3200 : signF= " "
IF sign = "-" THEN
If Tfine <11380 THEN : F. = 6400 -F. ELSE signF = "-" : F. =F. -6400 : ENDIF
ENDIF
sertxd (" ",signF,#F.,"'F ")
ConvertHumidityBME280:
Hi2Cin $E1,(b4,b5,w3) ' h2 h3 compensation parameter values from BME280
Hi2Cin $E4,(w4,b10,b11,w6) ' h4 h5 h6 compensation parameter values from BME280
b9=b10 and $0F : W4= b8*16+b9 ' adjust H4 12bit
w5=w5/16 ' adjust H5 12bit
Hi2Cin $FD,(B3,b2)
T. = 9600-Tfine : signF="^"
IF sign = " " AND Tfine > 9599 THEN : T. = Tfine-9600 : signF="+" : ENDIF
IF sign = "-" THEN : T. = Tfine+9600 : ENDIF
H4 = H4 *64
H. = UH -H4 *2
H5 = H5 *64 **T.
IF signF="^" THEN :H. = H. +H5 ELSE H. = H. -H5 :ENDIF
H6 = H6 +H3 *512 **H. **T.
IF signF="^" THEN : H. = H. -H6 ELSE H. = H. +H6 :ENDIF
Hi2Cin $A1,(w0) ' h1 compensation parameter values from BME280
H2 = H2 *100 **H. *2
H1 = H1 *512
H1 = H2 **H2 **H1 /100
H. = H2 /4 -H1
sertxd (" ",#H.," %RH ",cr,lf)
pause 4000
GOTO main
Attachments
-
58.7 KB Views: 5
Last edited: