Revision history for ArduinoBeispielKraftsensorenTisch
Additions:
[[TutoriumEingebetteteSystemeWS1819 << Zurück zur Übersicht: Eingebettete Systeme]]
----
CategoryTutorienFKITWS1819
----
CategoryTutorienFKITWS1819
Additions:
{{image url="ArduinoKraftsensorenTisch1.jpg" title="Steckplan"}}
Deletions:
Additions:
=====Arduino-Beispielanwendung=====
Deletions:
Additions:
sich das Objekt befindet.
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
2-dimensionalem Koordinatensystem berechnen. Die 3 Messwerte werden durch die Vektoren a, b und c dargestellt, wie man in der Skizze sehen kann.
{{image url="ArduinoKraftsensorenTisch8.jpg" title="Koordinatensystem"}}
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.
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
2-dimensionalem Koordinatensystem berechnen. Die 3 Messwerte werden durch die Vektoren a, b und c dargestellt, wie man in der Skizze sehen kann.
{{image url="ArduinoKraftsensorenTisch8.jpg" title="Koordinatensystem"}}
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.
Deletions:
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
2-dimensionalem Koordinatensystem berechnen. Die 3 Messwerte werden durch die Vektoren a, b und c dargestellt, wie man in der Skizze sehen kann. 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.
{{files}}
Additions:
werden ständig von den Sensoren abgefragt. Dabei wird das Tischgewicht vom jeweiligen Messwert subtrahiert. Die Messwerte werden dann auf dem seriellen Monitor
ausgegeben.
**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. 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).
{{files}}
ausgegeben.
**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. 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).
{{files}}
Deletions:
auf dem seriellen Monitor ausgegeben.
Additions:
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)
Deletions:
Additions:
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)
Deletions:
Additions:
{{image url="ArduinoKraftsensorenTisch1.jpg" title="Schematische Darstellung des Testaufbaus"}}
{{image url="ArduinoKraftsensorenTisch2.jpg" title="Der Testaufbau" width="600"}}
{{image url="ArduinoKraftsensorenTisch3.jpg" title="Der Testaufbau" width="600"}}
%%
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 url="ArduinoKraftsensorenTisch4.jpg" title="Eigengewicht des Tischs"}}
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 url="ArduinoKraftsensorenTisch5.jpg" title="Nach Drücken des Buttons"}}
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 url="ArduinoKraftsensorenTisch6.jpg" title="Testobjekt befindet sich in der Mitte des Tischs"}}
Das Testobjekt befindet sich in der Mitte des Tisch
{{image url="ArduinoKraftsensorenTisch7.jpg" title="Testobjekt befindet sich über Tischbein 1"}}
Das Testobjekt befindet sich über Tischbein 1
{{image url="ArduinoKraftsensorenTisch2.jpg" title="Der Testaufbau" width="600"}}
{{image url="ArduinoKraftsensorenTisch3.jpg" title="Der Testaufbau" width="600"}}
%%
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 url="ArduinoKraftsensorenTisch4.jpg" title="Eigengewicht des Tischs"}}
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 url="ArduinoKraftsensorenTisch5.jpg" title="Nach Drücken des Buttons"}}
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 url="ArduinoKraftsensorenTisch6.jpg" title="Testobjekt befindet sich in der Mitte des Tischs"}}
Das Testobjekt befindet sich in der Mitte des Tisch
{{image url="ArduinoKraftsensorenTisch7.jpg" title="Testobjekt befindet sich über Tischbein 1"}}
Das Testobjekt befindet sich über Tischbein 1