Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Manufacturing Technology >> Processo de manufatura

Sensor de pressão barométrica digital BMP180 I2C


O dispositivo BMP180 é um sensor digital de pressão barométrica. Isso está disponível em um pequeno módulo que fornece acesso ao sensor por meio da interface I2C. Isso nos permite conectá-lo facilmente ao Raspberry Pi com um mínimo de fiação.

Meu módulo é um pequeno pcb medindo 15x13mm com um conector de 5 pinos. A ordem dos pinos pode variar em outros módulos, portanto, fique de olho nas etiquetas para conectar os fios corretos do Pi.

O BMP180 é feito pela Bosch e a folha de dados oficial do BMP180 inclui todos os detalhes técnicos.

Configurar interface I2C


Para usar este módulo, você deve habilitar a interface I2C no Raspberry Pi, pois ela não é habilitada por padrão. Este é um processo bastante fácil e é descrito em meu tutorial Habilitando a interface I2C no Raspberry Pi.

Hardware de conexão


A tabela abaixo mostra como o módulo está conectado ao cabeçalho GPIO do Raspberyr Pi (P1). Consulte meu guia de cabeçalho GPIO para obter um diagrama.
Módulo PCB Desc Pinos de cabeçalho GPIO
VCC 3,3 V P1-01
GND Terrestre P1-06
SCL I2C SCL P1-05
SDA I2C SDA P1-03
3,3 V - -

Aqui está um diagrama de uma configuração de breadboard. Se você estiver conectando os quatro pinos do módulo diretamente ao Pi, você só precisa de quatro fios fêmea-fêmea.

O diagrama breadboard usa uma parte personalizada que defini no Fritzing. Outros módulos estão disponíveis com diferentes arranjos de pinos, portanto, certifique-se de conectar os pinos corretos ao Pi se o seu for diferente do mostrado neste tutorial.

Com o dispositivo conectado e o Pi ligado, o comando “i2cdetect” deve mostrar o dispositivo com o endereço 0x77.

Exemplo de script Python


Aqui está um exemplo de script Python para ler dados de pressão e temperatura do sensor:
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113 #! / usr / bin / python importação smbus importação hora de ctypes importação c_short DISPOSITIVO = 0x77 # Endereço I2C do dispositivo padrão # bus =smbus.SMBus (0) # Rev 1 Pi usa 0 ônibus = smbus.SMBus ( 1 ) # Rev 2 Pi usa 1 def convertToString (dados): # Função simples para converter dados binários em # uma string return str ((dados [ 1 ] + ( 256 * dados [ 0 ])) / 1.2 ) def getShort (dados, índice): # retornar dois bytes de dados como um valor assinado de 16 bits return c_short ((dados [índice] << 8 ) + dados [índice + 1 ]). valor def getUshort (dados, índice): # retornar dois bytes de dados como um valor não assinado de 16 bits return (dados [índice] << 8 ) + dados [índice + 1 ] def readBmp180Id (addr = DEVICE): # Registrar endereço REG_ID = 0xD0 (chip_id, chip_version) = bus.read_i2c_block_data (addr, REG_ID, 2 ) return (chip_id, chip_version) def readBmp180 (addr = DEVICE): # Registrar endereços REG_CALIB = 0xAA REG_MEAS = 0xF4 REG_MSB = 0xF6 REG_LSB = 0xF7 # Control Register Endereço CRV_TEMP = 0x2E CRV_PRES = 0x34 # Configuração de Oversample OVERSAMPLE = 3 # 0 - 3 # Ler dados de calibração # Leia os dados de calibração da EEPROM cal = bus.read_i2c_block_data (addr, REG_CALIB, 22 ) # Converter dados de bytes em valores de palavras AC1 = getShort (cal, 0 ) AC2 = getShort (cal, 2 ) AC3 = getShort (cal, 4 ) AC4 = getUshort (cal, 6 ) AC5 = getUshort (cal, 8 ) AC6 = getUshort (cal, 10 ) B1 = getShort (cal, 12 ) B2 = getShort (cal, 14 ) MB = getShort (cal, 16 ) MC = getShort (cal, 18 ) MD = getShort (cal, 20 ) # Temperatura de leitura bus.write_byte_data (addr, REG_MEAS, CRV_TEMP) time.sleep ( 0,005 ) (msb, lsb) = bus.read_i2c_block_data (addr, REG_MSB, 2 ) UT = (msb << 8 ) + lsb # Pressão de leitura bus.write_byte_data (addr, REG_MEAS, CRV_PRES + (OVERSAMPLE << 6 )) time.sleep ( 0,04 ) (msb, lsb, xsb) = bus.read_i2c_block_data (addr, REG_MSB, 3 ) UP = ((msb << 16 ) + (lsb << 8 ) + xsb)>> ( 8 - OVERSAMPLE) # Refinar a temperatura X1 = ((UT - AC6) * AC5)>> 15 X2 = (MC << 11 ) / (X1 + MD) B5 = X1 + X2 temperatura = (B5 + 8 )>> 4 # Refine a pressão B6 = B5 - 4000 B62 = B6 * B6>> 12 X1 = (B2 * B62)>> 11 X2 = AC2 * B6>> 11 X3 = X1 + X2 B3 = (((AC1 * 4 + X3) < + 2 )>> 2 X1 = AC3 * B6>> 13 X2 = (B1 * B62)>> 16 X3 = ((X1 + X2) + 2 )>> 2 B4 = (AC4 * (X3 + 32768 ))>> 15 B7 = (UP - B3) * ( 50000 >> OVERSAMPLE) P = (B7 * 2 ) / B4 X1 = (P>> 8 ) * (P>> 8 ) X1 = (X1 * 3038 )>> 16 X2 = ( - 7357 * P)>> 16 pressão = P + ((X1 + X2 + 3791 )>> 4 ) return (temperatura / 10.0 , pressão / 100,0 ) def main (): (chip_id, chip_version) = readBmp180Id () imprimir "Chip ID:" , chip_id imprimir "Versão:" , chip_version imprimir (temperatura, pressão) = readBmp180 () imprimir "Temperatura:" , temperatura, "C" imprimir "Pressão:" , pressão, "mbar" se __ nome__ = = "__ main__" : main ()

Recomenda-se que você baixe este script diretamente para o seu Pi usando o seguinte comando:
 wget https://bitbucket.org/MattHawkinsUK/rpispy-misc/raw/master/python/bmp180.py 

ou use este link em um navegador.

Para executá-lo, você pode usar o seguinte comando:



For more detail:BMP180 I2C Digital Barometric Pressure Sensor

Processo de manufatura

  1. Infineon:sensor de pressão barométrica ultrapequeno
  2. Infineon lança sensor digital Turbo MAP de alta precisão
  3. Fundamentos de sensores magnéticos digitais
  4. O kit de design mede a pressão arterial com sensor óptico
  5. O sensor de pressão barométrica oferece maior precisão
  6. Registrador de temperatura Raspberry Pi
  7. Sensor de termômetro digital de 1 fio Raspberry Pi (DS18B20)
  8. Sensor digital Hall Raspberry Pi em JAVA
  9. Sensor de luz digital
  10. Sensor de pressão vestível de metal líquido