-1

我在 Arduino 上编写了代码来记录施加到连接到引脚 A0 的 FSR 传感器的压力。这是我的代码

int pressureAnalogPin = 0; //pin where our pressure pad is located.
int pressureReading; //variable for storing our reading
bool active = false; //boolean to check whether arduino should be sending pressure values 

void setup() 
{ 
    Serial.begin(9600); // opens serial port, sets data rate to 9600 bps
}
void loop() 
{
    if (Serial.available()) //checks if data is coming in
        { 
        char read = Serial.read(); //Set varaiable read to data read from mobile
        if (read == 'g') //if read is equal to character 'g' set boolean active to true 
        { 
            active = true;
        }
        if (read == 'x') //if read is equal to character 'x' set boolean active to false 
        { 
            active = false;
        }
    }
    if (active == true) //Only send data to phone when boolean active is set to true
    {   
        pressureReading = analogRead(pressureAnalogPin); // Set varaible pressureReading to the pressure value recorded by FSR 
        Serial.print(pressureReading); //Send pressure value to mobile phone
    }
    delay(100);// a delay of 100ms in loop
}

我收到从 0 到 1023 的结果。我进行了一项实验,通过增加压力传感器顶部的权重。

Excel 实验结果

上面是一个 Excel 图表,显示了重量的增加和记录的压力。

有人可以告诉我这些压力读数的单位是什么吗?

4

1 回答 1

0

由于您已经根据 Excel 提供了重量为 50 - 800 克的传感器,您可以选择使用两种方法(前提是您使用与校准中相同的设置。

Oprion one 以编程方式使用地图

map(value, fromLow, fromHigh, toLow, toHigh)

对于每个间隔

map(measuredValue, 974, 978, 351, 400)

在您的情况下,这将产生非常不精确的测量结果,因为您必须拥有 if 和 than 映射。

或者,您使用 EXCEL 插值函数计算整个范围,而不是为 1024 个数据点中的每一个获得一个克值,您将其存储在数组中并通过以下方式检索:

gramValue = interpolatedArray[measuredValue];

但在实际使用中,您可能需要额外的电路、制造商的校准数据和稳定的电源。为了玩和学习这个拍摄,希望它的命中方法是好的。

这是卖家的建议:

这些传感器设置简单,非常适合感测压力,但它们并不是非常准确。用它们来感知它是否被挤压,但你可能不想把它用作秤

传感器数据表,包括所有校准电路

于 2020-04-29T23:12:17.933 回答