산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Manufacturing Technology >> 제조공정

BMP180 I2C 디지털 기압 센서

BMP180 장치는 디지털 기압 센서입니다. 이것은 I2C 인터페이스를 통해 센서에 대한 액세스를 제공하는 소형 모듈에서 사용할 수 있습니다. 이를 통해 최소한의 배선으로 Raspberry Pi에 쉽게 연결할 수 있습니다.

내 모듈은 5핀 헤더가 있는 15x13mm 크기의 작은 PCB입니다. 핀의 순서는 다른 모듈에 따라 다를 수 있으므로 라벨을 주시하여 Pi에서 올바른 전선을 연결하십시오.

BMP180은 Bosch에서 제조했으며 공식 BMP180 데이터시트에는 모든 기술 세부정보가 포함되어 있습니다.

I2C 인터페이스 구성

이 모듈을 사용하려면 기본적으로 활성화되어 있지 않은 Raspberry Pi에서 I2C 인터페이스를 활성화해야 합니다. 이것은 상당히 쉬운 과정이며 내 Raspberry Pi에서 I2C 인터페이스 활성화 자습서에 설명되어 있습니다.

하드웨어 연결

아래 표는 모듈이 Raspberyr Pi의 GPIO 헤더(P1)에 연결되는 방법을 보여줍니다. 다이어그램은 제 GPIO 헤더 가이드를 참조하세요.

모듈 PCB 설명 GPIO 헤더 핀
VCC 3.3V P1-01
GND 그라운드 P1-06
SCL I2C SCL P1-05
SDA I2C SDA P1-03
3.3V

다음은 브레드보드 설정 다이어그램입니다. 모듈의 4개 핀을 Pi에 직접 연결하는 경우 4개의 암-암 와이어만 필요합니다.

브레드보드 다이어그램은 Fritzing에서 정의한 맞춤 부분을 사용합니다. 핀 배열이 다른 다른 모듈을 사용할 수 있으므로 이 튜토리얼에 표시된 것과 다른 경우 올바른 핀을 Pi에 연결했는지 확인하세요.

장치가 연결되고 Pi 전원이 켜진 상태에서 "i2cdetect" 명령은 주소가 0x77인 장치를 표시해야 합니다.

예제 Python 스크립트

다음은 센서에서 압력 및 온도 데이터를 읽는 Python 스크립트의 예입니다.

<표 테두리 ="0"cellspacing ="0"의 cellpadding ="0"> 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113 #!/usr/bin/python 가져오기 smbus 가져오기 시간 from ctypes 가져오기 c_short 장치 = 0x77 # 기본 장치 I2C 주소 #bus =smbus.SMBus(0) # Rev 1 Pi는 0을 사용합니다. 버스 = smbus.SMBus( 1 ) # Rev 2 Pi는 1을 사용합니다. def convertToString(데이터): # 바이너리 데이터를 변환하는 간단한 함수 # 문자열 반환 str ((데이터[ 1 ] + ( 256 * 데이터[ 0 ])) / 1.2 ) def getShort(데이터, 색인): # 데이터에서 2바이트를 서명된 16비트 값으로 반환 반환 c_short((데이터[인덱스]<< 8 ) + 데이터[색인 + 1 ]).값 def getUshort(데이터, 색인): # 데이터에서 2바이트를 부호 없는 16비트 값으로 반환 반환 (데이터[색인]<< 8 ) + 데이터[색인 + 1 ] def readBmp180Id(addr = DEVICE): # 등록 주소 REG_ID = 0xD0 (chip_id, chip_version) = bus.read_i2c_block_data(addr, REG_ID, 2 ) 반환 (chip_id, chip_version) def readBmp180(addr = DEVICE): # 등록 주소 REG_CALIB = 0xAA REG_MEAS = 0xF4 REG_MSB = 0xF6 REG_LSB = 0xF7 # 제어 레지스터 주소 CRV_TEMP = 0x2E CRV_PRES = 0x34 # 오버샘플 설정 샘플 초과 = 3 # 0 - 3 # 보정 데이터 읽기 # EEPROM에서 교정 데이터 읽기 = bus.read_i2c_block_data(addr, REG_CALIB, 22 ) # 바이트 데이터를 단어 값으로 변환 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 ) # 온도 읽기 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 # 읽기 압력 bus.write_byte_data(addr, REG_MEAS, CRV_PRES + (오버샘플 << 6 )) time.sleep( 0.04 ) (msb, lsb, xsb) = bus.read_i2c_block_data(addr, REG_MSB, 3 ) UP = ((msb << 16 ) + (lsb << 8 ) + xsb)>> ( 8 - 샘플) # 온도 조정 X1 = ((UT - AC6) * AC5)>> 15 X2 = (MC << 11 ) / (X1 + MD) B5 = X1 + X2 온도 = (B5 + 8 )>> 4 # 압력 조정 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 >> 과샘플) P = (B7 * 2 ) / B4 X1 = (P>> 8 ) * (P>> 8 ) X1 = (X1 * 3038 )>> 16 X2 = ( - 7357 * P)>> 16 압력 = P + ((X1 + X2 + 3791 )>> 4 ) 반환 (온도 / 10.0 ,압력 / 100.0 ) def 메인(): (chip_id, chip_version) = readBmp180Id() 인쇄 "칩 ID :" , chip_id 인쇄 "버전 :" , chip_version 인쇄 (온도, 압력) = readBmp180() 인쇄 "온도:" , 온도, "C" 인쇄 "압력 :" , 압력, "mbar" if __이름__ = = "__main__" : 메인()

다음 명령을 사용하여 이 스크립트를 Pi에 직접 다운로드하는 것이 좋습니다.

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

또는 브라우저에서 이 링크를 사용하십시오.

실행하려면 다음 명령을 사용할 수 있습니다.

자세한 내용:BMP180 I2C 디지털 기압 센서


제조공정

  1. Infineon:초소형 기압 센서
  2. Infineon, 매우 정확한 디지털 Turbo MAP 센서 출시
  3. 디지털 자기 센서의 기초
  4. 광학 센서로 혈압을 측정하는 디자인 키트
  5. 기압 센서로 정확도 향상
  6. 라즈베리 파이 온도 로거
  7. Raspberry Pi 1-와이어 디지털 온도계 센서(DS18B20)
  8. JAVA의 Raspberry Pi 디지털 홀 센서
  9. 디지털 광 센서
  10. 액체 금속 웨어러블 압력 센서