Version [92477]
Dies ist eine alte Version von ArduinoBeispielKraftsensorenTisch erstellt von ManuelLiebaug am 2018-11-30 15:55:58.
Mikroprozessor-Beispielanwendung
Es soll mithilfe von 3 Kraftsensoren und einem Arduino die Position eines Testobjekts bestimmt werden, welches sich auf einem 3-beinigen Tisch befindet. Die 3
Kraftsensoren werden unter den 3 Beinen des Tischs angebracht. Durch die Verteilung des Gewichts auf die 3 Sensoren kann man darauf schließen, wo auf dem Tisch
sich das Testobjekt befindet.
Die Sensoren haben jeweils 2 Pins, einer wird an 5 Volt angeschlossen und der andere an einen analogen Eingang des Arduino. Der Sensor wirkt dabei wie ein
Widerstand; je nachdem wie stark die Kraft ist, die auf ihn drückt, verändert sich sein Widerstand. Zusätzlich werden noch die analogen Eingänge, an denen die
Sensoren angeschlossen sind, durch jeweils einen 220 Ohm Widerstand mit GND verbunden. Dieser wirkt dadurch als Pull-Down Widerstand
(https://rn-wissen.de/wiki/index.php?title=Pullup_Pulldown_Widerstand), das bedeutet wenn keine Kraft auf die Sensoren drückt, wird am analogen Eingang auch
tatsächlich der Wert 0 gemessen.
Zuerst wird der Tisch ohne Testobjekt auf die 3 Sensoren gestellt um seine Eigenmasse zu bestimmen. Durch das Drücken eines Buttons wird dann eine Funktion
aufgerufen, die die 3 Messwerte der Sensoren in den Variablen tischgewicht_1 bis 3 speichert. Danach wird das Objekt auf den Tisch gelegt und die 3 Messwerte
werden ständig von den Sensoren abgefragt. Dabei wird das Tischgewicht vom jeweiligen Messwert subtrahiert. Die Messwerte werden dann als 3-dimensionaler Vektor
auf dem seriellen Monitor ausgegeben.
int sensor_1; int sensor_2; int sensor_3; int tischgewicht_1 = 0; int tischgewicht_2 = 0; int tischgewicht_3 = 0; int buttonPin = 12; boolean buttonPress; void setup() { pinMode(buttonPin, INPUT_PULLUP); Serial.begin(9600); } void loop() { buttonPress = digitalRead(buttonPin); if(buttonPress == 0) { tischgewicht(); } sensor_1 = analogRead(A0) - tischgewicht_1; sensor_2 = analogRead(A1) - tischgewicht_2; sensor_3 = analogRead(A2) - tischgewicht_3; Serial.print("("); Serial.print(sensor_1); Serial.print("|"); Serial.print(sensor_2); Serial.print("|"); Serial.print(sensor_3); Serial.println(")"); } void tischgewicht () { tischgewicht_1 = analogRead(A0); tischgewicht_2 = analogRead(A1); tischgewicht_3 = analogRead(A2); }
Vor dem Drücken des Buttons wird das Eigengewicht des Tischs ausgegeben (die ungleichmäßige Verteilung, vor allem bei Sensor 1, kann daran liegen dass das
Tischbein nicht perfekt mittig auf dem Sensor steht oder der Sensor weniger gut funktioniert als die anderen beiden).
Nach dem Drücken des Buttons wird das Eigengewicht des Tischs von den Messwerten abgezogen (das Testobjekt befindet sich noch nicht auf dem Tisch)
Das Testobjekt befindet sich in der Mitte des Tisch (als Testobjekt wurde eine volle 1,5L Flasche verwendet, also eine Masse von ca 1,5kg)
Das Testobjekt befindet sich über Tischbein 1
Diese Seite wurde noch nicht kommentiert.