| 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 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.