Arduino怎么使用力传感电阻

在这个Arduino力传感电阻教程中,我将建立一个可以检测放在压力垫上的压力的电路,俗称力传感电阻(FSR)。

你也可以将力传感器电阻连接到Raspberry Pi上。这比Arduino要复杂一点,因为你在Raspberry Pi上没有任何模拟引脚。

像这样的传感器有很多用途。在本教程的底部,我将介绍一些利用这个传感器的示例项目。

设备清单

必须设备

  • Arduino Uno
  • 面包板
  • 面包板线
  • 力传感器电阻(压力垫)
  • 100k电阻

力感应电阻电路

这个Arduino项目的电路超级简单,因为我们只需要一个力感应电阻和一个100k电阻。

在本教程中,我将解释每个部分以及为什么我们的电路中需要它。

力传感器电阻 (FSR)

这个电阻是电路中最重要的部分,因为每当压力施加到传感器的平面区域时,它就会检测到。在本教程中,我使用的是Flexiforce压力垫传感器,但也有很多更便宜的替代品,包括自己制作。

当对传感器施加的压力很小到没有压力的时候,阻力将接近于无限大。一旦你施加一些压力,阻力就会下降。当施加很大的压力时,它将下降到25k欧姆以下。

它和光依赖电阻几乎一模一样,只是依靠力而不是光。

电阻器

这个电阻将作为一个下拉电阻和分压电阻。它将在压力垫和电阻之间分出5v的电压。当施加压力时,它将提供足够的电压与Arduino的模拟引脚注册。

下面是一个公式,你可以计算出我们的GPIO引脚的电压是多少。例如,如果我们的压力垫是最大电阻,那么它将是(100,000 / (100,000 + 10,000,000)) * 5 = ~0.004伏。当从模拟引脚读数时,这个值应该是0。

如果你对FSR施加相当大的压力,使电阻下降到50,000欧姆,我们的公式将是(100,000 / (100,000 + 50,000)) * 5 = ~3.3伏。这在模拟引脚上应该读成700左右。

Voltage-Divider-Main-Equation

电路图

正如我在上面提到的,用Arduino做一个力感应电阻的电路图真的很直接。要么按照下面的步骤来连接一切,要么观察下图。

  • 将FSR的一端连接到5v。
  • 将100k电阻放在面包板上,一端接GND,另一端接模拟针脚0。
  • 最后,让去模拟引脚0的电阻的一端也接在FSR上。Arduino-Force-Sensing-Resistor-Circuit

力传感器的编码

这个Arduino力传感器电路的代码非常简单。你可以根据自己的需求来修改代码,但这应该是一个很好的起点。

首先,我们需要声明我们的变量。这些变量主要是定义静态值,比如我们的FSR连接到哪个引脚。我们还要定义什么是无压、轻压和重压。最后,压力读数是我们将从传感器中存储我们的值的地方。

int pressureAnalogPin = 0; 
int pressureReading; 

int noPressure = 5; 
int lightPressure = 100;
int mediumPressure = 200;

在我们的设置功能中,启动串行接口,这样就可以在电脑上看到输出。把波特率设置为默认的9600,如果你喜欢用其他的东西,可以改一下。

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

最后是我们的循环功能。在这里,我们首先读取力传感器电阻的读数。然后,我们将这个值与文本 “Pressure Pad Reading =”一起输出。

接下来,我们输出文字来显示所施加的压力是无压力、轻压、中压还是高压。

在 if else 块之后,我们延迟 1 秒钟,直到上传一个新的程序或关闭 Arduino。

void loop(void) {
pressureReading = analogRead(pressureAnalogPin);

Serial.print("Pressure Pad Reading = ");
Serial.println(pressureReading);

if (pressureReading < noPressure) {
Serial.println(" - No pressure");
} else if (pressureReading < lightPressure) {
Serial.println(" - Light Pressure");
} else if (pressureReading < mediumPressure) {
Serial.println(" - Medium Pressure");
} else{
Serial.println(" - High Pressure");
}
delay(1000);
}

下面是读取力感应电阻输出的整个代码。所显示的值可以进一步用于根据所施加的压力值来触发动作。

如果你发现压力值高了或低了很多,你可能需要调整变量。

int pressureAnalogPin = 0; //pin where our pressure pad is located.
int pressureReading; //variable for storing our reading

//Adjust these if required.
int noPressure = 5; //max value for no pressure on the pad
int lightPressure = 100; //max value for light pressure on the pad
int mediumPressure = 200; //max value for medium pressure on the pad
 
void setup(void) {
  Serial.begin(9600);
}
 
void loop(void) {
  pressureReading = analogRead(pressureAnalogPin);
  
  Serial.print("Pressure Pad Reading = ");
  Serial.println(pressureReading);

  if (pressureReading < noPressure) {
    Serial.println(" - No pressure");
  } else if (pressureReading < lightPressure) {
    Serial.println(" - Light Pressure");
  } else if (pressureReading < mediumPressure) {
    Serial.println(" - Medium Pressure");
  } else{
    Serial.println(" - High Pressure");
  }
  delay(1000);
}

另外,你也可以用Arduino的Cayenne软件。这个软件可以让电路的实现更容易,并且提供了一个非常漂亮的图形界面。

测试代码

在Arduino上部署代码是相当直接的。

首先,点击位于Arduino IDE左上角的”√”(1)。它将验证你的代码是否正常工作。Arduino-Sketch-Verify-and-Upload

接下来,点击”->(2)“旁边的箭头。这将开始上传代码到Arduino的过程,应该只需要几秒钟。

现在,通过工具->serial monitor或ctrl+shift+M来加载串行监控器。

Arduino-Serial-Monitor-Menu-Location

你应该会看到代码在运行,输出结果如下。如果你看到的是乱码,请确保波特率设置正确。

Arduino-Serial-Monitor-Pressure-Pad-Reading

使用在项目中

在Arduino项目中,力感应电阻有很多用途。下面是几个例子,说明可以做什么。

  • 可以将多个力传感电阻连接到Arduino上,让它们作为输入。例如,你可以用它们来播放每次敲击传感器时的曲子。
  • 让它作为一个按钮,用于开关设备的开启或关闭。
  • 当对它施加更多或更少的压力时,使用传感器来变亮或变暗灯光。 希望这篇Arduino力感应电阻教程已经引导你了解了你需要知道的一切。如果你遇到问题或发现问题,请在下方留言。

平均: 0 / 5. votes: 0

到目前为止还没有投票!成为第一位评论此文章。

欢迎转载,请留下出处链接:Labno3 » Arduino怎么使用力传感电阻

赞 (0)

评论

6+1=