

Add to Cart
Description : C'est un panneau simple d'évasion pour le BMP085 haute précision, capteur de basse puissance de pression barométrique. Le BMP085 offre une gamme de mesure du hPa 300 1100 avec une exactitude absolue de vers le bas 0,03 hPa. Il a basé sur de technologie pour la stabilité de robustesse d'EMC, de grande précision et des linéarités aussi bien qu' long terme piézorésistive. Ce capteur soutient un approvisionnement de tension entre 1,8 et 3.6VDC. Il est conçu pour être relié directement un microcontrôleur par l'intermédiaire de l'autobus du ² C d'I
Ce conseil qui respecte les planches pain éclate toutes les
goupilles du BMP085 6 une borne 0,1" en-tête de lancement. Les
approvisionnements analogues et numériques (VDDD et VDDA) en BMP085
sont attachés ensemble et éclatés une goupille simple. Nous avons
également mis deux résistances 4.7k cabreuses sur leslignesd'I2C.
Caractéristiques :
Dimensions :
Voici le guide illustre comment relier un Arduino au conseil de l'évasion ADXL345. Ce qui suit est une description de table quelles goupilles sur l'Arduino devraient être reliées aux goupilles sur l'accéléromètre :
Pin d'Arduino | Pin ADXL345 |
A4 | SDA |
A5 | Cble coaxial |
3V3 | VCC |
La terre | LA terre |
Code d'essai :
#include <Wire.h>
Adresse du #define BMP085_ADDRESS 0x77 //I2C de BMP085
char non signé de const OSS = 0 ; Arrangement de
//Oversampling
Valeurs de calibrage de //
international ac1 ;
international ac2 ;
international ac3 ;
international non signé ac4 ;
international non signé ac5 ;
international non signé ac6 ;
international b1 ;
international b2 ;
mi-bande d'international ;
international mètre-bougie ;
DM d'international ;
//b5 est calculé dans bmp085GetTemperature (...), cette variable
est également employé dans bmp085GetPressure (...)
//ainsi… la température (...) doit s'appeler avant… la pression
(...).
long b5 ;
la température courte ;
longue pression ;
installation nulle ()
{
Serial.begin (9600) ;
Wire.begin () ;
bmp085Calibration () ;
}
boucle nulle ()
{
la température = bmp085GetTemperature (bmp085ReadUT ());
pression = bmp085GetPressure (bmp085ReadUP ());
Serial.print (la « température : ") ;
Serial.print (la température, DEC) ;
Serial.println (« *0.1 deg. C ») ;
Serial.print (« pression : ") ;
Serial.print (pression, DEC) ;
Serial.println (« PA ») ;
Serial.println () ;
retard (1000) ;
}
//stocke toutes les valeurs de calibrage de bmp085 dans des
variables globales
Des valeurs de calibrage de //sont exigées pour calculer le temp et
la pression
//cette fonction devrait s'appeler au début du programme
bmp085Calibration nuls ()
{
ac1 = bmp085ReadInt (0xAA) ;
ac2 = bmp085ReadInt (0xAC) ;
ac3 = bmp085ReadInt (0xAE) ;
ac4 = bmp085ReadInt (0xB0) ;
ac5 = bmp085ReadInt (0xB2) ;
ac6 = bmp085ReadInt (0xB4) ;
b1 = bmp085ReadInt (0xB6) ;
b2 = bmp085ReadInt (0xB8) ;
mi-bande = bmp085ReadInt (0xBA) ;
mètre-bougie = bmp085ReadInt (0xBC) ;
DM = bmp085ReadInt (0xBE) ;
}
//calculent l'ut donné par température.
La valeur de //retournée sera dans les unités de 0,1 deg. C
bmp085GetTemperature court (ut non signé d'international)
{
long x1, x2 ;
x1 = (((long) ut - (long) ac6) * (long) ac5) >> 15 ;
x2 = ((long) mètre-bougie << 11)/(x1 + DM) ;
b5 = x1 + x2 ;
retournez ((b5 + 8)>>4) ;
}
//calculent la pression abandonnée
des valeurs de calibrage de //doivent être connues
//b5 est également exigé ainsi bmp085GetTemperature (...) doit
s'appeler d'abord.
La valeur de //retournée sera pression dans les unités de la PA.
long bmp085GetPressure (longs hauts non signés)
{
long x1, x2, x3, b3, b6, p ;
long b4 non signé, b7 ;
b6 = b5 - 4000 ;
//calculent B3
x1 = (b2 * (b6 * b6) >>12) >>11 ;
x2 = (ac2 * b6) >>11 ;
x3 = x1 + x2 ;
b3 = (((((long) ac1) *4 + x3) <<OSS) + 2)>>2 ;
//calculent B4
x1 = (ac3 * b6) >>13 ;
x2 = (b1 * ((b6 * b6) >>12))>>16 ;
x3 = ((x1 + x2) + 2)>>2 ;
b4 = (ac4 * (long non signé) (x3 + 32768))>>15 ;
b7 = ((long non signé) (vers le haut de - b3) *
(50000>>OSS));
si (b7 < 0x80000000)
p = (b7<<1)/b4 ;
autrement
p = (b7/b4) <<1 ;
x1 = (p>>8) * (p>>8) ;
x1 = (x1 * 3038) >>16 ;
x2 = (- 7357 * p)>>16 ;
p += (x1 + x2 + 3791) >>4 ;
p de retour ;
}
//a lu 1 octet du BMP085 la “adresse”
char bmp085Read (adresse non signée de char)
{
données non signées de char ;
Wire.beginTransmission (BMP085_ADDRESS) ;
Wire.send (adresse) ;
Wire.endTransmission () ;
Wire.requestFrom (BMP085_ADDRESS, 1) ;
tandis que (! Wire.available ())
;
Wire.receive de retour () ;
}
//a lu 2 octets du BMP085
Le premier octet de //sera de “adresse”
Octet de //le deuxième sera de “address'+1
international bmp085ReadInt (adresse non signée de char)
{
msb non signé de char, lsb ;
Wire.beginTransmission (BMP085_ADDRESS) ;
Wire.send (adresse) ;
Wire.endTransmission () ;
Wire.requestFrom (BMP085_ADDRESS, 2) ;
tandis que (Wire.available () <2)
;
msb = Wire.receive () ;
lsb = Wire.receive () ;
renvoyez (international) msb<<8 | lsb ;
}
//a lu la valeur incompensée de la température
international non signé bmp085ReadUT ()
{
ut non signé d'international ;
//écrivent 0x2E dans le registre 0xF4
//ceci demande une lecture de la température
Wire.beginTransmission (BMP085_ADDRESS) ;
Wire.send (0xF4) ;
Wire.send (0x2E) ;
Wire.endTransmission () ;
Attente au moins 4.5ms de //
retard (5) ;
//a lu deux octets partir des registres 0xF6 et 0xF7
ut = bmp085ReadInt (0xF6) ;
ut de retour ;
}
//a lu la valeur incompensée de pression
longs bmp085ReadUP non signés ()
{
msb non signé de char, lsb, xlsb ;
long = 0 haut non signé ;
//écrivent 0x34+ (OSS<<6) dans registre 0xF4
Demande de //une lecture de pression avec l'arrangement
oversampling
Wire.beginTransmission (BMP085_ADDRESS) ;
Wire.send (0xF4) ;
Wire.send (0x34 + (OSS<<6)) ;
Wire.endTransmission () ;
L'attente de //la conversion, retardent dépendant du temps
sur OSS
retard (2 + (3<<OSS));
//a lu le registre 0xF6 (MSB), 0xF7 (LSB), et 0xF8 (XLSB)
Wire.beginTransmission (BMP085_ADDRESS) ;
Wire.send (0xF6) ;
Wire.endTransmission () ;
Wire.requestFrom (BMP085_ADDRESS, 3) ;
Attente de //des données devenir disponibles
tandis que (Wire.available () < 3)
;
msb = Wire.receive () ;
lsb = Wire.receive () ;
xlsb = Wire.receive () ;
vers le haut de = ((msb (long non signé) << 16) | (lsb
(long non signé) << 8) | xlsb (long non signé)) >>
(8-OSS) ;
retour ;
}