MedTechDIY20 Bananas In Pajamas

From Hackteria Wiki
Revision as of 14:54, 7 February 2020 by Adagio (talk | contribs) (Source Code)
Jump to: navigation, search
222482 207900402574312 200286980002321 630544 7055728 n.png


Team

Bananas In Pajamas besteht aus drei Studierenden: Giona Adami, Dominic Bacher und Janick Marfurt. Das Team ist interdisziplinär aus Maschinentechnik, Medizintechnik und Wirtschaftsingenieur.

Mitglieder:

DIY Culture

Das Akronym DIY (Do It Yourself) bezeichnet die Selbst-Durchführung mit den eigenen Ressourcen eines Projekts. DIY ist eine Community von Personen, die um das Prinzip "Do it Yourself" Wissen, technische Lösungen, Ideen, Projekte usw. tauschen. Das DIY Ansatz fördert die Kreativität und die Lösungsfindung von Problemen mit gemeinverständliche Mitteln und Werkzeuge. Aus diesem Grund gleiche DIY Produkt-Ideen werden verschiedene Lösungsfindungen aufweisen. Die Vorteile von DIY sind das Wachstum eines Projekts durch das Tauschen von Entwicklungsinformationen in der Community. Viele DIY Projekte sind durch die DIY-Community von Enthusiasten oder Spezialisten verbessert worden (LINK zu Magicmirror). Ein anderer Vorteil ist, dass man durch DIY sehr viel lernt. Der Nachteil von DIY besteht in der Freiheit damit die Community das Wissen austauscht. Es gibt auch DIY-Waffenprojekte oder potenzielle DIY-Bösartige Projekte, die auch Teile der Community unterstützten (Defense Distributed).

Open-Source

Die Bezeichnung Open-Source wird für nichtlizenzierte Software angewendet und beschreibt diejenige Software, die frei von der Community modifiziert und weiterentwickelt werden können. Open-Source heisst, dass man freier Zugriff zum Source-Code besitzt.

Skills Share Sessions

Bei den Skills Share Sessions (SSS) will man neues Wissen übermitteln. Die Teilnehmern der SSS bieten Crash-Kurse an, basierend aus persönlichen Kenntnissen oder Erfahrungen. Jeder Person kann sich in mehrere Kurse einschreiben und das Wissen der Veranstalter aufnehmen.

Eine Skill Share Session artikuliert sich in 4 Phasen:

  • Phase 1: In dieser Phase stellt man dar, den eigenen Lerninteressen beziehungsweise was man den anderen Teilnehmern beibringen kann,
  • Phase 2: Man bewertet die dargestellten Kurse, diejenigen mit den höchsten Bewertungen werden sortiert.
  • Phase 3: Die Teilnehmer schreiben sich in den ausgewählten sortierten Kurse ein.

Bananas in Pajamas hat einen Crash-Kurs der Dauer von einer Stunde über die Grundlagen der Elektrotechnik angeboten.

Elektrotechnik Crash-Kurs

Im Elektrotechnik Crash Kurs wird dem Lernenden ein kurzer Einblick in die Welt der Elektrotechnik gegeben. Als erstes wird ein Multimeter erklärt und wie man es richtig benutzt. Anschliessend werden diverse verschiedene Komponenten, wie zum Beispiel ein Kondensator oder eine Spule erklärt. Auch das Anwendern einer Leuchtdiode wird erklärt und auf was zu achten ist. Zum Schluss wird das Schema für das «Muscle Spiker Shteld» Board erklärt. Anschliessend konnten uns die Studierenden noch Fragen stellen und es gab einen Austausch zwischen den verschiedenen Problemen die mit dem Board entstanden sind.


ET-Crash-Kurs.jpg

Schweissen mit MAG- TIG- ELektrode

Im Skill share session hat man das Kurs "Schweissen", von Team G2020 angeboten, besucht. Es war sehr interessant und Gut gestaltet. Wir konnten die drei Schweissverfahren selber ausprobieren. Das Schweissen mit dem Elektrode war die schwierigste, da man zwei Parametern (Zusatzmaterial und Temperatur) mit dem Elektrode stuern muss. Die TIG Schweissverfahren sieht ähnliche wie löten, man wärmt das Metall auf und positioniert die Spitze des Zusatzmaterials in den aufgewärmte Zone. Das Zusatzmaterial schmilz auf die Metallspalte und verbindet die zwei Metallteile.

Hack 0

Hier werden Experimente durchgeführt, um die Anwendung des DIY Muscle SpykerShield kennezulernen. Den DIY Muscle SpykerShield ist einen mit Arduino kompatible Messplatine von Backyard Brains, die die Messung von elektrische Spnannungen im Körper mithilfe von Elektroden ermöglicht. D kommt in einem DIY-Kit und muss selbst montiert und gelötet werden.

LoetenSPyker 3376-kopie.jpg

Elektrische Aktivität des Muskels messen

Mit dieses Experiment misst man die elektrische Impulse des Unterarmmuskel und stellt die Intensität des Impuls mit eine Reihe von 6 LEDs dar. Die Software ist unter Backyard Brains - DIY Muscle SpykerShield verfügbar.

Beobachtungen und Erkenntnisse

Das Experiment hat gut funktioniert. Man konnte die elektrische "Aktivität" des Muskels auf dem Serial-Monitor und auf die LEDs beobachten. Durch die Verkürzung des Muskels entsteht ein elektrischen Impuls, das gemessen werden kann. In einem Muskel die Kraft wird durch die Frequenz der Muskelfaser-Zuckungen gesteuert. Je die Frequenz höher ist, desto mehrere Muskelfasern sich verkürzen. Mit dem DIY Muscle Spyker Shield sieht man diese Frequenzen nicht, da es sich um hochfrequenzen handelt. Bei dieser Experiment tritt einen Störsignal auf, der eine Schwingung in der Messung verursacht. Man hat eine Verminderung des Störsignals beobachtet, bei das Austecken von das PC-Lädegerät.

Experiment01.jpg

Die LEDs zeichnen die elektrische Aktivität des Muskels.

Musik mit den Muskeln machen

Mit diesem Experiment werden durch Muskelkontraktionen Töne erzeugt. Das Experiment ist ähnlich aufgebaut wie das vorherige. Anstelle der LEDs wird jedoch ein Lautsprecher angeschlossen. Durch verschieden starke Kontraktion der Muskeln können verschiedene Töne erzeugt werden, somit verwandelt sich der Unterarm zu einem Musikinstrument. Der Versuchs Aufbau ist sehr simpel und es macht spass

Musik Muskeln.jpg


Die Anleitung zum Versuch findet ihr hier.

Beobachtungen und Erkenntnisse

Wie in dem vorherigen Beispiel tritt hier auch einen Rauschsignal auf. Es könnte eine Netz-Störung von 50 Hz sein. Im Fablab sind verschiedene Maschinen wie Lasercutters, 3D Drucker, Luftreinigungssystem vorhanden. Diese Anlagen besitzen Motoren, die magnetische Felder erzeugen und also auch Funkstörungen.

Hack 1: Digital Candle

Das erste Hack ist eine digitale Kerze. Die Idee ist eine moderne Lampe zu basteln, die wie eine konventionelle Kerze angezündet wird. Mittels eine Licht-abhängige-Widerstand (Light dependent Resistor "LDR") ist man in der Lage das verursachte Licht der Flamme eines Feuerzeug zu detektieren.

Ezgif.com-video-to-gif.gif

Demo of the candle

Funktionsweise

Das Prinzip dieser Projekt ist sehr simpel. Man will eine Lampe mithilfe von einem Feuerzeug wie eine Kerze einschalten. Die Lampe wird anhand einer Licht-abhängige Widerstand eingeschaltet und solange das Licht der Lampe auf die Widerstand kommt schlatet die Kerze nicht ab. Um die Digital Candle abzuschalten ist es nötig die Licht abhängige Widerstand vor Licht decken. Die Steuerung wird mit Arduino gewährleistet und ein modernen und effizienten SMD LEDs-Ring wird als Lichtquelle benutzt. Dieses Hack stellt einen Kontrast zwischen alte und neue Technologien dar. Eine mögliche Weiterentwicklung für medizintechnische Zwecke dieser digitalen Kerze besteht in der Anwendung von Photoresistoren um die Sauerstoff im Blut mittels Messung der Lichtabsorption durchzuführen.

Do the digital candle yourself!

What do you need for this project:

  • A Photoresistor (LDR)
  • A 110 ohms resistor
  • Arduino Uno or equivalent
  • Some cables
  • One cylindrical piece of wood
  • A LED's ring

The electrical draw below shows the cable connections, please note that the 110 ohms resistors is required to guarantee a difference of voltage in the analog input of arduino by differents light intensities!

Electrical connections

Here the electrical scheme of the photoresistor; You can program the LED's Ring by following the tutorial:

Adafruit 24 RGB LED Ring tutorial


DSC 0480.jpg

Source Code

The program of the digital candle is listed below.

//---------------------------------------------------------------
//DIGITAL CANDLE SOURCE CODE
//This is an Open Source code, feel free to modify and/or share it.
//---------------------------------------------------------------

#include <Adafruit_NeoPixel.h>
#ifdef __AVR__
#include <avr/power.h>
#endif
#define PIN        6
#define NUMPIXELS 24
Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
#define DELAYVAL 250
#define SOL 125
int sensorPin = A0;
int sensorValue = 0;
bool schalter = false;

void setup() {
#if defined(__AVR_ATtiny85__) && (F_CPU == 16000000)
 clock_prescale_set(clock_div_1);
#endif
// declare the ledPin as an OUTPUT:
   pinMode(sensorValue, OUTPUT);
   Serial.begin(9600);
   pixels.begin();
/*--------------------------------------------------------------------------*/
   pixels.setPixelColor(0, pixels.Color(0, 0, 0));
   pixels.setPixelColor(1, pixels.Color(0, 0, 0));
   pixels.setPixelColor(2, pixels.Color(0, 0, 0));
   pixels.setPixelColor(3, pixels.Color(0, 0, 0));
   pixels.setPixelColor(4, pixels.Color(0, 0, 0));
   pixels.setPixelColor(5, pixels.Color(0, 0, 0));
   pixels.setPixelColor(6, pixels.Color(0, 0, 0));
   pixels.setPixelColor(7, pixels.Color(0, 0, 0));
   pixels.setPixelColor(8, pixels.Color(0, 0, 0));
   pixels.setPixelColor(9, pixels.Color(0, 0, 0));
   pixels.setPixelColor(10, pixels.Color(0, 0, 0));
   pixels.setPixelColor(11, pixels.Color(0, 0, 0));
   pixels.setPixelColor(12, pixels.Color(0, 0, 0));
   pixels.setPixelColor(13, pixels.Color(0, 0, 0));
   pixels.setPixelColor(14, pixels.Color(0, 0, 0));
   pixels.setPixelColor(15, pixels.Color(0, 0, 0));
   pixels.setPixelColor(16, pixels.Color(0, 0, 0));
   pixels.setPixelColor(17, pixels.Color(0, 0, 0));
   pixels.setPixelColor(18, pixels.Color(0, 0, 0));
   pixels.setPixelColor(19, pixels.Color(0, 0, 0));
   pixels.setPixelColor(20, pixels.Color(0, 0, 0));
   pixels.setPixelColor(21, pixels.Color(0, 0, 0));
   pixels.setPixelColor(22, pixels.Color(0, 0, 0));
   pixels.setPixelColor(23, pixels.Color(0, 0, 0));
   pixels.show();
/*--------------------------------------------------------*/
}

void loop() {
 
   
   if(analogRead(sensorPin)>SOL)
   {
     schalter = true;
   }
   else if(analogRead(sensorPin)<30)
   {
     schalter = false;
     pixels.clear();
   }
   sensorValue=analogRead(sensorPin);
   Serial.println(sensorValue);
   
       
   
   delay(1000);
   if(schalter==true)
   {
   pixels.setPixelColor(0, pixels.Color(255, 255, 255));
   pixels.setPixelColor(1, pixels.Color(255, 255, 255));
   pixels.setPixelColor(2, pixels.Color(255, 255, 255));
   pixels.setPixelColor(3, pixels.Color(255, 255, 255));
   pixels.setPixelColor(4, pixels.Color(255, 255, 255));
   pixels.setPixelColor(5, pixels.Color(255, 255, 255));
   pixels.setPixelColor(6, pixels.Color(255, 255, 255));
   pixels.setPixelColor(7, pixels.Color(255, 255, 255));
   pixels.setPixelColor(8, pixels.Color(255, 255, 255));
   pixels.setPixelColor(9, pixels.Color(255, 255, 255));
   pixels.setPixelColor(10, pixels.Color(255, 255, 255));
   pixels.setPixelColor(11, pixels.Color(255, 255, 255));
   pixels.setPixelColor(12, pixels.Color(255, 255, 255));
   pixels.setPixelColor(13, pixels.Color(255, 255, 255));
   pixels.setPixelColor(14, pixels.Color(255, 255, 255));
   pixels.setPixelColor(15, pixels.Color(255, 255, 255));
   pixels.setPixelColor(16, pixels.Color(255, 255, 255));
   pixels.setPixelColor(17, pixels.Color(255, 255, 255));
   pixels.setPixelColor(18, pixels.Color(255, 255, 255));
   pixels.setPixelColor(19, pixels.Color(255, 255, 255));
   pixels.setPixelColor(20, pixels.Color(255, 255, 255));
   pixels.setPixelColor(21, pixels.Color(255, 255, 255));
   pixels.setPixelColor(22, pixels.Color(255, 255, 255));
   pixels.setPixelColor(23, pixels.Color(255, 255, 255));
   pixels.show();
   }
   else
   {
   pixels.setPixelColor(0, pixels.Color(0, 0, 0));
   pixels.setPixelColor(1, pixels.Color(0, 0, 0));
   pixels.setPixelColor(2, pixels.Color(0, 0, 0));
   pixels.setPixelColor(3, pixels.Color(0, 0, 0));
   pixels.setPixelColor(4, pixels.Color(0, 0, 0));
   pixels.setPixelColor(5, pixels.Color(0, 0, 0));
   pixels.setPixelColor(6, pixels.Color(0, 0, 0));
   pixels.setPixelColor(7, pixels.Color(0, 0, 0));
   pixels.setPixelColor(8, pixels.Color(0, 0, 0));
   pixels.setPixelColor(9, pixels.Color(0, 0, 0));
   pixels.setPixelColor(10, pixels.Color(0, 0, 0));
   pixels.setPixelColor(11, pixels.Color(0, 0, 0));
   pixels.setPixelColor(12, pixels.Color(0, 0, 0));
   pixels.setPixelColor(13, pixels.Color(0, 0, 0));
   pixels.setPixelColor(14, pixels.Color(0, 0, 0));
   pixels.setPixelColor(15, pixels.Color(0, 0, 0));
   pixels.setPixelColor(16, pixels.Color(0, 0, 0));
   pixels.setPixelColor(17, pixels.Color(0, 0, 0));
   pixels.setPixelColor(18, pixels.Color(0, 0, 0));
   pixels.setPixelColor(19, pixels.Color(0, 0, 0));
   pixels.setPixelColor(20, pixels.Color(0, 0, 0));
   pixels.setPixelColor(21, pixels.Color(0, 0, 0));
   pixels.setPixelColor(22, pixels.Color(0, 0, 0));
   pixels.setPixelColor(23, pixels.Color(0, 0, 0));
   pixels.show();
   delay(500);
   }
}

Hack 2

Im Hack zwei werden nochmals neue Ideen gesammelt. Es wird geschaut das wir uns möglichst in eine andere Richtung als der Hack eins begeben. Im Hack zwei hat sich das Team Bananas in Pyjamas eine Kralle überlegt, die mithilfe der Muskelanspannung eines Menschen gesteuert werden kann. Diese Zange könnte in der Medizinaltechnik für Leute mit Rückenprobleme eingesetzt werden. So muss sich der Patient zum Aufnehmen eines Gegenstandes nicht mehr bücken, sondern kann mit Hilfe der Zange diverse Gegenstände vom Boden aufnehmen.

Funktionsweise

Eine Zange, die mithilfe eines Servos der über die Muskulatur funktioniert, ist an einer Schnur mit einem Motor festgemacht. Der DC Motor wickelt die Schnur auf und ab und lässt dadurch die Zange nach oben oder nach unten. Als erstes muss ein Taster betätigt werden. Anschliessend bewegt sich die Zange nach unten. Ziel ist es den Gegenstand mithilfe der angespannten Muskeln zu Greifen. Anschliessend fährt der Motor automatisch wieder nach oben.

Source Code

Greifer

DC Motor

#include <Wire.h>
#include <Adafruit_MotorShield.h>
#include "utility/Adafruit_MS_PWMServoDriver.h"  

Adafruit_MotorShield AFMS = Adafruit_MotorShield(); 
Adafruit_DCMotor *myMotor = AFMS.getMotor(1);
#define PIN 6
int knopf = 0;

void setup() {

AFMS.begin();
Serial.begin(9600);
pinMode(PIN, INPUT);
myMotor->setSpeed(0);
myMotor->run(BRAKE);
knopf = LOW;
}

void loop() {
myMotor->setSpeed(0);
myMotor->run(BRAKE);

delay(100);
knopf = LOW;
knopf =digitalRead(PIN);
Serial.println(knopf);

if( knopf== HIGH)
{
myMotor->setSpeed(150);
myMotor->run(BACKWARD);
delay(3500);
myMotor->run(FORWARD);
delay(5000);
knopf = LOW;
 }
}

Reflexion

Wochenjournal

Tag 1

Tag 2

Tag 3

Tag 4

Tag 5

Tag 6

Tag 7

Return to: DIY Medizintechnik