DIY Adapter für HTC Vive Base Station
News & Trends

DIY Adapter für HTC Vive Base Station

Marc Schaffer
27.1.2017

Man kann Adapter kaufen, falls es sie gibt. Oder man entwirft und 3D-druckt sich selber einen. In diesem Fall möchte ich eine HTC Vive Base Station auf ein Mikrofonstativ montieren. Leider haben beide unterschiedlich grosse Gewinde (englische/imperiale), also muss ein Adapter her.

In diesem Tutorial zeige ich dir, wie du schnell und einfach ein Objekt mit OpenSCAD programmierst. OpenSCAD ist ein Programm, mit welchem du 3D-Modelle kreieren kannst. Die Software ist gratis und funktioniert auf Linux, Windows und Mac. Anstelle von gewohnten CAD-Programmen zeichnest du hier aber nicht ein Objekt, sondern tippst es mit deiner Tastatur in Form von Codes ein. Aber keine Sorge, es ist nicht wahnsinnig kompliziert und du brauchst auch nicht mehr Mathematikkenntnisse als bei anderen Zeichnungsprogrammen. Als Gedächtnisstütze findest du hier ein CheatSheet.

Arbeitsoberfläche von OpenSCAD. Bild: OpenSCAD

Der Arbeitsprozess ist in vier Schritte gegliedert:

  1. Ausmessen
  2. Zeichnen
  3. Drucken
  4. Zusammenbauen

1. Ausmessen

Bevor du mit dem Zeichnen, oder in diesem Fall programmieren beginnen kannst, musst du dir die vorhandenen Materialien zusammensuchen. Mit verschiedenen Hilfsmittel wie Lineal, Geodreieck oder Schieblehre misst du dann alles genau aus. Je genauer du in diesem Schritt arbeitest, desto weniger Probleme hast du am Schluss beim Zusammenbauen der Objekte.

Auslage meiner verwendeten Objekte.

2. Zeichnen

Der Halter, welcher ich im vorhergehenden Schritt ausgemessen habe, besitzt folgende Masse: Länge = 84,2 mm; Breite = 44 mm. Die Schraube hat einen Durchmesser von 3 mm und eine Länge von 18 mm. Um den Grundquader zu erhalten, tippen wir Folgendes in das Textfeld ein: cube([84.2,44,18],center=true);

Danach drücken wir nur noch «F5» und der Quader ist als 3D-Modell ersichtlich.

Grundquader als Ausgangslage.

Mit der Anweisung «center=true» wurde das Objekt eingemittet. Der Nullpunkt ist also genau in der Mitte. Dies ist in unserem Fall sehr praktisch, da das Objekt symmetrisch ist, also beide Seiten gleich gross. Dadurch sind die Löcher fürs Gewinde und die Schraube in der Mitte und wir müssen für die folgenden M5-Löcher weniger rechnen.

Wir könnten nun noch die Löcher hinzufügen, aber so eckig passt es nicht so schön zum Lighthouse.

Da nur die Aussenkanten abgerundet sind, nutzen wir die Funktion «hull», welche eine Hülle um die Objekte zieht. Nun wird es etwas mathematisch: Die Abrundung hat einen Radius von 10 mm, also platzieren wir 4 Zylinder an den Ecken und spannen die Hülle darum:

hull(){

translate([(84.2/2)-10,(44/2)-10,0]) cylinder(r=10, h=18,center=true);

translate([(-84.2/2)+10,(44/2)-10,0]) cylinder(r=10, h=18,center=true);

translate([(84.2/2)-10,(-44/2)+10,0]) cylinder(r=10, h=18,center=true);

translate([(-84.2/2)+10,(-44/2)+10,0]) cylinder(r=10, h=18,center=true);

};

Zylinder, welche die Ecken abrunden.

Ausgehend vom Nullpunkt in der Mitte (center) gehe ich für einen Zylinder die Hälfte der Länge und die Hälfte der Breite nach Aussen weg vom Nullpunkt («translate» bestimmt die neue Position) und ziehe den Radius ab. Das muss ich auch nur einmal aufschreiben und kann es dann für die anderen Zylinder wiederverwenden – mal Plus vom Nullpunkt und mal Minus vom Nullpunkt. (Ach, wenn uns damals in der Schule Mathematik doch nur so anschaulich und leicht verständlich erklärt worden wäre. Man muss es nur anwenden, um es zu verstehen.)

Man kann Objekte transparent machen, indem man ein «%» davor schreibt, ohne sollte nun ein volles Objekt sichtbar sein.

Quader mit abgerundeten Ecken.

Fügen wir nun die Löcher hinzu, indem wir verschiedene Zylinder hinzufügen. Diese werden dann vom grossen Objekt weggerechnet («gebohrt»):

SILF=0.6;

translate([0,0,0]) cylinder(r=5+SILF, h=50,center=true);

Mit Zylinder für die Bohrung.

Dabei ist wichtig, dass die abzurechnenden (Minus) Objekte grösser sind und überstehen, sonst werden die Kanten nicht schön und der 3D-Drucker versucht das Loch mit einer dünnen Schicht zu verschliessen.

Der 3D-Drucker, beziehungsweise manche Slicer, welche die Objekte für den 3D-Drucker berechnen, haben die störende Eigenheit, die Löcher kleiner zu drucken als angegeben. Somit muss das Loch um diesen Fehlbetrag grösser geplant werden. Ich habe das «Slicer inneres Loch Fehler» genannt und addiere diese Variable «SILF» dem Loch hinzu. Man kann die Variable frei benennen, sollte aber den Korrekturbetrag nicht fix einprogrammieren. Jeder Drucker ist anders und Programme ändern sich. Bei Veränderungen muss man nur die Variable am Anfang ändern und nicht gleich alle Löcher.

Eine Schablone ist hilfreich, auch um Muttern einzupassen.

Das benötigt nur 1 Zeile für die Objekte:

for (i = [0:.5:7]) { translate([(i*i*2)+i*2,0,0]) cylinder(r=i, h=5+i,center=true); }

«for»-Schleifen sind ein praktisches Hilfsmittel beim Programmieren, aber zurück zum Adapter. «Bohren» wir nun das Loch, indem wir die Differenz von A minus B bilden. Grosses hull Objekt minus Schrauben-Zylinder mit der Funktion «difference»:

difference(){

hull(){

translate([(84.2/2)-10,(44/2)-10,0]) cylinder(r=10, h=18,center=true);

translate([(-84.2/2)+10,(44/2)-10,0]) cylinder(r=10, h=18,center=true);

translate([(84.2/2)-10,(-44/2)+10,0]) cylinder(r=10, h=18,center=true);

translate([(-84.2/2)+10,(-44/2)+10,0]) cylinder(r=10, h=18,center=true);

};

translate([0,0,0]) cylinder(r=5+SILF, h=50,center=true);

}

Quader mit Bohrung.

Fügen wir nun die beiden Löcher für die M5-Schrauben hinzu. Dazu erweitern wir den «B» Teil, der nur aus dem Zylinder für das Gewinde besteht, zu einer Gruppe:

group(){

translate([0,0,0]) cylinder(r=5+SILF, h=50,center=true); //Gewinde vom Stativ

translate([32,0,0]) cylinder(r=2.5+SILF, h=50,center=true); //M5 Schraube

translate([-32,0,0]) cylinder(r=2.5+SILF, h=50,center=true); //M5 Schraube

}//group

Ein wichtiger Tipp: Der Text nach den «//» sind Kommentare und werden vom Programm ignoriert. Wenn man zwei Monate später etwas anpassen will, spart es sehr viel Zeit, da in den Kommentaren zu lesen ist, was und warum z. B. dort 1 mm mehr sein musste!

Mit den zusätzlichen zwei kleinen Bohrungen.

Nun fehlt nur noch das Loch für die grosse Schraube. Dazu fügen wir die beiden Zylinder (für die Schraube und einen für den Rand) hinzu. Diese sollen aber nicht durchgehend sein, sondern auf 3 mm Material aufliegen. Somit muss die Z-Achse angepasst werden:

translate([0,0,-(18/2)+3]) cylinder(r=(15.5/2)+SILF, h=25,center=false); //Adapter

translate([0,0,-(18/2)+3+10]) cylinder(r=(18/2)+SILF, h=10,center=false); //Adapter Rand

Einbuchtung für die Schraube.
Zur Verdeutlichung nochmals transparent.

Damit wären wir fast fertig. Das Objekt könnte so gedruckt werden, die Schraube müsste aber mühsam angezogen werden und zum Abschrauben müsste alles zerlegt werden, da die Schraube keinen Anschlag hat und lose drehen würde. Also fügen wir einen Anschlagspunkt hinzu und sägen einen Teil vom Schraubenrand ab, um einen «D-Cut» zu erhalten.

Es hat sich bewährt, die Schraube von unten her abzusägen.
Abgesägte Schraube

Fügen wir nun zum Schluss den Anschlagspunkt auf dem Objekt hinzu – ein Einzeiler am Ende:

translate([(15.5/2)+0.3,-10,(18/2)-5]) cube([4,20,5],center=false); //D-Cut Auflage

Das rote Teil wurde hinzugefügt.
So sieht das finale 3D-Modell aus.

Um die Kanten noch glatter zu machen, erhöhen wir noch die Anzahl der Kanten pro Kreis: $fn=150;

Die Ecken sind merklich glatter.

Dies sollte aber erst am Schluss gemacht werden, da es die Rechenzeit erhöht. Das kann man übrigens auch verwenden, um z. B. 6-Ecke zu generieren: cylinder(d=20,h=10,$fn=6);

3. Drucken

Nun muss das Programm das 3D-Modell nur noch hochaufgelöst berechnen. Dies nennt sich rendern und kann mit «F6» und als STL exportiert werden. Die STL-Datei kann dann der Slicer für den 3D-Drucker umrechnen und der Druck kann beginnen! Wie das genau funktioniert, kannst du hier nachlesen:

  • Hintergrund

    3D-Druck - vier hilfreiche Antworten für Beginner

    von Marc Schaffer

So sieht es ausgedruckt aus. Hat knapp zwei Stunden gedauert.
Die Schraube passt wie angegossen.

4. Zusammenbauen

Wenn man modular gearbeitet hat, kann man die Datei weiterverwenden und für andere Anwendungen anpassen. Wie zum Beispiel als Halterung für eine Baulampe.

Vorsicht: PLA beginnt ab 60°C langsam weich zu werden.

Ganzer Quellcode

Falls du diesen Adapter selber gerne nachbauen möchtest, kannst du den gesamten Quellcode kopieren und bei deinem OpenSCAD einfügen.

$fn=150; // Anzahl Kanten eines Kreises

SILF=0.6; // Slicer Inneres Loch Fehler, falls der Slicer die inneren Löcher zu klein druckt

//%cube([84.2,44,18],center=true);

//#cube([68.4-5,44,18],center=true); //Abstandsstest

difference(){

hull(){

translate([(84.2/2)-10,(44/2)-10,0]) cylinder(r=10, h=18,center=true);

translate([(-84.2/2)+10,(44/2)-10,0]) cylinder(r=10, h=18,center=true);

translate([(84.2/2)-10,(-44/2)+10,0]) cylinder(r=10, h=18,center=true);

translate([(-84.2/2)+10,(-44/2)+10,0]) cylinder(r=10, h=18,center=true);

};

group(){

translate([0,0,0]) cylinder(r=5+SILF, h=50,center=true); //Gewinde vom Stativ

translate([0,0,-(18/2)+3]) cylinder(r=(15.5/2)+SILF, h=25,center=false); //Adapter

translate([0,0,-(18/2)+3+10]) cylinder(r=(18/2)+SILF, h=10,center=false); //Adapter Rand

translate([32,0,0]) cylinder(r=2.5+SILF, h=50,center=true); //M5 Schraube

translate([-32,0,0]) cylinder(r=2.5+SILF, h=50,center=true); //M5 Schraube

}//group

}//diff

translate([(15.5/2)+0.3,-10,(18/2)-5]) cube([4,20,5],center=false); //D-Cut Auflage

Viel Erfolg!

Welche Produkte du dazu benötigst:

Was dich auch noch interessieren könnte:

  • Produkttest

    Eintauchen in den Cyberspace, doch mit welcher VR-Brille?

    von Marc Schaffer

  • Hintergrund

    Raspberry Pi oder Arduino, welcher für welchen Zweck?

    von Marc Schaffer

  • Hintergrund

    Hol dir die Lizenz zum Löten!

    von Marc Schaffer

7 Personen gefällt dieser Artikel


User AvatarUser Avatar

Ich bin ein digitaler Ureinwohner der Generation Commodore 64, online seit Wählscheibe und Akustikkoppler. Neben Videospielen hole ich gerne mit dem 3D-Drucker Dinge aus dem Cyberspace in den Makerspace. Technologie ist einfach faszinierend.


Diese Beiträge könnten dich auch interessieren

Kommentare

Avatar