Sitz is ready

Seit dem letzten Blogeintrag ist nicht nur einige Zeit vergangen, es ist natürlich etwas passiert.

1.) Die Bachelorarbeit konnte bis zum Abgabetermin fertiggestellt werden. YEAHHH!

2.) Der Sitz funktioniert tatsächlich ähnlich wie in Plattform & Co  beschrieben. Die Mensch-Maschine Interaktion wurde basierend auf der Grob-Konzeptidee 2  umgesetzt. Um dem Nutzer bei einer statischen Sitzhaltung über einen Zeitraum bestmöglich zu benachrichtigen, wurde eine weitere Komponente entwickelt, die diesen Part der Interaktion möglich macht.

3.) Die Verstellmöglichkeiten des Sitzes können mittlerweile über Gesten genutzt werden. Das ist ein besonderes spannendes Erlebnis :-)

4.) Der Blog beschreibt leider nur die ersten Schritte der Arbeit. An einem Zeitpunkt musste ich Prioritäten setzen und für mich stand ein funktionierender Prototyp immer im Vordergrund. Natürlich hätte es reichlich interessante Material für weitere Artikel gegeben …

Besten Dank für das Lesen. Ich hoffe, dass es etwas Spass gemacht hat und das Potential im Bereich Physical Computing verdeutlicht!

Sitzunterkonstruktion – build it!

Nachdem ich die Verstellmöglichkeiten des Sitzes analysiert habe, habe ich mir Gedanken zu Sitzunterkonstruktion gemacht.

  • Der Sitz ist in seiner Geometrie eher nach hinten geneigt. Um die vordere Sitzhaltung zu unterstützen muss die Sitzunterkonstruktion den Sitz etwas nach nach vorne neigen.
  • Die Unterkonstrukion muss nicht so hoch, wie ursprünglich gedacht ausgeführt. D.h. die Höhe des Sitzes kann durch Verwendung von Rollen und drei dickerer Kanthölzer erreicht werden.
  • Der Stuhl hat ein hohes Eigengewicht und die Lehne kann stark geneigt werden. Deshalb muss die Unterkonstruktion ein Kippen nach hinten verhindern.
  • Für die Schaltung + Arduino, etc. sollte Platz zum verstauen sein.

Plan, Skizze und so …
habe ich oft keinen :-) . Quatsch, den scanne ich an der nächster Scanstation ein und lasse ihn bald hier erscheinen …

Baumarkt
macht Spass, aber irgendwie frage ich mich hinterher immer ob das O**-Hörnchen goldene Drops zum Frühstück bekommt. Der Rücktransport von 6 Meter zugeschnittenem Kantholz (7,8 x 9,8 cm), Holzplatten, Winkel, Schrauben, etc. war mit dem Fahrrad schon ein kleines Erlebnis …

Build it

Balken für Gestell
Winkel und Co
Gestell mit Rollen

 

Sitz is ready!

Beim Zusägen der zwei Balken, dessen Winkel den Sitz nach vorne neigen, musste ich eine Schreinerei kontaktieren. Der Zuschnitt wäre mit Heimwerkerwerkzeug nicht sauber möglich gewesen, da die Kanthölzer mit 7,8 x 9,8 cm ganz schön mächtig sind. Die hintere Holzplatte lässt sich aufklappen und bietet den nötigen Raum für die Elektronik. Obendrauf steht die Stromversorgung, eine mobiles Batterieladegerät für Autos.

Die Gesamtkomposition wirkt sehr solide und hochwertig. Holz ist schönes Material. Bin sehr zufrieden mit dem Ergebnis!

Detektion End- und Anfangsposition + Wegstrecke Motor

Nach längerer Recherche habe ich herausgefunden, wie die Detektion meines Sitzes ursprünglich wohl funktioniert hat. Als der Sitz im Auto verbaut war, wurde dieser mit einem Steuergerät verbunden. Das Steuergerät konnte über eine Stromstärkemessung detektieren, ob der Sitz seine End- oder Anfangsposition erreicht hat. Das Steuergerät habe ich nicht. Zudem wäre es wohl recht schwierig die Signale, die es liefert vernünftig zu interpretieren. Da bleibt anscheinend nur der do-it-yourself Weg …

Endschalter
Eine gute Möglichkeit schien mir die Verwendung von Endschaltern. Wenn diese an den entsprechenden Positionen angebracht werden, kann End- und Anfangsposition eines Motors zuverlässig detektiert werden. Für jeden Motor brauche ich natürlich 2 von den Teilen.

Wegstrecke
Einiges Kopfzerbrechen hat mir die Detektion der Wegstrecke gemacht. Natürlich habe ich gleich an meinen Fahrradtacho gedacht. Dort flitzt ja ein in der Speiche befestigter Magnet an einem Detektor vorbei und liefert die Umdrehungen des Rades. Mit den Umdrehungen kann die zurückgelegte Distanz, aktuelle Geschwindigkeit, etc. berechnet werden. Elektromotoren besitzen jedoch recht fette Magneten, die möglicherweise solch eine Detektion stören. Deshalb habe ich diese Idee verworfen.

Es hat einige Tage gedauert, bis ich auf die Idee gekommen bin, dass eventuell Gabellichtschranken für die Detektion der Wegstrecke brauchbar wären. Da bin ich mal zu Conrad geflitzt und habe mir eine gekauft um zu experimentieren …

Das Teil (schwarz) wird, wie im Foto oben sichtbar, verdrahtet und kann an den Arduino angeschlossen werden. Man kennt die Teile in größer aus Aufzügen. Befindet sich etwas in der Lichtschranke, schließt z.B. die Tür des Aufzugs nicht.

Mein Ziel ist es jedoch zu detektieren, wie oft der Lichtstrahl einer Lichtschranke unterbrochen wird, um Informationen bezüglich der zurückgelegten Strecke eines Motors zu gewinnen. Deshalb habe ich mir ein kleines Zahnrad (siehe: Bild, rot) gebastelt.  Dieses soll sich sich in der Lichtschranke drehen.

Arduino – how it goes?
Auf dem Arduino muss eine Logik rennen, die einen Wechsel von “Licht da” (logisch: 1), “Licht weg” (logisch: 0) erkennt. Als ich vor einigen Tagen die Beschreibung der vielen Pins meine neuen Arduinos gelesen habe, las ich das dieser Interrupt-Ports besitzt. Nach einiger Recherche bin ich auf die AttachInterrupt Funktion der Arduino-Sprache gestoßen. Sie besitzt mode als Parameter. Besitzt der Parameter mode  bei der Initialisierung den Wert CHANGE, wird wenn der Wert des Pins sich ändert die hinterlegte Interrupt Routine ausgeführt. Das ist genau die Logik, welche ich zur Detektion der Zahnradzähnchen brauche.

Nach einiger Frickelei habe ich den Code für die Detektion programmiert. War garnicht so schwer wie anfangs gedacht. Arduino machts einfach möglich.

Weitere Steps
Um die Endschalter und Gabellichtschranken am Sitz anzubringen ist es von Vorteil den Sitz auf einer Unterkonstruktion zu befestigen.

Software – MotorControlTest – C#

Um die Platine zu testen habe ich ein kleines Progrämmchen in C# für den Computer geschrieben und einen Sketch für den Arduino Microcontroller.

Für die Programmiersprache C# habe ich  mich entschieden, weil bei diesem Projekt (siehe: Titel) die Kinect Kamera eingesetzt werden soll. Microsoft hat offiziell und kostenlos eine gut dokumentiertes SDK veröffentlicht. Das SDK erlaubt es die Daten des Skelettmodells einer Personen ohne vorherige Kalibrierung auszuwerten. Diese Option könnte für meine Zwecke interessant sein.

Was passiert, wenn auf den Button “Links” in der Reihe “M1″ geklickt wird?
1.) Der Computer schickt den Wert: “M1Links” zum Arduino-Mikrocontroller
2.) Arduino empfängt den Wert
3.) Die zwei Ausgänge (Pin1, Pin2) des Arduinos, die über die Platine mit dem Motor verbunden sind initial mit dem Singal LOW beschaltet
3.) Arduino schaltet den Pin1 auf HIGH
4.) Der Motor wir mit Spannung versorgt (+-) und dreht sich links herum

“OFF” -> Motor ausgeschaltet
Pin1: LOW
Pin2: LOW
————–
“Links” -> Motor dreht links
Pin1: HIGH
Pin2: LOW
————–
“Rechts” -> Motor dreht rechts
Pin1: LOW
Pin2: HIGH

Testlauf
Beim Testen musste ich die Motoren in kleinen Schritten bewegen, da diese mechanische Teile (Zahnräder, etc.) antreiben. Die Bewegung dieser Teile ist begrenzt. Der Motor, welcher z.B. für die Neigung der Lehne verwendet wird, läuft heiß oder geht kaputt, wenn er trotz maximaler Neigung der Lehne weiterbetrieben wird.
Hier ist also extreme Vorsicht geboten.

WICHTIG:
Es bedarf einer Detektion, um End- und Anfangszustände zu erfassen!

Große Bastelstunde: Platine & Co

Die Schaltung auf der Platine, soll die vier Motoren des Sitzes ansteuern. Die Motoren des Sitzes bieten folgende Verstellmöglichkeiten:

Sitzpositon (vor, zurück) -> Motor1
Neigung Sitzfläche (vorne) -> Motor2
Neigung der Lehne -> Motor3
Neigung Sitzfläche (hinten)-> Motor4

 

Bauteile
Wer rechnen kann ist klar im Vorteil :-) .
4 (Motoren) x 2 (Richtungen) = 8 (Relais, Widerstände, Transistoren, Dioden)
Die Bauteile sind die, welche in der prototypischen Schaltung verwendet werden sollen.

Der Conradel freut sich natürlich bei Abnahme größerer Mengen an Bauteilen. Vielleicht sollte ich mal nach einem Sponsering für arme Studenten fragen ;)

Bauteile im Überblick:

Bestückung / Layout
Was hier so einfach aussieht hat ganz schön viel Zeit gekostet. Ein Schaltungslayout zu entwickeln, dass es ermöglicht, die Bauteile gut und platzsparend miteinander zu verbinden. Garnicht so easy aber möglich …

Löten, löten,
Echte Handarbeit made in Zuffenhausen. Draht zuschneiden und dann nix wie draufbrutzeln auf die schöne Platine.


Ergebnis

Alles ist gut verdrahtet und funktioniert. Der modulare Aufbau durch die Steckverbindungen ist vorteilhaft. Die Relais haben Kabelschuhe bekommen, so dass sie bei Bedarf von den Motoren getrennt werden können.

Kleine Bastelstunde: Arduino und DC-Elektromotor

Um zu prüfen, ob es möglich ist einen leistungsstarken Elektromotor aus einem elektrisch verstellbaren Autositz mit Arduino anzusteuern, habe ich prototypisch eine kleine Schaltung zusammengebastelt. Wichtig ist dabei, dass die Schaltung mittels des digitalen Ausgangs des Arduinos größere Lasten (im Amperebereich) schalten kann. Also habe ich recherchiert und bin zu Conrad gedüst um Bauteile zu kaufen.  KFZ Relais in Verbindung mit dem NPN-Transistor einer Sperrdiode und zu guter letzt einem Widerstand ergeben folgende kleine Schaltstufe.

Schaltung zur Steuerung eines DC-Elektromotors

Testing
Nach dem die Verbindungen (Spannungsquelle, Schaltung, Arduino, Motor)  hergestellt wurden habe ich ein kleines Testprogramm auf dem Arduino ausgeführt, welches den mit der Schaltung verbundenen digitalen Ausgang mit HIGH beschaltet.

Tatsächlich konnte ich dadurch den Motor der in eine Richtung verfahren, yeahhh!

Elektromotor
Bei DC-Elektromotoren kann durch Tauschen der Pole (+-) die Drehrichtung geändert werden. D.h. pro Motoransteuerung werden zwei der aufgebauten Schaltungen benötigt.

Next-Step
Da mein Sitz natürlich mehr Motoren besitzen wird, werde ich wohl eine Platine Basteln, die es schafft mehrere Motoren in beide Richtungen anzusteuern.

Plattform & Co

Neben allen konzipieren, nachdenken, etc. habe ich mich entschlossen die Plattform des Prototyps an den Start zu bringen. Basis für den Stuhl soll ein Sitz sein, der sich elektronisch verstellen lässt. Nach einiger Recherche habe ich mich für einen elektrisch verstellbaren Sitz (Lehne, Sitzfläche hinten + vorne, Sitzposition) aus einem älteren BMW entschieden. Das Schätzchen konnte ich bei Ebay für einen guten Preis ersteigern.
Über eine elektronische Schaltung, die von Arduino (Microcontroller) gesteuert wird, soll es möglich sein die Motoren des Sitzes zu steuern. Ein Computerprogramm interpretiert die Signale des Kinect-Sensor und bewegt den Sitz.

 

Autositz aus BMW von Ebay

 

Ideen zu Konzept

Aus den Ergebnissen habe ich konzeptionelle Ideen zu der Fragestellung:

Was kann der Sitz tun, um den Benutzer vor einer statischen Sitzhaltung zu bewahren?

 

Wie kann der Sitz den Nutzer bei der richtigen Einstellung des Sitzes (Höhe, etc.)  unterstützen?

 

Blog-Einträge …

Die nachfolgenden Einträge sind weitesgehend schon abgearbeitete Steps. Man solltes ich also nicht wundern, dass jetzt gleich viele neue Posts auf einmal erscheinen ….

Auswertung + Ergebnisse Nutzerbeobachtung

Die Analyse des Videomaterials war spannend. Ich habe die Videoaufnahmen der Probanden mit einem Frame (1 fps) aus dem Recordingprogramm gerendert, um besser Herr über das Bildmaterial zu werden.

* Tracking *

Methodik der Auswertung
Durch festlegen zweier Trackingpunkte (TP1,TP2) an der Lehne des Stuhls, konnte der Winkel der Lehne berechnet werden. Die Trackingpunkte wurden jede Sekunde (pro Frame) angebracht.

Tracking Points

Die Lehne des Schreibtischstuhls war während der Beobachtung nicht aritiert, d.h. durch die Sitzhaltung des Probanden konnte der Winkel der Lehne beeinflusst werden.  Die Ergebnisse der sechs Probanden (3 männlich, 3 weiblich) wurden über den Zeitraum von 57 Minuten betrachtet. Die Werte der Lehne wurden genullt, wenn der Stuhl nicht belegt war (z.B. wenn Proband aufgestanden ist).

Ergebnisse:

Facts:

  • Proband 1 und 2 haben öfters Sitzhaltungen eingenommen, welche den Winkel der Lehne verändern. In Verbindung mit der weiteren Analyse des Videomaterials, kann man vom dynamischen Sitzen sprechen.
  • Proband 3,4,6 sitzen recht statisch (statisches Sitzen) während der Beobachtung. Die Neigung der Lehne ändert sich über den Beobachtungszeitraum recht selten.
  • Proband 5 neigt zum statischen Sitzen. Der Winkel der Lehne ändert sich in größeren Abständen.

Das Sitzverhalten der Probanden unterscheidet sich. Statisches Sitzen (P3,4,6) über einen längeren Zeitraum kann zu einer Mangelversorgung der Bandscheiben und der Muskulatur.

Fragestellung:
Was kann der Sitz tun, um den Benutzer vor einer statischen Sitzhaltung zu bewahren?

 

* Sonstige Beobachtungen *
Die Nutzer sollten am Anfang der Beobachtung den Stuhl und Monitor optimal auf ihre Bedürfnisse einstellen.
Unter Betrachtung der 90° Faustregel bezüglich des Winkels von Oberschenkels zu Unterschenkel fällt auf, dass 5 Probanden die Höhe der Sitzfläche zu hoch eingestellt haben. Ein Proband hat die 90° Faustregel eingehalten.

Fragestellung:
Wie kann der Sitz den Nutzer bei der richtigen Einstellung des Sitzes (Höhe, etc.)  unterstützen?