Revision [9524c6b]
Letzte Änderung am 2019-11-19 13:47:55 durch Oksana Neopagitova
ADDITIONS
## Arduino-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 Objekt 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.

![image](/uploads/ArduinoBeispielKraftsensorenTisch/ArduinoKraftsensorenTisch1.jpg)

![image](/uploads/ArduinoBeispielKraftsensorenTisch/ArduinoKraftsensorenTisch2.jpg?width=600)

![image](/uploads/ArduinoBeispielKraftsensorenTisch/ArduinoKraftsensorenTisch3.jpg?width=600)

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 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);
}
%%

![image](/uploads/ArduinoBeispielKraftsensorenTisch/ArduinoKraftsensorenTisch4.jpg)
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).


![image](/uploads/ArduinoBeispielKraftsensorenTisch/ArduinoKraftsensorenTisch5.jpg)
Nach dem Drücken des Buttons wird das Eigengewicht des Tischs von den Messwerten abgezogen (das Testobjekt befindet sich noch nicht auf dem Tisch)


![image](/uploads/ArduinoBeispielKraftsensorenTisch/ArduinoKraftsensorenTisch6.jpg)
Das Objekt befindet sich in der Mitte des Tisch (zum Testen wurde eine volle 1,5L Flasche verwendet, also eine Masse von ca 1,5kg)


![image](/uploads/ArduinoBeispielKraftsensorenTisch/ArduinoKraftsensorenTisch7.jpg)
Das Objekt befindet sich über Tischbein 1


**Erweiterung: Bestimmung der Koordinaten des Kraftschwerpunktes**

Bis jetzt wurde die Position des Objekts einfach anhand der 3 Messwerte geschätzt. Man kann aber auch die Koordinaten des Kraftschwerpunktes in einem
2-dimensionalem Koordinatensystem berechnen. Die 3 Messwerte werden durch die Vektoren a, b und c dargestellt, wie man in der Skizze sehen kann.

![image](/uploads/ArduinoBeispielKraftsensorenTisch/ArduinoKraftsensorenTisch8.jpg)

Der Winkel zwischen 2 Vektoren beträgt jeweils 120° (3 * 120° = 360°). Wenn man annimmt, dass die 3 Vektoren alle die Länge bzw. den Betrag 1 haben
(Einheitsvektoren), dann erhält man folgende Vektoren: a = (0 | 1), b = (0,866 | -0,5), c = (-0,866 | -0,5).
Aus diesen 3 Einheitsvektoren kann man dann mithilfe einer Linearkombination einen Vektor bestimmen, der die Position des Kraftschwerpunktes angibt. Wenn man z.B.
von den Kraftsensoren die 3 Messwerte (59|10|12) erhält, dann berechnet man 59*a + 10*b + 12*c und erhält den Vektor (-1,732 | 48).


[<< Zurück zur Übersicht: Eingebettete Systeme](TutoriumEingebetteteSystemeWS1819)
DELETIONS
## Arduino-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 Objekt 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.
![image](/uploads/ArduinoBeispielKraftsensorenTisch/ArduinoKraftsensorenTisch1.jpg)
![image](/uploads/ArduinoBeispielKraftsensorenTisch/ArduinoKraftsensorenTisch2.jpg?width=600)
![image](/uploads/ArduinoBeispielKraftsensorenTisch/ArduinoKraftsensorenTisch3.jpg?width=600)
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 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);
}
%%
![image](/uploads/ArduinoBeispielKraftsensorenTisch/ArduinoKraftsensorenTisch4.jpg)
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).
![image](/uploads/ArduinoBeispielKraftsensorenTisch/ArduinoKraftsensorenTisch5.jpg)
Nach dem Drücken des Buttons wird das Eigengewicht des Tischs von den Messwerten abgezogen (das Testobjekt befindet sich noch nicht auf dem Tisch)
![image](/uploads/ArduinoBeispielKraftsensorenTisch/ArduinoKraftsensorenTisch6.jpg)
Das Objekt befindet sich in der Mitte des Tisch (zum Testen wurde eine volle 1,5L Flasche verwendet, also eine Masse von ca 1,5kg)
![image](/uploads/ArduinoBeispielKraftsensorenTisch/ArduinoKraftsensorenTisch7.jpg)
Das Objekt befindet sich über Tischbein 1
**Erweiterung: Bestimmung der Koordinaten des Kraftschwerpunktes**
Bis jetzt wurde die Position des Objekts einfach anhand der 3 Messwerte geschätzt. Man kann aber auch die Koordinaten des Kraftschwerpunktes in einem
2-dimensionalem Koordinatensystem berechnen. Die 3 Messwerte werden durch die Vektoren a, b und c dargestellt, wie man in der Skizze sehen kann.
![image](/uploads/ArduinoBeispielKraftsensorenTisch/ArduinoKraftsensorenTisch8.jpg)
Der Winkel zwischen 2 Vektoren beträgt jeweils 120° (3 * 120° = 360°). Wenn man annimmt, dass die 3 Vektoren alle die Länge bzw. den Betrag 1 haben
(Einheitsvektoren), dann erhält man folgende Vektoren: a = (0 | 1), b = (0,866 | -0,5), c = (-0,866 | -0,5).
Aus diesen 3 Einheitsvektoren kann man dann mithilfe einer Linearkombination einen Vektor bestimmen, der die Position des Kraftschwerpunktes angibt. Wenn man z.B.
von den Kraftsensoren die 3 Messwerte (59|10|12) erhält, dann berechnet man 59*a + 10*b + 12*c und erhält den Vektor (-1,732 | 48).
[<< Zurück zur Übersicht: Eingebettete Systeme](TutoriumEingebetteteSystemeWS1819)
***
CategoryTutorienFKITWS1819
Revision [9d8d534]
Bearbeitet am 2019-01-22 18:30:36 von FabianEndres
ADDITIONS
von den Kraftsensoren die 3 Messwerte (59|10|12) erhält, dann berechnet man 59*a + 10*b + 12*c und erhält den Vektor (-1,732 | 48).
[<< Zurück zur Übersicht: Eingebettete Systeme](TutoriumEingebetteteSystemeWS1819)
***
CategoryTutorienFKITWS1819
DELETIONS
von den Kraftsensoren die 3 Messwerte (59|10|12) erhält, dann berechnet man 59*a + 10*b + 12*c und erhält den Vektor (-1,732 | 48).
Revision [5306180]
Bearbeitet am 2019-01-17 17:02:32 von ManuelLiebaug
ADDITIONS
## Arduino-Beispielanwendung
DELETIONS
## Mikroprozessor-Beispielanwendung
Revision [3c756f7]
Bearbeitet am 2018-12-13 18:22:47 von ManuelLiebaug
ADDITIONS
sich das Objekt befindet.
werden ständig von den Sensoren abgefragt. Dabei wird das Tischgewicht vom jeweiligen Messwert subtrahiert. Die Messwerte werden dann auf dem seriellen Monitor
ausgegeben.
Das Objekt befindet sich in der Mitte des Tisch (zum Testen wurde eine volle 1,5L Flasche verwendet, also eine Masse von ca 1,5kg)
Das Objekt befindet sich über Tischbein 1
**Erweiterung: Bestimmung der Koordinaten des Kraftschwerpunktes**
Bis jetzt wurde die Position des Objekts einfach anhand der 3 Messwerte geschätzt. Man kann aber auch die Koordinaten des Kraftschwerpunktes in einem
2-dimensionalem Koordinatensystem berechnen. Die 3 Messwerte werden durch die Vektoren a, b und c dargestellt, wie man in der Skizze sehen kann.
![image](/uploads/ArduinoBeispielKraftsensorenTisch/ArduinoKraftsensorenTisch8.jpg)
Der Winkel zwischen 2 Vektoren beträgt jeweils 120° (3 * 120° = 360°). Wenn man annimmt, dass die 3 Vektoren alle die Länge bzw. den Betrag 1 haben
(Einheitsvektoren), dann erhält man folgende Vektoren: a = (0 | 1), b = (0,866 | -0,5), c = (-0,866 | -0,5).
Aus diesen 3 Einheitsvektoren kann man dann mithilfe einer Linearkombination einen Vektor bestimmen, der die Position des Kraftschwerpunktes angibt. Wenn man z.B.
von den Kraftsensoren die 3 Messwerte (59|10|12) erhält, dann berechnet man 59*a + 10*b + 12*c und erhält den Vektor (-1,732 | 48).
DELETIONS
sich das Testobjekt befindet.
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.
Das Testobjekt befindet sich in der Mitte des Tisch (zum Testen wurde eine volle 1,5L Flasche verwendet, also eine Masse von ca 1,5kg)
Das Testobjekt befindet sich über Tischbein 1
Revision [e76b591]
Die älteste bekannte Version dieser Seite wurde von ManuelLiebaug am 2018-11-30 15:58:03 erstellt
ADDITIONS
## 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.
![image](/uploads/ArduinoBeispielKraftsensorenTisch/ArduinoKraftsensorenTisch1.jpg)
![image](/uploads/ArduinoBeispielKraftsensorenTisch/ArduinoKraftsensorenTisch2.jpg?width=600)
![image](/uploads/ArduinoBeispielKraftsensorenTisch/ArduinoKraftsensorenTisch3.jpg?width=600)
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);
}
%%
![image](/uploads/ArduinoBeispielKraftsensorenTisch/ArduinoKraftsensorenTisch4.jpg)
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).
![image](/uploads/ArduinoBeispielKraftsensorenTisch/ArduinoKraftsensorenTisch5.jpg)
Nach dem Drücken des Buttons wird das Eigengewicht des Tischs von den Messwerten abgezogen (das Testobjekt befindet sich noch nicht auf dem Tisch)
![image](/uploads/ArduinoBeispielKraftsensorenTisch/ArduinoKraftsensorenTisch6.jpg)
Das Testobjekt befindet sich in der Mitte des Tisch (zum Testen wurde eine volle 1,5L Flasche verwendet, also eine Masse von ca 1,5kg)
![image](/uploads/ArduinoBeispielKraftsensorenTisch/ArduinoKraftsensorenTisch7.jpg)
Das Testobjekt befindet sich über Tischbein 1