CNC-Tragflächenschneidemaschine für Modellflugzeuge

Praxis & Tipps | Praxis

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.

Zwei Nurflügel, deren Tragflächen aus beplanktem Styropor sich mit der beschriebenen Maschine herstellen lassen. Bild: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.

Modellflugzeugtragflächen aus Styropor erhalten meist eine schützende Beplankung aus Balsaholz. Bild:Ralf Stoffels

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.

Dieses Profilmuster wurde einmal ohne Beplankungsabzug geschnitten und einmal zur Veranschaulichung mit einem Beplankungsabzug von unrealistisch starken drei Millimetern. Bild:Ralf Stoffels

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.

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.

Schema des Eigenbau-Kabels für die parallele Schnittstelle Bild:Ralf Stoffels

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/

Ü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.
Diese Probestücke waren das Ergebnis einer intensiven Debugging-Session bei der Arbeit an der Maschine. Bild:Ralf Stoffels

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.

Gepfeilte Tragflächen gleichmäßiger Tiefe werden parallel zu Nasen- und Endleiste geschnitten. Bild:Ralf Stoffels / Grafik: c't

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.

Tragflächenverwindungen berücksichtigt die Software durch Polarkoordinatendrehung der Profildaten. Bild:Ralf Stoffels / Grafik: c't

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:

Nach dem Strahlensatz vergrößerte und verkleinerte Profile auf Höhe der Drahtführungen stellen sicher, dass der heiße Draht an den Schmalseiten des Styroporblocks das Profil in der gewünschten Größe beschreibt. Bild:Ralf Stoffels / Grafik: c't
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:

Das implementierte Näherungsverfahren zieht zwar nicht an jeder Stelle genau die identische Beplankungsdicke ab, für die üblichen stumpfen Winkel der Profilbeschreibungen und die dünnen Beplankungsstärken ist es aber hinreichend genau. Bild:Ralf Stoffels / Grafik: c't
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);

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.

Die Schaltpläne und Platinenlayouts wurden mit Eagle erzeugt.

Die c't-Links zum Artikel finden Sie unter www.ct.de/1210164.
Anzeige