




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、通過上一章,相信各位對樹莓派I2C編程有一定的了解了,今天我們繼續(xù)使用I2C來控制 BMP180壓強(qiáng)傳感器。BMP180壓強(qiáng)傳感器操作原理比較簡單,開機(jī)先通過I2C讀取出 AC1,AC2,AC3,AC4,AC5,AC6,B1,B2,MB,MC,MD 等寄存器的值, 這些寄存器的值作為校準(zhǔn) 時(shí)使用。如何讀取溫度寄存器,壓強(qiáng)寄存器的值,根據(jù)下圖公式算出測得的當(dāng)前溫度和壓強(qiáng)。 xw sn 玄” 售 由 2383 327士 sam 23言 聖呂 d -32%I6B NIa6B 5*1 q4 WJS _s uns-JSned 4=ui- LrMIgnrtIZLstiori; LmX2 2i-.5WTA
2、l + 去s-8 1. CMD;甬事器/二 s , g* XJIlJr-% B4 to_2 -Un5_gerxllon93 * 32768.- - 2 Bm 呂諾 ng 應(yīng) qep ,53:(5WW $ 出二 三電 A =0t8-NS * ss宀辛叟gd】 X1H 更 yxEs i H ? “ sft- . 2* 咼 U-TT33:P=*JW I1J:富 * K2gT9E 2* i i *ssv* 2MMCr 去-H Kh Hm* YIH肆 *g心 I!?!IgM 龍glylAF 譚rlaa flauhc s penMiBcl pgs* =i _* !.: 上:i 1 匕:LS8U*KLSB2
3、葦 CUJ云卑呂ue p寵urm t審 g kng 2ned -0n9 unMgnc d 一 2*g Figu 晶護(hù) Acraomhfn fQDC5SUE and 弓 ea5uesmes 程序具體 本章主要講解 python 程序,使大家熟悉python 編程。關(guān)于bcm2835,wiringpi 可參看Pioneer600 示例程序。 驅(qū)動文件 bmp180.py 001 import time 002 import smbus 003 004 # BMP085 default address. 005 BMP180_I2CADDR= 0 x77 006 007 # Operati ng M
4、odes 008 BMP180_ULTRALOWPOWER = 0 BMP180_STANDARD 009 1 010 BMP180_HIGHRES 011 BMP180_ULTRAHIGHRES 012 013 # BMP085 Registers 014 BMP180_CAL_AC1 015 BMP180_CAL_AC2 016 BMP180_CAL_AC3 017 BMP180_CAL_AC4 018 BMP180_CAL_AC5 019 BMP180_CAL_AC6 020 BMP180_CAL_B1 =0 xAA # R Calibration data (16 bits) =0 x
5、AC # R Calibration data (16 bits) =0 xAE # R Calibration data (16 bits) =0 xB0 # R Calibration data (16 bits) =0 xB2 # R Calibration data (16 bits) =0 xB4 # R Calibration data (16 bits) 0 xB6 # R Calibration data (16 bits) 021 BMP180_CAL_B2 =0 xB8 # R Calibration data (16 bits) 022 BMP180_CAL_MB =0
6、xBA # R Calibration data (16 bits) =0 xBC # R Calibration data (16 bits) 024 BMP180_CAL_MD =0 xBE # RCalibratio n data (16 bits) 025 BMP180_CONTROL= 0 xF4 BMP180_TEMPDATA 026 0 xF6 027 BMP180_PRESSUREDATA = 0 xF6 028 029 # Comma nds 030 BMP180_READTEMPCMD= 0 x2E 031 BMP180_READPRESSURECMD = 0 x34 03
7、2 033 034 class BMP180(object): def _ini t_(self, address=BMP180_I2CADDR, 035 036 037 038 039 040 041 042 043 044 045 046 047 048 self._mode = mode self._address = address self._bus = smbus.SMBus(l) # Load calibrati on values. self._load_calibrati on() def _read_byte(self,cmd): return self._bus.read
8、_byte_data(self._address,cmd) def _read_u16(self,cmd): MSB = self._bus.read_byte_data(self._address,cmd) LSB = self._bus.read_byte_data(self._address,cmd+1) return (MSB 32767:result -= 65536 retur n result 049 050 051 052 053 054 055 056 057 058 059 060 061 def _write_byte(self,cmd,val): self._bus.w
9、rite_byte_data(self._address,cmd,val) def _load_calibrati on( self): load calibrati on # INT16 # INT16 self.cal_AC1 = self._read_s16(BMP180_CAL_AC1) self.cal_AC2 = self._read_s16(BMP180_CAL_AC2) # UINT16 self.cal_AC4 = self._read_u16(BMP180_CAL_AC4) self.cal_AC5 = selfead_u16(BMP180_CAL_AC5)# UINT16
10、 self.cal_AC6 = selfead_u16(BMP180_CAL_AC6)# UINT16 self.cal_B1= selfead_s16(BMP180_CAL_B1)# INT16 self.cal_B2= selfead_s16(BMP180_CAL_B2)# INT16 self.cal_MB= selfead_s16(BMP180_CAL_MB)# INT16 self.cal_MC = selfead_s16(BMP180_CAL_MC)# INT16 self.cal_MD= selfead_s16(BMP180_CAL_MD)# INT16 def read_raw
11、_temp(self): ”Reads the raw (un compe nsated) temperature from the codecs HHII 062 063 064 065 066 067 068 069 070 071 072 073 sen sor. 074 075 076 077 078 079 080 081 082 083 084 085 time.sleep(0.005) # Wait 5ms MSB = selfead_byte(BMP180_TEMPDATA) LSB = selfead_byte(BMP180_TEMPDATA+1) raw = (MSB 8)
12、 + LSB return raw def read_raw_pressure(self): ”Reads the raw (un compe nsated) pressure level from the sensor.” self._write_byte(BMP180_CONTROL, BMP180_READPRESSURECMD + (self._mode 6) if self._mode = BMP180_ULTRALOWPOWER: time.sleep(0.005) elif self._mode = BMP180_HIGHRES: 086 087 088 089 090 091
13、092 093 094 095 096 097 098 time.sleep(0.014) elif self._mode = BMP180_ULTRAHIGHRES: time.sleep(0.026) else: time.sleep(0.008) MSB = selfead_byte(BMP180_PRESSUREDATA) LSB = selfead_byte(BMP180_PRESSUREDATA+1) XLSB = selfead_byte(BMP180_PRESSUREDATA+2) raw = (MSB 16) + (LSB (8 - self._mode) return ra
14、w def read_temperature(self): ”Gets the compe nsated temperature in degrees celsius.” 099 100 101 102 103 104 105 106 107 108 109 110 111 UT = self.read_raw_temp() X1 = (UT - self.cal_AC6) * self.cal_AC5) 15 X2 = (self.cal_MC 4) / 10.0 return temp def read_pressure(self): ”Gets the compe nsated pres
15、sure in Pascals.” UT = self.read_raw_temp() UP = self.read_raw_pressure() 112 113 114 115 116 117 118 119 120 121 122 123 124 X1 = (UT - self.cal_AC6) * self.cal_AC5) 15 X2 = (self.cal_MC 12) 11 X2 = (self.cal_AC2 * B6) 11 X3 = X1 + X2 B3 = (self.cal_AC1 * 4 + X3) 13 125 126 127 128 129 130 131 132
16、133 134 135 136 137 X2 = (self.cal_B1 * (B6 * B6) 12) 16 X3 = (X1 + X2) + 2) 2 B4 = (self.cal_AC4 * (X3 + 32768) 15 B7 = (UP - B3) * (50000 self._mode) if B7 8) * (p 8) X1 = (X1 * 3038) 16 X2 = (-7357 * p) 16 138 139 140 141 142 143 144 145 146 147 148 149 p = p + (X1 + X2 + 3791) 4) return p def re
17、ad_altitude(self, sealevel_pa=101325.0): Calculates the altitude in meters. # Calculatio n take n straight from secti on 3.6 of the datasheet. pressure = float(self.read_pressure() altitude = 44330.0 * (1.0 - pow(pressure / sealevel_pa, (1.0/5.255) retur n altitude def read_sealevel_pressure(self, a
18、ltitude_m=0.0): ”Calculates the pressure at sealevel whe n give n a known altitude in 150 meters. Returns a value in Pascals.” 151 pressure = float(self.read_pressure() 152 p0 = pressure / pow(1.0 - altitude_m/44330.0, 5.255) 153 return p0 主文件 bmp180_example.py 01 #!/usr/bi n/python 02 03 import tim
19、e 04 from BMP180 import BMP180 05 06 # Initialise the BMP085 and use STANDARD mode (default value) 07 # bmp = BMP085(0 x77, debug=True) 08 bmp = BMP180() 09 # To specify a differe nt operati ng mode, un comme nt one of the 10 followi ng: 11 # bmp = BMP085(0 x77, 0) # ULTRALOWPOWER Mode 12 # bmp = BMP085(0 x77, 1) # STANDARD Mode 13 # bmp = BMP085(0 x77, 2) # HIRES Mode 14 # bmp = BMP085(0 x77, 3) # ULTRAHIRES Mode 15 while True: 16 temp = bmp.read_temperature() 17 18 # Read the curre nt b
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2030年中國全自動褲腰里機(jī)數(shù)據(jù)監(jiān)測研究報(bào)告
- 2025至2030年中國丙烯酸防水專用乳液數(shù)據(jù)監(jiān)測研究報(bào)告
- 2025至2030年中國七元素自動分析儀數(shù)據(jù)監(jiān)測研究報(bào)告
- 2025至2030年中國MP3可視語言復(fù)讀機(jī)數(shù)據(jù)監(jiān)測研究報(bào)告
- 2025年中國鮮筍市場調(diào)查研究報(bào)告
- Unit 1 Teenage life Reading for writing 教學(xué)設(shè)計(jì)-2024-2025學(xué)年高中英語人教版(2019)必修第一冊
- 2025年中國老鼠擋市場調(diào)查研究報(bào)告
- 第1課 中華文明的起源與早期國家 教學(xué)設(shè)計(jì) -2023-2024學(xué)年高一統(tǒng)編版2019必修中外歷史綱要上冊
- 第1課 隋朝的統(tǒng)一與滅亡 教學(xué)設(shè)計(jì) 2023-2024學(xué)年統(tǒng)編版初中歷史七年級下冊
- 2024-2025學(xué)年高中英語Unit1FriendshipSectionⅢGrammar課后演練提能新人教版必修1
- 天然氣脫硫完整版本
- 2025年中國電子煙行業(yè)發(fā)展前景與投資戰(zhàn)略規(guī)劃分析報(bào)告
- 貨物學(xué)基礎(chǔ) 課件 項(xiàng)目一 任務(wù)一 貨物的基本概念
- 無人機(jī)法律法規(guī)與安全飛行 第2版空域管理
- 我的小學(xué)生活
- 醫(yī)療器材申請物價(jià)流程
- 《商務(wù)溝通-策略、方法與案例》課件 第三章 書面溝通
- 2024具身大模型關(guān)鍵技術(shù)與應(yīng)用報(bào)告-哈爾濱工業(yè)大學(xué)
- 提高瓦屋面太陽能板安裝一次驗(yàn)收合格率
- 人教PEP版2025年春季小學(xué)英語三年級下冊教學(xué)計(jì)劃
- 2024上海市房屋租賃合同范本下載
評論
0/150
提交評論