Difference between revisions of "Team Champs"

From Hackteria Wiki
Jump to: navigation, search
(Ultraschallsensor)
m (Protected "Team Champs" ([Edit=Allow only administrators] (expires 09:18, 11 April 2019 (UTC)) [Move=Allow only administrators] (expires 09:18, 11 April 2019 (UTC))))
 
(87 intermediate revisions by 3 users not shown)
Line 1: Line 1:
Das Team Champs besteht aus zwei Maschinentechnik-Studenten, Thomas Kilchmann und Basil Bachmann, und einem Medizintechnik-Studenten, Matthias Koch. Alle Teammitglieder nehmen mit grosser Motivation an der Medizintechnik-DIY Blockwoche Teil. Die Möglichkeit, selber zu tüfteln und etwas auszuprobieren ist an der Hochschule Luzern einzigartig und sehr interessant.
+
Das Team Champs besteht aus zwei Maschinentechnik-Studenten, Thomas Kilchmann und Basil Bachmann und einem Medizintechnik-Studenten, Matthias Koch. Alle Teammitglieder nahmen mit grosser Motivation an der Medizintechnik-DIY Blockwoche Teil. Die Möglichkeit selber zu tüfteln und etwas auszuprobieren ist an der Hochschule Luzern einzigartig und sehr interessant.
  
 
==Einleitung==
 
==Einleitung==
Line 5: Line 5:
 
===Modul Medizintechnik-DIY===
 
===Modul Medizintechnik-DIY===
  
Dieses Modul verbindet die Studiengänge Maschinen-, Elektro-, und Medizintechnik interdisziplinär mit der Idee des do-it-yourself. Ausgestattet mit Arduinos, Hautelektroden und diversen anderen Hilfsmitteln wie Motoren und Sensoren soll ein kleines, möglichst innovatives Projekt entstehen. Das Modul wird als Blockwoche durchgeführt von Montag bis und mit Samstag.
+
Dieses Modul verbindet die Studiengänge Maschinen-, Elektro-, und Medizintechnik interdisziplinär mit der Idee des do-it-yourself. Ausgestattet mit Arduinos, Hautelektroden und diversen anderen Hilfsmitteln wie Motoren und Sensoren soll ein kleines, möglichst innovatives Projekt entstehen. Das Modul wird als Blockwoche durchgeführt und dauert von Montag bis und mit Samstag. Jegliche Informationen, welche für die Projekte vonnöten waren, sollten eigenständig über das Internet recherchiert werden. Bei weiteren Fragen konnten auch die Kursleiter Urs Gaudenz, Effi Tanner und Dr. Marc R. Dusseiller sowie Fabmanager Chris Obrist zu Rate gezogen werden..
  
 
===FabLab===
 
===FabLab===
Line 11: Line 11:
  
 
Jede Gruppe konnte sich ihren eigenen Arbeitsplatz im FabLab einrichten. Dies ist sehr praktisch, da alle benötigten Bauteile und Maschinen sehr nahe waren.
 
Jede Gruppe konnte sich ihren eigenen Arbeitsplatz im FabLab einrichten. Dies ist sehr praktisch, da alle benötigten Bauteile und Maschinen sehr nahe waren.
 +
==Probleme und deren Lösung==
 +
 +
In diesem Abschnitt werden kurz alle Probleme und deren Lösungen aufgelistet.
 +
 +
<big>'''Problem'''</big>
 +
 +
Das Muscle Spiker Shield gibt manchmal sehr unregelmässige Werte zurück.
 +
 +
<big>'''Lösung'''</big>
 +
 +
Dies könnte ein EMV-Problem sein. Das Shield sollte nicht in der nähe eines Ladegerätes sein. Ebenfalls sollte es wenn möglich mit einer Powerbank gespiesen werden.
 +
 +
<big>'''Problem'''</big>
 +
 +
Der Servo lässt sich nicht gut über Muskelkontraktion steuern. Er oszilliert stark.
 +
 +
<big>'''Lösung'''</big>
 +
 +
Durchschnitt der eingehenden Werte über 20ms verwenden. Nach einem Befehl an den Servo einen delay einfügen (Wichtig!!).
 +
 +
<big>'''Problem'''</big>
 +
 +
Der Motor lässt sich nicht ansteuern.
 +
 +
<big>'''Lösung'''</big>
 +
 +
Motoren brauchen schon ab einer kleinen Grösse einen zu grossen Strom für das Arduino. Daher sollte ein Relais mit einer externen Spannungsquelle verwendet werden.
 +
 +
<big>'''Problem'''</big>
 +
 +
Einige LED's auf dem Shield funktionieren nicht.
 +
 +
<big>'''Lösung'''</big>
 +
 +
Möglicherweise beim Löten die Polung der LED's nicht beachtet.
  
 
==Tag 1: Einführung &  Muscle Spiker Shield==
 
==Tag 1: Einführung &  Muscle Spiker Shield==
Line 16: Line 51:
 
===Einführung Blockwoche===
 
===Einführung Blockwoche===
  
Die Blockwoche startete mit einer Präsentation von Urs über Medizintechnik DIY. Dort erläuterte er seinen Werdegang und wie es dazu kam, dass er ins Gebiet des DIY kam. Zudem wurden die wichtigsten Informationen bezüglich dem Ablauf der Blockwoche erklärt. Vor der Mittagspause wurden zudem die Gruppen eingeteilt und jede Gruppe konnte ihren Arbeitslatz einrichten.
+
Die Blockwoche startete mit einer Präsentation von Urs über Medizintechnik DIY. Dort erläuterte er seinen Werdegang und wie er in das Gebiet des DIY kam. Zudem wurden die wichtigsten Informationen bezüglich dem Ablauf der Blockwoche erklärt. Vor der Mittagspause wurden zudem die Gruppen eingeteilt und jede Gruppe konnte ihren Arbeitslatz einrichten.
  
Der Nachmittag begann mit einem Einblick in die DIY-Kultur, präsentiert von Marc mit vielen Einblicken in seine eigenen Projekte. Nach dieser interessanten Präsentation konnte nun erstmals  
+
Der Nachmittag begann mit einem Einblick in die DIY-Kultur, präsentiert von Marc mit vielen Einblicken in seine eigenen Projekte. Nach dieser interessanten Präsentation konnte nun erstmals in der Gruppe zusammen getüftelt und ausprobiert werden.
  
 
===Lötlen - Muscle Spiker Shield===
 
===Lötlen - Muscle Spiker Shield===
  
Das erste, was jede Gruppe machen musste war das zusammenlöten aller Bauteile mit der Platine. Dies verlief recht gut und das Shield konnte bereits nach zwei Stunden in Betrieb genommen werden. Erste Versuche damit verliefen ebenfalls positiv.
+
Das erste, was jede Gruppe machen musste war das zusammenlöten aller Bauteile mit der Platine. Dies verlief recht gut und das Shield konnte bereits nach zwei Stunden in Betrieb genommen werden. Erste Versuche damit verliefen ebenfalls positiv. Es wurde jedoch bemerkt, dass das Shield sehr anfällig ist auf Störungen. Es ist ratsam die Arduinos über eine Powerbank zu speisen und nicht in der nähe grosser Spannungsquellen zu verweilen. Wichtig zu beachten beim Löten ist ausserdem, dass LED's und Dioden nur in eine Richtung Strom leiten. Daher ist immer zu beachten wo man die Anode und die Kathode anlötet.
  
 
==Tag 2: Experimentieren==
 
==Tag 2: Experimentieren==
 +
 +
===Skill Share===
 +
 +
Heute Morgen wurden wir in die Idee hinter sogenannten Skill Share Lessons eingeführt. Das Ziel ist, dass ein Student sein Wissen anderen Studenten weitergibt. In einem ersten Schritt wurden dazu kleine Zettel verteilt auf welche man seine Skills schreiben konnte und solche Skills, die man gerne lernen möchte. Danach wurde jedem Team ein Thema zugewiesen.
  
 
===Projektidee===
 
===Projektidee===
Line 36: Line 75:
 
====Versuch 1: Ein-, Ausschalten====
 
====Versuch 1: Ein-, Ausschalten====
  
Beim ersten Versuch wurde der Motor nur über das Arduino angesteuert. Aufgrund des vergleichsweise hohen Stromes von 0.1A wurde der Gleichstrommotor nicht direkt über das Arduino gespiesen. Die Speisung des Motors wurde ein Relais verwendet, welches dem Motor über eine 9V Blockbatterie mit Spannung versorgt. Die Ansteuerung verlief problemlos. Es wurde auch ein Transistor anstelle des Relais getestet, jedoch hat sich herausgestellt, das das Relais zuverlässiger funktionierte. Im nächsten Schritt wird versucht, den Motor über eine Bewegung der Hand anzusteuern.
+
Beim ersten Versuch wurde der Motor nur über das Arduino angesteuert. Aufgrund des vergleichsweise hohen Stromes von 0.1A wurde der Gleichstrommotor nicht direkt über das Arduino gespiesen. Für die Speisung des Motors wurde ein Relais verwendet, welches dem Motor über eine 9V Blockbatterie mit Spannung versorgt. Die Ansteuerung verlief problemlos. Um ein Relais anzusteuern braucht dies permanent 5V und einen digitalen Output (bei uns PIN 4). Es wurde auch ein Transistor anstelle des Relais getestet, jedoch hat sich herausgestellt, das das Relais zuverlässiger funktionierte. Im nächsten Schritt wird versucht, den Motor über eine Bewegung der Hand anzusteuern.
  
 
{{#widget:Iframe|url=https://www.youtube.com/embed/4SwpcIRn4bA|width=560|height=315|border=0}}
 
{{#widget:Iframe|url=https://www.youtube.com/embed/4SwpcIRn4bA|width=560|height=315|border=0}}
Line 46: Line 85:
 
{{#widget:Iframe|url=https://www.youtube.com/embed/r_Doj-rJ3I4|width=560|height=315|border=0}}
 
{{#widget:Iframe|url=https://www.youtube.com/embed/r_Doj-rJ3I4|width=560|height=315|border=0}}
  
 +
Code:
 +
 +
<pre>
 +
#define NUM_LED 6  //sets the maximum numbers of LEDs
 +
#define MAX 150    //maximum posible reading. TWEAK THIS VALUE!!
 +
#define treshold 25 //Für Ansteuerung Motor
 +
 +
int trigger = 8;
 +
int echo = 7;
 +
long dauer = 0;
 +
long entfernung = 0;
 +
int reading[10];
 +
int finalReading;
 +
byte litLeds = 0;
 +
byte multiplier = 1;
 +
byte leds[] = {8, 9, 10, 11, 12, 13};
 +
 +
void setup(){
 +
  Serial.begin(9600); //begin serial communications
 +
  for(int i = 0; i < NUM_LED; i++){ //initialize LEDs as outputs
 +
    pinMode(leds[i], OUTPUT);
 +
  }
 +
  pinMode(6, OUTPUT);
 +
 +
  pinMode(4, OUTPUT);
 +
 +
  pinMode(trigger, OUTPUT);
 +
 +
  pinMode(echo, INPUT);
 +
 +
}
 +
 +
void loop(){
 +
  for(int i = 0; i < 10; i++){    //take ten readings in ~0.02 seconds
 +
    reading[i] = analogRead(A0) * multiplier;
 +
    delay(20);
 +
  }
 +
  for(int i = 0; i < 10; i++){  //average the ten readings
 +
    finalReading += reading[i];
 +
  }
 +
  finalReading /= 10;
 +
  for(int j = 0; j < NUM_LED; j++){  //write all LEDs low
 +
    digitalWrite(leds[j], LOW);
 +
  }
 +
  Serial.print(finalReading);
 +
  Serial.print("\t");
 +
  finalReading = constrain(finalReading, 0, MAX);
 +
  litLeds = map(finalReading, 0, MAX, 0, NUM_LED);
 +
  Serial.println(litLeds);
 +
  for(int k = 0; k < litLeds; k++){
 +
    digitalWrite(leds[k], HIGH);
 +
  }
 +
//finalReading = 50;
 +
// Motor Ansteuerung
 +
 
 +
  if ((finalReading > treshold)) {
 +
    digitalWrite(6, HIGH);
 +
    } else {
 +
      digitalWrite(6, LOW);
 +
      }
 +
}
 +
</pre>
  
 
===Kulturbeitrag===
 
===Kulturbeitrag===
  
Heute kamen die beiden Künstler Daniel Maszkowicz und Emma Souharce zu Besuch. Sie zeigten uns ihre Art und Weise Musik zu machen. Es klang auf eine Art sehr schräg aber es war trotzdem interessant.
+
Heute kamen die beiden Künstler Daniel Maszkowicz und Emma Souharce zu Besuch. Sie zeigten uns ihre Art und Weise Musik zu machen. Es klang auf eine Art sehr schräg aber es war trotzdem interessant. Ihr Ansatz, dass man mit Pflanzen Musik machen kann war uns bisher nicht bekannt.
  
 
==Tag 3: Ansteuerung des Servos und bauen des Grundgerüstes==
 
==Tag 3: Ansteuerung des Servos und bauen des Grundgerüstes==
 +
===Ansteuerung des Servos===
 +
 +
Die Ansteuerung des Servos erfolgte ebenfalls über die Bewegung der Hand, ähnlich wie beim Motor. Da ein Servo aber nur von 0 - 180° drehen kann, haben wir den Servo als Nullpunkt auf 90° angesteuert. Durch leichtes zusammendrücken der Hand steuert er nach links und durch festes zusammendrücken nach rechts. Dies funktioniert so, wenn der Wert, welches das Muscle Spiker Shield ausliest, über einem Mindestwert und unter einem Höchstwert liegt, Steuert es den Servo an auf 70° (steuern links). Liegt der Wert über dem Höchstwert steuert es den Servo auf 110° an (steuern rechts). Ein Servo benötigt permanent 5V und ein PWM- Anschluss zum steuern (bei uns PIN 8.
 +
{{#widget:Iframe|url=https://www.youtube.com/embed/GDZhjD7sg3Y|width=560|height=315|border=0}}
 +
 +
Code:
 +
 +
<pre>
 +
#include <Servo.h>
 +
#define NUM_LED 6  //sets the maximum numbers of LEDs
 +
#define MAX 150    //maximum posible reading. TWEAK THIS VALUE!!
 +
 +
Servo servoSteuerung;
 +
 +
int reading[10];
 +
int finalReading;
 +
byte litLeds = 0;
 +
byte multiplier = 1;
 +
byte leds[] = {8, 9, 10, 11, 12, 13};
 +
 +
void setup(){
 +
  Serial.begin(9600); //begin serial communications
 +
  for(int i = 0; i < NUM_LED; i++){ //initialize LEDs as outputs
 +
    pinMode(leds[i], OUTPUT);
 +
  }
 +
  servoSteuerung.attach(8);
 +
}
 +
 +
void loop(){
 +
  for(int i = 0; i < 10; i++){    //take ten readings in ~0.02 seconds
 +
    reading[i] = analogRead(A0) * multiplier;
 +
    delay(50);
 +
  }
 +
  for(int i = 0; i < 10; i++){  //average the ten readings
 +
    finalReading += reading[i];
 +
  }
 +
  finalReading /= 10;
 +
  for(int j = 0; j < NUM_LED; j++){  //write all LEDs low
 +
    digitalWrite(leds[j], LOW);
 +
  }
 +
  Serial.print(finalReading);
 +
  Serial.print("\t");
 +
  finalReading = constrain(finalReading, 0, MAX);
 +
  litLeds = map(finalReading, 0, MAX, 0, NUM_LED);
 +
  Serial.println(litLeds);
 +
  for(int k = 0; k < litLeds; k++){
 +
    digitalWrite(leds[k], HIGH);
 +
  }
 +
 
 +
// Servo Ansteuerung
 +
  if (finalReading < 10) {
 +
    servoSteuerung.write(90);
 +
    delay(500);
 +
    } else if (finalReading > 10 && finalReading < 40) {
 +
      servoSteuerung.write(70);
 +
      delay(500);
 +
    } else if (finalReading > 40){
 +
      servoSteuerung.write(110);
 +
      delay(500);   
 +
    }
 +
     
 +
}
 +
   
 +
</pre>
 +
 
===Bauen des Fahrgestells===
 
===Bauen des Fahrgestells===
  
Line 63: Line 229:
 
Um das Fahrzeug lenken zu können, ist das Vorderrad mit einem Servomotor gesteuert. Die Konstruktion ist einfach gehalten, aber trotzdem sehr zuverlässig. An der Achse des Servomotors wurde direkt die Radgabel befestigt. Die Achse mit dem Rad wurde dann drehbar in den zwei Ausschnitten der Gabel gelagert. Der Drehwiderstand ist relativ gross, da beide Bauteile 3D gedruckt worden sind, aber für die gedachte Anwendung reicht dies aus. Der Servomotor mit der Vorderradkonstruktion konnte schlussendlich in einem Ausschnitt in der Grundplatte befestig werden.
 
Um das Fahrzeug lenken zu können, ist das Vorderrad mit einem Servomotor gesteuert. Die Konstruktion ist einfach gehalten, aber trotzdem sehr zuverlässig. An der Achse des Servomotors wurde direkt die Radgabel befestigt. Die Achse mit dem Rad wurde dann drehbar in den zwei Ausschnitten der Gabel gelagert. Der Drehwiderstand ist relativ gross, da beide Bauteile 3D gedruckt worden sind, aber für die gedachte Anwendung reicht dies aus. Der Servomotor mit der Vorderradkonstruktion konnte schlussendlich in einem Ausschnitt in der Grundplatte befestig werden.
  
 +
===Vortrag von Effi Tanner===
 +
 +
Heute Nachmittag hat uns Effi Tanner einen kurzen Einblick in ihre Laufbahn und Ihre verschiedenen Projekte gegeben. Es war interessant zu hören, wie sie durch Alltagsprobleme auf die abstrusesten Ideen kommt und diese danach in einem kleinen DIY-Projekt realisiert. Ebenfalls führt Sie regelmässig interessante Workshops durch.
  
 
[[File:zahnraeder.jpg|thumb|200px|right|Zahnräder zur Kraftübertragung]]
 
[[File:zahnraeder.jpg|thumb|200px|right|Zahnräder zur Kraftübertragung]]
  
 
==Tag 4: Zusammenführen der Teilkomponenten==
 
==Tag 4: Zusammenführen der Teilkomponenten==
 +
 +
===Skype-Session mit Greg Gage===
 +
Heute haben wir per Skype mit Greg Gage telefoniert. Er ist der Gründer von Backyard Brains. Er hat uns einiges über seine Produkte erzählt, wie sie hergestellt werden und auch für was sie hauptsächlich verwendet werden.
 +
Lustig zu erwähnen ist, dass sein Unternehmen eigentlich aus der Idee entstand, dass bei einer Zombie-Apokalypse sich die Leute selbst versorgen müssen und somit mit seinen Kits medizinische Geräte selber bauen können.
 +
 
===Verbinden aller mechanischen Komponenten und Steuerung des Motors mit Dauerstromversorgung===
 
===Verbinden aller mechanischen Komponenten und Steuerung des Motors mit Dauerstromversorgung===
Die einzelnen Komponenten konnten nun am Donnerstag das erste Mal alle zusammengebaut werden. Die Antriebseinheit mit der Hinterachse konnte auf die Grundplatte gesteckt werden und noch zusätzlich mit Heissleim befestigt werden. Einzig der Gleichstrommotor musste mit zwei Schrauben an der Halterung befestigt werden. Um zu verhindern, dass sich die Achse axial in den Lagern verschieben kann, wurden zwei Gummibänder verwendet. Dieser wurde zu Beginn mit einer Batterie dauerhaft mit Spannung versorgt.
+
Die einzelnen Komponenten konnten nun am Donnerstag das erste Mal alle zusammengebaut werden. Die Antriebseinheit mit der Hinterachse konnte auf die Grundplatte gesteckt werden und noch zusätzlich mit Heissleim befestigt werden. Einzig der Gleichstrommotor musste mit zwei Schrauben an der Halterung befestigt werden. Um zu verhindern, dass sich die Achse axial in den Lagern verschieben kann, wurden zwei Gummibänder verwendet.
  
  
Line 74: Line 248:
 
Eine erste Probefahrt wurde ohne Lenkung und mit dauerhafter Spannungsversorgung des Motors durchgeführt, um die Fahrtauglichkeit und die Funktion der mechanischen Komponenten zu testen.
 
Eine erste Probefahrt wurde ohne Lenkung und mit dauerhafter Spannungsversorgung des Motors durchgeführt, um die Fahrtauglichkeit und die Funktion der mechanischen Komponenten zu testen.
 
{{#widget:Iframe|url=https://www.youtube.com/embed/t4cqZlc-8t0|width=560|height=315|border=0}}
 
{{#widget:Iframe|url=https://www.youtube.com/embed/t4cqZlc-8t0|width=560|height=315|border=0}}
 +
[[File:IMG-2657.JPG|400px|thumb|Prototyp mit allen Komponenten]]
  
 
Die elektronischen Komponenten konnten nun auf der Grundplatte platziert werden. Da der Servo und der Gleichstrommotor unabhängig voneinander angesteuert werden müssen, wurden zwei einzelne Boards verwendet. Dazu kommt eine Powerbank für die Speisung der Boards und eine separate 9V Batterie und ein Relais für die Speisung des Gleichstrommotors.
 
Die elektronischen Komponenten konnten nun auf der Grundplatte platziert werden. Da der Servo und der Gleichstrommotor unabhängig voneinander angesteuert werden müssen, wurden zwei einzelne Boards verwendet. Dazu kommt eine Powerbank für die Speisung der Boards und eine separate 9V Batterie und ein Relais für die Speisung des Gleichstrommotors.
Line 85: Line 260:
 
===Ultraschallsensor===
 
===Ultraschallsensor===
  
Bei den Sensoren haben wir einen Ultraschallsensor gefunden. Dies brachte uns sofort auf die Idee, den Ultraschallsensor als Kollisionsvermeidung für unser Gefährt zu verwenden. Zuerst erprobten wir die Ansteuerung. Diese verlief ohne weitere Probleme. Zu beachten ist, dass er bis maximal fünf Meter messen kann.
+
Bei den Sensoren haben wir einen Ultraschallsensor gefunden. Dies brachte uns sofort auf die Idee, den Ultraschallsensor als Kollisionsvermeidung für unser Gefährt zu verwenden. Zuerst erprobten wir die Ansteuerung. Diese verlief ohne weitere Probleme. Zu beachten ist, dass er bis maximal fünf Meter messen kann. Detektiert der Sensor einen Abstand von unter 20cm heisst dies, dass ein Hindernis im Weg ist. Dies steuert danach ein Relais an, welches die Stromzufuhr für den Antriebsmotor unterbricht. Der Ultraschallsensor braucht permanent 5V und zwei Signal-Anschlüsse (bei uns PIN 7 und 8).
 +
[[File:ultraschall.png|400px|thumb|Erweiterung mit Ultraschallsensor]]
 +
 
 +
Code:
 +
<pre>
 +
#define NUM_LED 6  //sets the maximum numbers of LEDs
 +
#define MAX 150    //maximum posible reading. TWEAK THIS VALUE!!
 +
#define treshold 25 //Für Ansteuerung Motor
 +
 
 +
int trigger = 8;
 +
int echo = 7;
 +
long dauer = 0;
 +
long entfernung = 0;
 +
int reading[10];
 +
int finalReading;
 +
byte litLeds = 0;
 +
byte multiplier = 1;
 +
byte leds[] = {8, 9, 10, 11, 12, 13};
 +
 
 +
void setup(){
 +
  Serial.begin(9600); //begin serial communications
 +
  for(int i = 0; i < NUM_LED; i++){ //initialize LEDs as outputs
 +
    pinMode(leds[i], OUTPUT);
 +
  }
 +
  pinMode(6, OUTPUT);
 +
 
 +
  pinMode(4, OUTPUT);
 +
 
 +
  pinMode(trigger, OUTPUT);
 +
 
 +
  pinMode(echo, INPUT);
 +
 
 +
}
 +
 
 +
void loop(){
 +
  for(int i = 0; i < 10; i++){    //take ten readings in ~0.02 seconds
 +
    reading[i] = analogRead(A0) * multiplier;
 +
    delay(20);
 +
  }
 +
  for(int i = 0; i < 10; i++){  //average the ten readings
 +
    finalReading += reading[i];
 +
  }
 +
  finalReading /= 10;
 +
  for(int j = 0; j < NUM_LED; j++){  //write all LEDs low
 +
    digitalWrite(leds[j], LOW);
 +
  }
 +
  Serial.print(finalReading);
 +
  Serial.print("\t");
 +
  finalReading = constrain(finalReading, 0, MAX);
 +
  litLeds = map(finalReading, 0, MAX, 0, NUM_LED);
 +
  Serial.println(litLeds);
 +
  for(int k = 0; k < litLeds; k++){
 +
    digitalWrite(leds[k], HIGH);
 +
  }
 +
//finalReading = 50;
 +
// Motor Ansteuerung
 +
 
 +
  if ((finalReading > treshold)) {
 +
    digitalWrite(6, HIGH);
 +
    } else {
 +
      digitalWrite(6, LOW);
 +
      }
 +
 
 +
// Ultraschall Sensor
 +
 
 +
digitalWrite(trigger, LOW);
 +
 
 +
delay(5);
 +
 
 +
digitalWrite(trigger, HIGH);
 +
 
 +
delay(10);
 +
 
 +
digitalWrite(trigger, LOW);
 +
 
 +
dauer = pulseIn(echo, HIGH);
 +
 
 +
entfernung = (dauer/2) * 0.03432;
 +
 
 +
if (entfernung >= 500 || entfernung <= 0)
 +
 
 +
{
 +
 
 +
Serial.println("Kein Messwert");
 +
 
 +
}
 +
 
 +
else
 +
 
 +
{
 +
 
 +
Serial.print(entfernung);
 +
 
 +
Serial.println(" cm            ");
 +
 
 +
}
 +
// Es wird eine weitere IF-Bedingung erstellt:
 +
 +
if (entfernung > 1 && entfernung <= 20) //Wenn der Wert für die Entfernung unter oder gleich 20 ist, dann...
 +
{
 +
 
 +
digitalWrite(4, LOW);
 +
 
 +
}else {
 +
  digitalWrite(4, HIGH);
 +
  }
 +
 
 +
}
 +
   
 +
</pre>
  
 
===Gehäuse===
 
===Gehäuse===
 +
Das Fahrzeug ist damit voll funktionsfähig. Da aber die ganze Elektronik auf der Grundplatte liegt, ist das Fahrzeug nicht schön anzusehen. Deshalb war das nächste Projekt, mit den verschiedenen Verfügbaren Materialien eine Abdeckung zu bauen, welche dem Fahrzeug ein dezenteres Aussehen verleihen sollte.
 +
 +
Der Grösste Teil der Abdeckung besteht aus dem Holz-Leim-Gemisch der Firma Woodcast. Dieses Material kann erwärmt werden um es danach, in der gewünschten Form gehalten, abkühlen zu lassen. Das Material wird danach hart und bleibt in dieser Form. Auf der Vorderseite des Fahrzeugs wurde ein Fenster aus Acrylglas eingesetzt. Dies mit dem Namen des Fahrzeuges, Therapymaster 7000, eingraviert. Auf der Rückseite wurde ebenfalls eine mit dem Teamnamen eingravierte Platte eingesetzt, jedoch eine aus MDF.
 +
 +
Unter der Abdeckung war bisher das Zahnradgetriebe nicht geschützt. Aus diesem Grund musste eine Abdeckung gemacht werden. Diese wurde aus Polymorph geformt. Das ist ein Kunststoff, welcher in heisses Wasser gelegt werden kann und danach sehr einfach und frei formbar wird. Es ist eine sehr einfache und effiziente Variante.
 +
 +
===Finales Produkt===
 +
 +
Das fertige Produkt erfüllt all unsere Erwartungen und funktioniert relativ zuverlässig. Auch optisch konnten wir es noch ein wenig verbessern.
 +
 +
[[File:IMG-2661.JPG|400px|thumb|left|Finaler Prototyp]]
 +
[[File:IMG-2663.JPG|400px|thumb|Heck mit Teamname und Durchführungszeit]]
 +
 +
{{#widget:Iframe|url=https://www.youtube.com/embed/ci0djVBdRPw|width=560|height=315|border=0}}
  
==Skill Share: Bildgebende Verfahren==
+
 
 +
==Tag 6: Präsentation und Reflexion==
 +
 
 +
Die Blockwoche endete mit einer Präsentation von jeder Gruppe über Ihre Erfahrungen und Projekte. Die verschiedenen Projekte konnten unterschiedlicher nicht sein. Vom angetriebenen Windrad bis zu einer Nachahmung einer Iris gab es alles. Abschliessend fand noch eine Reflexion der ganzen Woche statt. Vielen Dank an alle Dozenten für diese lehrreiche und interessante Woche!
 +
 
 +
==Skill Share: Bildgebende Verfahren==  
 
Bildgebende Verfahren ist ein Überbegriff in der medizinischen Diagnostik. Genauer versteht man darunter medizintechnische Gerätschaften und Apparaturen, welche in der Lage sind, Bilder des Körperinneren zu generieren, ohne den Körper «öffnen» zu müssen.
 
Bildgebende Verfahren ist ein Überbegriff in der medizinischen Diagnostik. Genauer versteht man darunter medizintechnische Gerätschaften und Apparaturen, welche in der Lage sind, Bilder des Körperinneren zu generieren, ohne den Körper «öffnen» zu müssen.
 
Grundsätzlich gibt es drei verschiedene Hauptkategorien von bildgebenden Verfahren:
 
Grundsätzlich gibt es drei verschiedene Hauptkategorien von bildgebenden Verfahren:
Line 146: Line 449:
  
 
====Weitere Anwendungsmöglichkeiten====
 
====Weitere Anwendungsmöglichkeiten====
 +
[[File:fmri.PNG|400px|thumb|right|Darstellung aktiver Hirnregionen durch fMRI. (Quelle: blogs.plos.org)]]
 
fMRI (funcional MRI):
 
fMRI (funcional MRI):
 
* Zur Bestimmung von aktiven Hirnregionen während Rechnungen, Rätsel oder auch Gefühlen
 
* Zur Bestimmung von aktiven Hirnregionen während Rechnungen, Rätsel oder auch Gefühlen
Line 151: Line 455:
 
* Durch Rekonstruktionsverfahren lassen sich diese  Hirnregionen grafisch darstellen
 
* Durch Rekonstruktionsverfahren lassen sich diese  Hirnregionen grafisch darstellen
  
[[File:fmri.PNG|400px|thumb|Darstellung aktiver Hirnregionen durch fMRI. (Quelle: blogs.plos.org)]]
+
[[File:drmri.PNG|400px|thumb|right|Darstellung der Nervenbahnen durch dtMRI. (Quelle: people.csail.mit.edu)]]
 
 
 
 
 
dtMRI (diffusion tensor MRI):
 
dtMRI (diffusion tensor MRI):
 
* Zur Bestimmung von Nervenpfaden, resp. Verfolgen von Nervenbahnen
 
* Zur Bestimmung von Nervenpfaden, resp. Verfolgen von Nervenbahnen
Line 159: Line 461:
 
* Durch Rekonstruktionsverfahren lassen sich diese  Nerven grafisch und farblich darstellen
 
* Durch Rekonstruktionsverfahren lassen sich diese  Nerven grafisch und farblich darstellen
  
[[File:drmri.PNG|400px|thumb|left|Darstellung der Nervenbahnen durch dtMRI. (Quelle: people.csail.mit.edu)]]
+
==Reflexion==
 +
 
 +
An unserer Schule herrscht seit Anfang Studium schon immer ein striktes Gebot, dass man von den Dozenten Aufgaben erhält und diese danach lösen muss. Dementsprechend überrascht und hilfslos waren wir Anfangs Woche, als uns gesagt wurde, dass wir die ganze Zeit für uns arbeiten können und nicht wirklich eine Aufgabenstellung zu bewältigen haben. Nach einiger Zeit gefiel uns dieses Prinzip immer mehr und wir konnten unserer Fantasie freien Lauf lassen. Dies wurde von der ganzen Gruppe gutgeheissen.
 +
 
 +
Auch die Arbeitsatmosphäre im Fablab ist einzigartig. Jede Idee kann sofort vor Ort in die Realität umgesetzt werden, da es eine Vielzahl an Materialien und Maschinen hat. Auch das Arbeiten mit bisher umgewohnten Maschinen wie 3D-Druckern oder Lasercuttern war ein eindrückliches Erlebnis. Zum Teil konnten die Geräusche der Maschinen oder die Tests anderer Studenten an Lautsprechern jedoch die Geduld auf eine harte Probe stellen.
 +
 
 +
Die unter der Woche verteilten  Skill-Share Lessons waren sehr abwechslungsreich und interessant. Von Snowboard wachsen bis Schnaps destillieren gab es alles. Es war für jedermann etwas dabei und die Lessons wurden vom Team Champs mit viel Freude und Elan besucht.
 +
 
 +
Alles in allem lässt sich sagen, dass es eine gelungene Blockwoche war und jeder einzelne von uns seine Lehren daraus gezogen hat.
  
 
==Zurück zum Modul-Inhalt==
 
==Zurück zum Modul-Inhalt==

Latest revision as of 11:18, 11 March 2019

Das Team Champs besteht aus zwei Maschinentechnik-Studenten, Thomas Kilchmann und Basil Bachmann und einem Medizintechnik-Studenten, Matthias Koch. Alle Teammitglieder nahmen mit grosser Motivation an der Medizintechnik-DIY Blockwoche Teil. Die Möglichkeit selber zu tüfteln und etwas auszuprobieren ist an der Hochschule Luzern einzigartig und sehr interessant.

Einleitung

Modul Medizintechnik-DIY

Dieses Modul verbindet die Studiengänge Maschinen-, Elektro-, und Medizintechnik interdisziplinär mit der Idee des do-it-yourself. Ausgestattet mit Arduinos, Hautelektroden und diversen anderen Hilfsmitteln wie Motoren und Sensoren soll ein kleines, möglichst innovatives Projekt entstehen. Das Modul wird als Blockwoche durchgeführt und dauert von Montag bis und mit Samstag. Jegliche Informationen, welche für die Projekte vonnöten waren, sollten eigenständig über das Internet recherchiert werden. Bei weiteren Fragen konnten auch die Kursleiter Urs Gaudenz, Effi Tanner und Dr. Marc R. Dusseiller sowie Fabmanager Chris Obrist zu Rate gezogen werden..

FabLab

Der primäre Arbeitsbereich der Gruppe ist im FabLab. Das FabLab ist eine offene Werkstatt mit dem Ziel, Privatpersonen den Zugang zu modernen Geräten und Maschinen zu ermöglichen. In diesem stehen Lasercutter, eine CNC-Fräse und 3D-Drucker zur Verfügung. Mithilfe dieser Geräte sind die Möglichkeiten fast unbegrenzt was die Konstruktion angeht.

Jede Gruppe konnte sich ihren eigenen Arbeitsplatz im FabLab einrichten. Dies ist sehr praktisch, da alle benötigten Bauteile und Maschinen sehr nahe waren.

Probleme und deren Lösung

In diesem Abschnitt werden kurz alle Probleme und deren Lösungen aufgelistet.

Problem

Das Muscle Spiker Shield gibt manchmal sehr unregelmässige Werte zurück.

Lösung

Dies könnte ein EMV-Problem sein. Das Shield sollte nicht in der nähe eines Ladegerätes sein. Ebenfalls sollte es wenn möglich mit einer Powerbank gespiesen werden.

Problem

Der Servo lässt sich nicht gut über Muskelkontraktion steuern. Er oszilliert stark.

Lösung

Durchschnitt der eingehenden Werte über 20ms verwenden. Nach einem Befehl an den Servo einen delay einfügen (Wichtig!!).

Problem

Der Motor lässt sich nicht ansteuern.

Lösung

Motoren brauchen schon ab einer kleinen Grösse einen zu grossen Strom für das Arduino. Daher sollte ein Relais mit einer externen Spannungsquelle verwendet werden.

Problem

Einige LED's auf dem Shield funktionieren nicht.

Lösung

Möglicherweise beim Löten die Polung der LED's nicht beachtet.

Tag 1: Einführung & Muscle Spiker Shield

Einführung Blockwoche

Die Blockwoche startete mit einer Präsentation von Urs über Medizintechnik DIY. Dort erläuterte er seinen Werdegang und wie er in das Gebiet des DIY kam. Zudem wurden die wichtigsten Informationen bezüglich dem Ablauf der Blockwoche erklärt. Vor der Mittagspause wurden zudem die Gruppen eingeteilt und jede Gruppe konnte ihren Arbeitslatz einrichten.

Der Nachmittag begann mit einem Einblick in die DIY-Kultur, präsentiert von Marc mit vielen Einblicken in seine eigenen Projekte. Nach dieser interessanten Präsentation konnte nun erstmals in der Gruppe zusammen getüftelt und ausprobiert werden.

Lötlen - Muscle Spiker Shield

Das erste, was jede Gruppe machen musste war das zusammenlöten aller Bauteile mit der Platine. Dies verlief recht gut und das Shield konnte bereits nach zwei Stunden in Betrieb genommen werden. Erste Versuche damit verliefen ebenfalls positiv. Es wurde jedoch bemerkt, dass das Shield sehr anfällig ist auf Störungen. Es ist ratsam die Arduinos über eine Powerbank zu speisen und nicht in der nähe grosser Spannungsquellen zu verweilen. Wichtig zu beachten beim Löten ist ausserdem, dass LED's und Dioden nur in eine Richtung Strom leiten. Daher ist immer zu beachten wo man die Anode und die Kathode anlötet.

Tag 2: Experimentieren

Skill Share

Heute Morgen wurden wir in die Idee hinter sogenannten Skill Share Lessons eingeführt. Das Ziel ist, dass ein Student sein Wissen anderen Studenten weitergibt. In einem ersten Schritt wurden dazu kleine Zettel verteilt auf welche man seine Skills schreiben konnte und solche Skills, die man gerne lernen möchte. Danach wurde jedem Team ein Thema zugewiesen.

Projektidee

Nach einem gemeinsamen Brainstorming auf der Suche nach Projektideen fiel die Entscheidung auf ein Fahrzeug, dass mit Elektroden an den Armen gesteuert werden kann. Das Ziel ist es, dass mit dem einen Arm die Geschwindigkeit geregelt und dem anderen Arm gelenkt werden kann. Der Nutzen des Fahrzeug soll bei der Rehabilitation von Muskeln, zum Beispiel nach einer Operation, unterstützen. Die Muskeln müssen immer wieder angespannt werden um das Fahrzeug zu führen, was einem spielerischen Training gleichkommt.

Ansteuerung Gleichstrommotor

In diesem Versuch wurde ermittelt, wie der Gleichstrommotor mittels Muskelkontraktionen ein- und ausgeschaltet werden kann. Der Versuch wurde aufgeteilt in zwei Teilschritte.

Versuch 1: Ein-, Ausschalten

Beim ersten Versuch wurde der Motor nur über das Arduino angesteuert. Aufgrund des vergleichsweise hohen Stromes von 0.1A wurde der Gleichstrommotor nicht direkt über das Arduino gespiesen. Für die Speisung des Motors wurde ein Relais verwendet, welches dem Motor über eine 9V Blockbatterie mit Spannung versorgt. Die Ansteuerung verlief problemlos. Um ein Relais anzusteuern braucht dies permanent 5V und einen digitalen Output (bei uns PIN 4). Es wurde auch ein Transistor anstelle des Relais getestet, jedoch hat sich herausgestellt, das das Relais zuverlässiger funktionierte. Im nächsten Schritt wird versucht, den Motor über eine Bewegung der Hand anzusteuern.

Versuch 2: Elektrophysiologische Steuerung

Bei diesem Versuch wurde der Motor über eine Bewegung der Hand angesteuert. Wenn der Wert, welcher aus der Muskelbewegung ausgelesen wird einen gewissen Grenzwert überschreitet, wird das Relais angesteuert und somit der Motor in Gang gesetzt. Hier hatten wir mit ersten Problemen zu kämpfen, da die Werte sehr geschwankt haben. Darum wurde entschieden, dass über einen Zeitraum von 20ms Werte gesammelt werden und danach der Durchschnitt berechnet wird. Dies half schon sehr gut, um Spitzen auszuglätten und einen brauchbaren Wert zu erreichen.

Code:

#define NUM_LED 6  //sets the maximum numbers of LEDs
#define MAX 150     //maximum posible reading. TWEAK THIS VALUE!!
#define treshold 25 //Für Ansteuerung Motor

int trigger = 8;
int echo = 7;
long dauer = 0;
long entfernung = 0;
int reading[10];
int finalReading;
byte litLeds = 0;
byte multiplier = 1;
byte leds[] = {8, 9, 10, 11, 12, 13};

void setup(){
  Serial.begin(9600); //begin serial communications
  for(int i = 0; i < NUM_LED; i++){ //initialize LEDs as outputs
    pinMode(leds[i], OUTPUT);
  }
  pinMode(6, OUTPUT);

  pinMode(4, OUTPUT);

  pinMode(trigger, OUTPUT);

  pinMode(echo, INPUT);

}

void loop(){
  for(int i = 0; i < 10; i++){    //take ten readings in ~0.02 seconds
    reading[i] = analogRead(A0) * multiplier;
    delay(20);
  }
  for(int i = 0; i < 10; i++){   //average the ten readings
    finalReading += reading[i];
  }
  finalReading /= 10;
  for(int j = 0; j < NUM_LED; j++){  //write all LEDs low
    digitalWrite(leds[j], LOW);
  }
  Serial.print(finalReading);
  Serial.print("\t");
  finalReading = constrain(finalReading, 0, MAX);
  litLeds = map(finalReading, 0, MAX, 0, NUM_LED);
  Serial.println(litLeds);
  for(int k = 0; k < litLeds; k++){
    digitalWrite(leds[k], HIGH);
  }
//finalReading = 50;
// Motor Ansteuerung
  
  if ((finalReading > treshold)) {
    digitalWrite(6, HIGH);
    } else {
      digitalWrite(6, LOW);
      }
}

Kulturbeitrag

Heute kamen die beiden Künstler Daniel Maszkowicz und Emma Souharce zu Besuch. Sie zeigten uns ihre Art und Weise Musik zu machen. Es klang auf eine Art sehr schräg aber es war trotzdem interessant. Ihr Ansatz, dass man mit Pflanzen Musik machen kann war uns bisher nicht bekannt.

Tag 3: Ansteuerung des Servos und bauen des Grundgerüstes

Ansteuerung des Servos

Die Ansteuerung des Servos erfolgte ebenfalls über die Bewegung der Hand, ähnlich wie beim Motor. Da ein Servo aber nur von 0 - 180° drehen kann, haben wir den Servo als Nullpunkt auf 90° angesteuert. Durch leichtes zusammendrücken der Hand steuert er nach links und durch festes zusammendrücken nach rechts. Dies funktioniert so, wenn der Wert, welches das Muscle Spiker Shield ausliest, über einem Mindestwert und unter einem Höchstwert liegt, Steuert es den Servo an auf 70° (steuern links). Liegt der Wert über dem Höchstwert steuert es den Servo auf 110° an (steuern rechts). Ein Servo benötigt permanent 5V und ein PWM- Anschluss zum steuern (bei uns PIN 8.

Code:

#include <Servo.h>
#define NUM_LED 6  //sets the maximum numbers of LEDs
#define MAX 150     //maximum posible reading. TWEAK THIS VALUE!!

Servo servoSteuerung;

int reading[10];
int finalReading;
byte litLeds = 0;
byte multiplier = 1;
byte leds[] = {8, 9, 10, 11, 12, 13};

void setup(){
  Serial.begin(9600); //begin serial communications
  for(int i = 0; i < NUM_LED; i++){ //initialize LEDs as outputs
    pinMode(leds[i], OUTPUT);
  }
  servoSteuerung.attach(8);
}

void loop(){
  for(int i = 0; i < 10; i++){    //take ten readings in ~0.02 seconds
    reading[i] = analogRead(A0) * multiplier;
    delay(50);
  }
  for(int i = 0; i < 10; i++){   //average the ten readings
    finalReading += reading[i];
  }
  finalReading /= 10;
  for(int j = 0; j < NUM_LED; j++){  //write all LEDs low
    digitalWrite(leds[j], LOW);
  }
  Serial.print(finalReading);
  Serial.print("\t");
  finalReading = constrain(finalReading, 0, MAX);
  litLeds = map(finalReading, 0, MAX, 0, NUM_LED);
  Serial.println(litLeds);
  for(int k = 0; k < litLeds; k++){
    digitalWrite(leds[k], HIGH);
  }
  
// Servo Ansteuerung
  if (finalReading < 10) {
    servoSteuerung.write(90);
    delay(500);
    } else if (finalReading > 10 && finalReading < 40) {
      servoSteuerung.write(70);
      delay(500);
    } else if (finalReading > 40){
      servoSteuerung.write(110);
      delay(500);    
    }
      
}
    

Bauen des Fahrgestells

Es wurde entschieden das Fahrgestell aus einer 4mm MDF-Platte herzustellen. Die gewünschte Form der einzelnen Teile wurde im CAD-Programm NX konstruiert und anschliessend mit dem Lasercutter AKJ9060 ausgeschnitten. Das Fahrgestell wurde auf die Grösse der beiden Arduinos ausgelegt, sodass diese mitsamt ihrer jeweiligen Stromversorgung problemlos platziert werden können. Zudem wurde die Grundplatte des Fahrgestells bereits mit Ausschnitten versehen, um die Radlager, die Motorhalterung und den Servo für die Lenkung steckbar befestigen zu können.

CAD Zeichnung des Fahrgestells mit Radlager und Motoraufnahme

Antriebskonstruktion

Die Antriebseinheit besteht grundsätzlich aus einem Gleichstrommotor, zwei Zahnrädern für die Übersetzung und der Achse mit den beiden Rädern. Der Gleichstrommotor ist mithilfe einer Halterung auf der Grundplatte befestigt. Da die Achse jedoch auf der unteren Seite der Grundplatte befestigt wird, muss die Kraft mithilfe von Zahnrädern durch einen Ausschnitt in der Platte realisiert werden. Aufgrund der eher hohen Drehzahl des Elektromotors, wurde entschieden, eine Untersetzung auf die Achse zu realisieren, um das Fahrzeug nicht zu schnell werden zu lassen. Ein weiterer positiver Nebeneffekt der Untersetzung ist die Erhöhung des Drehmoments auf den Rädern. Als Untersetzungsverhältnis wurde 2 gewählt.

Gelenktes Vorderrad

Um das Fahrzeug lenken zu können, ist das Vorderrad mit einem Servomotor gesteuert. Die Konstruktion ist einfach gehalten, aber trotzdem sehr zuverlässig. An der Achse des Servomotors wurde direkt die Radgabel befestigt. Die Achse mit dem Rad wurde dann drehbar in den zwei Ausschnitten der Gabel gelagert. Der Drehwiderstand ist relativ gross, da beide Bauteile 3D gedruckt worden sind, aber für die gedachte Anwendung reicht dies aus. Der Servomotor mit der Vorderradkonstruktion konnte schlussendlich in einem Ausschnitt in der Grundplatte befestig werden.

Vortrag von Effi Tanner

Heute Nachmittag hat uns Effi Tanner einen kurzen Einblick in ihre Laufbahn und Ihre verschiedenen Projekte gegeben. Es war interessant zu hören, wie sie durch Alltagsprobleme auf die abstrusesten Ideen kommt und diese danach in einem kleinen DIY-Projekt realisiert. Ebenfalls führt Sie regelmässig interessante Workshops durch.

Zahnräder zur Kraftübertragung

Tag 4: Zusammenführen der Teilkomponenten

Skype-Session mit Greg Gage

Heute haben wir per Skype mit Greg Gage telefoniert. Er ist der Gründer von Backyard Brains. Er hat uns einiges über seine Produkte erzählt, wie sie hergestellt werden und auch für was sie hauptsächlich verwendet werden. Lustig zu erwähnen ist, dass sein Unternehmen eigentlich aus der Idee entstand, dass bei einer Zombie-Apokalypse sich die Leute selbst versorgen müssen und somit mit seinen Kits medizinische Geräte selber bauen können.

Verbinden aller mechanischen Komponenten und Steuerung des Motors mit Dauerstromversorgung

Die einzelnen Komponenten konnten nun am Donnerstag das erste Mal alle zusammengebaut werden. Die Antriebseinheit mit der Hinterachse konnte auf die Grundplatte gesteckt werden und noch zusätzlich mit Heissleim befestigt werden. Einzig der Gleichstrommotor musste mit zwei Schrauben an der Halterung befestigt werden. Um zu verhindern, dass sich die Achse axial in den Lagern verschieben kann, wurden zwei Gummibänder verwendet.


Um das Vorderrad zu befestigen musste nur der Servo mit zwei Schrauben angeschraubt werden. Die Bauteile aus dem 3D-Drucker konnten nach kleinen Anpassungen ebenfalls zusammengebaut werden. Die Vordere Achse wurde mit zwei Unterlagscheiben aus Kunststoff gegen axiale Verschiebung gesichert. Eine erste Probefahrt wurde ohne Lenkung und mit dauerhafter Spannungsversorgung des Motors durchgeführt, um die Fahrtauglichkeit und die Funktion der mechanischen Komponenten zu testen.

Prototyp mit allen Komponenten

Die elektronischen Komponenten konnten nun auf der Grundplatte platziert werden. Da der Servo und der Gleichstrommotor unabhängig voneinander angesteuert werden müssen, wurden zwei einzelne Boards verwendet. Dazu kommt eine Powerbank für die Speisung der Boards und eine separate 9V Batterie und ein Relais für die Speisung des Gleichstrommotors.

Funktionstest

Nach dem zusammenbauen und verkabeln konnte ein erster Funktionstest durchgeführt werden. Es mussten noch Feinabstimmungen am Schwellwert gemacht werden um das Lenken und Fahren zuverlässig funktionierte. Das Fahrzeug kann mit dem einen Arm Angetrieben werden und mit dem anderen Arm kann gelenkt werden. Das Fahrzeug fährt geradeaus bei entspanntem Arm, bei leicht angespanntem Arm nach links und bei stark angespanntem Arm nach rechts. Es ist zwar nicht ganz einfach das Fahrzeug so zu steuern aber mit ein wenig Übung hat es gut funktioniert.

Tag 5: Optimierungen

Ultraschallsensor

Bei den Sensoren haben wir einen Ultraschallsensor gefunden. Dies brachte uns sofort auf die Idee, den Ultraschallsensor als Kollisionsvermeidung für unser Gefährt zu verwenden. Zuerst erprobten wir die Ansteuerung. Diese verlief ohne weitere Probleme. Zu beachten ist, dass er bis maximal fünf Meter messen kann. Detektiert der Sensor einen Abstand von unter 20cm heisst dies, dass ein Hindernis im Weg ist. Dies steuert danach ein Relais an, welches die Stromzufuhr für den Antriebsmotor unterbricht. Der Ultraschallsensor braucht permanent 5V und zwei Signal-Anschlüsse (bei uns PIN 7 und 8).

Erweiterung mit Ultraschallsensor

Code:

#define NUM_LED 6  //sets the maximum numbers of LEDs
#define MAX 150     //maximum posible reading. TWEAK THIS VALUE!!
#define treshold 25 //Für Ansteuerung Motor

int trigger = 8;
int echo = 7;
long dauer = 0;
long entfernung = 0;
int reading[10];
int finalReading;
byte litLeds = 0;
byte multiplier = 1;
byte leds[] = {8, 9, 10, 11, 12, 13};

void setup(){
  Serial.begin(9600); //begin serial communications
  for(int i = 0; i < NUM_LED; i++){ //initialize LEDs as outputs
    pinMode(leds[i], OUTPUT);
  }
  pinMode(6, OUTPUT);

  pinMode(4, OUTPUT);

  pinMode(trigger, OUTPUT);

  pinMode(echo, INPUT);

}

void loop(){
  for(int i = 0; i < 10; i++){    //take ten readings in ~0.02 seconds
    reading[i] = analogRead(A0) * multiplier;
    delay(20);
  }
  for(int i = 0; i < 10; i++){   //average the ten readings
    finalReading += reading[i];
  }
  finalReading /= 10;
  for(int j = 0; j < NUM_LED; j++){  //write all LEDs low
    digitalWrite(leds[j], LOW);
  }
  Serial.print(finalReading);
  Serial.print("\t");
  finalReading = constrain(finalReading, 0, MAX);
  litLeds = map(finalReading, 0, MAX, 0, NUM_LED);
  Serial.println(litLeds);
  for(int k = 0; k < litLeds; k++){
    digitalWrite(leds[k], HIGH);
  }
//finalReading = 50;
// Motor Ansteuerung
  
  if ((finalReading > treshold)) {
    digitalWrite(6, HIGH);
    } else {
      digitalWrite(6, LOW);
      }

// Ultraschall Sensor

digitalWrite(trigger, LOW);

delay(5);

digitalWrite(trigger, HIGH);

delay(10);

digitalWrite(trigger, LOW);

dauer = pulseIn(echo, HIGH);

entfernung = (dauer/2) * 0.03432;

if (entfernung >= 500 || entfernung <= 0)

{

Serial.println("Kein Messwert");

}

else

{

Serial.print(entfernung);

Serial.println(" cm            ");

}
// Es wird eine weitere IF-Bedingung erstellt: 
 
if (entfernung > 1 && entfernung <= 20) //Wenn der Wert für die Entfernung unter oder gleich 20 ist, dann... 
{
  
digitalWrite(4, LOW);

}else {
  digitalWrite(4, HIGH);
  }

}
    

Gehäuse

Das Fahrzeug ist damit voll funktionsfähig. Da aber die ganze Elektronik auf der Grundplatte liegt, ist das Fahrzeug nicht schön anzusehen. Deshalb war das nächste Projekt, mit den verschiedenen Verfügbaren Materialien eine Abdeckung zu bauen, welche dem Fahrzeug ein dezenteres Aussehen verleihen sollte.

Der Grösste Teil der Abdeckung besteht aus dem Holz-Leim-Gemisch der Firma Woodcast. Dieses Material kann erwärmt werden um es danach, in der gewünschten Form gehalten, abkühlen zu lassen. Das Material wird danach hart und bleibt in dieser Form. Auf der Vorderseite des Fahrzeugs wurde ein Fenster aus Acrylglas eingesetzt. Dies mit dem Namen des Fahrzeuges, Therapymaster 7000, eingraviert. Auf der Rückseite wurde ebenfalls eine mit dem Teamnamen eingravierte Platte eingesetzt, jedoch eine aus MDF.

Unter der Abdeckung war bisher das Zahnradgetriebe nicht geschützt. Aus diesem Grund musste eine Abdeckung gemacht werden. Diese wurde aus Polymorph geformt. Das ist ein Kunststoff, welcher in heisses Wasser gelegt werden kann und danach sehr einfach und frei formbar wird. Es ist eine sehr einfache und effiziente Variante.

Finales Produkt

Das fertige Produkt erfüllt all unsere Erwartungen und funktioniert relativ zuverlässig. Auch optisch konnten wir es noch ein wenig verbessern.

Finaler Prototyp
Heck mit Teamname und Durchführungszeit


Tag 6: Präsentation und Reflexion

Die Blockwoche endete mit einer Präsentation von jeder Gruppe über Ihre Erfahrungen und Projekte. Die verschiedenen Projekte konnten unterschiedlicher nicht sein. Vom angetriebenen Windrad bis zu einer Nachahmung einer Iris gab es alles. Abschliessend fand noch eine Reflexion der ganzen Woche statt. Vielen Dank an alle Dozenten für diese lehrreiche und interessante Woche!

Skill Share: Bildgebende Verfahren

Bildgebende Verfahren ist ein Überbegriff in der medizinischen Diagnostik. Genauer versteht man darunter medizintechnische Gerätschaften und Apparaturen, welche in der Lage sind, Bilder des Körperinneren zu generieren, ohne den Körper «öffnen» zu müssen. Grundsätzlich gibt es drei verschiedene Hauptkategorien von bildgebenden Verfahren:

  • Computer-Tomographie
  • Magnetresonanz-Tomographie (engl. Magnetic-Resonance-Imaging)
  • Sonographie (Ultraschall)

Während der Kill Share Session soll ein grundlegender Überblick von bildgebenden Verfahren an andere Studierende weitergegeben werden. Dabei wird der Themenbereich auf CT und MRI beschränkt.

Computer-Tomographie

Wichtiger Unterschied

CT-Geräte werden in Industrie-Tomographen und medizinische Tomographen unterteilt. Einziger aber wichtiger Unterschied dabei ist, dass sich beim medizinischen Tomograph der Detektor um den Patienten dreht und beim Industrie-Tomograph das zu untersuchende Werkstück vor dem Detektor aufgestellt wird und um sich selbst dreht.

Röntgenphysik

Röntgenstrahlung kann auf zwei verschiedenen Arten erzeugt werden:

  • Zerfallsprozesse (freiwerdende Energie aus Gammazerfall)
  • Bremsstrahlung (durch Abbremsen von Ladungen)

Bei einem Computer-Tomograph wird die Röntgenstrahlung vorallem durch Bremsstrahlung erzeugt. Dies wird wie folgt realisiert:

  • Erzeugung von freien Elektronen durch eine Thermoemission
  • Beschleunigung der Elektronen
  • Fokussierung der Elektronenwolke
  • Abbremsen der Elektronen auf einem Target, resp. Erzeugen von Bremsstrahlung

Aufbau eines Computer-Tomographen

Aufbau Computertomograph (Quelle: Foliensatz Philipp Schütz, Bildgebende Verfahren)

Die wichtigsten zwei Teile eines CT-Geräts sind:

  • Röntgenröhre: Hier werden die Röntgenstrahlen erzeugt. Diese emittieren dann durch das Innere des CT-Bogen und durchdringen/durchleuchten die Materie, resp. den Körper.
  • Detektor: Hier trifft die transmittierte Strahlung ein. Anhand dieser Strahlung resultiert schlussendlich das gewünschte Bild der CT-Aufnahme

Interaktion von Röntgenstrahlung mit dem Gewebe

Die Röntgenstrahlung schiessen Elektronen aus den Elektronenschalen von Atomen heraus. Dies erfolgt hauptsächlich auf drei verschiedene Varianten:

  • Photoeffekt: Ein Gammateilchen schiesst ein Elektron aus der Schale heraus
  • Fluoreszenz: Ein Elektron der äusseren Schale wechselt aufgrund der hohen Energie auf die die nächst innere Schale. Dabei emittiert ein Gammateilchen
  • Auger Prozess: Ein Elektron der äusseren Schale wechselt aufgrund der hohen Energie auf die übernächste innere Schale. Das dabei emittierende Gammateilchen trifft auf ein Elektron der äusseren Schale und schiesst dieses aus der Schale heraus. Diese Variante ist eher selten.

Messen der transmittierten Röntgenstrahlung

Die transmittierte Röntgenstrahlung kann analog oder digital gemessen werden.

Analog:

  • Röntgenfilm
  • Bildplatte

Digital:

  • Flachbett-Detektor
  • Szintillationsdetektoren
  • Direkt-Konversionsdetektor

Magnet-Resonanz-Thomographie

Funktionsweise

Die Funktionsweise eines MRT/MRI ist sehr komplex und schwierig mit Worten zu erklären. Deshalb wird in diesem Abschnitt auf ein Youtube-Video verwiesen.


Weitere Anwendungsmöglichkeiten

Darstellung aktiver Hirnregionen durch fMRI. (Quelle: blogs.plos.org)

fMRI (funcional MRI):

  • Zur Bestimmung von aktiven Hirnregionen während Rechnungen, Rätsel oder auch Gefühlen
  • Unterschiedliche Relaxationszeiten in den entsprechenden Hirnregionen werden aufgrund gesteigertem Stoffwechsel, erhöhter Blutzufuhr, etc. detektiert
  • Durch Rekonstruktionsverfahren lassen sich diese Hirnregionen grafisch darstellen
Darstellung der Nervenbahnen durch dtMRI. (Quelle: people.csail.mit.edu)

dtMRI (diffusion tensor MRI):

  • Zur Bestimmung von Nervenpfaden, resp. Verfolgen von Nervenbahnen
  • Unterschiedliche Relaxationszeiten in den entsprechenden Hirnbereichen werden aufgrund gesteigertem Stoffwechsel, erhöhter Blutzufuhr, etc. detektiert
  • Durch Rekonstruktionsverfahren lassen sich diese Nerven grafisch und farblich darstellen

Reflexion

An unserer Schule herrscht seit Anfang Studium schon immer ein striktes Gebot, dass man von den Dozenten Aufgaben erhält und diese danach lösen muss. Dementsprechend überrascht und hilfslos waren wir Anfangs Woche, als uns gesagt wurde, dass wir die ganze Zeit für uns arbeiten können und nicht wirklich eine Aufgabenstellung zu bewältigen haben. Nach einiger Zeit gefiel uns dieses Prinzip immer mehr und wir konnten unserer Fantasie freien Lauf lassen. Dies wurde von der ganzen Gruppe gutgeheissen.

Auch die Arbeitsatmosphäre im Fablab ist einzigartig. Jede Idee kann sofort vor Ort in die Realität umgesetzt werden, da es eine Vielzahl an Materialien und Maschinen hat. Auch das Arbeiten mit bisher umgewohnten Maschinen wie 3D-Druckern oder Lasercuttern war ein eindrückliches Erlebnis. Zum Teil konnten die Geräusche der Maschinen oder die Tests anderer Studenten an Lautsprechern jedoch die Geduld auf eine harte Probe stellen.

Die unter der Woche verteilten Skill-Share Lessons waren sehr abwechslungsreich und interessant. Von Snowboard wachsen bis Schnaps destillieren gab es alles. Es war für jedermann etwas dabei und die Lessons wurden vom Team Champs mit viel Freude und Elan besucht.

Alles in allem lässt sich sagen, dass es eine gelungene Blockwoche war und jeder einzelne von uns seine Lehren daraus gezogen hat.

Zurück zum Modul-Inhalt

Mit folgendem Link kann Inhalte anderer Gruppen und Modulinformationen zugegriffen werden.

Back to Medizintechnik DIY