
Add to Cart
Descrição: Esta é uma placa simples para a elevada precisão BMP085, sensor da fuga da pressão barométrica da baixa potência. O BMP085 oferece uma escala de medição do hPa 300 a 1100 com uma precisão absoluta de para baixo a 0,03 hPa. Tem com base na tecnologia piezoresistente para o vigor da compatibilidade electrónica, precisão alta e linearidades assim como estabilidade a longo prazo. Este sensor apoia uma fonte da tensão entre 1,8 e 3.6VDC. É projetado ser conectado diretamente a um microcontrolador através do ônibus do ² C de I
Esta placa tábua de pão-amigável estoira todos os pinos do BMP085 6 a um pino 0,1" encabeçamento do passo. O analógico e as fontes digitais (VDDD e VDDA) do BMP085 são amarrados junto e estoirados a um único pino. Nós igualmente pusemos dois 4.7k levantamos os resistores naslinhasde I2C.
Características:
Dimensões:
Está aqui o guia ilustra como conectar um Arduino à placa da fuga ADXL345. O seguinte é uma tabela que descreve que pinos no Arduino devem ser conectados aos pinos no acelerômetro:
Pin de Arduino | Pin ADXL345 |
A4 | SDA |
A5 | LCC |
3V3 | VCC |
Terra |
Terra |
Código de teste:
#include <Wire.h>
Endereço do #define BMP085_ADDRESS 0x77 //I2C de BMP085
carvão animal sem assinatura do const OSS = 0; Ajuste de //Oversampling
Valores da calibração de //
int ac1;
int ac2;
int ac3;
int sem assinatura ac4;
int sem assinatura ac5;
int sem assinatura ac6;
int b1;
int b2;
mb do int;
int mc;
DM do int;
//b5 é calculado em bmp085GetTemperature (...), esta variável é usado igualmente em bmp085GetPressure (...)
//assim que… a temperatura (...) deve ser chamado antes… da pressão (...).
b5 longo;
temperatura curto;
pressão longa;
instalação vaga ()
{
Serial.begin (9600);
Wire.begin ();
bmp085Calibration ();
}
laço vago ()
{
temperatura = bmp085GetTemperature (bmp085ReadUT ());
pressão = bmp085GetPressure (bmp085ReadUP ());
Serial.print (“temperatura: ");
Serial.print (temperatura, DEC);
Serial.println (“*0.1 DEG C”);
Serial.print (“pressão: ");
Serial.print (pressão, DEC);
Serial.println (“Pa”);
Serial.println ();
atraso (1000);
}
//armazena todos os valores da calibração de bmp085 em variáveis globais
Os valores da calibração de //são exigidos para calcular o temp e a pressão
//esta função deve ser chamado no início do programa
bmp085Calibration vagos ()
{
ac1 = bmp085ReadInt (0xAA);
ac2 = bmp085ReadInt (0xAC);
ac3 = bmp085ReadInt (0xAE);
ac4 = bmp085ReadInt (0xB0);
ac5 = bmp085ReadInt (0xB2);
ac6 = bmp085ReadInt (0xB4);
b1 = bmp085ReadInt (0xB6);
b2 = bmp085ReadInt (0xB8);
mb = bmp085ReadInt (0xBA);
mc = bmp085ReadInt (0xBC);
DM = bmp085ReadInt (0xBE);
}
//calcula o ut dado temperatura.
O valor de //retornado estará nas unidades de 0,1 DEG C
bmp085GetTemperature curto (ut sem assinatura do int)
{
x1 longo, x2;
x1 = ((ut (longo) - ac6 (longo)) * ac5 (longo)) >> 15;
x2 = (mc (longo) << 11)/(x1 + DM);
b5 = x1 + x2;
retorne ((b5 + 8) >>4);
}
//calcula a pressão dada acima
os valores da calibração de //devem ser sabidos
//b5 é exigido igualmente assim que bmp085GetTemperature (...) deve ser chamado primeiramente.
O valor de //retornado será pressão nas unidades de Pa.
bmp085GetPressure longo (ascendentes longos sem assinatura)
{
x1 longo, x2, x3, b3, b6, p;
b4 longo sem assinatura, b7;
b6 = b5 - 4000;
//calcula B3
x1 = (b2 * (b6 * b6) >>12) >>11;
x2 = (ac2 * b6) >>11;
x3 = x1 + x2;
b3 = ((((ac1 (longo)) *4 + x3) <<OSS) + 2)>>2;
//calcula B4
x1 = (ac3 * b6) >>13;
x2 = (b1 * ((b6 * b6) >>12))>>16;
x3 = ((x1 + x2) + 2)>>2;
b4 = (ac4 * (longo sem assinatura) (x3 + 32768))>>15;
b7 = ((longo sem assinatura) (acima de - b3) * (50000>>OSS));
se (b7 < 0x80000000)
p = (b7<<1) /b4;
mais
p = (b7/b4) <<1;
x1 = (p>>8) * (p>>8);
x1 = (x1 * 3038) >>16;
x2 = (- 7357 * p)>>16;
p += (x1 + x2 + 3791) >>4;
p do retorno;
}
//leu 1 byte do BMP085 em ‘endereços
carvão animal bmp085Read (endereço sem assinatura do carvão animal)
{
dados sem assinatura do carvão animal;
Wire.beginTransmission (BMP085_ADDRESS);
Wire.send (endereço);
Wire.endTransmission ();
Wire.requestFrom (BMP085_ADDRESS, 1);
quando (! Wire.available ())
;
Wire.receive do retorno ();
}
//leu 2 bytes do BMP085
O primeiro byte de //será dos ‘endereços
Byte de //o segundo será ‘de address'+1
int bmp085ReadInt (endereço sem assinatura do carvão animal)
{
msb sem assinatura do carvão animal, lsb;
Wire.beginTransmission (BMP085_ADDRESS);
Wire.send (endereço);
Wire.endTransmission ();
Wire.requestFrom (BMP085_ADDRESS, 2);
quando (Wire.available () <2)
;
msb = Wire.receive ();
lsb = Wire.receive ();
retorne (int) msb<<8 | lsb;
}
//leu o valor uncompensated da temperatura
int sem assinatura bmp085ReadUT ()
{
ut sem assinatura do int;
//escreve 0x2E no registro 0xF4
//isto pede uma leitura da temperatura
Wire.beginTransmission (BMP085_ADDRESS);
Wire.send (0xF4);
Wire.send (0x2E);
Wire.endTransmission ();
Espera pelo menos 4.5ms de //
atraso (5);
//leu dois bytes dos registros 0xF6 e 0xF7
ut = bmp085ReadInt (0xF6);
ut do retorno;
}
//leu o valor uncompensated da pressão
bmp085ReadUP longos sem assinatura ()
{
msb sem assinatura do carvão animal, lsb, xlsb;
= 0 ascendente longo sem assinatura;
//escreve 0x34+ (OSS<<6) no registro 0xF4
Pedido de //uma leitura da pressão com o ajuste oversampling
Wire.beginTransmission (BMP085_ADDRESS);
Wire.send (0xF4);
Wire.send (0x34 + (OSS<<6));
Wire.endTransmission ();
Espera de //para a conversão, dependente do tempo de atraso em OSS
atraso (2 + (3<<OSS));
//leu o registro 0xF6 (MSB), 0xF7 (LSB), e 0xF8 (XLSB)
Wire.beginTransmission (BMP085_ADDRESS);
Wire.send (0xF6);
Wire.endTransmission ();
Wire.requestFrom (BMP085_ADDRESS, 3);
Espera de //para que os dados tornem-se disponíveis
quando (Wire.available () < 3)
;
msb = Wire.receive ();
lsb = Wire.receive ();
xlsb = Wire.receive ();
acima de = (((msb longo sem assinatura) << 16) | ((lsb longo sem assinatura) << 8) | (xlsb longo sem assinatura)) >> (8-OSS);
retorno acima;
}