Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Productieproces

Raspberry Pi leest BMP085 temperatuur en druk

Nog een leuk klein i2c-apparaat dat je goedkoop via eBay hebt gekocht. Het leest barometrische druk en temperatuur. Er is wat relatief eenvoudige wiskunde om de uitvoer om te zetten in iets leesbaars.

Nogmaals, ADAFruit biedt een fantastische gids en bibliotheek voor het gebruik van het apparaat in hun Gebruik van de BMP085 met Raspberry Pi. Net als in eerdere berichten had ik de ADAFruit-bibliotheek gewoon uit de doos kunnen gebruiken. Hoewel ik niet de behoefte heb om het wiel opnieuw uit te vinden en helemaal opnieuw te coderen, wil ik wel graag weten hoe het werkt.

Ik heb de informatie uit een aantal andere bronnen gehaald:

  • Maarten Damen's Bus Pirate leest de BMP085-temperatuur (site is niet beschikbaar op het moment van schrijven)
  • Python-poort van John Burn's C-code bij het lezen van gegevens van een Bosch BMP085 met een Raspberry Pi.

Hieronder staat het zeer eenvoudige schema om het apparaat op de Pi aan te sluiten.

importeren smbus importeren tijd klasse BMP085():      OSS = 3      def __init__( zelf , i2c, adres):          zelf .i2c = i2c          zelf .adres = adres          zelf .ac1 = zelf .readSignedWord( 0xaa )          zelf .ac2 = zelf .readSignedWord( 0xac )          zelf .ac3 = zelf .readSignedWord( 0xae )          zelf .ac4 = zelf .readWord( 0xb0 )          zelf .ac5 = zelf .readWord( 0xb2 )          zelf .ac6 = zelf .readWord( 0xb4 )          zelf .b1 = zelf .readSignedWord( 0xb6 )          zelf .b2 = zelf .readSignedWord( 0xb8 )          zelf .mb = zelf .readSignedWord( 0xba )          zelf .mc = zelf .readSignedWord( 0xbc )          zelf .md = zelf .readSignedWord( 0xbe )      def readWord( zelf , reg):          msb = zelf .i2c.read_byte_data( zelf .adres, reg)          lsb = zelf .i2c.read_byte_data( zelf .adres, reg + 1 )          waarde = (msb << 8 ) + lsb         retour waarde     def readSignedWord( zelf , reg):         msb = zelf .i2c.read_byte_data( zelf .address, reg)         lsb = zelf .i2c.read_byte_data( zelf .adres, reg + 1 )         if (msb> 127 ):            msb = msb - 256          waarde = (msb << 8 ) + lsb         retour waarde     def readUT( zelf ):         zelf .i2c.write_byte_data( zelf .adres, 0xf4 , 0x2e )         time.sleep( 0,0045 )         ut = zelf .readWord( 0xf6 )         retour ut     def readTemperature( zelf ):         ut = zelf .readUT()         x1 = ((ut - zelf .ac6) * zelf .ac5)>> 15          x2 = ( zelf .mc << 11 ) / (x1 + zelf .md)         zelf .b5 = x1 + x2         retour (( zelf .b5 + 8 )>> 4 ) / 10.0      def readUP( zelf ):          zelf .i2c.write_byte_data( zelf .adres, 0xf4 , 0x34 + ( zelf .OSS << 6 ))          vertraging = ( 2 + ( 3 << zelf .OSS)) / 1000,0          time.sleep(delay)          msb = zelf .i2c.read_byte_data( zelf .adres, 0xf6 )          lsb = zelf .i2c.read_byte_data( zelf .adres, 0xf7 )          xlsb = zelf .i2c.read_byte_data( zelf .adres, 0xf8 )          omhoog = (msb << 16 ) + (lsb << 8 ) + xlsb         omhoog = omhoog>> ( 8 - zelf .OSS)         retour omhoog      def readPressure( zelf ):          omhoog = zelf .readUP()          b6 = zelf .b5 - 4000          x1 = ( zelf .b2 * (b6 * b6)>> 12 )>> 11          x2 = ( zelf .ac2 * b6)>> 11          x3 = x1 + x2          b3 = ((( zelf .ac1 * 4 + x3)<> 2          x1 = ( zelf .ac3 * b6)>> 13          x2 = ( zelf .b1 * ((b6 * b6)>> 12 ))>> 16          x3 = ((x1 + x2) + 2 )>> 2          b4 = ( zelf .ac4 * (x3 + 32768 ))>> 15          b7 = (omhoog - b3) * ( 50000 >> zelf .OSS)          if (b7 < 0x80000000 ):              p = (b7< 1 ) / b4          anders :              p = (b7 / b4)<> 8 ) * (p> > 8 )          x1 = (x1 * 3038 )>> 16          x2 = ( - 7357 * p)>> 16          p + = (x1 + x2 + 3791 )>> 4          retour p i2c = smbus.SMBus( 0 ) bmp085 = BMP085(i2c, 0x77 ) t = bmp085.readTemperature() p = bmp085.readPressure() afdrukken "Temperatuur:%.2f C" % t afdrukken "Druk:    %.2f hPa" % (p / 100 ) Voor meer details:Raspberry Pi leest BMP085 Temperatuur &Druk

Productieproces

  1. Raspberry Pi Temperature Logger
  2. Raspberry Pi-temperatuurprofiel met LabVIEW
  3. Meet temperaturen met een 1-draads DS18B20-sensor en Raspberry Pi
  4. Raspberry Pi temperatuur- en vochtigheidsnetwerkmonitor
  5. Temperatuur aflezen met DS18B20 | Raspberry Pi 2
  6. Temperatuurbewaking op de Raspberry Pi
  7. Temperatuur meten met RASPBERRY PI
  8. TMP006 Temperature Sensor Python Library met Raspberry pi,
  9. Python- en Raspberry Pi-temperatuursensor
  10. Eenvoudige temperatuur en vochtigheid op Raspberry Pi
  11. Temperatuur bewaken met Raspberry Pi