A11|05 Der Drucksensor für 0g bis 500g Messungen
Thin-film Pressure Sensor


Sensorwerte / Mix an Sensoren

Ein FSR (Force Sensitive Resistor) Drucksensor wandelt mechanischen Druck in ein proportionales elektrisches Signal um. Es handelt sich um äußerst robuste Drucksensoren, die in allen möglichen Branchen eingesetzt werden. Man findet sie in elektronischen Trommeln, Mobiltelefonen oder Spielgeräten.

Der elektrische Widerstand des FSR hängt vom ausgeübten Druck auf die Messfläche ab. Je mehr Druck aufgebracht wird, desto geringer ist der Widerstand. Der Widerstandsbereich ist mit 100MΩ (kein Druck) bis 200Ω (maximaler Druck) ist recht groß. Dieser FSR kann eine Kraft im Bereich von 20g bis 500g messen.

 

Spezifikationen
- Signalart: digital
- Spannung: 3,3V – 5V
- Pinabstand: 2,54mm
- Bereich: 0 bis 500g
- Dicke: <0,25mm
- Ansprechpunkt: <20g
- Reproduzierbarkeit:
<±5,8% (50% Last)
- Genauigkeit:±2,5%
(85% Bereichsintervall)
- Haltbarkeit:
>100.000
- Anfangswiderstand:
>100MΩ (ohne Last)
- Ansprechzeit: <1ms
- Erholungszeit:<15ms
- Arbeitstemperatur:
-20℃ bis 60℃

Einfache FSR bestehen aus zwei Membranen, die durch einen dünnen Luftspalt getrennt sind. Der Luftspalt wird durch einen Abstandshalter an den Rändern und durch die Steifigkeit der beiden Membranen aufrechterhalten. Eine der Membranen hat zwei Sätze ineinandergreifender Finger, die elektrisch getrennt sind. Jeder Satz ist mit einer Leiterbahn an ihrem Ende verbunden. Die andere Membran ist mit FSR-Tinte beschichtet. Wenn sie gedrückt wird, schließt die FSR-Tinte die beiden Leiterbahnen mit einem Widerstand kurz, der von der ausgeübten Kraft abhängt.

 
 

Folgendes Diagramm, aus dem Interlink FSR-Integrationshandbuch, veranschaulicht das typische Kraft-Widerstands-Verhältnis. Beachte, dass die Werte auf logarithmischen Skalen beruhen sind. Mit anderen Worten ist das Sensorverhalten ist nicht durchgehend linear!

 

Wie du sehen kannst, fällt der Widerstand stark ab, wenn ein geringer Druck ausgeübt wird. Danach verhält sich der Widerstand umgekehrt proportional zur ausgeübten Kraft. Die Beziehung zwischen Widerstand und Krafteinwirkung ist im Allgemeinen ab 50g linear. Diese Sensoren haben eine Einschaltgrenze - eine Kraft also, die vorhanden sein muss, damit sich der Widerstand linear verhält.
Bei etwa 500g (nicht im Diagramm dargestellt) ist der Sensor gesättigt, und eine Erhöhung der Kraft führt zu einer geringen oder gar keiner Abnahme des Widerstands. Jeder Druck, der über die Höchstgrenze des Sensors hinausgeht, ist nicht mehr messbar (und kann das Bauteil beschädigen).

 

Der Aufbau

Verbinde dein Arduino mithilfe der Jumper Wire mit dem Modul:

 
 

Der minimal Sketch

Der Sketch misst wie viel Druck auf den Sensor ausgeübt wird und sendet das Ergebnis an den seriellen Monitor. Die zweite Funktion testet, ob der Schwellwert überschritten wurde und schaltet die interne LED auf dem Arduino ein. Kopiere den unteren Sketch, füge ihn in die Arduino IDE ein und lade ihn auf das Arduino-Board rauf.

/********************************************************
A11|05 Der Drucksensor für 0g bis 500g Messungen
Mr Robot UXSD / www.mrrobotuxsd.com
*********************************************************/

int pressurePin   = A0;  //Pin-Nummer des Drucksensors
int ledPin        = 13;  //Pin-Nummer der LED
int pressureValue = 0;   //Variable zum Speichern der Drucksensor-Werte
int threshold     = 600; //Schwellwert für Gewichtsüberschreitung


void setup() 
{
  //Initialisiere die Serielle Kommunikation mit 9600 Bits pro Sekunde:
  Serial.begin(9600);
  
  pinMode(ledPin, OUTPUT); //den ledPin als OUTPUT deklarieren
}


void loop() 
{
  //lies den aktuellen Drucksensor-Werte
  pressureValue = analogRead(pressurePin); 

  Serial.print(" Drucksensor: "); 
  Serial.println(pressureValue);

  if(pressureValue > threshold) //Wenn der Schwellwert überschritten wird
  {
    digitalWrite(ledPin, HIGH);  //schalte die LED ein
    delay(pressureValue);        //pausiere gemäß dem Drucksensor-Werte
    
    Serial.print(" Überlastung!"); 
  }
  else
  {
    digitalWrite(ledPin, LOW);   //schalte die LED aus
    delay(pressureValue);        //pausiere gemäß dem Drucksensor-Werte 
  }
}
 

Schalte den seriellen Monitor ein, indem du in der Arduino IDE in der Menüleiste auf Werkzeuge > Serieller Monitor gehst.

Du solltest nun die folgende Anzeige sehen:

 

Der Sketch im Detail

Der Sketch beginnt mit der Initialisierung von mehreren Variablen:
Der pressurePin ist die Variable für die Pinbelegung des Drucksensors.
Der ledPin ist die Variable für die Pinbelegung der LED.
Der pressureValue ist die Variable zum Speichern der Drucksensor-Werte.
threshold ist der Schwellwert für die Gewichtsüberschreitung.

int pressurePin   = A0;  //Pin-Nummer des Drucksensors
int ledPin        = 13;  //Pin-Nummer der LED
int pressureValue = 0;   //Variable zum Speichern der Drucksensor-Werte
int threshold     = 600; //Schwellwert für Gewichtsüberschreitung
 

Der void setup() ist relativ unspektakulär. Hier initialisieren wir die serielle Kommunikation und stellen den Sensor als INPUT ein.

void setup() 
{
  //Initialisiere die Serielle Kommunikation mit 9600 Bits pro Sekunde:
  Serial.begin(9600);
  
  pinMode(ledPin, OUTPUT); //den ledPin als OUTPUT deklarieren
}
 

In der void loop() Schleife lesen wir den Sensorwert mit analogRead(pressurePin); ein und speichern ihn in der Variable pressureValue. Das Messergebnis wird an den seriellen Monitor gesendet.

void loop() 
{
  //lies den aktuellen Drucksensor-Werte
  pressureValue = analogRead(pressurePin); 

  Serial.print(" Drucksensor: "); 
  Serial.println(pressureValue);
  ...
}
 

Wenn der Schwellwert threshold überschritten wird, geht das Programm in die if-Abfrage. Hier wird zum einen die LED mit digitalWrite(ledPin, HIGH); eingeschaltet und eine Nachricht an den seriellen Monitor gesendet.

if(pressureValue > threshold) //Wenn der Schwellwert überschritten wird
{
  digitalWrite(ledPin, HIGH);  //schalte die LED ein
  delay(pressureValue);        //pausiere gemäß dem Drucksensor-Werte

  Serial.print(" Überlastung!"); 
}
 

Falls die if-Abfrage nicht aufgerufen wurde, wird die LED ausgeschaltet. Dadurch wird sichergestellt, dass die LED nur dann leuchtet, wenn der Schwellwert überschritten wird.

else
{
  digitalWrite(ledPin, LOW);   //schalte die LED aus
  delay(pressureValue);        //pausiere gemäß dem Drucksensor-Werte 
}
 

Falls du die hier beschriebenen Elektronik-Module nicht hast, kannst du sie in meiner Einkaufsliste finden. Warum ich selber hauptsächlich mit Modulen der Marke Keyestudio arbeite, erläutere ich unter diesem Blog-Artikel.

In dieser Übersicht äußere ich Empfehlungen aller Art.

Hier kommst du wieder zur Übersicht aller Module.