美女网站一区二区_在线观看日韩毛片_成人在线视频首页_欧美精品一区二区三区久久久_国产精品亚洲一区二区三区在线_日本免费新一区视频_日本美女一区二区三区_精品亚洲成a人_久久不见久久见免费视频1_91首页免费视频_欧美一区二区在线看_91精品91久久久中77777_天堂蜜桃一区二区三区_av在线一区二区_欧美不卡一区二区_欧美影视一区二区三区

產(chǎn)品分類

當(dāng)前位置: 首頁 > 工業(yè)電子產(chǎn)品 > 集成電路(ICs) > IC傳感器

類型分類:
科普知識
數(shù)據(jù)分類:
IC傳感器

bmp085傳感器:BMP085大氣壓傳感器

發(fā)布日期:2022-05-11 點擊率:58


bmp085傳感器:BMP085大氣壓傳感器  第1張

bmp085傳感器:BMP085大氣壓傳感器

一.IIC協(xié)議的圖解如下:

問題思考:1.此程序的IIC速度大概達到了多少?離BMP085的IIC上線速度3.4MBit還有多遠?此程序中如何稍微的修改就提高IIC的速度?
2.比特流的高低位存儲到對應(yīng)的字節(jié)位中很重要,在RGB燈調(diào)試中也遇到過。
3.這里可以得到不同精度的大氣壓值,如何操作?

4.這里的SCL引腳和SDA引腳在進行實際操作時,要重新配置,通常推挽模式容易引起電平競爭,但在低速式,不影響數(shù)據(jù)讀出。

1.數(shù)據(jù)總線和時鐘總線的端口配置:

?

2:以下是開始和結(jié)束信號的函數(shù)實現(xiàn)

3.主設(shè)備選擇是否向從設(shè)備發(fā)送應(yīng)答信號

?

4.從設(shè)備向主設(shè)備發(fā)送應(yīng)答信號

5.主設(shè)備向從設(shè)備發(fā)送8位數(shù)據(jù)

6.主設(shè)備接收從設(shè)備發(fā)來的8位數(shù)據(jù)

具體理解程序請參考BMP085技術(shù)手冊。

注:以下為同一環(huán)境下,不同測量模式的數(shù)據(jù)對比。

bmp085傳感器:BMP085大氣壓傳感器  第2張

bmp085傳感器:BMP085氣壓傳感器的詳細資料介紹和應(yīng)用代碼免費下載

  在測量海拔高度時,傳統(tǒng)的做法是通過測量某一高度的大氣壓力,再經(jīng)過換算才能得到高度數(shù)據(jù)。為了測量大氣壓力,就得用上氣壓傳感器,下面就來討論一下氣壓傳感器的應(yīng)用。
  氣壓傳感器是壓力傳感器中的一種,它專用于測量氣體的絕對壓強。目前市場上能見到的氣壓傳感器有很多種,下面就以市場上常見的Bosch公司推出的BMP085來進行討論。BMP085不僅可以實時的測量大氣壓力,還能測量實時溫度。同時它還具有IIC總線的接口,便于單片機進行訪問。另外它的使用也很方便,不需要太多的操作就可讀取到氣壓及測量數(shù)據(jù)。
  BMP085采用強大的8腳陶瓷無引線芯片承載(LCC)超薄封裝,它性能卓越,內(nèi)置有校準(zhǔn)補償,絕對精度最低可以達到0.03hPa(0.25米),并且耗電極低,只有3μA。氣壓測量范圍從300hPa到1100hPa,換算成高度為海拔9000米到500米。下圖是其封裝外形和引腳排列。
  引腳各功能如下:1腳(GND)接電源地,2腳(EOC)為完成轉(zhuǎn)換輸出,3腳(VDDA)為正電源,4腳(VDDD)為數(shù)字正電源,5腳為空,6腳(SCL)為IIC的時鐘端,7腳(SDA)為IIC的數(shù)據(jù)端,8腳(XCLR)為主清除信號輸入端,低電平有效,用來復(fù)位BMP085和初始化寄存器和控制器,在不用的情況下可以空置。
  BMP085的工作電壓為1.8V~3.6V,典型工作電壓為2.5V,其與單片機相連的典型電路如下圖所示。

bmp085傳感器:BMP085氣壓傳感器驅(qū)動

BMP085是新一代的小封裝氣壓傳感器,主要用于氣壓溫度檢測,在四軸飛行器上可以用作定高檢測,該傳感器屬于IIC總線接口,依然沿用標(biāo)準(zhǔn)IIC驅(qū)動程序
  使用該傳感器需要注意的是我們不能直接讀出轉(zhuǎn)換好的二進制溫度數(shù)據(jù)或者氣壓數(shù)據(jù),必須先讀出一整套約176位的矯正數(shù)據(jù),然后啟動轉(zhuǎn)換,將轉(zhuǎn)換的數(shù)據(jù)與矯正數(shù)據(jù)一起進行矯正運算才能正常獲得溫度,溫度精度為0.1,大氣壓有16bit或者19bit的精度,一般選擇16位精度,
 所以對于該傳感器設(shè)備,驅(qū)動模式如下
 1.獲取矯正數(shù)據(jù)-->啟動溫度轉(zhuǎn)換--->獲取原始溫度數(shù)據(jù)-->啟動大氣壓轉(zhuǎn)換-->獲取原始大氣壓數(shù)據(jù)-->計算實際溫度數(shù)據(jù)大氣壓數(shù)據(jù)
  另,轉(zhuǎn)換時的轉(zhuǎn)換時間也是計算時的重要參數(shù),計算大氣壓時的過程中需要使用冤死溫度
矯正數(shù)據(jù)如下
矯正數(shù)據(jù)都是16位有符號的,所以讀出的時候需要連續(xù)讀取兩個字節(jié)
通過計算得到的大氣壓強可以計算得到當(dāng)前傳感器相對于海平面的絕對高度
具體驅(qū)動代碼如下所示
#ifndef __BMP085_H_
#define __BMP085_H_
#include "ioremap.h"
#include "common.h"
#include "stm32f10x.h"
#include "uart.h"
#include "delay.h"
//BMP SDA PC0
//BMP SCL PC1
#define BMP_ACK_WAIT_TIME 200 //iic通訊時的ack等待時間
#define BMP085_DEBUG 1
#define OSS 0 // 大氣壓的轉(zhuǎn)換時間,有0-3可選值
//地址均為讀地址
#define BMP085_ADDR 0xEE  //定義器件在IIC總線中的寫地址
#define BMP_AC1_ADDR 0xAA  //定義校準(zhǔn)寄存器的地址
#define BMP_AC2_ADDR 0xAC
#define BMP_AC3_ADDR 0xAE
#define BMP_AC4_ADDR 0xB0
#define BMP_AC5_ADDR 0xB2
#define BMP_AC6_ADDR 0xB4
#define BMP_B1_ADDR 0xB6
#define BMP_B2_ADDR 0xB8
#define BMP_MB_ADDR 0xBA
#define BMP_MC_ADDR 0xBC
#define BMP_MD_ADDR 0xBE
#define CONTROL_REG_ADDR 0xF4 //控制寄存器,在這個寄存器中設(shè)置不同的值可以設(shè)置不同轉(zhuǎn)換時間,同時不同的值可以確認轉(zhuǎn)換大氣壓或者溫度
#define BMP_COVERT_TEMP 0x2E //轉(zhuǎn)換溫度 4.5MS
#define BMP_COVERT_PRES_0 0x34 //轉(zhuǎn)換大氣壓 4.5ms
#define BMP_COVERT_PRES_1 0x74 //轉(zhuǎn)換大氣壓 7.5ms
#define BMP_COVERT_PRES_2 0xB4 //轉(zhuǎn)換大氣壓 13.5ms
#define BMP_COVERT_PRES_3 0xF4 //轉(zhuǎn)換大氣壓 25.5ms
#define BMP_TEMP_PRES_DATA_REG 0xF6 //兩個字節(jié)溫度數(shù)據(jù)
//0xf6 0xf7 0xf8 壓強地址
//0xf6 0xf7 溫度地址
typedef struct BMP085PARAM //校準(zhǔn)參數(shù)表
{
 s16 ac1;
 s16 ac2;
 s16 ac3;
 u16 ac4;
 u16 ac5;
 u16 ac6;
 s16 b1;
 s16 b2;
 s16 mb;
 s16 mc;
 s16 md;
}BMP085PARAM;
void BmpInit(void); //接口與參數(shù)初始化
//讀取溫度數(shù)據(jù)并校正轉(zhuǎn)換
long BmpConvertTemp(void);
//讀取壓強數(shù)據(jù)并校正轉(zhuǎn)換
long BmpConvertPressure(void);
#endif
#include "bmp085.h"
static struct BMP085PARAM bmp085ParamStruct={0,0,0,0,0,0,0,0,0,0,0};
//IO方向設(shè)置
#define BMP_SDA_IN()  {GPIOC->CRL&=0xFFFFFFF0;GPIOC->CRL|=8;}
#define BMP_SDA_OUT() {GPIOC->CRL&=0xFFFFFFF0;GPIOC->CRL|=3;}
//IO操作函數(shù)
#define BMP_SCL    PCout(1) //SCL
#define BMP_SDA    PCout(0) //SDA
#define BMP_READ_SDA   PCin(0)  //輸入SDA
static void BMP085IOInit(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOC, ENABLE );

GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0|GPIO_Pin_1;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP ;   //推挽輸出
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOC, &GPIO_InitStructure);

BMP_SCL=1;
BMP_SDA=1;
}
//發(fā)送IIC起始信號
static void ComStart(void)
{
BMP_SDA_OUT();     //sda線輸出
BMP_SDA=1;
BMP_SCL=1;
DelayUs(5);
BMP_SDA=0;//START:when CLK is high,DATA change form high to low
DelayUs(5);
BMP_SCL=0;//鉗住I2C總線,準(zhǔn)備發(fā)送或接收數(shù)據(jù)
}
//發(fā)送IIC停止信號
static void ComStop(void)
{
BMP_SDA_OUT();//sda線輸出
BMP_SDA=0;//STOP:when CLK is high DATA change form low to high
BMP_SCL=1;
DelayUs(5);
BMP_SDA=1;//發(fā)送I2C總線結(jié)束信號
DelayUs(5);
}
//等待ACK,為1代表無ACK 為0代表等到了ACK
static u8 ComWaitAck(void)
{
u8 waitTime=0;
BMP_SDA_OUT();//sda線輸出
BMP_SDA=1;
DelayUs(5);
BMP_SDA_IN();      //SDA設(shè)置為輸入
BMP_SCL=1;
DelayUs(5);
while(BMP_READ_SDA)
{
waitTime++;
DelayUs(1);
if(waitTime > BMP_ACK_WAIT_TIME)
{
ComStop();
return 1;
}
}
BMP_SCL=0;
return 0;

}
static void ComSendAck(void)
{
BMP_SCL=0;
BMP_SDA_OUT();
BMP_SDA=0;
DelayUs(2);
BMP_SCL=1;
DelayUs(5);
BMP_SCL=0;
DelayUs(5);
}
static void ComSendNoAck(void)
{
BMP_SCL=0;
BMP_SDA_OUT();
BMP_SDA=1;
DelayUs(2);
BMP_SCL=1;
DelayUs(5);
BMP_SCL=0;
DelayUs(5);
}
//返回0 寫入收到ACK 返回1寫入未收到ACK
static u8 ComSendByte(u8 byte)
{
u8 t;
BMP_SDA_OUT();
for(t=0;t

ut=BmpReadTemp();   // 讀取溫度
 x1=(((long)ut - (long)bmp085ParamStruct.ac6)*(long)bmp085ParamStruct.ac5) >> 15;
 x2=((long) bmp085ParamStruct.mc << 11) / (x1 + bmp085ParamStruct.md);  b5=x1 + x2;  temperature=((b5 + 8) >> 4); //溫度計算,官方公式
 #ifdef BMP085_DEBUG
 printf("bmp085 temp is %f 'C
",((float)temperature)/10.0);
 #endif
 return temperature;
}
//讀取壓強數(shù)據(jù)并校正轉(zhuǎn)換
long BmpConvertPressure(void)
{
 unsigned int ut;
 unsigned long up;
 long x1, x2, b5, b6, x3, b3, p;
 unsigned long b4, b7;
 long  pressure;

ut=BmpReadTemp();   // 讀取溫度,計算壓強時需要溫度做參數(shù)
 up=Bmp085ReadPressure();  // 讀取壓強

x1=(((long)ut - (long)bmp085ParamStruct.ac6)*(long)bmp085ParamStruct.ac5) >> 15;
 x2=((long)bmp085ParamStruct.mc << 11) / (x1 + bmp085ParamStruct.md);  b5=x1 + x2;    b6=b5 - 4000;  // Calculate B3  x1=(bmp085ParamStruct.b2 * (b6 * b6)>>12)>>11;
 x2=(bmp085ParamStruct.ac2 * b6)>>11;
 x3=x1 + x2;
 b3=(((((long)bmp085ParamStruct.ac1)*4 + x3)<

// Calculate B4
 x1=(bmp085ParamStruct.ac3 * b6)>>13;
 x2=(bmp085ParamStruct.b1 * ((b6 * b6)>>12))>>16;
 x3=((x1 + x2) + 2)>>2;
 b4=(bmp085ParamStruct.ac4 * (unsigned long)(x3 + ))>>15;

b7=((unsigned long)(up - b3) * (>>OSS));
 if (b7 < 0x)    p=(b7<<1)/b4;  else    p=(b7/b4)<

#ifdef BMP085_DEBUG
 printf("bmp085 pressure is %f KPa
",((float)pressure)/1000.0);
 #endif
 return pressure;
}
bmp085傳感器:BMP085大氣壓傳感器  第3張

bmp085傳感器:八色木

首頁科技知識正文

infinite

09-22

已關(guān)閉評論
傳感器 樹莓派
樹莓派連接BMP085數(shù)字壓力傳感器

內(nèi)容

廣告

相關(guān)

我最近買了一塊基于BMP085數(shù)字壓力傳感器的模塊(GY-65),所以應(yīng)該寫一篇關(guān)于如何從樹莓派中讀取BMP085傳感器數(shù)據(jù)的文章,樹莓派讀取BMP085的數(shù)據(jù)是通過SMbus總線來完成的。SMBus(System Management Bus)是I2C協(xié)議的一個子集。
GY65的價格參考
BMP085氣壓傳感器
GY65與樹莓派的連接可參考下圖
Python代碼
下面是簡單的測試代碼,代碼首先對BMP085氣壓傳感器進行初始化,然后通過不斷地循環(huán)來讀取溫度和氣壓數(shù)據(jù)。下面是具體的Python代碼:
#!/usr/bin/python
import smbus
import time
bus=smbus.SMBus(0) # 如果樹莓派版本是2.0,那么“ bus=smbus.SMBus(1) ”
address=0x77
def read_byte(adr):
return bus.read_byte_data(address, adr)
def read_word(adr):
high=bus.read_byte_data(address, adr)
low=bus.read_byte_data(address, adr+1)
val=(high

下一篇: PLC、DCS、FCS三大控

上一篇: 電氣控制線路圖控制原

推薦產(chǎn)品

更多
美女网站一区二区_在线观看日韩毛片_成人在线视频首页_欧美精品一区二区三区久久久_国产精品亚洲一区二区三区在线_日本免费新一区视频_日本美女一区二区三区_精品亚洲成a人_久久不见久久见免费视频1_91首页免费视频_欧美一区二区在线看_91精品91久久久中77777_天堂蜜桃一区二区三区_av在线一区二区_欧美不卡一区二区_欧美影视一区二区三区


        日韩欧美精品一区二区| 国产日韩欧美一区二区三区综合| 欧美私人免费视频| 中文字幕电影一区| 午夜国产精品一区| av免费精品一区二区三区| 亚洲制服中文| 久久精品欧美一区二区三区麻豆| 日韩高清在线不卡| 国产精品免费一区二区三区四区| 在线精品国精品国产尤物884a| 国产亚洲欧美中文| 美女脱光内衣内裤视频久久影院| 精品日本一区二区三区| 欧美一级片免费看| 视频一区二区国产| 国产精品二区在线| 5566中文字幕一区二区电影| 一区二区三区四区中文字幕| 91久久精品www人人做人人爽| 在线免费观看视频一区| 综合欧美一区二区三区| 国产91对白在线观看九色| 一本色道久久综合亚洲二区三区| 国产日韩亚洲欧美综合| 国内精品伊人久久久久av影院| 欧美中文娱乐网| 国产亚洲视频系列| 国产美女av一区二区三区| 亚洲欧洲一区二区| 自拍视频在线观看一区二区| 91色乱码一区二区三区| 日韩欧美一级精品久久| 久久精品理论片| 亚洲日本精品国产第一区| 中文字幕一区不卡| 91久久国产综合久久蜜月精品| 日韩欧美电影一二三| 极品少妇xxxx精品少妇偷拍| 91久久奴性调教| 午夜视频一区二区三区| 欧美一区二区三区四区夜夜大片| 中文字幕乱码久久午夜不卡| 99精品久久只有精品| 日韩亚洲欧美高清| 国产精品一级二级三级| 欧美日韩国产综合久久| 蜜臀久久99精品久久久久久9| 亚洲蜜桃av| 日韩精品乱码免费| 在线视频不卡一区二区| 午夜精品福利在线| 一本色道久久综合亚洲二区三区 | 日韩精品在线一区| 国精产品一区一区三区mba桃花 | 51精品视频一区二区三区| 日本特黄久久久高潮| 亚洲在线视频一区二区| 日本美女一区二区| 在线亚洲+欧美+日本专区| 久久国产免费看| 欧美在线观看一二区| 久久精品999| 欧美日韩一级视频| 国产曰批免费观看久久久| 在线电影国产精品| 成人免费看视频| 久久精品一区蜜桃臀影院| 51精品国产人成在线观看| 欧美激情一区二区三区四区| 韩国精品一区二区三区六区色诱| 亚洲欧洲性图库| 视频在线精品一区| 美日韩一区二区| 日韩写真欧美这视频| wwwxx欧美| 一区二区三区在线免费视频| 亚洲欧洲日韩精品| 九九热在线视频观看这里只有精品| 在线观看一区二区精品视频| 韩国毛片一区二区三区| 日韩欧美成人一区二区| 国产精品一区视频网站| 亚洲一区在线观看免费观看电影高清| 伊人久久大香线蕉成人综合网| 久久99精品一区二区三区三区| 欧美偷拍一区二区| 成人av网站免费| 亚洲欧美日韩国产综合在线 | 欧美亚洲综合另类| 国产一区二区三区在线观看精品| 欧美一级日韩不卡播放免费| 91成人免费观看| 一区二区视频免费在线观看| 在线免费av一区| 成人av影视在线观看| 亚洲欧洲一区二区在线播放| 亚洲欧美久久234| 狠狠色丁香久久婷婷综| 国产亚洲一区二区三区在线观看 | 欧美亚洲自拍偷拍| 99久精品国产| 亚洲欧美另类久久久精品2019| 色哟哟国产精品| 成人免费观看av| 亚洲精品久久7777| 7777精品伊人久久久大香线蕉完整版| 91精品久久香蕉国产线看观看 | 免费日韩电影在线观看| 日韩国产在线一| 精品久久人人做人人爽| 视频一区亚洲| 99九九99九九九视频精品| 亚洲国产成人精品视频| 日韩精品在线一区二区| 图片区小说区区亚洲五月| 国产99久久久精品| 一区二区三区电影在线播| 欧美一区二区三区性视频| 精品综合久久久| 国产精品99久久久久久宅男| 亚洲国产高清不卡| 欧美性色黄大片| 国产伦理久久久| 久久99国产精品免费网站| 国产精品久久久久久久久快鸭| 欧洲在线/亚洲| 精品综合在线| 丁香激情综合五月| 午夜久久久久久| 国产精品久久久久久久久动漫| 欧美日韩精品免费| 欧美午夜精品久久久久久蜜| 成人福利视频在线| 男人的j进女人的j一区| 国产精品网站在线观看| 欧美精品久久一区| 台湾成人av| 国产精品乱子乱xxxx| 国产精品一级片在线观看| 亚洲va在线va天堂| 国产精品久久免费看| 在线综合视频播放| 蜜桃狠狠色伊人亚洲综合网站| 成人福利电影精品一区二区在线观看| 日韩av在线发布| 自拍偷拍欧美精品| 久久精品一区八戒影视| 日韩一级二级三级| 欧美性三三影院| 亚洲三区在线| 欧美精品二区三区四区免费看视频| 成人一区在线观看| 麻豆成人免费电影| 亚洲成年人影院| 亚洲美女屁股眼交3| 国产婷婷一区二区| 欧美成人精品1314www| 欧美日韩在线免费视频| 天天爽天天狠久久久| 久久久久资源| 高清视频在线观看一区| k8久久久一区二区三区| 国产精品一区免费在线观看| 日韩中文字幕区一区有砖一区| 国产精品免费av| 欧美激情中文字幕一区二区| 精品久久久久久久久久久久久久久 | 国产成人自拍在线| 天堂av在线一区| 亚洲一二三四区| 尤物视频一区二区| 中文字幕亚洲精品在线观看| 欧美国产精品v| 欧美激情一区二区三区在线| 国产婷婷色一区二区三区四区| 日韩欧美国产精品| 欧美成人免费网站| 欧美草草影院在线视频| 欧美电影免费观看完整版| 欧美一级精品大片| 日韩欧美国产综合在线一区二区三区 | 欧美日韩精品一区二区天天拍小说| 在线观看成人av| 亚洲一区二区自拍偷拍| 亚洲一区三区| 91久久久免费一区二区| 在线观看成人小视频| 欧美日韩精品一二三区| 欧美一区二区三区影视| 日韩欧美一区二区三区在线| 精品国产乱子伦一区| 日本一区二区三区四区| 国产精品美女久久久久aⅴ| 国产精品久久久久久久久晋中| 亚洲视频狠狠干| 午夜激情一区二区| 激情综合网最新| 9i在线看片成人免费| 懂色av一区二区三区在线播放|