在这个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左右。
电路图
正如我在上面提到的,用Arduino做一个力感应电阻的电路图真的很直接。要么按照下面的步骤来连接一切,要么观察下图。
力传感器的编码
这个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)。它将验证你的代码是否正常工作。
接下来,点击”->(2)“旁边的箭头。这将开始上传代码到Arduino的过程,应该只需要几秒钟。
现在,通过工具->serial monitor或ctrl+shift+M来加载串行监控器。
你应该会看到代码在运行,输出结果如下。如果你看到的是乱码,请确保波特率设置正确。
使用在项目中
在Arduino项目中,力感应电阻有很多用途。下面是几个例子,说明可以做什么。
- 可以将多个力传感电阻连接到Arduino上,让它们作为输入。例如,你可以用它们来播放每次敲击传感器时的曲子。
- 让它作为一个按钮,用于开关设备的开启或关闭。
- 当对它施加更多或更少的压力时,使用传感器来变亮或变暗灯光。 希望这篇Arduino力感应电阻教程已经引导你了解了你需要知道的一切。如果你遇到问题或发现问题,请在下方留言。
欢迎转载,请留下出处链接:Labno3 » Arduino怎么使用力传感电阻