CNC-Tragflächenschneidemaschine für Modellflugzeuge
Aus Baumarktstyropor schneidet die hier vorgestellte Spezialmaschine Marke Eigenbau individuelle Tragflächen für Modellflugzeuge – und das fast zum Nulltarif: Die Mechanik besteht aus ausgemusterten Druckerteilen, die Mikrocontroller-Schaltung für die 4-Achsen-Schrittmotorsteuerung baut auf Arduino auf.
- Ralf Stoffels
Es muss nicht immer die klassische Holm-Rippenbauweise aus Balsaholz sein – Tragflächen für Modellflugzeuge kann man auch sehr effizient aus Styropor herstellen. Dessen Schmelzpunkt ist niedrig genug, um die Profilteile sauber mit einem heißen Draht zu schneiden. Die Tragflächenteile werden dann entweder direkt verwendet, etwa für kleinere Nurflügler, oder zur Verstärkung mit Holz beplankt.
Den Schneidedraht spannt man wie eine Sehne über einen Holzbogen oder eine ähnliche Konstruktion und heizt ihn durch Stromfluss. An die passende Kombination von Parametern muss man sich herantasten. Bewährt hat sich 0,3 Millimeter starker Federstahldraht, durch den bei einer Länge von etwa 90 Zentimetern und rund 15 Volt Spannung ein Strom von 1 bis 1,5 Ampere fließt. Für Experimente eignet sich ein Labornetzteil, bei dem man die Spannung langsam hochregelt.
Klassisch schneidet man solche Styroportragflächen von Hand, indem man den gespannten heißen Draht an zwei Profilschablonen entlangführt, die an den Schmalseiten eines Styroporblocks festgepinnt wurden. Das geht am besten zu zweit, wobei sich jeder auf eine der beiden Profilschablonen konzentriert. Dabei kann aber eine Menge schiefgehen: Bei unterschiedlichen Profiltiefen muss der Schneidebogen an der breiteren Seite schneller geführt werden, damit man gleichzeitig an der Tragflächennase und an der Endleiste ankommt. Das Gesamttempo muss stimmen: Zu schneller Vorschub schleppt den Draht in einem Bogen nach, während bei zu langsamer Bewegung zu viel vom Styropor wegschmilzt. Tragflächen auf diese Weise zu schneiden ist zwar eine sehr gesellige Beschäftigung – aber leider auch recht fehleranfällig.
Führt man den heißen Draht nicht von Hand an den Schablonen entlang, sondern lässt ihn von computergesteuerten Schrittmotoren die Profilkoordinaten abfahren, schmilzt der Draht im korrekten Tempo seine Bahn durchs Material. Eine solche Tragflächenschneidemaschine kommt ohne Profilschablonen aus, sodass der Schnitt der theoretischen Profilkontur sehr genau folgt. Beim Zuschnitt von Schablonen und Führen des Drahts an diesen entlang muss man hingegen immer mit kleinen Abweichungen rechnen – egal, ob man die Schablonen mit der Laubsäge oder mit einem Lasercutter angefertigt hat.
Die Idee einer solchen Schneidemaschine für Tragflächen ist nicht neu – man kann sie für etwa 2000 Euro fertig kaufen. Mit Kreativität und einem soliden Fundus an ausgemusterten Computerteilen geht es aber auch im Eigenbau für etwa 20 Euro. Ein Artikel in c't 10/12 beschreibt den Aufbau ausführlich; dieser Online-Artikel enthält lediglich ergänzende Informationen.
Brennen des Arduino-Bootloaders in den Atmel-Mikrocontroller
Damit sich der Mikrocontroller ohne Programmiergerät über die serielle Schnittstelle programmieren lässt, muss zuerst der Arduino-Bootloader installiert werden.
1. Man braucht hierzu ein spezielles Programmierkabel und die Software AVRDUDE. Im Beispiel wurde ein Eigenbau-Kabel für die parallele Schnittstelle verwendet, mit entsprechend veränderten Parametern funktioniert das Brennen des Bootloaders aber auch mit Geräten wie STK500/STK600 oder AVRISP mkII problemlos.
2. Das Setzen der Fuse-Bits mit AVRDUDE erledigen die folgenden Kommandozeilenaufrufe:
avrdude -c dapa -p m168 -F -U lfuse:w:=0xFF:m
avrdude -c dapa -p m168 -F -U hfuse:w:=0xDD:m
avrdude -c dapa -p m168 -F -U efuse:w:=0x00:m
Im Auslieferungszustand steht efuse
auf 0x01
. Belässt man es dabei, dann startet der Arduino-Klon nach dem ersten Laden eines Anwenderprogramms immer wieder dieses Programm und nicht mehr den Bootloader. Setzt man das Fuse-Bit hingegen auf 0x00
, startet bei jedem Einschalten des Mikrocontrollers der Bootloader.
Die Optionen bedeuten:
-c dapa
— Auswahl der parallelen Schnittstelle für den Programmieradapter
-p m168
— Auswahl des Mikrocontrollers ATmega 168
-F
— Signatur wird ignoriert
Wichtig: Manchmal wird ein ATmega 168p statt des ATmega 168 geliefert. Beide funktionieren identisch. Doch der 168p liefert eine andere Signatur zurück, was AVRDUDE veranlässt, das Programmieren zu verweigern. Ignoriert man die Signatur, so wird auch der ATMEGA 168p akzeptiert.
3. Das Brennen des Bootloaders erfolgt über das Kommando:
avrdude -c dapa -p m168 -F -U flash:w:ATmegaBOOT_168_diecimila.hex
Die Hex-Datei mit dem Bootloader findet man nach der Installation der Arduino-IDE unter:
<home>/arduino-0021/hardware/arduino/bootloaders/atmega/
Details zur Software
Über die GUI-Eingabefelder kann man:
- die Profilgrößen skalieren
- einen Verwindungswinkel der beiden Profile gegeneinander angeben
- einen Pfeilwinkel der Tragfläche angeben
- die Segmentlänge angeben
- die Beplankungsdicke abziehen.
Alle Maßangaben erfolgen in Millimetern und Grad. Beim Anstellwinkelwinkel heben negative Winkel die Endleiste an, positive senken sie ab. Positive Pfeilwinkel beschreiben im Flugzeugdesign im allgemeinen eine Pfeilung nach hinten, während hier ein negativer Winkel einen nach vorne gepfeilten Flügel ergibt. In diesem Fall spielt das allerdings keine Rolle, da der Pfeilwinkel der PCHotwire nur dazu dient, die x-Koordinaten der Profile passend zu stauchen. Den Schnitt an den Segmentenden muss man von Hand im korrekten Winkel durchführen.
Insgesamt ist die Software flexibel genug, um trapezförmige Segmente auf Maß zu schneiden, aus denen sich Tragflächen zusammensetzen lassen, die sich beispielsweise an eine elliptische Geometrie annähern.
Alle eben aufgezählten Modifikationen ziehen Umrechnungen der rohen Stützstellen-Daten nach sich. Die aufbereiteten Daten werden in vier Arrays geschrieben, plx
und ply
für das Profil links und prx
sowie pry
für das Profil rechts.
Für die gewünschte Profiltiefe müssen lediglich die Koordinaten mit der Millimeterangabe aus dem Textfeld multipliziert werden. Auch der Pfeilungswinkel sorgt für wenig Probleme: Durch ihn steht das Profil schräg zur Schneiderichtung und muss entsprechend gestaucht werden. Das betrifft nur die X-Koordinaten, welche die Software einfach mit dem Cosinus des Pfeilungswinkels multipliziert.
Für die Verwindung der Enden eines Flächensegments gegeneinander wird hingegen eine Polarkoordinatendrehung der Profildaten fällig. Die Variable len
enthält den Abstand von der Endleiste bis zur aktuellen Stützstelle, der Winkel alphaOrg
bezieht sich auf das noch nicht verwundene Profil. Zu diesem wird der gewünschte Winkel deltaAlpha
addiert und das Ergebnis anschließend wieder in kartesische Koordinaten umgewandelt:
len = sqrt(sq(plx[i]) + sq(ply[i]));
if (len!=0) alphaOrg = asin(ply[i]/len) / PI * 180;
else alphaOrg = 0;
alphaNew = alphaOrg + deltaAlpha;
plx[i] = len * cos(alphaNew / 180 * PI);
ply[i] = len * sin(alphaNew / 180 * PI);
In der Regel ist die Segmentlänge des zu schneidenden Tragflächenstücks kleiner als der Abstand zwischen den beiden Führungen des Drahtes. Sind trapezförmige Segmente zu fertigen, müssen die Drahtführungen deshalb einen vergrößerten oder verkleinerten Weg abfahren, damit der Draht an den Enden der Tragfläche genau die Profilkontur in der gewünschten Größe beschreibt. Hierbei hilft der Strahlensatz:
XL0 = XL + (L0 – L) * (XL – XR) / 2L;
XR0 = XR + (L0 – L) * (XR – XL) / 2L;
In den meisten Fällen soll die Styroportragfläche mit dünnem Balsaholz oder anderem Furnier beplankt werden. Damit Kern und Beplankung zusammen das richtige Profil bilden, muss beim Schneiden die Beplankungsstärke vom Kern abgezogen werden. Einfach die y-Koordinaten zu reduzieren, reicht aber nicht – strenggenommen müsste man für jedes Paar benachbarter Stützstellen des Profils eine Gerade und eine zweite parallel dazu im Abstand der Beplankungsstärke ziehen, um anschließend die Schnittpunkte der gezogenen Parallelen zu berechnen und diese als neue Koordinaten einzusetzen. Da die Beplankung der Modellflugzeugtragflächen aber in der Regel nur wenige Millimeter stark ist und die Winkel zwischen den Verbindungen je zweier Stützstellen in der Regel nahe 180 Grad liegen, implementiert der Code stattdessen ein hinreichend genaues Näherungsverfahren.
Hierbei wird zunächst der Winkel zwischen der geraden Verbindung zwischen zwei Stützstellen gegenüber der Waagerechten berechnet. Dann wird die Senkrechte auf diese Verbindung gefällt und die Stützstelle daran entlang um Beplankungsdicke d ins Innere des Profils verschoben – ob nach unten oder nach oben, hängt davon ab, ob die Koordinate die Ober- oder die Unterseite der Tragfläche beschreibt:
alphaOrg = asin((y1-y2) / sqrt(sq(y1-y2)+sq(x1-x2)));↓
alphaNew = alphaOrg-PI/2;
if (x1-x2>=0) dir=1;
else dir=-1;
plx[i] = plx[i] - d * cos(alphaNew);
ply[i] = ply[i] - d * dir * sin(alphaNew);
Downloads
Der Code für die beiden Teile der Maschine ist in zwei separaten Zip-Archiven erhältlich. Die entpackten Ordner müssen ins jeweilige Sketchbook-Verzeichnis der Processing- und Arduino-Installation kopiert werden. Weitere Hinweise finden Sie auf der Webseite des Autors oder auf den c't-Projektseiten zu Arduino und Processing.
- Archiv mit Processing-Code
- Archiv mit Arduino-Code
Die Schaltpläne und Platinenlayouts wurden mit Eagle erzeugt.
- Archiv mit Platinenlayouts und Schaltpläne