怎么把BMP180接到Arduino 板测高度

怎么把BMP180接到Arduino 板测高度,第1张

以Arduino Uno为例:VCC 接3.3v,GND接GND,SCL接A5,SDA接A4

代码如下

#include <SFE_BMP180.h>

#include <Wire.h>

SFE_BMP180 pressure// 创建一个气压计对象

double baseline// 基准气压

void setup()

{

Serial.begin(9600)

Serial.println("REBOOT")

// 初始化传感器

if (pressure.begin())

  Serial.println("BMP180 init success")

else

{

  // 糟糕,气压计出问题了,多半是连线有问题

  Serial.println("BMP180 init fail (disconnected?)\n\n")

  while(1)// 暂停

}

//获得基准气压

baseline = getP()

Serial.print("baseline pressure: ")

Serial.print(baseline)

Serial.println(" hPa")

}

void loop()

{

double a,p,t

p = getP()// 获得一个气压值

a = pressure.altitude(p,baseline)//获得基于基准气压的高度值

Serial.print("relative altitude: ")

if (a >= 0.0) Serial.print(" ")// 调整正数显示格式

Serial.print(a,1)

Serial.print(" meters ")

t = getT()// 获得一个温度值

Serial.print("temperature: ")

Serial.print(t,1)

Serial.println(" degrees")

delay(500)//刷新率

}

double getP()

{

char status

double T,P,p0,a

// You must first get a temperature measurement to perform a pressure reading.

// Start a temperature measurement:

// If request is successful, the number of ms to wait is returned.

// If request is unsuccessful, 0 is returned.

status = pressure.startTemperature()

if (status != 0)

{

  // Wait for the measurement to complete:

  delay(status)

  // Retrieve the completed temperature measurement:

  // Note that the measurement is stored in the variable T.

  // Use '&T' to provide the address of T to the function.

  // Function returns 1 if successful, 0 if failure.

  status = pressure.getTemperature(T)

  if (status != 0)

  {

    // Start a pressure measurement:

    // The parameter is the oversampling setting, from 0 to 3 (highest res, longest wait).

    // If request is successful, the number of ms to wait is returned.

    // If request is unsuccessful, 0 is returned.

    status = pressure.startPressure(3)

    if (status != 0)

    {

      // Wait for the measurement to complete:

      delay(status)

      // Retrieve the completed pressure measurement:

      // Note that the measurement is stored in the variable P.

      // Use '&P' to provide the address of P.

      // Note also that the function requires the previous temperature measurement (T).

      // (If temperature is stable, you can do one temperature measurement for a number of pressure measurements.)

      // Function returns 1 if successful, 0 if failure.

      status = pressure.getPressure(P,T)

      if (status != 0)

      {

        return P

      }

      else Serial.println("error retrieving pressure measurement\n")

    }

    else Serial.println("error starting pressure measurement\n")

  }

  else Serial.println("error retrieving temperature measurement\n")

}

else Serial.println("error starting temperature measurement\n")

}

double getT()

{

char status

double T,p0

status = pressure.startTemperature()

if (status != 0)

{

  delay(status)

  status = pressure.getTemperature(T)

  if (status != 0)

  {

    status = pressure.startPressure(3)

    return T

  }

  else Serial.println("error retrieving temperature measurement\n")

}

else Serial.println("error starting temperature measurement\n")

}

注意:串口会同时输出两组数据,A较精确

首先,因为气体压力传感器的信号通常都是微弱的,而且含有许多噪声,所以需要一个信号调理放大电路,进行滤波和放大;然后因为传入电路的是模拟量(这个模拟量有可能是电流,也有可能是电压),所以需要模/数转换,因为只有数字信号才是系统MCU可识别的(微处理器,如单片机,DSP等)。有了这些模块,一个简易的气体压力检测电路就搭建好了。

你也可以加上其他功能,如用数码管显示气体压力值,或者采用和PC通信的方式,将气压检测结果通过上位机软件来显示(就是WINDOWS界面的软件程序哈~)

呵呵,不知道是要做成产品还是学生做实验呢~如果是学生做实验就搭建上面所说的简易电路就好了~

第22组——刘杰、马晓英、石洁

模块1:掌握气压传感器的工作原理,完成相关电路图的连接,并能够灵活应用气压传感器测量海拔高度

模块2:探究气压传感器在日常生活中的实际应用。

掌握气压传感器的工作原理,利用arduino进行 *** 作学习,并能测量出教室的海拔高度,学生了解气压传感器在日常生活中的实际应用。

1、激发学生对学习兴趣,培养学生勤思考爱动手的精神;

2、提高学生的动手实践能力和解决问题的能力;

3、培养学生的团队精神和合作交流学习的能力。

我们班有多少同学喜欢爬山呢?那你们在爬山的过程中,怎么知道自己到底爬了多高了?小组讨论,看哪个组想的办法又准确又好!

以上方法呢都是很不错的选择,利用GPS定位系统是我们生活中比较常见的方法,但是由于技术水平的限制,GPS计算的海拔高度,一般误差都会有十米左右。而如果在树林里或者是在悬崖下面时,有时候甚至接收不到GPS卫星信号。这时候,我们就可以考虑测量气压,进而计算高度的方法来实现,而有的手机之所以有这个功能,是因为手机内部有气压传感器。

学生探索

交流分享

教学评价主体应包括,学生自评,小组合作评价以及教师评价三个方面


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12149827.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存