Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Herstellungsprozess

BMP180 I2C Digitaler barometrischer Drucksensor

Das Gerät BMP180 ist ein digitaler barometrischer Drucksensor. Diese steht auf einem kleinen Modul zur Verfügung, das den Zugriff auf den Sensor über die I2C-Schnittstelle ermöglicht. Dadurch können wir es mit einem Minimum an Verkabelung einfach an den Raspberry Pi anschließen.

Mein Modul ist eine kleine Platine mit den Maßen 15x13mm mit einem 5-Pin-Header. Die Reihenfolge der Pins kann bei anderen Modulen variieren, also behalte die Etiketten im Auge, damit du die richtigen Drähte vom Pi anschließt.

Der BMP180 wird von Bosch hergestellt und das offizielle Datenblatt des BMP180 enthält alle technischen Details.

I2C-Schnittstelle konfigurieren

Um dieses Modul verwenden zu können, müssen Sie die I2C-Schnittstelle auf dem Raspberry Pi aktivieren, da sie standardmäßig nicht aktiviert ist. Dies ist ein ziemlich einfacher Vorgang und wird in meinem Tutorial zum Aktivieren der I2C-Schnittstelle auf dem Raspberry Pi beschrieben.

Hardware anschließen

Die Tabelle unten zeigt, wie das Modul mit dem GPIO-Header (P1) des Raspberyr Pi verbunden ist. Ein Diagramm finden Sie in meiner GPIO-Header-Anleitung.

Modul PCB Beschreibung GPIO-Header-Pins
VCC 3,3V P1-01
GND Boden P1-06
SCL I2C-SCL P1-05
SDA I2C-SDA P1-03
3,3 V

Hier ist ein Diagramm eines Steckbrett-Setups. Wenn Sie die vier Pins des Moduls direkt mit dem Pi verbinden, benötigen Sie nur vier weibliche-weibliche Drähte.

Das Steckbrettdiagramm verwendet einen benutzerdefinierten Teil, den ich in Fritzing definiert habe. Es sind auch andere Module mit unterschiedlichen Pin-Anordnungen verfügbar. Stellen Sie also sicher, dass Sie die richtigen Pins an den Pi anschließen, wenn sich Ihr Pin von dem in diesem Tutorial gezeigten unterscheidet.

Wenn das Gerät angeschlossen und der Pi eingeschaltet ist, sollte der Befehl „i2cdetect“ das Gerät mit der Adresse 0x77 anzeigen.

Beispiel-Python-Skript

Hier ist ein Python-Beispielskript zum Lesen von Druck- und Temperaturdaten vom Sensor:

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606616263646566768697071720879691091 #!/usr/bin/python importieren smbus importieren Zeit von ctypes importieren c_short   GERÄT = 0x77 # Standard-I2C-Adresse des Geräts   #bus =smbus.SMBus(0)  # Rev 1 Pi verwendet 0 Bus = smbus.SMBus( 1 ) # Rev 2 Pi verwendet 1   def convertToString(data):    # Einfache Funktion zum Konvertieren von Binärdaten in    # eine Zeichenfolge    zurück str ((Daten[ 1 ] + ( 256 * Daten[ 0 ])) / 1.2 ) def getShort(data, index):    # gibt zwei Byte aus Daten als 16-Bit-Wert mit Vorzeichen zurück    zurück c_short((data[index]<< 8 ) + data[index + 1 ]).value def getUshort(data, index):    # gibt zwei Byte aus Daten als 16-Bit-Wert ohne Vorzeichen zurück    zurück (data[index]<< 8 ) + data[index + 1 ] def readBmp180Id(addr = GERÄT):    # Adresse registrieren    REG_ID     = 0xD0    (chip_id, chip_version) = bus.read_i2c_block_data(addr, REG_ID, 2 )    zurück (chip_id, chip_version)    def readBmp180(addr = GERÄT):    # Adressen registrieren    REG_CALIB  = 0xAA    REG_MEAS   = 0xF4    REG_MSB    = 0xF6    REG_LSB    = 0xF7    # Kontrollregisteradresse    CRV_TEMP   = 0x2E    CRV_PRES   = 0x34    # Oversample-Einstellung    ÜBERSAMPLE = 3 # 0 - 3       # Kalibrierdaten lesen    # Kalibrierdaten aus dem EEPROM lesen    cal = bus.read_i2c_block_data(addr, REG_CALIB, 22 )    # Byte-Daten in Wortwerte umwandeln    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 )    # Temperatur lesen    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    # Lesedruck    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 - ÜBERSAMPLE)    # Temperatur verfeinern    X1 = ((UT - AC6) * AC5)>> 15    X2 = (MC << 11 ) / (X1 + MD)    B5 = X1 + X2    Temperatur = (B5 + 8 )>> 4    # Druck verfeinern    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 >> ÜBERSICHT)    P = (B7 * 2 ) / B4    X1 = (P>> 8 ) * (P>> 8 )    X1 = (X1 * 3038 )>> 16    X2 = ( - 7357 * P)>> 16    Druck = P + ((X1 + X2 + 3791 )>> 4 )    zurück (Temperatur / 10.0 ,Druck / 100.0 ) def main():         (chip_id, chip_version) = readBmp180Id()    Drucken "Chip-ID     :" , chip_id    Drucken "Version     :" , chip_version    Drucken       (Temperatur,Druck) = readBmp180()    Drucken "Temperatur:" , Temperatur, "C"    Drucken "Druck    :" , Druck, "mbar"    wenn __name__ = = "__main__" :     main()

Es wird empfohlen, dieses Skript mit dem folgenden Befehl direkt auf Ihren Pi herunterzuladen:

wget https://bitbucket.org/MattHawkinsUK/rpispy-misc/raw/master/python/bmp180.py

oder verwenden Sie diesen Link in einem Browser.

Um es auszuführen, können Sie den folgenden Befehl verwenden:

Für weitere Details:BMP180 I2C Digitaler barometrischer Drucksensor


Herstellungsprozess

  1. Infineon:ultrakleiner Luftdrucksensor
  2. Infineon bringt hochpräzisen digitalen Turbo-MAP-Sensor auf den Markt
  3. Grundlagen digitaler Magnetsensoren
  4. Design-Kit misst den Blutdruck mit optischem Sensor
  5. Luftdrucksensor bietet erhöhte Genauigkeit
  6. Himbeer-Pi-Temperaturlogger
  7. Raspberry Pi 1-Draht digitaler Thermometersensor (DS18B20)
  8. Raspberry Pi digitaler Hall-Sensor in JAVA
  9. Digitaler Lichtsensor
  10. Tragbarer Drucksensor aus Flüssigmetall