传感器基础:传感器使用与编程使用(六)

发布时间:2023年12月27日

常用传感器讲解二十–气体传感器(KY-036)

具体讲解

在这里插入图片描述

使用MQ2气体传感器模块,为的下一个Arduino项目带来更多的气体。这是一个强大的气体传感器适用于感测LPG,烟雾,酒精,丙烷,氢气,甲烷和碳一氧化碳在空气中的浓度。如果您打算创建一个室内空气质量监测系统;呼吸检查器或早期火灾探测系统,MQ2气体传感器模块是一个不错的选择。
MQ2气体传感器可在5V DC上工作,功耗约800mW。它可以检测LPG,烟,酒,丙烷,氢气,甲烷和碳一氧化碳浓度的任何地方从200至10000PPM。

电路连接

在这里插入图片描述
将模块上的D0输出引脚连接到Arduino上的数字引脚8,将模块上的A0输出引脚连接到Arduino上的模拟引脚0。
在这里插入图片描述

代码实现

代码非常简单,基本上只读取A0引脚上的模拟电压。当检测到烟雾时,它还会在串行监视器上打印一条消息。

#define MQ2pin (0)

float sensorValue;  //variable to store sensor value

void setup()
{
  Serial.begin(9600); // sets the serial port to 9600
  Serial.println("Gas sensor warming up!");
  delay(20000); // allow the MQ-6 to warm up
}

void loop()
{
  sensorValue = analogRead(MQ2pin); // read analog input pin 0
  
  Serial.print("Sensor Value: ");
  Serial.print(sensorValue);
  
  if(sensorValue > 300)
  {
    Serial.print(" | Smoke detected!");
  }
  
  Serial.println("");
  delay(2000); // wait 2s for next reading
}

在这里插入图片描述

常用传感器讲解二十一–加速度传感器(ADXL335)

具体讲解

在这里插入图片描述

传感器的整个感应范围为±3 g。它可以测量倾斜感应应用中由于重力引起的静态加速度,以及由于运动,冲击或振动而产生的动态加速度。

电路连接

该传感器的工作电压为1.8V至3.6VDC(最佳3.3V),通常仅消耗350μA的电流。但是,板载3.3V稳压器使其成为与Arduino等5V微控制器接口的理想选择。

这款面包板友好型电路板将ADXL335的每个引脚都分为6引脚,0.1英寸间距接头。其中包括3个用于X,Y和Z轴测量的模拟输出,2个电源引脚和一个自测引脚,可让在最终应用中检查传感器的功能。
在这里插入图片描述

在这里插入图片描述

代码实现

它仅在串行接口的每个轴上显示已校准的传感器输出。

const int xInput = A0;
const int yInput = A1;
const int zInput = A2;

// initialize minimum and maximum Raw Ranges for each axis
int RawMin = 0;
int RawMax = 1023;

// Take multiple samples to reduce noise
const int sampleSize = 10;

void setup() 
{
	analogReference(EXTERNAL);
	Serial.begin(9600);
}

void loop() 
{
	//Read raw values
	int xRaw = ReadAxis(xInput);
	int yRaw = ReadAxis(yInput);
	int zRaw = ReadAxis(zInput);

	// Convert raw values to 'milli-Gs"
	long xScaled = map(xRaw, RawMin, RawMax, -3000, 3000);
	long yScaled = map(yRaw, RawMin, RawMax, -3000, 3000);
	long zScaled = map(zRaw, RawMin, RawMax, -3000, 3000);

	// re-scale to fractional Gs
	float xAccel = xScaled / 1000.0;
	float yAccel = yScaled / 1000.0;
	float zAccel = zScaled / 1000.0;

	Serial.print("X, Y, Z  :: ");
	Serial.print(xRaw);
	Serial.print(", ");
	Serial.print(yRaw);
	Serial.print(", ");
	Serial.print(zRaw);
	Serial.print(" :: ");
	Serial.print(xAccel,0);
	Serial.print("G, ");
	Serial.print(yAccel,0);
	Serial.print("G, ");
	Serial.print(zAccel,0);
	Serial.println("G");

	delay(200);
}

// Take samples and return the average
int ReadAxis(int axisPin)
{
	long reading = 0;
	analogRead(axisPin);
	delay(1);
	for (int i = 0; i < sampleSize; i++)
	{
	reading += analogRead(axisPin);
	}
	return reading/sampleSize;
}

在这里插入图片描述

常用传感器讲解二十二–压力传感器(BMP180)

具体讲解

在这里插入图片描述

这是一个专为测量大气压力而设计的基本传感器,对两件事确实很有用。

当我们从海平面到山顶旅行时,气压会降低。这意味着通过测量压力,我们可以确定高度。因此,我们可以将此传感器用作高度计。
因为大气压随天气变化,所以我们可以用它来监测天气的变化。

电路连接

在这里插入图片描述

VCC 是模块的电源,可以在3.3V至5V之间的任何范围内。

地线 应该连接到Arduino的地面。

SCL 是I2C接口的串行时钟引脚。

SDA 是I2C接口的串行数据引脚。

在这里插入图片描述

代码实现

从BMP180模块读取温度和气压

#include <Wire.h>
#include <Adafruit_BMP085.h>
#define seaLevelPressure_hPa 1013.25

Adafruit_BMP085 bmp;
  
void setup() {
  Serial.begin(9600);
  if (!bmp.begin()) {
	Serial.println("Could not find a valid BMP085 sensor, check wiring!");
	while (1) {}
  }
}
  
void loop() {
    Serial.print("Temperature = ");
    Serial.print(bmp.readTemperature());
    Serial.println(" *C");
    
    Serial.print("Pressure = ");
    Serial.print(bmp.readPressure());
    Serial.println(" Pa");

    Serial.print("Altitude = ");
    Serial.print(bmp.readAltitude());
    Serial.println(" meters");

    Serial.print("Pressure at sealevel (calculated) = ");
    Serial.print(bmp.readSealevelPressure());
    Serial.println(" Pa");

    Serial.print("Real altitude = ");
    Serial.print(bmp.readAltitude(seaLevelPressure_hPa * 100));
    Serial.println(" meters");
    
    Serial.println();
    delay(500);
}

在这里插入图片描述

文章来源:https://blog.csdn.net/weixin_47567401/article/details/135240287
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。