0、结果
说明:先来看看串口调试助手显示的结果,第一个值是上电后检测到的平均压力值,第二个值是实时的压力值,第三个值是平均压力值和实时压力值的差值。如果是你想要的,可以接着往下看。
1、外观
说明:虽然薄膜压力传感器形态各异,但是原理和代码都是适用的。
2、连线
说明:只需要连接三根线。
uno————薄膜压力传感器
5V------电阻--------传感器的右端
GND--------------传感器的左端
A0--------------传感器的右端
可以参考下面的图连接线路
3、源程序
说明:采用非阻塞方式编写,一定时间检测一次压力值,并将对应功能进行函数化,方便移植。
/****************************************压力 part****************************************/
/*
接线:
VCC----电阻--模块的右端
A0------模块的右端
GND------模块的左端
*/
#define pressurePin A0 //输入引脚
#define pressureTimeInterval 1000 //检测一次的时间间隔
unsigned long pressureTimes = 0; //记录设备运行时间
int numAverage[30]; //存放自适应的30个值
int sum = 0; //将30个值相加
int average = 0; //求的30个值的平均值
int pressureVal = 0; //实时显示的输入值
int diffVal = 0; //自适应时的平均值和当前实时的差值
/****************************************set up and loop part*********************************/
void setup() {
Serial.begin(9600); //设置串口波特率为9600
for (int i = 0; i < 30; i++) { //自适应
numAverage[i] = analogRead(pressurePin);
sum += numAverage[i];
}
average = sum / 30; //求出平均值
Serial.println("设备上线!");
}
void loop() {
getPressureData(); //获取压力传感器的数据
}
/****************************************压力 part****************************************/
/*获取压力传感器的数据*/
void getPressureData() {
if (millis() - pressureTimes >= pressureTimeInterval) { //一定时间执行一次
pressureTimes = millis();
pressureVal = analogRead(pressurePin); //获取实时的值
diffVal = abs( average - pressureVal);
Serial.print("平均值: ");
Serial.print(average); //打印自适应时得到的平均值
Serial.print(" , 实时值: ");
Serial.print(pressureVal); //串口打印对应的值
Serial.print(" , 差值: ");
Serial.println(diffVal); //串口打印对应的值
}
}
4、注意事项
说明:这个模块的引脚很薄,很容易弄断,另外这个传感器能承受的压力蛮大的。
5、基本原理
Arduino中薄膜压力传感器的工作原理是通过测量薄膜传感器的电阻变化来检测压力信号。
薄膜传感器通常由两个电极之间夹有一片薄膜材料组成。当外部施加压力时,薄膜会产生形变和应力变化,从而导致电阻值发生变化。这是因为薄膜本身的电阻率、细胞间距等物理参数与其形变、应力状态存在一定的关系。
利用该特性,薄膜压力传感器通常被设计成一个电桥电路,其中包括两个固定电阻和两个变阻器,其中一个变阻器为薄膜传感器。当外部施加压力时,薄膜传感器的电阻值发生变化,从而导致电桥的平衡状态发生改变,最终产生一个电压输出信号。这个信号可以通过Arduino的模拟输入引脚读取,并通过程序进行分析和处理。