Evaluation of a force sensor

Andrés Marrugo, PhD
Universidad Tecnológica de Bolívar

A force sensor (FSR) is evaluated experimentally. To do so, the resistance of the sensor is measured for a range of forces as follows:

Calculate the sensitivity of the sensor throughout its range.

F [N] 50 100 150 200 250 300 350 400 450 500 550 600 650
R [$\Omega$] 500 256.4 169.5 144.9 125 100 95.2 78.1 71.4 65.8 59.9 60 55.9

In [3]:
import matplotlib.pyplot as plt
import numpy as np
%matplotlib inline

F = np.array([50,100,150,200,250,300,350,400,450,500,550,600,650])
R = np.array([500,256.4,169.5,144.9,125,100,95.2,78.1,71.4,65.8,59.9,60,55.9])

plt.plot(R,F,'*')
plt.ylabel('R [Omega]')
plt.xlabel('Force [N]')
plt.show()


Sensitivity is the slope of the resistance versus force curve and is clearly a nonlinear quantity. However, we recall that force resistive sensors have a linear relation between force ($F$) and conductance ($1/R$). Therefore it is simpler to first calculate the conductance $C$.


In [6]:
C = 1/R

plt.plot(F,C,'*')
plt.ylabel('C [Siemens]')
plt.xlabel('Force [N]')
plt.show()



In [7]:
# polyfit computes the coefficients a and b of degree=1
a,b = np.polyfit(F,C,1)

print 'The coefficients are a =',a,'b =',b

C1 = a*F+b
plt.plot(C1,F,':b',label='Fitted line')
plt.plot(C,F,'*')
plt.ylabel('C [Siemens]')
plt.xlabel('Force [N]')
plt.show()


The coefficients are a = 2.65989335898e-05 b = 0.00149521070766

The conductance is $C = 0.0014952 F + 2.65989e-5 \; [1/\Omega]$

The sensitivity is $$ \frac{dR}{dF} = \frac{-0.0014952}{(0.0014952 F + 2.65989e-5)^2} \; [\Omega/N]. $$

This page was written in the IPython Jupyter Notebook. To download the notebook click on this option at the top menu or get it from the github repo.