<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Tutorial on Schallberts Blog</title><link>https://blog.schallbert.de/tags/tutorial/</link><description>Recent content in Tutorial on Schallberts Blog</description><generator>Hugo</generator><language>de</language><lastBuildDate>Tue, 10 Feb 2026</lastBuildDate><atom:link href="https://blog.schallbert.de/tags/tutorial/index.xml" rel="self" type="application/rss+xml"/><item><title>Werkzeugvermessung automatisieren</title><link>https://blog.schallbert.de/edingcnc-macro-explained/</link><pubDate>Tue, 10 Feb 2026</pubDate><author>Schallbert</author><guid>https://blog.schallbert.de/edingcnc-macro-explained/</guid><description type="html">&#10; &lt;img src="https://blog.schallbert.de/assets/images/posts/2026-02-10-tls-thumb.avif"&#10; class="post-cover"&#10; alt="Image: Drawing of Tool Length Sensor on stock material with distance spindle collet, visualizing Z0 measurement"&#10; title="Werkzeugvermessung automatisieren" /&gt;&#10;&lt;p&gt;&lt;figure class="media-frame media-frame--right"&gt;&#10; &lt;img src="https://blog.schallbert.de/assets/images/posts/2026-02-10-tls.avif" alt="Image: Image: Drawing of Tool Length Sensor on stock material with distance to the spindle collet, visualizing Z0 measurement"&gt;&lt;/figure&gt;&#10;Mich erreichen immer wieder Fragen zu meinem &lt;a href="https://blog.schallbert.de/macros-for-cnc/"&gt;Post über CNC-Makros&lt;/a&gt;. In diesem Beitrag möchte ich ein paar Antworten geben und Details zur Vermessung und Kompensation verschiedener Werkzeuglängen teilen.&lt;/p&gt;&#10;&lt;h2 id="frage-wie-berechnet-das-makro-die-werkzeuglänge"&gt;Frage: Wie berechnet das Makro die Werkzeuglänge?&lt;/h2&gt;&#10;&lt;p&gt;Im Abschnitt &lt;a href="https://blog.schallbert.de/macros-for-cnc/#function-measure-tool-length"&gt;Werkzeuglänge Vermessen&lt;/a&gt; steht folgender Code:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-ruby" data-lang="ruby"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;G53&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;G00&lt;/span&gt; Z&lt;span style="color:#f92672"&gt;[&lt;/span&gt;zSafety&lt;span style="color:#f92672"&gt;]&lt;/span&gt; ; &lt;span style="color:#75715e"&gt;# Go to safety height (machine coordinates)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ae81ff"&gt;2&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;G53&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;G00&lt;/span&gt; X&lt;span style="color:#f92672"&gt;[&lt;/span&gt;xPosTls&lt;span style="color:#f92672"&gt;]&lt;/span&gt; Y&lt;span style="color:#f92672"&gt;[&lt;/span&gt;xPosTls&lt;span style="color:#f92672"&gt;]&lt;/span&gt; ; &lt;span style="color:#75715e"&gt;# Go to tool length sensor&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ae81ff"&gt;3&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;G53&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;G00&lt;/span&gt; Z&lt;span style="color:#f92672"&gt;[&lt;/span&gt;zSpindleTip &lt;span style="color:#f92672"&gt;+&lt;/span&gt; toolLengthEst &lt;span style="color:#f92672"&gt;+&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;10&lt;/span&gt;&lt;span style="color:#f92672"&gt;]&lt;/span&gt; ;&lt;span style="color:#75715e"&gt;# Move Z down to 10mm above estimated tool tip&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Was passiert in den Zeilen &lt;code&gt;1-3&lt;/code&gt;?&#10;Wenn &lt;code&gt;Z=0&lt;/code&gt; im Maschinenkoordinatensystem (&lt;code&gt;G53&lt;/code&gt;) die höchste Position ist, sind &lt;code&gt;zSpindleTip&lt;/code&gt; und &lt;code&gt;toolLengthEst&lt;/code&gt; dann negative Werte?&lt;/p&gt;&#10;&lt;h3 id="antwort"&gt;Antwort:&lt;/h3&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;Diese Zeile fährt die Maschine zum in Variable &lt;a href="https://github.com/Schallbert/macro_edingCNC_sorotec/blob/a547e36c0f47490464e1fdb56d1a4b0e706b44fe/macro.cnc#L341" target="_blank" rel="noopener noreferrer" class="external-link"&gt;#4506&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt; hinterlegten Wert. Bei mir ist er &lt;code&gt;0&lt;/code&gt;, also maximale Z-Höhe. Dieser Wert bleibt permanent gespeichert (siehe &lt;a href="https://github.com/Schallbert/macro_edingCNC_sorotec/tree/main?tab=readme-ov-file#permanent" target="_blank" rel="noopener noreferrer" class="external-link"&gt;hier&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt;) und man muss ihn vorher im Makro-Setup-Dialog festlegen.&lt;/li&gt;&#10;&lt;li&gt;Führt eine Bewegung zum Werkzeuglängensensor (WZLS) im Maschinenkoordinatensystem aus. Dafür habe ich meinen Sensor an einem festen Punkt auf der Maschine platziert.&lt;/li&gt;&#10;&lt;li&gt;Mit &lt;code&gt;zSpindleTip&lt;/code&gt; (Variable &lt;code&gt;#4509&lt;/code&gt;) ist die Höhe auf der &lt;code&gt;Z-Achse&lt;/code&gt; gemeint, in der die Spindelnase den Werkzeuglängensensor freitastet. Dieser Wert ist negativ. Weshalb? Der größte Wert der Z-Achse ist &lt;code&gt;Null&lt;/code&gt;, wenn sie sich ganz am oberen Anschlag der Maschine befindet. Senkt man dia Achse von hier aus zum WZLS ab, bewegt man sie in negative Z-Richtung. Addiert man die geschätzte Werkzeuglänge &lt;code&gt;toolLengthEst&lt;/code&gt; sowie eine Sicherheitshöhe von &lt;code&gt;10mm&lt;/code&gt; dazu (falls man sich bei der Werkzeuglängenschätzung vertan hat), bleibt aber unter dem mechanischen Anschlag der Z-Achse, so ist der Wert noch immer negativ. Die Spindelnase hat nun aber genügend Luft zum WZLS, weil jetzt virtuell Werkzeug und Sicherheitshöhe hinzuaddiert wurden.&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;blockquote&gt;&#10;&lt;p&gt;Pro Tipp: Im &amp;ldquo;Variables&amp;rdquo; Tab von EdingCNC kann man sich Werte von Variablengruppen anzeigen lassen. Man gibt eine Gruppe ein, z.B. &lt;code&gt;#4500&lt;/code&gt; und erhält die Live-Werte aller zehn Variablen.&lt;/p&gt;&#10;&lt;/blockquote&gt;&#10;&lt;p&gt;Um das gut nachvollziehen zu können bietet sich an, die CNC-Software zum Ausprobieren nebenbei im Simulationsmodus laufen zu lassen.&#10;Konkretes Beispiel:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-ruby" data-lang="ruby"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;zSafety &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt; ;&lt;span style="color:#75715e"&gt;# machine coordinates, Z-axis at top notch&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;zSpindleTip &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;86&lt;/span&gt;&lt;span style="color:#f92672"&gt;.&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;43&lt;/span&gt; ;&lt;span style="color:#75715e"&gt;# machine coordinates, where empty spindle collet touches TLS&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;toolLengthEst &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;35&lt;/span&gt; ;&lt;span style="color:#75715e"&gt;# the length the tool is protruding from spindle collet&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;G53&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;G00&lt;/span&gt; Z&lt;span style="color:#f92672"&gt;[-&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;86&lt;/span&gt;&lt;span style="color:#f92672"&gt;.&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;43&lt;/span&gt; &lt;span style="color:#f92672"&gt;+&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;35&lt;/span&gt; &lt;span style="color:#f92672"&gt;+&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;10&lt;/span&gt;&lt;span style="color:#f92672"&gt;]&lt;/span&gt; &lt;span style="color:#75715e"&gt;# = -41.32mm, so below max Z height&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Die Benennung der Variablen habe ich in meinem Makro-Repository &lt;a href="https://github.com/Schallbert/macro_edingCNC_sorotec/tree/main?tab=readme-ov-file#permanent" target="_blank" rel="noopener noreferrer" class="external-link"&gt;auf Github&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt; abgelegt.&lt;/p&gt;&#10;&lt;h3 id="frage-wie-berechne-ich-die-werkstückhöhe-nach-einer-werkzeugvermessung"&gt;Frage: Wie berechne ich die Werkstückhöhe nach einer Werkzeugvermessung?&lt;/h3&gt;&#10;&lt;p&gt;Folgendes Szenario: Man vermisst das Werkzeug und bestimmt anschließend per Makro die Werkstückhöhe. Wenn ich nun die Werkzeuglänge verändere ohne das Werkzeugwechselmakro aufzurufen, stimmt der Werkstücknullpunkt ja nicht mehr. Mit einem kürzeren Werkzeug liegt der Nullpunkt &amp;ldquo;zu tief&amp;rdquo;, bei einem Längeren &amp;ldquo;zu hoch&amp;rdquo;.&lt;/p&gt;&#10;&lt;p&gt;Wie kann man dieses Problem lösen?&lt;/p&gt;&#10;&lt;h3 id="antwort-mehrere-lösungswege"&gt;Antwort: Mehrere Lösungswege&lt;/h3&gt;&#10;&lt;p&gt;Aus meiner Sicht gibt es hier drei Lösungswege.&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;Werkzeuglängenänderung immer über das Werkzeugwechselmakro laufen lassen. Man kann dort ja dieselbe Werkzeugnummer erneut eingeben.&lt;/li&gt;&#10;&lt;li&gt;Den Z-Nullpunkt über die Werkstückvermessung neu setzen (nicht empfohlen&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;)&lt;/li&gt;&#10;&lt;li&gt;Ohne Makro: Per Kommando &lt;code&gt;G92&lt;/code&gt; das Z-Koordinatensystem verschieben. Beispiel folgt.&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;figure class="media-frame media-frame--center"&gt;&#10; &lt;img src="https://blog.schallbert.de/assets/images/posts/2026-02-10-Enter-G92.avif" alt="Image: Coordinate shift G92 executed in the CNC software&amp;#39;s control terminal"&gt;&lt;/figure&gt;&#10;&lt;h3 id="lösung-3-koordinatensystem-verschieben"&gt;Lösung #3: Koordinatensystem verschieben&lt;/h3&gt;&#10;&lt;p&gt;&lt;figure class="media-frame media-frame--right"&gt;&#10; &lt;img src="https://blog.schallbert.de/assets/images/posts/2026-02-10-coordshift-before.avif" alt="Image: CNC&amp;#39;s coodinate window showing machine and workpiece coordinates before shift to reflect a change of tools"&gt;&lt;/figure&gt;&#10;Man kann das Werkstückkoordinatensystem mit den Befehl &lt;a href="https://www.linuxcnc.org/docs/html/gcode/g-code.html#gcode:g92" target="_blank" rel="noopener noreferrer" class="external-link"&gt;&lt;code&gt;G92 Coordinate System Offset&lt;/code&gt;&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt; verschieben. Führt man ihn aus, so wird die ihm übergebene Zahl der angewählten Achse als neuer Wert im Koordinatensystem übernommen.&lt;/p&gt;&#10;&lt;p&gt;In diesem Fall wollen wir ja nur die relative Position verschieben und damit den Unterschied der Werkzeuglängen zueinander ausgleichen. Machen wir es mal konkret:&lt;/p&gt;&#10;&lt;p&gt;Nehmen wir an, das alte Werkzeug &lt;code&gt;T17&lt;/code&gt; hat eine freie Länge von &lt;code&gt;32mm&lt;/code&gt; und das neue Werkzeug (wieder &lt;code&gt;T17&lt;/code&gt;, denn wir spannen in diesem Beispiel nur um oder setzen ein Schlichtwerkzeug mit gleichen Schnittdaten ein) eine freie Länge von &lt;code&gt;24mm&lt;/code&gt;. Der neue Wert ist kürzer, und daher muss der Nullpunkt um &lt;code&gt;8mm&lt;/code&gt; nach unten wandern. &amp;ldquo;Nach unten&amp;rdquo; ist im Koordinatensystem der Z-Achse ein negativer Wert.&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-ruby" data-lang="ruby"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;;&lt;span style="color:#75715e"&gt;# Pseudocode&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;;&lt;span style="color:#75715e"&gt;# (CamelCaseWord steht für eine Variablennummer wie #5003):&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;G92&lt;/span&gt; Z&lt;span style="color:#f92672"&gt;[&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;AktuelleZPosition&lt;/span&gt; &lt;span style="color:#f92672"&gt;+&lt;/span&gt; (&lt;span style="color:#66d9ef"&gt;AlteWerkzeuglänge&lt;/span&gt; &lt;span style="color:#f92672"&gt;-&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;NeueWerkzeuglänge&lt;/span&gt;)&lt;span style="color:#f92672"&gt;]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;;&lt;span style="color:#75715e"&gt;# 20mm + (32mm - 24mm ) = 20mm + 8mm = 28mm &lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="verschiebung-werkstücknullpunkt-vs-werkstückkoordinatensystem"&gt;Verschiebung Werkstücknullpunkt vs. Werkstückkoordinatensystem&lt;/h3&gt;&#10;&lt;p&gt;Diese Rechnung mag erst einmal verwirren, versetzt sie das Koordinatensystem doch nach oben. Aber genau das ist erforderlich, damit der Werkstücknullpunkt relativ zur Werkzeugspitze erhalten bleibt: Das Werkzeug ist &lt;code&gt;8mm&lt;/code&gt; kürzer. Da wir den Werkstücknullpunkt nicht nach unten schieben, muss das Koordinatensystem halt nach oben versetzt werden. So wird die nun längere Strecke zwischen Werkzeugspitze und Werkstück kompensiert.&lt;/p&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Coordinate System&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Tool tip position Z [mm]&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Workpiece position Z [mm]&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Tool top position Z [mm]&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Workpiece position Z [mm]&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Before shift&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Before shift&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;After shift&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;After shift&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Workpiece&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;20&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;0&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;28&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;0&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Machine&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;-41.42&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;-61,42&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;-41.42&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;-69,42&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;p&gt;&lt;figure class="media-frame media-frame--right"&gt;&#10; &lt;img src="https://blog.schallbert.de/assets/images/posts/2026-02-10-coordshift-after.avif" alt="Image: CNC&amp;#39;s coodinate window showing machine and workpiece coordinates after shift to reflect a change of tools. The shift only affects workpiece coordinates."&gt;&lt;/figure&gt;&#10;Man sieht hier, dass sich durch das Versetzen des Koordinatensystems die Position der Werkzeugspitze im &lt;em&gt;Werkstückkoordinatensystem&lt;/em&gt; verändert. Die Z-Achse wird dabei nicht bewegt. Das &lt;em&gt;Maschinenkoordinatensystem&lt;/em&gt; bleibt von dieser Änderung unberührt. Da die Z-Achse nun aber einen weiteren Weg zum Werkstück zurücklegen muss, liegt seine Position im Maschinenkoordinatensystem jetzt um &lt;code&gt;-8mm&lt;/code&gt; unter dem vorigen Wert.&lt;/p&gt;&#10;&lt;h2 id="rahmenbedingungen"&gt;Rahmenbedingungen&lt;/h2&gt;&#10;&lt;p&gt;Die Makros funktionieren nur unter bestimmten Voraussetzungen:&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;Die Werkzeuglänge wurde zuvor gemessen bzw. Werkzeugwechsel werden stets per Makro gesteuert und nicht ohne &amp;ldquo;Wissen&amp;rdquo; der Maschine&lt;/li&gt;&#10;&lt;li&gt;Der Werkstücknullpunkt wird bei bereits bekannter Werkzeuglänge ermittelt.&lt;/li&gt;&#10;&lt;li&gt;Es gab keinen Not-Aus oder einen anderen kritischen Fehler. Dies würde den flüchtigen Speicher für die relevanten Variablen löschen.&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;div class="footnotes" role="doc-endnotes"&gt;&#10;&lt;hr&gt;&#10;&lt;ol&gt;&#10;&lt;li id="fn:1"&gt;&#10;&lt;p&gt;Nach einem Werkzeugwechsel die Werkstückhöhe in Z erneut einzumessen verschiebt meiner Ansicht nach den falschen Parameter. In Wirklichkeit hat sich doch nicht die Höhe des Werkstückes geändert, sondern die Position der Werkzeugspitze. Daher würde ich stets vorziehen, den sich ändernden Parameter anzupassen.&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;/div&gt;&#10;</description></item><item><title>Graustufenbilder auf Dibond</title><link>https://blog.schallbert.de/halftone-image-on-dibond/</link><pubDate>Tue, 25 Feb 2025</pubDate><author>Schallbert</author><guid>https://blog.schallbert.de/halftone-image-on-dibond/</guid><description type="html">&#10; &lt;img src="https://blog.schallbert.de/assets/images/posts/2025-02-25-bloglogo-stipple-thumb.jpg"&#10; class="post-cover"&#10; alt="Image: halftone image engraved with my CNC"&#10; title="Graustufenbilder auf Dibond" /&gt;&#10;&lt;p&gt;Im letzten Artikel hatte ich Dibond (Aluminium-Sandwichplatte) als Material zum Zerspanen wiederentdeckt. Ich setze es aus Umweltgründen - Verbundmaterialien sind nichts, was ich für besonders nachhaltig oder recyclebar halte - immer seltener ein. Dennoch üben die wunderschönen Oberflächen immer wieder eine gewisse Anziehungskraft auf mich aus. Nun denn - zur Sache!&lt;/p&gt;&#10;&lt;h2 id="bloglogo-als-punktwolke"&gt;Bloglogo als Punktwolke&lt;/h2&gt;&#10;&lt;p&gt;Inzwischen war ich in der Lage, ein von Stipplegen erzeugtes Bild mal auf die Fräse zu werfen. Dafür musste ich ein im Vorgängerartikel &lt;a href="https://blog.schallbert.de/halftone-cnc/"&gt;Graustufenbilder mit der CNC fräsen&lt;/a&gt; noch vorhandenes Problem lösen: In meinem meistgenutzten CAM-Werkzeug nämlich können Fräspfade für punktebasierte Halbtonbilder kaum erstellt werden, da jeder der über 2200 Punkte einzeln mit einer Fräsoperation versehen werden müsste.&lt;/p&gt;&#10;&lt;p&gt;&lt;em&gt;CADasCAM&lt;/em&gt; hingegen ermöglicht es, ganze Gruppen von Elementen ein- und derselben Fräsaktion hinzuzufügen. Nun fragte ich mich, mit welchem Fräser ich in Dibond am besten arbeiten solle, denn ich habe ja nur eine sehr dünne Deckschicht zur Verfügung.&lt;/p&gt;&#10;&lt;h3 id="simulation-radienfräser"&gt;Simulation Radienfräser&lt;/h3&gt;&#10;&lt;p&gt;&lt;figure class="media-frame media-frame--right"&gt;&#10; &lt;img src="https://blog.schallbert.de/assets/images/posts/2025-02-25-r2-ballnose-approximation.jpg" alt="Image: my drawing for V-cut to radius cutter approximation"&gt;&lt;/figure&gt;&#10;Ich entschied mich für einen Radienfräser mit Halbrundkopf. Für diesen hat das CAM allerdings keine Berechnungsvorschrift, sodass er sich nicht ohne Weiteres auswählen lässt. Nach Rücksprache mit dem Hersteller kam die Idee auf, den Radienfräser durch einen V-cut mit Abflachung an der Spitze für das CAM zu simulieren, tatsächlich auf der Fräse aber den Kugelkopf einzusetzen.&lt;/p&gt;&#10;&lt;p&gt;Um hier passende Werte zu erhalten, fertigte ich ein paar Zeichnungen an. In der Tabelle unten sind Näherungswerte festgehalten für den Falle, dass die Eintauchtiefe &lt;code&gt;0.3mm&lt;/code&gt; nicht überschreitet. Nun konnte ich die Pfadberechnung im CAM durchführen und sogar eine Tiefenbegrenzung von &lt;code&gt;0.22mm&lt;/code&gt; einhalten. Die flachsten Bereiche haben eine Gravurtiefe von lediglich &lt;code&gt;0.10mm&lt;/code&gt;.&lt;/p&gt;&#10;&lt;p&gt;Bei der Pfadberechnung ist zu beachten, dass die Rückzugshöhen möglichst gering ausfallen sollten. Dann muss die Z-Achse der Maschinen nicht für jeden Punkt so weit hochfahren. Ich halte einen Wert von &lt;code&gt;0.5mm&lt;/code&gt; für angemessen.&lt;/p&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Radienfräser&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Simulation durch V-Cut&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;r=3mm&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;140°, 1.0mm Abflachung&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;r=2mm&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;140°, 0.5mm Abflachung&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;h3 id="fräsvorgang"&gt;Fräsvorgang&lt;/h3&gt;&#10;&lt;p&gt;Die Motivgröße für die Gravur beträgt &lt;code&gt;180x180mm&lt;/code&gt; und ich fräse mit folgenden Werten: &lt;code&gt;Radienfräser 2s r3 6mm, S20000, F1800&lt;/code&gt;. Ich durchsteche die Schutzfolie der Dibondplatte, deren Dicke ich nicht kompensiere. Ich verwende eine geringe Menge Schmiermittel zur Verbesserung der Schnittqualität. Nach knapp &lt;code&gt;11&lt;/code&gt; Minuten ist der Fräsvorgang beendet.&lt;/p&gt;&#10;&lt;figure class="media-frame media-frame--center"&gt;&#10; &lt;img src="https://blog.schallbert.de/assets/images/posts/2025-02-25-r2-bloglogo-stipple.avif" alt="Image: Bloglogo as halftone dot image in Dibond, black"&gt;&lt;/figure&gt;&#10;&lt;h3 id="beobachtungen"&gt;Beobachtungen&lt;/h3&gt;&#10;&lt;p&gt;Das Motiv ist in diesem Versuch schon einmal viel deutlicher zu erkennen. Leider habe ich dennoch klar ein Problem mit der Oberflächenebenheit. So ist im mittleren Bereich rechts beispielsweise zu tief graviert (Aufbauschneide - siehe Video - dort ist die Fräse zum Schluss unterwegs), während die Graviertiefe ganz oben rechts und oben mittig nicht ausreichend erscheint.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Fräse und Fräser haben überhaupt kein Problem mit dem Material. Der Gravurvorgang klingt ein wenig wie die Arbeit mit der Ständerbohrmaschine, unterbrochen von Positioniergeräuschen der Schrittmotoren.&lt;/li&gt;&#10;&lt;li&gt;Die für Dibond verwendete Aluminiumsorte &lt;em&gt;AlMg1&lt;/em&gt; ist weich und zäh. Sie eignet sich nicht gut zum Zerspanen.&lt;/li&gt;&#10;&lt;li&gt;Fräser tendieren hier zum Erzeugen von &lt;a href="https://en.wikipedia.org/wiki/Built_up_edge" target="_blank" rel="noopener noreferrer" class="external-link"&gt;Aufbauschneiden&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt;, welche den Fräserradius vergrößern und die Schnittqualität verschlechtern.&lt;/li&gt;&#10;&lt;li&gt;Die Schutzfolie verhindert Ausrisse und Spanränder.&lt;/li&gt;&#10;&lt;li&gt;Aufbringen von etwas Schmiermittel ist eine gute Idee.&lt;/li&gt;&#10;&lt;li&gt;Selbst auf einem Vakuumtisch ruiniert jedes Staubkorn unter dem Werkstück die Fräsarbeit. Wenige hundertstel Millimeter Höhendifferenz haben große Auswirkung auf die Punktgröße und führen zu Verfälschungen.&lt;/li&gt;&#10;&lt;li&gt;Das Maschinenbett muss absolut eben sein oder die Maschine muss über eine hochwertige, aktive Höhenkompensation verfügen; z.B. mittels vorheriger Oberflächenvermessung durch einen &lt;a href="https://blog.schallbert.de/touching-off/"&gt;Kantenfinder&lt;/a&gt;. Meine Steuersoftware unterstützt das Verfahren sogar unter dem Namen &lt;em&gt;ZheightComp&lt;/em&gt;.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="fazit"&gt;Fazit&lt;/h3&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Ich mag Dibond als Material sehr, aber es scheint meine Zuneigung nicht zu erwidern.&lt;/li&gt;&#10;&lt;li&gt;Mit meinen technischen Mitteln bekomme ich Gravuren nicht mit wiederholbar in guter Qualität hin.&lt;/li&gt;&#10;&lt;li&gt;Vielleicht sollte ich stattdessen Plastik oder Holz verarbeiten. Oder einen Laser verwenden&amp;hellip;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;Zum Abschluss noch ein kurzes Zeitraffer-Video des Fräsvorganges.&lt;/p&gt;&#10;&lt;figure class="media-frame media-frame--center media-frame--video"&gt;&#10; &lt;div class="media-video"&gt;&lt;iframe&#10; src="https://makertube.net/videos/embed/qTd6Ad2QStCp5AiWmrHZem"&#10; title="Graustufenbilder mit der CNC herstellen - Teil2"&#10; loading="lazy"&#10; allow="autoplay; fullscreen; picture-in-picture"&#10; allowfullscreen&#10; style="width: 100%; height: auto; min-height: 315px; aspect-ratio: 16/9;"&#10; &gt;&lt;/iframe&gt;&lt;/div&gt;&#10; &lt;figcaption class="media-caption"&gt;&#10; &lt;span class="caption-text"&gt;Graustufenbilder mit der CNC herstellen - Teil2&lt;/span&gt;&lt;a href="https://makertube.net/videos/embed/qTd6Ad2QStCp5AiWmrHZem" class="attr-link" target="_blank" rel="noopener noreferrer"&gt;↗&lt;/a&gt;&lt;/figcaption&gt;&lt;/figure&gt;&#10;&lt;h2 id="saturn-als-ascii-art"&gt;Saturn als ASCII-Art&lt;/h2&gt;&#10;&lt;p&gt;Halbtonbilder kann man statt mit Linien, Wellen, Punkten natürlich auch mit Mustern herstellen. Als Beispiel habe ich mal das Bild des Planeten Saturn von &lt;a href="https://asciiart.website/index.php?art=nature/astronomy" target="_blank" rel="noopener noreferrer" class="external-link"&gt;Christopher Johnsons ASCII Art&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt; für die Fräse aufbereitet.&lt;/p&gt;&#10;&lt;h3 id="cadcam"&gt;CAD/CAM&lt;/h3&gt;&#10;&lt;p&gt;Für das richtige Größenverhältnis wird eine Schriftart benötigt, bei der jedes Zeichen dieselbe Setzbreite besitzt. Ich wähle die TrueType-Schriftart &lt;em&gt;Courier New&lt;/em&gt; und passe Schriftgröße und Zeilenabstand so an, dass das Motiv auf mein Material passt und die Gravur nicht die Deckschicht perforiert.&lt;/p&gt;&#10;&lt;p&gt;Dies zwingt mich zur Verwendung eines &lt;code&gt;1/8&amp;quot; Gravurstichel mit 36° Spitzenwinkel und 0.1mm Abflachung&lt;/code&gt;. Ich hätte hier einen Radienfräser bevorzugt: Im weichen Dibond kommt es bei spitzwinkligen Sticheln zu Materialaufwurf und -Verschmierung. Dies führt zu unsauberen Linien und einer rauen Oberfläche. Da das Werkstück sehr klein ist, würde die Schrift jedoch viel zu breit ausfallen.&lt;/p&gt;&#10;&lt;p&gt;Die Pfadberechnung zeigt, dass ich auf dem nur &lt;code&gt;80x80mm&lt;/code&gt; großen Werkstück Fettdruck wählen muss, um meine Mindesttiefe von &lt;code&gt;0.08mm&lt;/code&gt; überhaupt zu erreichen.&lt;/p&gt;&#10;&lt;h3 id="fertigung"&gt;Fertigung&lt;/h3&gt;&#10;&lt;p&gt;Ich habe das Bild vom Saturn zweimal gefertigt: Auf &lt;code&gt;80x80mm&lt;/code&gt;, um die maximale Auflösung im Material zu testen und auf &lt;code&gt;180x180mm&lt;/code&gt; (Abbildung unten) zum Prüfen der Kontrastwirkung.&lt;/p&gt;&#10;&lt;figure class="media-frame media-frame--center"&gt;&#10; &lt;img src="https://blog.schallbert.de/assets/images/posts/2025-02-25-halftone-saturn.avif" alt="Image: Halftone image of Saturn from my CNC machine. Image rights: asciiart.website"&gt;&lt;/figure&gt;&#10;&lt;p&gt;Ich bin zufrieden mit dem Ergebnis. Der Kontrast ist hoch und die silberweiße Oberfläche des Aluminium(oxyds) sieht auf der mattschwarzen Lackierung richtig edel aus.&lt;/p&gt;&#10;&lt;figure class="media-frame media-frame--center media-frame--video"&gt;&#10; &lt;div class="media-video"&gt;&lt;iframe&#10; src="https://makertube.net/videos/embed/wxcEMorVuY3hVZkseFjXyU"&#10; title="Graustufenbilder mit der CNC fertigen: Teil3"&#10; loading="lazy"&#10; allow="autoplay; fullscreen; picture-in-picture"&#10; allowfullscreen&#10; style="width: 100%; height: auto; min-height: 315px; aspect-ratio: 16/9;"&#10; &gt;&lt;/iframe&gt;&lt;/div&gt;&#10; &lt;figcaption class="media-caption"&gt;&#10; &lt;span class="caption-text"&gt;Graustufenbilder mit der CNC fertigen: Teil3&lt;/span&gt;&lt;a href="https://makertube.net/videos/embed/wxcEMorVuY3hVZkseFjXyU" class="attr-link" target="_blank" rel="noopener noreferrer"&gt;↗&lt;/a&gt;&lt;/figcaption&gt;&lt;/figure&gt;&#10;&lt;h2 id="qr-codes"&gt;QR-Codes&lt;/h2&gt;&#10;&lt;p&gt;Wenn ich schon einmal mit Dibond arbeite: Ich probiere gleich noch aus, ein paar QR-Codes mit einem Radienfräser einzubringen.&#10;Dieses Mal verwende ich verschiedene Maschinen.&lt;/p&gt;&#10;&lt;figure class="media-frame media-frame--center"&gt;&#10; &lt;img src="https://blog.schallbert.de/assets/images/posts/2025-02-25-qr-dibond.avif" alt="Image: QR-codengrave tests in dibond with a radius cutter"&gt;&lt;/figure&gt;&#10;&lt;h3 id="auf-der-hobbyline"&gt;Auf der Hobbyline&lt;/h3&gt;&#10;&lt;p&gt;In schwarz graviere ich auf der mir zur Verfügung gestellten Hobbyline im übertakteten Gravurmodus. Ich fixiere das Werkstück mit einigen Punkten Doppelklebeband. Ich fräse trocken ohne Schmiermittel. Beobachtungen:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Die Gravurtiefe scheint mit zunehmender Linienlänge zuzunehmen (Aufbauschneide, Fräser schmiert ins Material)&lt;/li&gt;&#10;&lt;li&gt;Teilweise wölbt sich die Lackoberfläche am Fräsrand nach oben&lt;/li&gt;&#10;&lt;li&gt;Sehr unsaubere Fräskanäle, starke Richtungsabhängigkeit&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="auf-der-basicline"&gt;Auf der Basicline&lt;/h3&gt;&#10;&lt;p&gt;Hier nutze ich natürlich meinen Vakuumtisch und profitiere vom viel stabileren Aufbau. Ich verwende eine geringe Menge Schmiermittel. War gespannt, ob die das weiße Material trotzdem ausreichende Kontraste zulässt. Beobachtungen:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Auch meine &lt;a href="https://blog.schallbert.de/projects/qr-codengrave/"&gt;QR-codeengrave&lt;/a&gt; Software muss richtig bedient werden. Ansonsten verschieben sich wie hier Nullpunkte und Größenverhältnisse. Folge: Mein Handy erkennt den QR-Code nicht 😐&lt;/li&gt;&#10;&lt;li&gt;Die viel bessere Niederhaltung verhindert starke Unterschiede in der Fräskanalbreite.&lt;/li&gt;&#10;&lt;li&gt;Dennoch sieht man die Austauchpunkte der Maschine und manchmal auch mitgeschleifte Späne.&lt;/li&gt;&#10;&lt;li&gt;Die Fräsqualität ist noch immer nicht befriedigend.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="fazit-1"&gt;Fazit&lt;/h2&gt;&#10;&lt;p&gt;&lt;figure class="media-frame media-frame--right"&gt;&#10; &lt;img src="https://blog.schallbert.de/assets/images/posts/2023-11-01_smallparts-thumb.jpg" alt="Image: single-flute cutter for PMMA/Acrylics."&gt;&lt;/figure&gt;&#10;In Zukunft muss ich Dibond ähnlich behandeln wie Acrylglas: Sehr scharf geschliffene Fräser verwenden, die das Material ordentlich schneiden. Idealerweise Einschneider mit Habichtschnabel und Eckenfase (weiche Kanten), zentrumsschneidend, dazu ordentlich Drall. Z.B. &lt;a href="https://shop.vhf.de/articleGroups/Einzahnfraeser-mit-Stirnradius-W_F_ES_SCR.htm" target="_blank" rel="noopener noreferrer" class="external-link"&gt;diese hier (Link zu vhf)&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt;. So wird - glaube ich - eine Materialverdrängung in das noch weichere Kernmaterial vermieden und Späne außerdem im Spankanal nach oben gefördert, sodass sie nicht anhaften können oder ein zweites Mal unter den Fräser geraten.&lt;/p&gt;&#10;&lt;p&gt;Zudem sollte ich mit zügigen Vorschubwerten arbeiten. Dann heizt sich das Material nicht zu stark auf. Die Verwendung von ein wenig Schmiermittel sowie das Aufbringen von Schutzfolie trägt zu besserem Fräsergebnis bei. Weitere Verarbeitungshinweise gibt es beispielsweise &lt;a href="https://www.cnc-aus-holz.at/index.php?thread/2397-aluverbundplatte-dibond-gravieren/&amp;amp;postID=27536#post27536" target="_blank" rel="noopener noreferrer" class="external-link"&gt;im CNC-aus-Holz-Forum&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt;. Stöbern kann sich lohnen.&lt;/p&gt;&#10;</description></item><item><title>'redir' im Caddyserver</title><link>https://blog.schallbert.de/migrating-to-subdomain/</link><pubDate>Tue, 30 Jan 2024</pubDate><author>Schallbert</author><guid>https://blog.schallbert.de/migrating-to-subdomain/</guid><description type="html">&#10; &lt;img src="https://blog.schallbert.de/assets/images/posts/2024-01-30-migrating-to-subdomain-thumb.jpg"&#10; class="post-cover"&#10; alt="Image: Thumbnail of correctly rendered &amp;#39;&amp;#39;website under construction&amp;#39;&amp;#39; page on schallbert.de"&#10; title="&amp;#39;redir&amp;#39; im Caddyserver" /&gt;&#10;&lt;p&gt;Als ich meine Website weg von Github Pages auf einen eigenen Server &lt;a href="https://blog.schallbert.de/projects/move-blog-to-own-server/"&gt;umzog&lt;/a&gt;, hatte ich einige Probleme und offene Fragen bezüglich automatischer Weiterleitungen. Mein Blog ging nämlich von der root-Domain in eine Subdomain (blog.schallbert.de) über.&lt;/p&gt;&#10;&lt;h2 id="anforderungen-an-die-weiterleitung"&gt;Anforderungen an die Weiterleitung&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Bereits auf meine Blogartikel unter altem Namen referenzierte Links z.B. auf &lt;a href="https://blog.schallbert.de/about/" target="_blank" rel="noopener noreferrer" class="external-link"&gt;schallbert.de/about&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt; sollen korrekt auf die Subdomain weiterleiten (kein &lt;em&gt;404&lt;/em&gt;)&lt;/li&gt;&#10;&lt;li&gt;Die Stammseite unter &lt;code&gt;schallbert.de&lt;/code&gt; soll vollständig nutzbar sein&lt;/li&gt;&#10;&lt;li&gt;Daten und Dateien für Domain und Subdomains sollen unabhängig voneinander sein&lt;/li&gt;&#10;&lt;li&gt;Die Webserver sollen für verschiedene Unterseiten unterschiedliche Technologien verwenden können&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="umsetzung"&gt;Umsetzung&lt;/h2&gt;&#10;&lt;p&gt;Zuerst hatte ich gedacht, dass ich die Weiterleitungen im DNS-provider über &lt;code&gt;A&lt;/code&gt; und &lt;code&gt;CNAME&lt;/code&gt; Einträge erreichen könnte. Schnell wurde mir jedoch klar, dass ich &lt;em&gt;a)&lt;/em&gt; keine Ahnung hatte, wie DNS überhaupt funktioniert und &lt;em&gt;b)&lt;/em&gt; der richtige Weg über die Konfiguration meines Webservers führt.&lt;/p&gt;&#10;&lt;h3 id="erster-versuch-redir-bei-"&gt;Erster Versuch: redir bei &amp;lsquo;/&amp;rsquo;&lt;/h3&gt;&#10;&lt;p&gt;Auf meinem Webserver (Caddy) werden Weiterleitungen in der &lt;code&gt;Caddyfile&lt;/code&gt; per &lt;code&gt;redir&lt;/code&gt; spezifiziert. Dabei kann das &lt;code&gt;permanent&lt;/code&gt; (als sogenannte http &lt;code&gt;301&lt;/code&gt;) oder &lt;code&gt;temporary&lt;/code&gt; per &lt;code&gt;302&lt;/code&gt; (Standardeinstellung) geschehen.&lt;/p&gt;&#10;&lt;p&gt;Mein erster Gedanke war, dass ich &lt;code&gt;schallbert.de&lt;/code&gt; unmodifiziert lasse und alles hinter einem eventuellen &lt;code&gt;/&lt;/code&gt; weiterleite. Dies sieht dann in der Caddyfile wie folgt aus:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-ini" data-lang="ini"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;schallbert.de {&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;# Define webserver&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;root * /www/landing&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;encode gzip&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;file_server&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;# Redir to subdomain if domain has a slash&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;@redirect path_regexp /*&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;redir @redirect https://blog.schallbert.de{uri}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;In der Folge hat Caddy schlicht alles an die Subdomain weitergeleitet. Der Haken dabei war, dass die Subdomain selbst ja auch wieder Slashes bzw. eine URI hinter dem Slash enthält und dann wiederum weitergeleitet wird. Beispiel:&lt;/p&gt;&#10;&lt;p&gt;&lt;code&gt;schallbert.de/post -&amp;gt; blog.schallbert.de/post -&amp;gt; blog.schallbert.de/post -&amp;gt; blog.schallbert.de/post -&amp;gt; [...]&lt;/code&gt;&lt;/p&gt;&#10;&lt;p&gt;Somit bekam ich eine rekursive Endlosweiterleitung. Ich habe meinen Server damit komplett lahmgelegt 😅&lt;/p&gt;&#10;&lt;h3 id="zweiter-versuch-filterung-per-regexp"&gt;Zweiter Versuch: Filterung per Regexp&lt;/h3&gt;&#10;&lt;p&gt;Ich brauche also eine bessere Filterung, sodass nur Slashes mit weiteren Zeichen dahinter auch wirklich weitergeleitet werden und die Weiterleitung nicht rekursiv ablaufen kann. Zum Glück hatte ich Hilfe von einem guten Freund, sodass kurze Zeit darauf folgendes &lt;code&gt;Caddyfile&lt;/code&gt; entstand:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-ini" data-lang="ini"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;schallbert.de {&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;# Define webserver&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;root * /www/landing&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;encode gzip&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;file_server&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;# Redir to subdomain to maintain links for blog&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;@redirect path_regexp ^/[^/]+(/.*)?$&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;redir @redirect https://blog.schallbert.de{uri}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Die Regexp prüft ab, ob ein Slash hinter der Domain URL vorliegt und dahinter zumindest ein weiteres Zeichen folgt. Hier funktioniert die Weiterleitung nun wie gewünscht und mein Blog ist auch unter den alten Links weiterhin vollständig erreichbar.&lt;/p&gt;&#10;&lt;p&gt;Trotzdem war ich noch nicht ganz zufrieden. Denn als ich mir eine schöne &amp;ldquo;Landing Page&amp;rdquo; auf meiner Root Domain erstellte, war von ihr plötzlich nur noch das reine HTML zu sehen. Kein favicon, keine Bilder, kein CSS.&lt;/p&gt;&#10;&lt;p&gt;Ein kurzer Blick in die Entwickleroptionen brachte schnell die Erkenntnis dass die Pfade aller Assets, die ich auf meiner Landing Page hinterlegt hatte, durch die Ordnerstruktur mit &lt;code&gt;/&lt;/code&gt; gekennzeichnet, an die Subdomain weitergeleitet wurden. Wo sie natürlich nicht liegen.&lt;/p&gt;&#10;&lt;h3 id="dritter-versuch-regexp-plus-dateisuche"&gt;Dritter Versuch: Regexp plus Dateisuche&lt;/h3&gt;&#10;&lt;p&gt;Zum Glück bin ich wieder mal mit dem Problem nicht allein, sodass im &lt;a href="https://caddy.community/t/redirect-if-file-not-present/7902" target="_blank" rel="noopener noreferrer" class="external-link"&gt;Forum von Caddy&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt; die Lösung zu finden war:&lt;/p&gt;&#10;&lt;p&gt;Mit dem &lt;code&gt;not file&lt;/code&gt; Marker kann ich in der &lt;code&gt;Caddyfile&lt;/code&gt; Weiterleitungen definieren, falls Ressourcen auf der aktuellen Seite unauffindbar sind.&lt;/p&gt;&#10;&lt;p&gt;Somit sieht meine Lösung jetzt wie folgt aus:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-ini" data-lang="ini"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;schallbert.de {&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;@filenotfound {&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;path_regexp ^/[^/]+(/.*)?$&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;not file&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;# show Caddy where to find page resources&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;root * /www/landing&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;encode gzip&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;route {&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;# Redirect to subdomain if article cannot found on root&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;redir @filenotfound https://blog.schallbert.de{uri}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;# else, define webserver and show page&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;file_server&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Hier ist wichtig, dass ich die Seite mit &lt;code&gt;root * /www/&amp;lt;pagelocation&amp;gt;&lt;/code&gt; definiere, bevor ich die &lt;code&gt;route&lt;/code&gt; anlege. Denn sonst werden die Assets erst verfügbar, nachdem ich bereits aus Ermangelung vorhandener Dateien weitergeleitet habe.&lt;/p&gt;&#10;&lt;h2 id="erfolg"&gt;Erfolg!&lt;/h2&gt;&#10;&lt;p&gt;Jetzt endlich wird meine Baustellenseite korrekt dargestellt.&lt;/p&gt;&#10;&lt;figure class="media-frame media-frame--center"&gt;&#10; &lt;img src="https://blog.schallbert.de/assets/images/posts/2024-01-30-migrating-to-subdomain.jpg" alt="Image: Correctly rendered &amp;#39;website under construction&amp;#39; page on schallbert.de"&gt;&lt;/figure&gt;&#10;</description></item><item><title>Jekyll build: defekte relative Links</title><link>https://blog.schallbert.de/self-hosted-jekyll-page-broken-links/</link><pubDate>Fri, 29 Dec 2023</pubDate><author>Schallbert</author><guid>https://blog.schallbert.de/self-hosted-jekyll-page-broken-links/</guid><description type="html">&#10; &lt;img src="https://blog.schallbert.de/assets/images/posts/2023-12-29_serves_broken_links-thumb.jpg"&#10; class="post-cover"&#10; alt="Image: Webpage, displaying Schallbert&amp;#39;&amp;#39;s Blog with broken links"&#10; title="Jekyll build: defekte relative Links" /&gt;&#10;&lt;h2 id="das-problem"&gt;Das Problem&lt;/h2&gt;&#10;&lt;p&gt;Jetzt bin ich nach &lt;a href="https://blog.schallbert.de/gitea-action-runner-jekyll-dockerimage/"&gt;ewigem Probieren&lt;/a&gt; nun endlich in der Lage, meinem Caddyserver die gebauten Dateien per Docker-Volume zur Verfügung zu stellen. Leider sieht die Seite aber wie folgt aus:&lt;/p&gt;&#10;&lt;figure class="media-frame media-frame--center"&gt;&#10; &lt;img src="https://blog.schallbert.de/assets/images/posts/2023-12-29_serves_broken_links.jpg" alt="Image: Broken webpage, displaying Schallbert&amp;#39;s Blog without pictures, and other media, and any links lead to 404-nowhere"&gt;&lt;/figure&gt;&#10;&lt;h2 id="die-analyse"&gt;Die Analyse&lt;/h2&gt;&#10;&lt;p&gt;Zuerst hatte ich den Webserver in Verdacht.&#10;Wenn ich die Website aber testweise in meinem Browser aufrufe&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;, zeigt sich dasselbe Verhalten. Merkwürdig.&lt;/p&gt;&#10;&lt;p&gt;Offensichtlich fehlen sämtliche Stylesheets. Sieht man genau hin, sind aber auch Bilder und andere Medien nicht geladen worden, sondern lediglich ihre Beschreibung.&#10;Dann klicke ich wild auf ein paar Links zu Artikeln und Unterseiten. Dabei fällt auf, dass die Pfade anders aussehen, als ich erwartet hätte:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-yml" data-lang="yml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# --- Erwartung ---&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Bilddatei&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ae81ff"&gt;/assets/images/test.jpg&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Artikel&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ae81ff"&gt;/this-is-a-post&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Stattdessen sehe ich:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-yml" data-lang="yml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# --- Beobachtung ---&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Bilddatei&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ae81ff"&gt;/pages/&amp;lt;username&amp;gt;/&amp;lt;repositoryname&amp;gt;/assets/images/test.jpg&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Artikel&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ae81ff"&gt;/pages/&amp;lt;username&amp;gt;/&amp;lt;repositoryname&amp;gt;/this-is-a-post&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Dies zeigen auch die mit &lt;code&gt;F12&lt;/code&gt; zugeschalteten Entwickleroptionen des Browsers (siehe Bild oben): sämtliche per relativen Link eingebundene Quellen können nicht geladen werden. Übrigens ist es im Allgemeinen eine klare Empfehlung, die Entwickleroptionen bei Problemen mit der Darstellung von Webseiten aktiviert zu haben.&lt;/p&gt;&#10;&lt;p&gt;Liegt ja irgendwie nahe, dass meine Jekyll-Konfigurationsdatei &lt;code&gt;_config.yml&lt;/code&gt; oder meine &lt;a href="https://blog.schallbert.de/jekyll-polyglot-language-support/"&gt;Übersetzungsheader&lt;/a&gt; &lt;code&gt;i10.yml&lt;/code&gt; Fehler enthalten. Dafür gibt es zum Glück bereits hervorragende &lt;a href="https://mademistakes.com/mastering-jekyll/site-url-baseurl/" target="_blank" rel="noopener noreferrer" class="external-link"&gt;Hilfeseiten&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt;.&lt;/p&gt;&#10;&lt;p&gt;Ein Test zeigt jedoch schnell, dass ich die Angabe &lt;code&gt;repository&lt;/code&gt;, woher der Build &lt;code&gt;&amp;lt;username&amp;gt;/&amp;lt;repositoryname&amp;gt;&lt;/code&gt; herbezieht, nicht einfach leer lassen kann:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# bundle exec jekyll serve&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Generating... &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; Jekyll Feed: Generating feed &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; posts&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; Liquid Exception: No repo name found. &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; Specify using PAGES_REPO_NWO environment variables, &lt;span style="color:#e6db74"&gt;&amp;#39;repository&amp;#39;&lt;/span&gt; in your configuration, &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; or set up an &lt;span style="color:#e6db74"&gt;&amp;#39;origin&amp;#39;&lt;/span&gt; git remote pointing to your github.com repository. in /_layouts/default.html&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ERROR: YOUR SITE COULD NOT BE BUILT&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Und, verflixt, wo kommt der Unterordner &lt;code&gt;/pages&lt;/code&gt; plötzlich her?&lt;/p&gt;&#10;&lt;h2 id="die-lösung"&gt;Die Lösung&lt;/h2&gt;&#10;&lt;p&gt;Durch das &lt;code&gt;/pages&lt;/code&gt; im Pfad liegt die Vermutung nahe, dass die Ursache in einer Kombination aus &lt;a href="https://jekyllrb.com/docs/configuration/options/" target="_blank" rel="noopener noreferrer" class="external-link"&gt;Jekyll-Bauoptionen&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt; und dem &lt;a href="https://github.com/github/pages-gem" target="_blank" rel="noopener noreferrer" class="external-link"&gt;Github-Pages Gem&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt; zu finden ist.&lt;/p&gt;&#10;&lt;p&gt;Natürlich bin ich mit diesem Problem nicht allein, und nach längerer Recherche finde ich &lt;a href="https://stackoverflow.com/questions/51869314/jekyll-serve-generate-wrong-path-in-localhost" target="_blank" rel="noopener noreferrer" class="external-link"&gt;tatsächlich eine Dokumentation der Lösung&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt;.&lt;/p&gt;&#10;&lt;p&gt;Also ändere ich die Umgebungsvariable &lt;code&gt;JEKYLL_ENV&lt;/code&gt; (steht für die Bauumgebung) von &lt;code&gt;production&lt;/code&gt; auf &lt;code&gt;development&lt;/code&gt;, so wie es normalerweise für das lokale Bauen vorgesehen ist.&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-yml" data-lang="yml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# workflows/jekyll-build-action.yml&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;env&lt;/span&gt;:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;JEKYLL_ENV&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;development&lt;/span&gt; &lt;span style="color:#75715e"&gt;# I had &amp;#34;production&amp;#34; here before&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Und, was soll ich sagen: Kaum macht man es richtig, schon funktioniert&amp;rsquo;s!&lt;/p&gt;&#10;&lt;figure class="media-frame media-frame--center"&gt;&#10; &lt;img src="https://blog.schallbert.de/assets/images/posts/2023-12-29_css_assets_show_correctly.jpg" alt="Image: blog.schallbert.de shows correct CSS and media are loaded along working links"&gt;&lt;/figure&gt;&#10;&lt;div class="footnotes" role="doc-endnotes"&gt;&#10;&lt;hr&gt;&#10;&lt;ol&gt;&#10;&lt;li id="fn:1"&gt;&#10;&lt;p&gt;Die Website offline darstellen funktioniert wie folgt: Die gebauten Dateien (den &lt;code&gt;_site&lt;/code&gt;-Ordner) auf den eigenen Rechner ziehen und die &lt;code&gt;index.html&lt;/code&gt; mit dem Browser öffnen.&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;/div&gt;&#10;</description></item><item><title>Kleinteile fräsen</title><link>https://blog.schallbert.de/milling-small-parts/</link><pubDate>Wed, 01 Nov 2023</pubDate><author>Schallbert</author><guid>https://blog.schallbert.de/milling-small-parts/</guid><description type="html">&#10; &lt;img src="https://blog.schallbert.de/assets/images/posts/2023-11-01_smallparts-thumb.jpg"&#10; class="post-cover"&#10; alt="Image: Milled small part, size comparison to a coin"&#10; title="Kleinteile fräsen" /&gt;&#10;&lt;h2 id="warum-kleine-teile-überhaupt-fräsen"&gt;Warum kleine Teile überhaupt fräsen?&lt;/h2&gt;&#10;&lt;p&gt;Es ist meist schwierig, sehr kleine Teile zu fertigen, zudem wenn sie nur in geringer Stückzahl benötigt werden. Spritzgießen lohnt sich hier nicht und 3D-Drucker wie sie im Hobbybereich eingesetzt werden sind erfüllen nicht die Toleranzanforderungen für meine Passungen. Die Laserschneider, auf die ich Zugriff habe, können das Teil ebenfalls nicht fertigen, weil es verschiedene Oberflächenhöhen hat. Auf die Option, das Teil in Fernost anfertigen zu lassen, möchte ich verzichten.&lt;/p&gt;&#10;&lt;p&gt;Dennoch: Diese Teile können auf einer Fräsmaschine gefertigt werden. Dieses Video zeigt, wie:&lt;/p&gt;&#10;&lt;figure class="media-frame media-frame--center media-frame--video"&gt;&#10; &lt;div class="media-video"&gt;&lt;iframe&#10; src="https://makertube.net/videos/embed/64TS5d5cp2eNqf8SSPvY77"&#10; title="Kleinteile fräsen"&#10; loading="lazy"&#10; allow="autoplay; fullscreen; picture-in-picture"&#10; allowfullscreen&#10; style="width: 100%; height: auto; min-height: 315px; aspect-ratio: 16/9;"&#10; &gt;&lt;/iframe&gt;&lt;/div&gt;&#10; &lt;figcaption class="media-caption"&gt;&#10; &lt;span class="caption-text"&gt;Kleinteile fräsen&lt;/span&gt;&lt;a href="https://makertube.net/videos/embed/64TS5d5cp2eNqf8SSPvY77" class="attr-link" target="_blank" rel="noopener noreferrer"&gt;↗&lt;/a&gt;&lt;/figcaption&gt;&lt;/figure&gt;&#10;&lt;h3 id="welche-ausstattung-muss-die-maschine-dafür-besitzen"&gt;Welche Ausstattung muss die Maschine dafür besitzen?&lt;/h3&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Einen Vakuumtisch&lt;/li&gt;&#10;&lt;li&gt;Eine Vakuumpumpe, vorzugsweise mit hohen Unterdrücken&lt;/li&gt;&#10;&lt;li&gt;Etwas Frischhaltefolie&lt;/li&gt;&#10;&lt;li&gt;Ein Vakuumvlies&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="wofür-ist-dieses-kleinteil"&gt;Wofür ist dieses Kleinteil?&lt;/h2&gt;&#10;&lt;figure class="media-frame media-frame--center"&gt;&#10; &lt;img src="https://blog.schallbert.de/assets/images/posts/2023-11-01_smallparts_soapbutler.jpg" alt="Image: Video splash preview with soapbutler"&gt;&lt;/figure&gt;&#10;&lt;p&gt;Das im Video gefertigte Teil gehört zu einem meiner &lt;a href="https://blog.schallbert.de/projects/seifenbutler/"&gt;Seifenbutler&lt;/a&gt;. Die aktuelle Version kann an jeder handelsüblichen Duschstange mit Durchmesser von &lt;code&gt;18-25mm&lt;/code&gt; befestigt werden und benötigt dieses Teilchen zum Klemmen. Es drückt sich an der Rückseite an die Stange und sorgt so dafür, dass der Seifenbutler weder verrutscht noch wackelt.&lt;/p&gt;&#10;&lt;p&gt;Mit diesem Upgrade gegenüber früheren Versionen ist der Seifenbutler nicht nur in der Lage, festes Shampoo zu halten, sondern auch die viel schwereren Shampooflaschen.&lt;/p&gt;&#10;&lt;figure class="media-frame media-frame--center"&gt;&#10; &lt;img src="https://blog.schallbert.de/assets/images/posts/2023-11-01_soapbutler_shampoobottle.jpg" alt="Image: black soapbutler holding a shampoo bottle"&gt;&lt;/figure&gt;&#10;&lt;p&gt;Der &amp;ldquo;Klemmer&amp;rdquo; muss ohne merkliches Spiel in seine Führung passen und dennoch leichtgängig zu verschieben sein, um sich an verschiedene Duschstangendurchmesser anpassen zu können.&lt;/p&gt;&#10;&lt;h2 id="was-muss-noch-beachtet-werden"&gt;Was muss noch beachtet werden?&lt;/h2&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;Frischhaltefolie: Wenn Teile ausgeschnitten werden, sollten sie nicht zu groß sein. Ansonsten wird die Folie vom Fräser mitgerissen und hinterlässt hässliche Spuren im Werkstück. Außerdem kann sie eine Unwucht erzeugen, die bei hohen Drehzahlen zu Beschädigung des Fräsers oder sogar der Maschine führen kann. Um das Einziehen zu vermeiden hilft das Anbringen eines kleinen Stückes doppelseitigen Klebebandes auf dem auszuschneidenden Teil.&lt;/li&gt;&#10;&lt;li&gt;Vakuumvlies: Das Vlies wird bei Anlegen des Vakuums auf weniger als die Hälfte seiner Höhe zusammengepresst. Es ist also erforderlich, die Werkstückhöhe bei angelegtem Vakuum abzunullen.&lt;/li&gt;&#10;&lt;li&gt;Nicht ganz durchfräsen sondern eine dünne Materialschicht stehen lassen. Ihre Stärke hängt vom bearteiten Material ab. Bei PMMA lasse ich &lt;code&gt;0.3mm&lt;/code&gt; stehen, bei Holz &lt;code&gt;0.7mm&lt;/code&gt;.&lt;/li&gt;&#10;&lt;li&gt;Ich berücksichtige die Frischhaltefolie (etwa &lt;code&gt;10µm&lt;/code&gt; stark) nicht beim Einmessen der Werkstückhöhe, da sie sich in der Größenordnung meiner Maschinentoleranz befindet. Dickere Schutzfolien (&lt;code&gt;20-30µm&lt;/code&gt;), wie sie z.B. bei Plexiglas und Dibond verwendet werden, hingegen schon - zumal sie doppelseitig aufgebracht sind.&lt;/li&gt;&#10;&lt;/ol&gt;&#10;</description></item><item><title>DIY Kantenfinder</title><link>https://blog.schallbert.de/touching-off/</link><pubDate>Sun, 21 May 2023</pubDate><author>Schallbert</author><guid>https://blog.schallbert.de/touching-off/</guid><description type="html">&#10; &lt;img src="https://blog.schallbert.de/assets/images/posts/2023-05-21_edgefinder-thumb.jpg"&#10; class="post-cover"&#10; alt="Image: DIY low-cost edge finder"&#10; title="DIY Kantenfinder" /&gt;&#10;&lt;p&gt;&lt;figure class="media-frame media-frame--right"&gt;&#10; &lt;img src="https://blog.schallbert.de/assets/images/posts/2023-05-21_edge_taperedtool.jpg" alt="Image: getting XY0 of a workpiece visually"&gt;&lt;/figure&gt;&#10;Als CNC-Bediener muss ich bei manchen Arbeiten genau wissen, wo sich mein Werkstück befindet. Daher benötige ich in solchen Fällen die &lt;code&gt;X/Y&lt;/code&gt;-Werte einer Ecke des Werkstücks im Maschinenkoordinatensystem. Bisher habe ich dieses Problem mittels eines V-Fräsers gelöst, dessen Spitze ich manuell auf die Kante des Werkstücks verfahren und immer wieder mit Augenmaß geprüft habe, ob die Positionen übereinstimmen.&lt;/p&gt;&#10;&lt;h2 id="das-problem"&gt;Das Problem&lt;/h2&gt;&#10;&lt;p&gt;Obwohl diese manuelle Methode relativ schnell und unkompliziert anzuwenden ist, so ist sie für die meisten Aufträge nicht mehr genau genug. Als ich in die doppelseitige Bearbeitung eingestiegen bin &lt;a href="https://blog.schallbert.de/cut-dibond/"&gt;wie damals mit Dibond&lt;/a&gt; war der Versatz so groß, dass ich die ersten Teile nur noch entsorgen konnte.&lt;/p&gt;&#10;&lt;h2 id="lösung"&gt;Lösung&lt;/h2&gt;&#10;&lt;p&gt;Ich habe mein Problem mit dem Hersteller meiner Fräsmaschine besprochen - in der Annahme, dass ich einen elektrischen, in die Spindel einzuspannenden Kantentaster &amp;ldquo;3D finder&amp;rdquo; empfohlen bekommen würde und nun wieder viel Geld und Arbeit in Kauf und Einrichtung eines solchen Messwerkzeugs fließen müsse. Da lag ich aber falsch. Stattdessen erhielt ich einen Tipp, wie ich einen einfachen aber genauen Kantenfinder bauen kann, der zudem praktisch nichts kostet.&lt;/p&gt;&#10;&lt;h3 id="einzelteile"&gt;Einzelteile&lt;/h3&gt;&#10;&lt;p&gt;&lt;figure class="media-frame media-frame--right"&gt;&#10; &lt;img src="https://blog.schallbert.de/assets/images/posts/2023-05-21_build.jpg" alt="Image: Things needed to construct the edge finder"&gt;&lt;/figure&gt;&#10;Roy sagte &amp;ldquo;Na ja, das Einzige, was du dafür brauchst, ist ein Kugellager. Befestige es auf einer Achse und wechsle sie in die Spindel ein wie jedes andere Werkzeug auch. Lasse die Spindel im niedrigen Drehzahlbereich laufen und bewege die Maschine langsam in Richtung Werkstückkante. Sobald der äußere Ring des Kugellagers nicht mehr mitläuft, hast du die Kante gefunden.&amp;rdquo; Alles was ich dann noch tun muss, ist, den Radius des Kugellagers auf die Maschinenposition zu addieren und ich habe die Position bestimmt.&lt;/p&gt;&#10;&lt;h3 id="aufbau"&gt;Aufbau&lt;/h3&gt;&#10;&lt;p&gt;Ich fand die Idee genial. Da ich leider kein gut sortiertes Metallfachgeschäft in der Nähe habe, durchwühlte ich den Haushalt nach einem Kugellager. Voilà, meine Kinder haben einen Fidget Spinner, den sie eine Weile nicht mehr benutzt haben. Also habe ich ihn&amp;hellip; stibitzt. Er enthält ein Kugellager mit 22mm Durchmesser für eine 8mm Welle.&lt;/p&gt;&#10;&lt;aside class="update-box update-box--note" role="note"&gt;&#10; &lt;span class="update-box__icon" aria-hidden="true"&gt;&#10; ℹ️&#10; &lt;/span&gt;&#10;&#10; &lt;div class="update-box__body"&gt;&#10; &lt;div class="update-box__heading"&gt;&#10; &lt;strong class="update-box__title"&gt;&#10; &#10; Auch gut geeignet: Kugellager aus Rollern oder Inline Skates&#10; &#10; &lt;/strong&gt;&#10;&#10; &lt;time datetime="2023-06-04T00:00:00Z"&gt;&#10; 04. Juni 2023&#10; &lt;/time&gt;&#10; &#10; &lt;/div&gt;&#10;&#10; &#10; &lt;div class="update-box__content"&gt;&#10; Kurz nach Veröffentlichung dieses Artikels schrieb ein Leser, dass alte Inline Skates oder Roller auch hervorragende Spender für Kugellager im Haushalt wären.&#10; &lt;/div&gt;&#10; &#10; &lt;/div&gt;&#10;&lt;/aside&gt;&#10;&lt;p&gt;&lt;figure class="media-frame media-frame--right"&gt;&#10; &lt;img src="https://blog.schallbert.de/assets/images/posts/2023-05-21_edgefinder.jpg" alt="Image: The mounted edge finder"&gt;&lt;/figure&gt;&#10;Hierfür bot sich der Schaft eines stumpfen 8mm Bohrers an. Also schnitt ich ihn in der Mitte durch, setzte den Schaft in das Kugellager ein und befestigte ihn mit einem Tropfen Kleber - Fertig!&lt;/p&gt;&#10;&lt;h2 id="kanten-finden"&gt;Kanten finden&lt;/h2&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;Wechseln Sie den selbstgebauten Kantenfinder in die Spindel ein und verfahren sie in die Nähe des Werkstücks&lt;/li&gt;&#10;&lt;li&gt;Schalten Sie die Spindel bei niedriger Drehzahl ein, z.B. &lt;code&gt;S500....S3000&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;Optional: Für eine einfachere Positionsbestimmung wechseln Sie in das Maschinenkoordinatensystem&lt;/li&gt;&#10;&lt;li&gt;Lassen Sie die Maschine langsam in Richtung des Werkstücks fahren, z.B. mit dem Kommando &lt;code&gt;G01 X&amp;lt;endpunktImWerkstück&amp;gt; F1&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;Drücken Sie auf &lt;code&gt;Stop/Pause&lt;/code&gt;, sobald das Lager sich nicht mehr mitdreht&lt;/li&gt;&#10;&lt;li&gt;Notieren Sie sich die Maschinenkoordinaten bzw. verschieben das Arbeitskoordinatensystem der angetasteten Achse &lt;code&gt;G92&lt;/code&gt; auf diesen Punkt&lt;/li&gt;&#10;&lt;li&gt;Wiederholen Sie ab Schritt 2 für die nächste Achse&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;figure class="media-frame media-frame--center media-frame--video"&gt;&#10; &lt;div class="media-video"&gt;&lt;video controls&gt;&#10; &lt;source src="https://blog.schallbert.de/assets/video/posts/2023-05-22_edgefinder_action.mp4" type="video/mp4"&gt;&#10; Your browser does not support the video tag.&#10; &lt;/video&gt;&lt;/div&gt;&#10; &lt;figcaption class="media-caption"&gt;&#10; &lt;span class="caption-text"&gt;Einfacher Kantenfinder im Einsatz.&lt;/span&gt;&lt;/figcaption&gt;&lt;/figure&gt;&#10;</description></item><item><title>QR-codengrave V1.1 / V1.2</title><link>https://blog.schallbert.de/qr-codengrave1-1/</link><pubDate>Sun, 12 Feb 2023</pubDate><author>Schallbert</author><guid>https://blog.schallbert.de/qr-codengrave1-1/</guid><description type="html">&#10; &lt;img src="https://blog.schallbert.de/assets/images/posts/2023-02-12_qr-codengrave-thumb.jpg"&#10; class="post-cover"&#10; alt="Image: Splash screen of QR-codengrave V1.1"&#10; title="QR-codengrave V1.1 / V1.2" /&gt;&#10;&lt;h2 id="kurze-fakten-des-updates"&gt;Kurze Fakten des Updates&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Schnellerer Gravuralgorithmus und -Pfadoptimierung&lt;/li&gt;&#10;&lt;li&gt;Diverse Bugfixes&lt;/li&gt;&#10;&lt;li&gt;Bedienbarkeit verbessert&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="demo-video"&gt;Demo Video&lt;/h2&gt;&#10;&lt;figure class="media-frame media-frame--center media-frame--video"&gt;&#10; &lt;div class="media-video"&gt;&lt;iframe&#10; src="https://makertube.net/videos/embed/jFD7nxftVHjUy6LKPCFE3N"&#10; title="QR-codengrave Quick Demo"&#10; loading="lazy"&#10; allow="autoplay; fullscreen; picture-in-picture"&#10; allowfullscreen&#10; style="width: 100%; height: auto; min-height: 315px; aspect-ratio: 16/9;"&#10; &gt;&lt;/iframe&gt;&lt;/div&gt;&#10; &lt;figcaption class="media-caption"&gt;&#10; &lt;span class="caption-text"&gt;QR-codengrave Quick Demo&lt;/span&gt;&lt;a href="https://makertube.net/videos/embed/jFD7nxftVHjUy6LKPCFE3N" class="attr-link" target="_blank" rel="noopener noreferrer"&gt;↗&lt;/a&gt;&lt;/figcaption&gt;&lt;/figure&gt;&#10;&lt;h2 id="version-11"&gt;Version 1.1&lt;/h2&gt;&#10;&lt;h3 id="algoritmusoptimierung"&gt;Algoritmusoptimierung&lt;/h3&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Die Zeilen des QR-Codes werden nun horizontal eingelesen&lt;/li&gt;&#10;&lt;li&gt;Die Ausgabe der Pfade verläuft nun &amp;ldquo;rechts nach links&amp;rdquo;, danach &amp;ldquo;links nach rechts&amp;rdquo; und reduziert damit Maschinenbewegungen&lt;/li&gt;&#10;&lt;li&gt;Linien werden Punkten vorgezogen, da sie schneller gefertigt werden können&lt;/li&gt;&#10;&lt;li&gt;Linien werden nun vertikal und horizontal berechnet, die längere Linie bekommt den Vorzug&lt;/li&gt;&#10;&lt;li&gt;Eilgänge werden nun per XY-Vektor gefahren und nicht mehr nur eindimensional, was Zeit spart&lt;/li&gt;&#10;&lt;li&gt;Der neue Pfadalgorithmus benötigt 20% weniger Maschinenzeit&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;figure class="media-frame media-frame--center"&gt;&#10; &lt;img src="https://blog.schallbert.de/assets/images/posts/2023-02-12_qr-codengrave_algo.jpg" alt="Image: Algorithm comparison 1.0 vs. 1.1"&gt;&lt;/figure&gt;&#10;&lt;h3 id="bugfixes"&gt;Bugfixes&lt;/h3&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Bei nicht vorliegendem Datensatz &lt;code&gt;Persistence.dat&lt;/code&gt; wird das Startbild nicht angezeigt (&lt;code&gt;qruwu.jpg&lt;/code&gt;)&lt;/li&gt;&#10;&lt;li&gt;Crash bei Klick auf &lt;code&gt;Stop Draw&lt;/code&gt; wenn zuvor keine Zeichnung angefragt wurde&lt;/li&gt;&#10;&lt;li&gt;Crash bei Hinzufügen eines Werkzeuges bei leerer Werkzeugliste&lt;/li&gt;&#10;&lt;li&gt;Wird das Programm ohne Werkzeugauswahl gestartet, ist das dropdown-Menü gesperrt&lt;/li&gt;&#10;&lt;li&gt;Fehler in der QR-Code Größenschätzung&lt;/li&gt;&#10;&lt;li&gt;Fehler in der Blockbreitenberechnung bei Verwendung von V-Fräsern&lt;/li&gt;&#10;&lt;li&gt;Das gegenwärtig ausgewählte Werkzeug wird bei Start der Anwendung nicht im Dropdown-Feld angezeigt&lt;/li&gt;&#10;&lt;li&gt;QR-codes können größer dargestellt werden der Anzeigebereich&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="bedienbarkeit"&gt;Bedienbarkeit&lt;/h3&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Default Werkzeugname geändert von &lt;code&gt;name&lt;/code&gt; nach &lt;code&gt;default&lt;/code&gt; zur besseren Verständlichkeit&lt;/li&gt;&#10;&lt;li&gt;Fräser mit geraden Schneiden (also kein V-cut) ist jetzt das Standardwerkzeug&lt;/li&gt;&#10;&lt;li&gt;Erstellen eines Offsets für den XY-Nullpunkt ist jetzt intuitiver gelöst (Y- nach unten, X+ nach Rechts)&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="version-12"&gt;Version 1.2&lt;/h2&gt;&#10;&lt;p&gt;Kleine Änderungen zu 1.1, am Wichtigsten die Behebung eines Bugs, bei dem die Aufforderung zum Werkzeugwechsel verloren gehen kann. Außerdem werden die Winkel von V-Fräsern jetzt bei Berechnung von Pixelbreite und Größe der QR-Codes mit einbezogen.&lt;/p&gt;&#10;&lt;h3 id="bugfixes-1"&gt;Bugfixes&lt;/h3&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Werkzeugauswahl &lt;code&gt;Tx&lt;/code&gt; und Werkzeugwechselkommando &lt;code&gt;M06&lt;/code&gt; befinden sich nun in derselben Zeile G-Code wie üblich und können so wie gewünscht Makros auslösen.&lt;/li&gt;&#10;&lt;li&gt;Das beim letzten Speichern verwendete Werkzeug wird nicht angezeigt, stattdessen das erste Werkzeug der Liste&lt;/li&gt;&#10;&lt;li&gt;Programmabsturz wenn versucht wird, den Jobstatus zu aktualisieren obwohl keine Gravurparameter vorliegen&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="bedienbarkeit-1"&gt;Bedienbarkeit&lt;/h3&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Versionsnummer als Kommentar in G-code hinzugefügt&lt;/li&gt;&#10;&lt;li&gt;Prefix &lt;code&gt;qr_&lt;/code&gt; der Zieldatei im Datei-Speichern-Dialog hinzugefügt&lt;/li&gt;&#10;&lt;li&gt;Genauigkeit der Maschinenzeitabschätzung verbessert&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="download"&gt;Download&lt;/h2&gt;&#10;&lt;p&gt;Der aktuelle Release ist &lt;a href="https://github.com/Schallbert/QR-codengrave/releases" target="_blank" rel="noopener noreferrer" class="external-link"&gt;hier&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt; zum Download verfügbar. Das Programm ist für die private Anwendung sowie Schulungszwecke kostenlos. Für weitere Informationen und Projektdokumentation stehen die &lt;a href="https://github.com/Schallbert/QR-codengrave" target="_blank" rel="noopener noreferrer" class="external-link"&gt;readme&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt; sowie eine &lt;a href="https://blog.schallbert.de/projects/qr-codengrave/"&gt;Projektseite&lt;/a&gt; zur freien Verfügung.&lt;/p&gt;&#10;&lt;h2 id="upgrade-von-einer-früheren-version"&gt;Upgrade von einer früheren Version&lt;/h2&gt;&#10;&lt;p&gt;Es wird empfohlen, die Persistenzdatei von der alten Version in die neue Version zu übernehmen. Auf diese Weise werden gespeicherte Werkzeuglisten, Gravurparameter und XY-Offsets portiert. Und so geht&amp;rsquo;s:&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;Wechseln Sie in den Ordner, wo sich das QR-codengrave Programm befindet. Anschließend navigieren Sie zu &lt;code&gt;src/assets&lt;/code&gt;.&lt;/li&gt;&#10;&lt;li&gt;Kopieren Sie die Datei &lt;code&gt;Persistence.dat&lt;/code&gt; in einen temporären Ordner oder z.B. auf Ihren Desktop.&lt;/li&gt;&#10;&lt;li&gt;Entfernen Sie die alte Version durch Löschen des QR-codengrave Ordners.&lt;/li&gt;&#10;&lt;li&gt;Laden Sie die letzte Version herunter und verschieben Sie sie zur gewünschten Position auf Ihrem Rechner.&lt;/li&gt;&#10;&lt;li&gt;Verschieben Sie nun die vorab zwischengespeicherte &lt;code&gt;Persistence.dat&lt;/code&gt; in den &lt;code&gt;src/assets&lt;/code&gt; Ordner des aktualisierten Programms.&lt;/li&gt;&#10;&lt;/ol&gt;&#10;</description></item><item><title>Steckbrett-Lagerfeuer</title><link>https://blog.schallbert.de/led-fireplace-diy/</link><pubDate>Sat, 10 Dec 2022</pubDate><author>Schallbert</author><guid>https://blog.schallbert.de/led-fireplace-diy/</guid><description type="html">&#10; &lt;img src="https://blog.schallbert.de/assets/images/fireplace/fireplace-thumb.jpg"&#10; class="post-cover"&#10; alt="Image: A small electronics Breadboard with microcontroller, LEDs etc. on to make a fireplace simulation."&#10; title="Steckbrett-Lagerfeuer" /&gt;&#10;&lt;h2 id="materialliste"&gt;Materialliste&lt;/h2&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Gegenstand&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Menge&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;~Preis [€]&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;LED: Warmweiß, z.B. Ifwd=30mA, 3lm&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;5&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;1,50&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;LED: Gelb, z.B. Ifwd=35mA, 1lm&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;2&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;0,60&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;LED: Rot, z.B. Ifwd=35mA, 0.4lm&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;1&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;0,30&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Arduino Nano Atmega328&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;1&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;18&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Steckbrett klein, z.B. 170 pins&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;1&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;0,70&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Brückendrähte, pin-pin, z.B. 5cm&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;10&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;3,30&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;p&gt;Dazu: Ein paar weitere Drähte, Mini USB-Kabel, Powerbank / USB-Ladegerät&lt;/p&gt;&#10;&lt;h2 id="werkzeuge"&gt;Werkzeuge&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Optional: Heißklebepistole&lt;/li&gt;&#10;&lt;li&gt;Optional: Lötkolben&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="aufbau"&gt;Aufbau&lt;/h2&gt;&#10;&lt;figure class="media-frame media-frame--center"&gt;&#10; &lt;img src="https://blog.schallbert.de/assets/images/fireplace/fireplace_detail.jpg" alt="Image: fireplace breadboard design detail view"&gt;&lt;/figure&gt;&#10;&lt;figure class="media-frame media-frame--right"&gt;&#10; &lt;img src="https://upload.wikimedia.org/wikipedia/commons/thumb/f/f9/LED%2C_5mm%2C_green_%28en%29.svg/432px-LED%2C_5mm%2C_green_%28en%29.svg.png" alt="Image: LED closeup"&gt;&lt;figcaption class="media-caption"&gt;&#10; &lt;span class="caption-text"&gt;LED aus der Nähe betrachtet&lt;/span&gt;&lt;a&#10; href="https://commons.wikimedia.org/wiki/File:LED,_5mm,_green_%28en%29.svg#file"&#10; class="attr-link"&#10; aria-label="Attribution 1"&#10; &gt;&#10; &lt;sup class="attr-id"&gt;[1]&lt;/sup&gt;&#10; &lt;/a&gt;&lt;/figcaption&gt;&lt;/figure&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;Die rechte Pin-Seite des Arduino Nano mit der linken Seite des Steckbretts verbinden. Dabei darauf achten, dass alle Pins auf gleicher Höhe sind und möglichst nicht mit den Fingern zu berühren, da die Gefahr einer elektrostatischen Entladung besteht, die zu Beschädigung führen könnte.&lt;/li&gt;&#10;&lt;li&gt;Die Anoden (&lt;code&gt;+&lt;/code&gt;) der LEDs mit den Ausgängen &lt;code&gt;D2 bis D9&lt;/code&gt; auf dem Steckbrett verbinden. Die Anode ist meistens der Pin der LED, der nicht mit der Lichtquelle belegt ist (im Bild oben wäre das links).&lt;/li&gt;&#10;&lt;li&gt;Die Kathoden (&lt;code&gt;-&lt;/code&gt;) der LEDs auf der rechten Seite des Steckbretts auf gleicher Höhe einstecken.&lt;/li&gt;&#10;&lt;li&gt;Alle Kathoden mit Hilfe von Überbrückungsdrähten verbinden. Alternativ können die Kathoden auch gleich zusammen gelötet oder mittels einer Verteilerbrücke, wie in meinem Beispiel oben verwendet, durchverbunden werden.&lt;/li&gt;&#10;&lt;li&gt;Verbinden Sie die &amp;ldquo;gemeinsame Kathode&amp;rdquo; mit Hilfe eines Brückendrahtes mit einem der &amp;ldquo;GND&amp;rdquo;-Pins der Mikrocontroller-Platine.&lt;/li&gt;&#10;&lt;li&gt;Die Anoden der LEDs sollten sich nicht berühren. Das kann man einfach sicherstellen, indem sie mit etwas Heißkleber fixiert werden.&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;h2 id="programmierung"&gt;Programmierung&lt;/h2&gt;&#10;&lt;p&gt;Der Code ist so einfach, dass ich ihn hier in Gänze herunterschreiben kann kann. Kopieren Sie ihn in Ihre Lieblings-IDE, programmieren Sie Ihr Board und schon sind Sie fertig!&lt;/p&gt;&#10;&lt;p&gt;&lt;em&gt;Disclaimer&lt;/em&gt;: Dieser Code ist &amp;ldquo;quick&amp;rsquo;n&amp;rsquo;dirty&amp;rdquo; und hat viel Potential für Refactoring. Zum Beispiel sind die Pin-IDs hartkodiert, ich verwende nicht die tollen und einfachen Features von C++11 wie &lt;a href="https://en.cppreference.com/w/cpp/language/range-for" target="_blank" rel="noopener noreferrer" class="external-link"&gt;Range-based for loop&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt; und der Geschwindigkeitsalgorithmus wird ziemlich oft die untere Grenze erreichen und kein zufälliges Verhalten zeigen.&#10;Ich freue mich über Ihre Verbesserungsvorschläge auf meiner &lt;a href="https://github.com/Schallbert/schallbert.github.io/discussions" target="_blank" rel="noopener noreferrer" class="external-link"&gt;Github discussions&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt; Seite.&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-c" data-lang="c"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#include&lt;/span&gt; &lt;span style="color:#75715e"&gt;&amp;lt;Arduino.h&amp;gt;&lt;/span&gt;&lt;span style="color:#75715e"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#define MAXLONG 0xFFFFFFFF&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#define SPEED_HIGHLIMIT 1000 &lt;/span&gt;&lt;span style="color:#75715e"&gt;// 500Hz&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#define SPEED_LOWLIMIT 0x1FFF &lt;/span&gt;&lt;span style="color:#75715e"&gt;// 20Hz&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;void&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;calcFlicker&lt;/span&gt;(&lt;span style="color:#66d9ef"&gt;uint32_t&lt;/span&gt; randomFlicker);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;void&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;writeLed&lt;/span&gt;(&lt;span style="color:#66d9ef"&gt;uint8_t&lt;/span&gt; columnCode, &lt;span style="color:#66d9ef"&gt;uint16_t&lt;/span&gt; speed);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;uint32_t&lt;/span&gt; iRNG &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;void&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;setup&lt;/span&gt;() &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;randomSeed&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;analogRead&lt;/span&gt;(&lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;));&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;pinMode&lt;/span&gt;(&lt;span style="color:#ae81ff"&gt;2&lt;/span&gt;, OUTPUT);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;pinMode&lt;/span&gt;(&lt;span style="color:#ae81ff"&gt;3&lt;/span&gt;, OUTPUT);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;pinMode&lt;/span&gt;(&lt;span style="color:#ae81ff"&gt;4&lt;/span&gt;, OUTPUT);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;pinMode&lt;/span&gt;(&lt;span style="color:#ae81ff"&gt;5&lt;/span&gt;, OUTPUT);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;pinMode&lt;/span&gt;(&lt;span style="color:#ae81ff"&gt;6&lt;/span&gt;, OUTPUT);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;pinMode&lt;/span&gt;(&lt;span style="color:#ae81ff"&gt;7&lt;/span&gt;, OUTPUT);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;pinMode&lt;/span&gt;(&lt;span style="color:#ae81ff"&gt;8&lt;/span&gt;, OUTPUT);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;pinMode&lt;/span&gt;(&lt;span style="color:#ae81ff"&gt;9&lt;/span&gt;, OUTPUT);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; iRNG &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;void&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;loop&lt;/span&gt;() &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; iRNG &lt;span style="color:#f92672"&gt;=&lt;/span&gt; (iRNG &lt;span style="color:#f92672"&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;) &lt;span style="color:#f92672"&gt;^&lt;/span&gt; (&lt;span style="color:#f92672"&gt;-&lt;/span&gt;(iRNG &lt;span style="color:#f92672"&gt;&amp;amp;&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1u&lt;/span&gt;) &lt;span style="color:#f92672"&gt;&amp;amp;&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0xd0000001u&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;calcFlicker&lt;/span&gt;(iRNG);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;/*&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt; This function takes a 32bit random value,&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt; and moves this value along a window of an 8bit &#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt; flicker output value.&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;*/&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;void&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;calcFlicker&lt;/span&gt;(&lt;span style="color:#66d9ef"&gt;uint32_t&lt;/span&gt; randomFlicker)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;uint8_t&lt;/span&gt; currentFlicker &lt;span style="color:#f92672"&gt;=&lt;/span&gt; (&lt;span style="color:#66d9ef"&gt;uint8_t&lt;/span&gt;)(randomFlicker &lt;span style="color:#f92672"&gt;&amp;amp;&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0xFF&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;uint16_t&lt;/span&gt; randomSpeed &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;min&lt;/span&gt;(SPEED_LOWLIMIT, (&lt;span style="color:#66d9ef"&gt;uint16_t&lt;/span&gt;)(randomFlicker &lt;span style="color:#f92672"&gt;&amp;amp;&lt;/span&gt; SPEED_HIGHLIMIT));&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt;(&lt;span style="color:#66d9ef"&gt;uint8_t&lt;/span&gt; i &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;; i &lt;span style="color:#f92672"&gt;&amp;lt;&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;24&lt;/span&gt;; &lt;span style="color:#f92672"&gt;++&lt;/span&gt;i) &lt;span style="color:#75715e"&gt;// 24 because of 32bit length of random, may not run empty&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;writeLed&lt;/span&gt;(currentFlicker, randomSpeed);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; randomFlicker &lt;span style="color:#f92672"&gt;=&lt;/span&gt; randomFlicker &lt;span style="color:#f92672"&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; } &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;/*&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt; this function outputs a code to an LED column of 8 LEDs&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt; connected to arduino&amp;#39;s pins with a selectable delay.&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;*/&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;void&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;writeLed&lt;/span&gt;(&lt;span style="color:#66d9ef"&gt;uint8_t&lt;/span&gt; columnCode, &lt;span style="color:#66d9ef"&gt;uint16_t&lt;/span&gt; speed)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;digitalWrite&lt;/span&gt;(&lt;span style="color:#ae81ff"&gt;2&lt;/span&gt;, columnCode &lt;span style="color:#f92672"&gt;&amp;amp;&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0x01&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;digitalWrite&lt;/span&gt;(&lt;span style="color:#ae81ff"&gt;3&lt;/span&gt;, columnCode &lt;span style="color:#f92672"&gt;&amp;amp;&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0x02&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;digitalWrite&lt;/span&gt;(&lt;span style="color:#ae81ff"&gt;4&lt;/span&gt;, columnCode &lt;span style="color:#f92672"&gt;&amp;amp;&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0x04&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;digitalWrite&lt;/span&gt;(&lt;span style="color:#ae81ff"&gt;5&lt;/span&gt;, columnCode &lt;span style="color:#f92672"&gt;&amp;amp;&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0x08&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;digitalWrite&lt;/span&gt;(&lt;span style="color:#ae81ff"&gt;6&lt;/span&gt;, columnCode &lt;span style="color:#f92672"&gt;&amp;amp;&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0x10&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;digitalWrite&lt;/span&gt;(&lt;span style="color:#ae81ff"&gt;7&lt;/span&gt;, columnCode &lt;span style="color:#f92672"&gt;&amp;amp;&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0x20&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;digitalWrite&lt;/span&gt;(&lt;span style="color:#ae81ff"&gt;8&lt;/span&gt;, columnCode &lt;span style="color:#f92672"&gt;&amp;amp;&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0x40&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;digitalWrite&lt;/span&gt;(&lt;span style="color:#ae81ff"&gt;9&lt;/span&gt;, columnCode &lt;span style="color:#f92672"&gt;&amp;amp;&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0x80&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;delayMicroseconds&lt;/span&gt;(speed);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="testen"&gt;Testen&lt;/h2&gt;&#10;&lt;p&gt;Sobald Sie das Gerät über USB einschalten, sollte die LED-Flackersequenz beginnen. Es sollte sich ein ruhiges Flackern einstellen. Wenn man im Regal einen leeren Platz findet und ein paar Zweige zur Hand hat, könnte das doch ganz schön aussehen, oder?&#10;Mit einer Powerbank kann man dieses Lagerfeuer auf dem Steckbrett sogar überall hin mitnehmen. Das war&amp;rsquo;s, viel Spaß damit!&lt;/p&gt;&#10;&lt;p&gt;&lt;a href="https://blog.schallbert.de/projects/fireplace/"&gt;Zur Hauptseite des Projektes&lt;/a&gt;&lt;/p&gt;&#10;</description></item><item><title>Estlcam: Inverse Gravuren</title><link>https://blog.schallbert.de/negative-carving-with-estlcam/</link><pubDate>Tue, 27 Sep 2022</pubDate><author>Schallbert</author><guid>https://blog.schallbert.de/negative-carving-with-estlcam/</guid><description type="html">&#10; &lt;img src="https://blog.schallbert.de/assets/images/posts/2022-09-27_carve_results-thumb.jpg"&#10; class="post-cover"&#10; alt="Image: A negative carve in wood"&#10; title="Estlcam: Inverse Gravuren" /&gt;&#10;&lt;p&gt;Der Plan war, ein Holzschild mit meiner CNC zu fertigen. Es sollte jedoch invertiert sein. Das heißt, die Lettern sollten sich vom flachen Hintergrund abheben. Da es verschiedene Wege gibt, so etwas in Estlcam umzusetzen (ein sogenanntes Computer Aided Machining Programm, was aus Zeichnungsdaten Fräspfade und später Maschineninstruktionen erzeugen kann), aber nicht alle Wege leicht zu finden oder gut anwendbar sind, biete ich hier eine Schritt-für-Schritt Anleitung an.&lt;/p&gt;&#10;&lt;h3 id="1-den-rahmen-des-schildes-importieren"&gt;1. Den Rahmen des Schildes importieren&lt;/h3&gt;&#10;&lt;p&gt;Zuerst sollten Zeichnungsdaten des Rahmens von dem zu fertigenden Schild vorliegen, beispielsweise im &lt;code&gt;DXF&lt;/code&gt;-Format. Ich habe ein rechteckiges Schild mit abgerundeten Ecken und definierter Rahmenstärke in meinem CAD-Programm gezeichnet. Es gilt sicherzustellen, dass die Frästiefe später nicht die Breite des Rahmens überschreitet, ansonsten könnte die Fräsarbeit zu instabil werden.&lt;/p&gt;&#10;&lt;figure class="media-frame media-frame--center"&gt;&#10; &lt;img src="https://blog.schallbert.de/assets/images/posts/2022-09-27_frame.jpg" alt="Image: Frame for my sign"&gt;&lt;/figure&gt;&#10;&lt;h3 id="2-den-text-hinzufügen"&gt;2. Den Text hinzufügen&lt;/h3&gt;&#10;&lt;p&gt;Jetzt kann der Inhalt des Schildes in Form von Text durch Tastendruck auf das &amp;ldquo;Carve&amp;rdquo;-Symbol hinzugefügt werden. Dabei ist es sinnvoll, die Breite der Textbox an die inneren Rahmengrenze anzupassen, sodass der Text stets hineinpasst. Man hat verschiedene Carve-Stile zur Auswahl. Für die hier dargestellte Fräsarbeit ist &lt;code&gt;Carve aussen&lt;/code&gt; zu wählen. Nun den Text eintippen, Schriftart selektieren und die Schrifthöhe so anpassen, dass es im Schild ein harmonisches Bild ergibt.&lt;/p&gt;&#10;&lt;p&gt;Abhängig vom zu verwendenden Fräser sollte dann die Frästiefe gewählt werden. Bei kleineren Winkeln der V-Nutfräsers ist die Frästiefe meist größer zu wählen als bei breiten 90°-Fräsern wie ich ihn verwende. Für mein &lt;code&gt;12mm&lt;/code&gt; starkes Plattenmaterial setze ich eine Frästiefe von &lt;code&gt;4.5mm&lt;/code&gt; an. Anschließend wird die maximale Fräsbreite festgelegt. Gemeint ist hier, wie breit die &amp;ldquo;Täler&amp;rdquo; zwischen den Buchstaben sein sollen. Da ich für den invertierten Carve eine &amp;ldquo;Talsohle&amp;rdquo; benötige, habe ich hier einen sehr großen Wert eingestellt. Zum Schluss dann sollte die Taste &lt;code&gt;Umrahmung auswählen&lt;/code&gt; geklickt werden. Hiermit ist die Fräsarbeit dann nach außen begrenzt.&lt;/p&gt;&#10;&lt;p&gt;Bitte dieses Bearbeitungsfenster vorerst geöffnet lassen.&lt;/p&gt;&#10;&lt;figure class="media-frame media-frame--center"&gt;&#10; &lt;img src="https://blog.schallbert.de/assets/images/posts/2022-09-27_carve_text.jpg" alt="Image: Settings for the text to carve"&gt;&lt;/figure&gt;&#10;&lt;h3 id="3-werkzeugauswahl"&gt;3. Werkzeugauswahl&lt;/h3&gt;&#10;&lt;p&gt;&lt;figure class="media-frame media-frame--right"&gt;&#10; &lt;img src="https://blog.schallbert.de/assets/images/posts/2022-09-27_carve_preview1.jpg" alt="Image: Carve preview 1"&gt;&lt;/figure&gt;&#10;Wählen Sie nun das V-Nutwerkzeug durch Klicken in der entsprechenden Zeile Ihrer Werkzeugliste für die Textfräsung aus. Stellen Sie sicher, dass das Häkchen bei &lt;code&gt;Textobjekt zerlegen&lt;/code&gt; im Fenster &amp;ldquo;Text Fräsen&amp;rdquo; nicht erscheint, denn nur dann können Sie weitere Anpassungen vornehmen. Schließen Sie nun dieses Fenster per Klick auf &lt;code&gt;OK&lt;/code&gt;. Nun wählen Sie &lt;code&gt;Vorschau&lt;/code&gt; aus, um sich einen Eindruck von der Fräsarbeit zu verschaffen. Sehen Sie die eng beisammenstehenden parallelen Linien rechts im Bild? Dies wird durch den Parameter &lt;code&gt;Räumzustellung&lt;/code&gt; aus der Werkzeugtabelle verursacht. Für saubere Arbeiten mit einem Gravurfräser sollte dieser Wert bei kleiner gleich &lt;code&gt;5%&lt;/code&gt; bleiben.&lt;/p&gt;&#10;&lt;p&gt;Hmm, so werden Sie noch keine befriedigenden Arbeitsergebnisse erhalten, und die Fräsarbeit wird lange dauern. Wir benötigen also zusätzlich ein paar Räumpfade mit einem normalen Schaftfräser.&lt;/p&gt;&#10;&lt;h3 id="4-räumen"&gt;4. Räumen&lt;/h3&gt;&#10;&lt;p&gt;&lt;figure class="media-frame media-frame--right"&gt;&#10; &lt;img src="https://blog.schallbert.de/assets/images/posts/2022-09-27_carve_clearing_tool.jpg" alt="Image: Carve preview 1"&gt;&lt;/figure&gt;&#10;Speichern Sie Ihr Projekt spätestens jetzt ab. Nach dem aktuellen Schritt kann der Text nicht mehr bearbeitet werden!&lt;/p&gt;&#10;&lt;p&gt;Um den Fräser für die Räumung der &amp;ldquo;Talsohle&amp;rdquo; hinzuzufügen, wählen Sie den Carve-Pfad aus und wählen &lt;code&gt;Textobjekt zerlegen&lt;/code&gt; an. Bestätigen Sie mit &lt;code&gt;OK&lt;/code&gt; und wählen den Fräspfad erneut aus. Nun erscheint die Werkzeugkonfiguration. Fügen Sie das Räumwerkzeug hinzu. Vorzugsweise ist sein Durchmesser geringer als der Abstand zwischen Schrift und Rahmen, sodass eine möglichst große Fläche später glatt geräumt werden kann (Anmerkung: Ich habe das nicht gemacht, weswegen auf meinem Beispiel ein paar raue Stellen übrig geblieben sind). Die Räumzustellung dieses Fräsers wähle ich bei Holz zwischen 20% und 40%.&lt;/p&gt;&#10;&lt;p&gt;Wenn Sie für die Gravur einen Fräser ohne Abflachung am Boden gewählt haben (ich empfehle hier gern &lt;code&gt;0.5mm&lt;/code&gt; als guten Kompromiss zwischen hoher Auflösung und guter Fertigungsqualität), können Sie die Räumzustellung des Fräsers in der Werkzeugtabelle zur Verbesserung der Oberflächenqualität noch einmal nach unten korrigieren.&lt;/p&gt;&#10;&lt;h3 id="5-zweite-vorschau"&gt;5. Zweite Vorschau&lt;/h3&gt;&#10;&lt;p&gt;&lt;figure class="media-frame media-frame--right"&gt;&#10; &lt;img src="https://blog.schallbert.de/assets/images/posts/2022-09-27_carve_preview2.jpg" alt="Image: Carve preview 2"&gt;&lt;/figure&gt;&#10;Ok, jetzt sollten wir durch sein. Nochmal kurz die Vorschau ausgewählt und sich über die reduzierte Verarbeitungszeit gefreut, und ran an die Maschine?&lt;/p&gt;&#10;&lt;p&gt;Ah, eine weitere Optimierung kann für das Gravurfräsen angebracht sein: Unter &lt;code&gt;Einstellungen&lt;/code&gt; die Sicherheitshöhe auf ein Minimum reduzieren (aber ohne in Klemmen oder andere Hindernisse zu rauschen). Das ständige Aus- und Eintauchen ins Material kostet bei Gravuren in Estlcam immer recht viel Zeit, wenn sich die Sicherheitshöhe in großem Abstand zur Werkstückoberfläche befindet.&lt;/p&gt;&#10;&lt;p&gt;Keine Sorge, wenn die Schrift in der Vorschau nun nicht mehr lesbar ist. Das ist total normal, weil ja nur die (jetzt wegen Verwendung des Räumfräsers gröber dargestellten) Fräspfade angezeigt werden.&lt;/p&gt;&#10;&lt;p&gt;Nach einer letzten Prüfung von Vorschüben und Werkzeugen kann&amp;rsquo;s jetzt endlich losgehen :)&lt;/p&gt;&#10;&lt;h3 id="engrave"&gt;6. Auf die CNC damit!&lt;/h3&gt;&#10;&lt;p&gt;Viel Spaß beim Fräsen. Ich für meinen Teil fand es sehr entspannend, der Maschine dabei zuzusehen, wie sie langsam ein immer deutlicher werdendes Bild ins Holz schneidet, was aber erst bei Verwendung des V-Fräsers lesbar wird.&#10;&lt;figure class="media-frame media-frame--right"&gt;&#10; &lt;img src="https://blog.schallbert.de/assets/images/posts/2022-09-27_carve_results.jpg" alt="Image: The completed sign"&gt;&lt;/figure&gt;&lt;/p&gt;&#10;</description></item><item><title>AnywhereAmps Alpha</title><link>https://blog.schallbert.de/anywhereamps-diy/</link><pubDate>Sat, 10 Sep 2022</pubDate><author>Schallbert</author><guid>https://blog.schallbert.de/anywhereamps-diy/</guid><description type="html">&#10; &lt;img src="https://blog.schallbert.de/assets/images/aa_alpha/front-thumb.jpg"&#10; class="post-cover"&#10; alt="Image: AnywhereAmps Alpha&amp;#39;s insides"&#10; title="AnywhereAmps Alpha" /&gt;&#10;&lt;h2 id="pläne"&gt;Pläne&lt;/h2&gt;&#10;&lt;p&gt;{% include gallery id=&amp;ldquo;gallery&amp;rdquo; caption=&amp;ldquo;Die von mir angefertigten und verwendeten Pläne für &lt;strong&gt;AnywhereAmps Alpha&lt;/strong&gt;. Zum Vergrößern anklicken.&amp;rdquo; %}&lt;/p&gt;&#10;&lt;h2 id="listen"&gt;Listen&lt;/h2&gt;&#10;&lt;h3 id="werkzeuge"&gt;Werkzeuge&lt;/h3&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Benötigte Tools&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Bohrmaschine&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Oberfräse, Zirkelhalterung&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Multitool: Schleifen, Holzschnitt, Fräskopf&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Hand- oder Tischkreissäge mit Schutzbügel&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Handsäge, fein&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Lochschneider d&amp;gt;=100mm&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Stechbeitel, 12mm&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Hammer&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Schraubendreher, Bits&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Holzbohrer: 3mm, 4, 5, 6, 8, 10, 12mm, Senkbohrer 45°, Forstner 30mm&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Stahlbohrer: 4,3 mm, Senkung 45°&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Oberfräsere: 8mm gerade, 12mm gerade, 45°/d12mm optional&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Lötkolben, Lötzinn, Schrumpfschlauch, Heißkleber, 2m 0,75mm² Kabel etc.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;figure class="media-frame media-frame--center"&gt;&#10; &lt;img src="https://blog.schallbert.de/assets/images/aa_alpha/wood_tools.jpg" alt="Holzschnitzwerkzeuge"&gt;&lt;/figure&gt;&#10;&lt;h3 id="materialliste"&gt;Materialliste&lt;/h3&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Artikel&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Größe [mm]&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Anzahl&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;~ Preis [€]&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Kessel: Pappel Multiplex&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;12&amp;quot; x 6&amp;quot; x 7mm&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;1&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;62&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Ober-/Unterteil: Pappel-Multiplex&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;12&amp;quot; x 12mm&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;2&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;8&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Lautsprecher-Adapterplatten: Pappel Multiplex&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;L 300 B 150 W 12&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;1&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;2&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Verstärker-Halteplatte: Pappel Multiplex&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;L 160 B 95 W 12&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;1&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;1&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Verstärkung &amp;amp; Halterungen: Birke Multiplex&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;L 220 B 30 W 12&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;4&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;2&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Schrauben (vorzugsweise Torx)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;12 x 3&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;20&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;2&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Schrauben (Batteriehalter, Haltegriff)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;16 x 3&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;12&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;2&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Schrauben &amp;amp; Muttern, Leiterplattenhalter, Unterlegscheiben&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;15 x M4&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;8&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;2&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Schaumstoffdichtung&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;2000 x 9 x 3&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;1&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;6&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;1/4&amp;quot; Eingangsbuchse&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;50 x 12&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;1&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;3&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Netzschalter mit LED, 250VAC 4A&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;1&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;3&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Potentiometer 250k log 6mm Achse + Lautstärkeknopf&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;22mm Durchmesser&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;1&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;5&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;9V Ausgangsbuchse&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;5.6 brl, 2.4pin&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;1&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;2&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Lüftergitter (Lautsprecherschutzabdeckung)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;120 x 120&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;1&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;1&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&amp;ldquo;I-Type&amp;rdquo; Schaumstoffdichtung (Lautsprecher)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;600 x 9 x 2&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;1&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;2&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Aluminium-Gehäuse&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;143 x 72 x 43&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;1&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;4&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Class-D Endstufenplatine, z.B. TPA 3110&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;70 x 100 + 22&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;1&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;16&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Piezo-Hochtöner, z. B. Monacor MPT-005&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;85 x 85 x 72&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;2&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;12&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;4&amp;quot; Tief-/Mitteltöner, z. B. Visaton KT100 V 4Ohm&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;99 x 99 x 52&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;1&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;25&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Batterie, 10V - 18V&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Was Sie bevorzugen&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;1&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;?&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Elektronikteile für Platine, Sicherung&amp;hellip;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;1&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;10&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Ersatzholz z.B. als Maske, Schablone, Helfer&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;z.B. 300 x 300&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;1&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;0&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;h3 id="bauteile-auf-der-platine"&gt;Bauteile auf der Platine&lt;/h3&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;ID&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Artikel&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Typ&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Wert&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;R1&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Widerstand&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;0207&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;100k&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;C1&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Elko&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;RM=2 D=5&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;1 µF&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;C2&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Elko&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;RM=2 D=5&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;4,7 µF&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;R3&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Widerstand&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;0207&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;10k&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;R2&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Widerstand&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;0207&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;100k&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;-&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Stiftleiste&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;2-polig&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;-&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;-&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Stiftleiste&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;4-polig&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;-&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;-&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Stiftleiste&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;2-polig&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;-&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;C1&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Elko&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;RM=2 D=5&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;2,2 µF&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;R4&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Widerstand&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;0207&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;10k&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;IC1&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;NE5532&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;DIP-8&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;-&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;h3 id="brückendrähte"&gt;Brückendrähte&lt;/h3&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Von&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Nach&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Länge [mm]&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;(11/1)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;(11/2)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;2.54&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;(10/3)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;(10/1)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;5.08&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;(14/6)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;(14/2)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;10.6&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;(8/1)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;(8/6)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;12.7&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;(9/2)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;(9/5)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;7.62&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;(3/2)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;(3/0)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;5.08&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;(22/0)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;(22/1)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;2.54&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;p&gt;Loch (x/y)&lt;/p&gt;&#10;&lt;h2 id="der-aufbau"&gt;Der Aufbau&lt;/h2&gt;&#10;&lt;h3 id="löcher-schneiden"&gt;Löcher schneiden&lt;/h3&gt;&#10;&lt;p&gt;&lt;figure class="media-frame media-frame--right"&gt;&#10; &lt;img src="https://blog.schallbert.de/assets/images/aa_alpha/adapterboard_before.jpg" alt="Bild: Adapterplatte angezeichnet"&gt;&lt;/figure&gt;&#10;&lt;strong&gt;Warnung&lt;/strong&gt; Wenn Sie den Lochschneider als Handwerkzeug verwenden, seien Sie sehr vorsichtig. &lt;em&gt;Ich halte es für ein gefährliches Werkzeug.&lt;/em&gt; Gehen Sie sanft vor, wählen eine relativ hohe Drehzahl &lt;code&gt;&amp;gt;300rpm&lt;/code&gt; und üben Sie nur geringem Druck aus. Verwenden Sie eine Drehmomentstütze und den Drehmomentbegrenzer Ihrer Bohrmaschine. Vergewissern Sie sich, dass die Schneidköpfe richtig befestigt sind und dass das Werkstück sicher befestigt ist. Bereiten Sie sich darauf vor, dass die Maschine plötzlich hängen bleiben kann und beachten Sie das hohe Trägheitsmoment des schweren Werkzeugs.&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;Bereiten Sie das Brett für die Lautsprecheradapterplatten vor wie &lt;a href="https://blog.schallbert.de/anywhereamps-diy/#pl%c3%a4ne"&gt;in den &amp;ldquo;Plänen&amp;rdquo;&lt;/a&gt; gezeigt.&lt;/li&gt;&#10;&lt;li&gt;Bereiten Sie das Gehäuse vor: Markieren Sie die Mitte der Höhe und zeichnen Sie eine Hilfslinie an der Außenseite. Eventuell sollte ein Maßband verwendet werden, um die Krümmung zu berücksichtigen. Markieren Sie dann die drei Lochmitten. Ich schlage eine geodätische Kurve von &lt;code&gt;125mm&lt;/code&gt; Radius zwischen ihnen vor.&lt;/li&gt;&#10;&lt;li&gt;Bereiten Sie den oberen Kreis für den Ausschnitt des Bedienfeldes vor.&lt;/li&gt;&#10;&lt;li&gt;Wähle einen Lochdurchmesser von &lt;code&gt;75mm&lt;/code&gt; auf dem Lochschneider.&lt;/li&gt;&#10;&lt;li&gt;Schneiden Sie zwei Löcher für die Hochtöner in die Adapterplatte. Wenn die Platine nach der Hälfte des Schnitts umgedreht wird, werden die Kanten der Löcher sauberer.&lt;/li&gt;&#10;&lt;li&gt;Schneiden Sie nun die beiden Löcher in das Gehäuse. Seien Sie hier sehr vorsichtig, Sie können die innere Oberfläche leicht zerstören, wenn Sie mit zu geringer Geschwindigkeit schneiden oder vertikalen Druck ausüben.&lt;/li&gt;&#10;&lt;li&gt;Schneiden Sie ein Loch in die von Ihnen vorbereitete obere Platte des Gehäuses. Ich habe &lt;code&gt;76mm&lt;/code&gt; verwendet.&lt;/li&gt;&#10;&lt;li&gt;Ändern Sie den Lochdurchmesser an Ihrem Cutter auf &lt;code&gt;92mm&lt;/code&gt; und wiederholen Sie den Vorgang für den Bass/Mitten-Lautsprecher.&lt;/li&gt;&#10;&lt;li&gt;Den Schnitt für das mittlere Loch des Gehäuses wiederholen.&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;figure class="media-frame media-frame--center"&gt;&#10; &lt;img src="https://blog.schallbert.de/assets/images/aa_alpha/shell_holes.jpg" alt="Bild: Löcher in das Gehäuse schneiden"&gt;&lt;/figure&gt;&#10;&lt;h3 id="fräsen"&gt;Fräsen&lt;/h3&gt;&#10;&lt;figure class="media-frame media-frame--right"&gt;&#10; &lt;img src="https://blog.schallbert.de/assets/images/aa_alpha/router_topbottom.jpg" alt="Bild: Fräsen des Deckels per Zirkel"&gt;&lt;/figure&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;Legn Sie den Kessel auf das Brett, aus dem Ober- und Unterteil des Gehäuses gefertig werden sollen. Zeichnen Sie Innen- und Außendurchmesser an.&lt;/li&gt;&#10;&lt;li&gt;Finden Sie den Mittelpunkt dieses Kreises, z.B. mit Hilfe der &lt;a href="https://www.wikihow.com/Find-the-Center-of-a-Circle" target="_blank" rel="noopener noreferrer" class="external-link"&gt;Methode 3 dieser Anleitung&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt;.&lt;/li&gt;&#10;&lt;li&gt;Montieren Sie das Zirkelwerkzeug auf Ihrer Oberfräse und spannen Sie einen geraden Fräskopf mit &lt;code&gt;12mm&lt;/code&gt; Durchmesser ein.&lt;/li&gt;&#10;&lt;li&gt;Schneiden Sie den &amp;ldquo;inneren&amp;rdquo; Kreis für den Falz. Ich empfehle eine Tiefe von &lt;code&gt;4mm&lt;/code&gt;.&lt;/li&gt;&#10;&lt;li&gt;(optional) Montieren Sie den &lt;code&gt;8mm&lt;/code&gt;-Fräskopf.&lt;/li&gt;&#10;&lt;li&gt;Schneiden Sie den &amp;ldquo;äußeren&amp;rdquo; Kreis in mehreren Schritten, bis Sie die gesamte Tiefe Ihres Brettes ausgeschnitten haben.&lt;/li&gt;&#10;&lt;li&gt;Drehen Sie den Kreis um, und fasen Sie die Kanten z.B. mit einem Radiusfräser an.&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;h3 id="schnitz--und-modellierarbeiten"&gt;Schnitz- und Modellierarbeiten&lt;/h3&gt;&#10;&lt;p&gt;&lt;figure class="media-frame media-frame--right"&gt;&#10; &lt;img src="https://blog.schallbert.de/assets/images/aa_alpha/adapterboard_curve.jpg" alt="Bild: 3D-Schnitzerei der Adapterplatten"&gt;&lt;/figure&gt;&#10;Sowohl die Adapterplatten als auch die Batteriehalterung sitzen am Durchmesser des Gehäuses, so dass sie eine gebogene Form haben müssen. Mit Handwerkzeugen fand ich die Arbeiten recht anspruchsvoll.&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;Bestimmen Sie die benötigten Tiefen für die parallelen Schnitte, damit beim Verbinden der Schnitte eine gewölbte Oberfläche entsteht. Für die Adapterplatten nehmen Sie den inneren Schalendurchmesser, für die Akkuhalterung den äußeren. Beachten Sie, dass die Adapterplatten für die Lautsprecher konvex sind, während die Batteriehalterung konkav sein muss.&lt;/li&gt;&#10;&lt;li&gt;Verwenden Sie eine Säge, um diese parallelen Schnitte durchzuführen. Berechnen Sie dabei die Breite des Sägeblatts mit ein.&lt;/li&gt;&#10;&lt;li&gt;Verbinden Sie die Schnitte mit einem Stechbeitel oder Meißel. Versuchen Sie, entlang der Maserung zu arbeiten.&lt;/li&gt;&#10;&lt;li&gt;Verwenden Sie einen Bandschleifer, Multitool oder eine Raspel um die Wölbung zu glätten, bis sie sehr gut passt. Die Verbindung muss schließlich am Ende Luftdicht sein.&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;p&gt;&lt;figure class="media-frame media-frame--center"&gt;&#10; &lt;img src="https://blog.schallbert.de/assets/images/aa_alpha/adapterboard_done.jpg" alt="Bild: Schleifen der Adapterplatten"&gt;&lt;/figure&gt;&#10;6. Kleben Sie die Adapterplatten mit Holzleim auf der Innenseite des Kessels fest.&#10;7. Vergewissern Sie sich, dass die Löcher gut ausgerichtet sind. Nehmen Sie dann Heißkleber oder eine Mischung aus Leim und Holzmehl zur Hand, um die Adapter zu fixieren und abzudichten, während der Leim aushärtet.&#10;8. Schleifen Sie den Anschluss zwischen den beiden Teilen an oder nehmen Sie eine Viertelstabfräser und bringen eine Rundung an. Ich fand, dass dies der am wenigsten kontrollierbare Teil des ganzen Baus war, weil die Oberfräse nicht richtig auf der gekrümmten Oberfläche sitzen möchte, was die Kanten unterschiedlich breit werden lässt. Ich musste mit dem Multitool einiges an Nacharbeit leisten.&lt;/p&gt;&#10;&lt;figure class="media-frame media-frame--center"&gt;&#10; &lt;img src="https://blog.schallbert.de/assets/images/aa_alpha/shell_chamfered.jpg" alt="Bild: Kessel mit Adapterplatten, abgeschrägt"&gt;&lt;/figure&gt;&#10;&lt;h3 id="weitere-holzarbeiten"&gt;Weitere Holzarbeiten&lt;/h3&gt;&#10;&lt;p&gt;Kopieren Sie die Abmessungen des Verstärkerträgers aus dem Abschnitt &lt;a href="https://blog.schallbert.de/anywhereamps-diy/#pl%c3%a4ne"&gt;Pläne&lt;/a&gt;. Verwenden Sie einen Forstnerbohrer oder den Lochfräser, um die Vertiefung für das Potentiometer zu fertigen. Eine Tiefe von &lt;code&gt;6mm&lt;/code&gt; sollte ausreichen, um das Potentiometer richtig zu montieren. Für den Schalter ist ein Stufenbohrer gut geeignet, sodass der benötigte Durchmesser genau erreicht werden kann. Bohren Sie schließlich die Löcher für die Buchsen.&lt;/p&gt;&#10;&lt;p&gt;&lt;figure class="media-frame media-frame--right"&gt;&#10; &lt;img src="https://blog.schallbert.de/assets/images/aa_alpha/batterymount.jpg" alt="Bild: Handgefertigte Batteriehalterung"&gt;&lt;/figure&gt;&#10;Da es eine Vielzahl von Batterietypen gibt, habe ich kein spezielles Design für den Schieber und die Batteriekontakte entworfen. Ich habe einfach typische Kabelschuhe verwendet und sie in die Adapterplatte geklebt, damit sie einen guten elektrischen Kontakt zu den Polen der Batterie herstellen können. Da meine Batterie keine Verriegelung hat, habe ich den Schieber wie einen Keil allmählich dicker werden lassen, so dass die Batterie an der richtigen Stelle klemmen würde.&lt;/p&gt;&#10;&lt;p&gt;Um das Gehäuse oben und unten geschlossen zu halten und gleichzeitig die Holzoberfläche vor Stößen zu schützen, habe ich ein paar Holzstangen zugeschnitten. Sie sind &lt;code&gt;25mm&lt;/code&gt; länger als die Gesamthöhe des Gehäuses und ihre Breite liegt bei &lt;code&gt;25mm&lt;/code&gt; und &lt;code&gt;12mm&lt;/code&gt; an den Gehäuseseiten.&lt;/p&gt;&#10;&lt;h3 id="elektronik"&gt;Elektronik&lt;/h3&gt;&#10;&lt;figure class="media-frame media-frame--right"&gt;&#10; &lt;img src="https://blog.schallbert.de/assets/images/aa_alpha/circuit_board_soldered.jpg" alt="Bild: fertig verlötete Leiterplatte"&gt;&lt;/figure&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;Schneiden Sie die Platine auf die benötigte Größe. Fertigen Sie Bohrungen für die Schrauben nach &lt;a href="https://blog.schallbert.de/anywhereamps-diy/#pl%c3%a4ne"&gt;Plan&lt;/a&gt;. Es ist ratsam, das Layout maßstabsgetreu auszudrucken, damit Sie ihn als Maske verwenden können.&lt;/li&gt;&#10;&lt;li&gt;Platzieren Sie die Leiterbahnunterbrechungen. Man kann dafür einen &lt;code&gt;3mm&lt;/code&gt; Metallbohrer verwenden und von Hand vorgehen, falls kein spezielles Werkzeug dafür vorhanden ist.&lt;/li&gt;&#10;&lt;li&gt;Fertigen und platzieren Sie die Brückendrähte. Nehmen Sie gern diese &lt;a href="https://blog.schallbert.de/anywhereamps-diy/#br%c3%bcckendr%c3%a4hte"&gt;Liste&lt;/a&gt; als Referenz.&lt;/li&gt;&#10;&lt;li&gt;Platzieren Sie die Widerstände.&lt;/li&gt;&#10;&lt;li&gt;Verwenden Sie etwas Klebeband, um die Teile auf der Platine zu fixieren. Anschließend können Sie diesen Satz Teile verlöten.&lt;/li&gt;&#10;&lt;li&gt;Platzieren Sie die Kondensatoren. Denken Sie daran, dass Sie vielleicht nicht genug Platz in Ihrem Gehäuse haben, so dass Sie sie eventuell lieber waagerecht einbauen möchten.&lt;/li&gt;&#10;&lt;li&gt;Platzieren, fixieren und schließlich löten Sie nun die restlichen Bauteile.&lt;/li&gt;&#10;&lt;li&gt;Bereiten Sie alle Verbindungen und Drähte zur Platine vor: Potentiometer, Instrumenteneingang, Endstufenausgang, &amp;ldquo;VCC/GND&amp;rdquo;.&lt;/li&gt;&#10;&lt;li&gt;Überprüfen Sie ob Stromversorgung funktioniert. Wenn nur &lt;code&gt;VCC/GND&lt;/code&gt; angeschlossen wird, sollte die Schaltung zwischen &lt;code&gt;2mA&lt;/code&gt; und &lt;code&gt;10mA&lt;/code&gt; Strom ziehen, je nach Potentiometerstellung und Versorgungsspannung. Achten Sie darauf, dass Sie die Polarität nicht verwechseln, der NE5532 wird dadurch zerstört (glauben Sie mir, ich weiß es!). Sie sollten &lt;code&gt;VCC/2&lt;/code&gt; messen, wenn Sie den Ausgang der Op-Amp-Stufe, die die virtuelle Masse erzeugt gegen Masse abgreifen.&lt;/li&gt;&#10;&lt;li&gt;Überprüfen Sie die Verstärkungsstufe. Wenn Sie ein Oszilloskop und einen Funktionsgenerator haben, sollte das eine einfach sein. Stehen solche Werkzeuge nicht zur Verfügung, schließen Sie den Eingang an eine Audioquelle an, z. B. ein Smartphone, und den Ausgang an einen &lt;code&gt;2k2&lt;/code&gt;-Widerstand in Reihe mit einer LED und einer Diode wie &lt;code&gt;1N4148&lt;/code&gt; oder &lt;code&gt;1N4007&lt;/code&gt;. Drehen Sie Ihr Smartphone auf volle Lautstärke. Die LED sollte anfangen zu flackern, wenn der Widerstand des Potentiometers vergrößert wird. Ab welcher Position das Flackern einsetzt, hängt von der Vorwärtsspannung der LED, der Versorgungsspannung und der maximalen Ausgangsspannung der Quelle ab.&#10;&lt;figure class="media-frame media-frame--right"&gt;&#10; &lt;img src="https://blog.schallbert.de/assets/images/aa_alpha/ampcarrier.jpg" alt="Bild: Verstärkerträger und Elektronikgehäuse"&gt;&lt;/figure&gt;&lt;/li&gt;&#10;&lt;li&gt;Ich schlage vor, die gesamte Elektronik und den Audioeingang - mit Ausnahme des &amp;ldquo;9V&amp;rdquo;-Versorgungsreglers - in ein Metallgehäuse einzubauen, um elektromagnetische Störungen zu reduzieren. Je nach Leistung der Endstufe werden passive oder sogar aktive Kühlkörper benötigt. In meinem Fall genügen einige Löcher im Gehäuse.&lt;/li&gt;&#10;&lt;li&gt;Befestigen Sie das Gehäuse an der Adapterplatte der Endstufe.&lt;/li&gt;&#10;&lt;li&gt;Schneiden Sie Löcher in das Gehäuse, wie auf der Adapterplatte angegeben.&lt;/li&gt;&#10;&lt;li&gt;Schalter, Potentiometer und Buchsen einsetzen. Die Anschlussdrähte anlöten.&lt;/li&gt;&#10;&lt;li&gt;Fügen Sie eine Sicherung, z.B. &lt;code&gt;4.0A&lt;/code&gt;, in den Aufbau auf dem Minuspfad zur Batterie für zusätzliche Sicherheit ein.&lt;/li&gt;&#10;&lt;li&gt;Montieren Sie Vorverstärker und Endstufe.&lt;/li&gt;&#10;&lt;li&gt;Nun kommt der finale Test. Nehmen Sie dafür z.B. einen alten Lautsprecher. Ohne angeschlossene Quelle sollten Sie bei voller Verstärkung nur ein leichtes Rauschen aus dem Lautsprecher hören. Wenn Sie Ihr Smartphone anschließen, beginnen Sie mit einer Verstärkung von &amp;ldquo;0&amp;rdquo; und einer geringen Lautstärke des Smartphones. Erhöhen Sie dann die Verstärkung des Vorverstärkers, um zu prüfen, ob alles funktioniert.&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;h3 id="endmontage"&gt;Endmontage&lt;/h3&gt;&#10;&lt;figure class="media-frame media-frame--right"&gt;&#10; &lt;img src="https://blog.schallbert.de/assets/images/aa_alpha/speakers_mounted.jpg" alt="Bild: Chassis im Gehäuse montiert"&gt;&lt;/figure&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;Montieren Sie die Lautsprecher. Verwenden Sie Heißkleber oder eine Schaumstoff-/Gummidichtung, um die Verbindungen luftdicht zu machen.&lt;/li&gt;&#10;&lt;li&gt;Verschließen Sie alle noch vorhandenen Löcher.&lt;/li&gt;&#10;&lt;li&gt;Löten Sie die Hochtöner parallel zum Basslautsprecher und schließen Sie das Ausgangskabel Ihres Verstärkers an.&lt;/li&gt;&#10;&lt;li&gt;Montieren Sie den Batteriehalter und schließen Sie die Kabel an die Klemmen des Verstärkers an.&lt;/li&gt;&#10;&lt;li&gt;Bringen Sie eine Dichtung an der oberen und unteren Deckelplatte an um das Gehäuse später luftdicht versiegeln zu können.&lt;/li&gt;&#10;&lt;li&gt;Drehen Sie die Baugruppe um und setzen Sie die &amp;ldquo;obere&amp;rdquo; Platte mit dem Verstärker wie auf dem Bild gezeigt ein.&lt;/li&gt;&#10;&lt;li&gt;Achten Sie darauf, dass keine der Lautsprecherklemmen das Verstärkergehäuse berührt, sonst besteht die Gefahr eines Kurzschlusses in der Endstufe.&#10;&lt;figure class="media-frame media-frame--right"&gt;&#10; &lt;img src="https://blog.schallbert.de/assets/images/aa_alpha/inside_thumb.jpg" alt="Bild: alle Komponenten an ihrem Platz"&gt;&lt;/figure&gt;&lt;/li&gt;&#10;&lt;li&gt;Die Simulation zeigt, dass die Basswiedergabe besser wird, wenn man Dämmwolle hinzufügt. Ich habe ein altes Kissen &amp;ldquo;geschlachtet&amp;rdquo;, um welche zu bekommen.&lt;/li&gt;&#10;&lt;li&gt;Schließen Sie das Gehäuse und befestigen Sie es mit den Holzstäben, die Sie zuvor vorbereitet haben (oder verwenden Sie stattdessen Schrauben)&lt;/li&gt;&#10;&lt;li&gt;Fertig, Applaus! Sieht AnywhereAmps Alpha nicht wunderschön aus?&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;h2 id="feinschliff"&gt;Feinschliff&lt;/h2&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;Die Hochtöner sind zu laut? Prüfen Sie, wie viel höher die Empfindlichkeitswerte Ihrer Hochtöner im Vergleich zum Bass-Chassis sind. Löten Sie ggf. 1W-Widerstände in Reihe zu den Hochtönern. Laut den &lt;a href="https://blog.schallbert.de/projects/aa_alpha/#sound-hardware"&gt;technischen Daten der Chassis&lt;/a&gt; habe ich Werte von &lt;code&gt;96dB@1W/1m&lt;/code&gt; zu &lt;code&gt;80dB@1W/1m&lt;/code&gt;. Ich musste die Hochtöner also deutlich leiser machen. Mit mit einem &lt;code&gt;1k&lt;/code&gt;-Potentiometer in Reihe dämpfte ich die Hochtöner auf das von mir gewünschte Maß herunter und wählte schließlich einen Widerstand von &lt;code&gt;470Ohm&lt;/code&gt;, um das Potentiometer zu ersetzen.&lt;/li&gt;&#10;&lt;li&gt;Der Bass flattert bei hoher Lautstärke? Höchstwahrscheinlich ist das Gehäuse nicht luftdicht. Legen Sie einen Testton auf, z.B. &lt;code&gt;35Hz&lt;/code&gt; &lt;a href="https://www.youtube.com/watch?v=yvHCAne_VLo" target="_blank" rel="noopener noreferrer" class="external-link"&gt;youtube link&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt;, und prüfen Sie, ob Sie hören oder fühlen, wo die Luft durchkommt. Reparieren Sie das/die Leck(s).&lt;/li&gt;&#10;&lt;li&gt;Ihr 9-Volt-Schaltwandler strahlt Rauschen in Ihre Verstärkeranlage ab? Versuchen Sie, mit einem &lt;code&gt;100nF&lt;/code&gt;-Kondensator zu glätten, und fügen Sie einen &lt;code&gt;10k&lt;/code&gt;-Parallelwiderstand hinzu, um eine Dummy-Last zu erzeugen. Wenn beides nicht hilft, nehmen Sie stattdessen einen Linearwandler wie &lt;a href="https://www.elektronik-kompendium.de/public/schaerer/ureg3pin.htm" target="_blank" rel="noopener noreferrer" class="external-link"&gt;LM7809&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt;. Da er viel mehr Wärme abgibt als sein schaltender Kollege, sollten Sie ihn an Ihrem Metallgehäuse montieren.&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;p&gt;&lt;a href="https://blog.schallbert.de/projects/aa_alpha/"&gt;Zurück zur Projekt-Hauptseite&lt;/a&gt;&lt;/p&gt;&#10;</description></item><item><title>CNC job erstellen</title><link>https://blog.schallbert.de/cnc-job-setup/</link><pubDate>Mon, 22 Aug 2022</pubDate><author>Schallbert</author><guid>https://blog.schallbert.de/cnc-job-setup/</guid><description type="html">&#10; &lt;img src="https://blog.schallbert.de/assets/images/posts/2022-08-22_cnc_job_setup-thumb.jpg"&#10; class="post-cover"&#10; alt="Image of a CNC job demo"&#10; title="CNC job erstellen" /&gt;&#10;&lt;h2 id="demo-video-über-vorbereitung-und-ausführung-eines-fräsjobs"&gt;Demo video über Vorbereitung und Ausführung eines Fräsjobs&lt;/h2&gt;&#10;&lt;figure class="media-frame media-frame--center media-frame--video"&gt;&#10; &lt;div class="media-video"&gt;&lt;iframe&#10; src="https://makertube.net/videos/embed/mFreMUKxXktZH3kpqdENGJ"&#10; title="How-to: CNC job setup &amp;amp;amp; quick demo"&#10; loading="lazy"&#10; allow="autoplay; fullscreen; picture-in-picture"&#10; allowfullscreen&#10; style="width: 100%; height: auto; min-height: 315px; aspect-ratio: 16/9;"&#10; &gt;&lt;/iframe&gt;&lt;/div&gt;&#10; &lt;figcaption class="media-caption"&gt;&#10; &lt;span class="caption-text"&gt;How-to: CNC job setup &amp;amp;amp; quick demo&lt;/span&gt;&lt;a href="https://makertube.net/videos/embed/mFreMUKxXktZH3kpqdENGJ" class="attr-link" target="_blank" rel="noopener noreferrer"&gt;↗&lt;/a&gt;&lt;/figcaption&gt;&lt;/figure&gt;&#10;&lt;p&gt;Die folgenden Abschnitte beschreiben die im Video gezeigten Schritte.&lt;/p&gt;&#10;&lt;h3 id="checkliste-zur-vorbereitung"&gt;Checkliste zur Vorbereitung&lt;/h3&gt;&#10;&lt;p&gt;Bei komplett heruntergefahrener Anlage:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Das Werkstück sicher im Arbeitsbereich der CNC befestigen&lt;/li&gt;&#10;&lt;li&gt;Die G-Code Datei auf den Maschinenrechner übertragen&lt;/li&gt;&#10;&lt;li&gt;Not-Aus aktiviert (verhindert unbeabsichtigtes Anlaufen)&lt;/li&gt;&#10;&lt;li&gt;Energieversorgung zur CNC und Peripherie einschalten&lt;/li&gt;&#10;&lt;li&gt;Maschinenrechner mit der CNC verbinden und CNC-Programm starten&lt;/li&gt;&#10;&lt;li&gt;Not-Aus deaktivieren&lt;/li&gt;&#10;&lt;li&gt;Zu verwendende Fräser bereitlegen und auf Beschädigungen prüfen&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="checkliste-für-hochfahren-der-cnc"&gt;Checkliste für Hochfahren der CNC&lt;/h3&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;Not-Aus quittieren (Schrittmotortreiber aktivieren)&lt;/li&gt;&#10;&lt;li&gt;Maschine referenzieren&lt;/li&gt;&#10;&lt;li&gt;Werkzeugwechsel auf das erste Werkzeug im Job&lt;/li&gt;&#10;&lt;li&gt;X/Y Werkstücknullpunkte anfahren und setzen&lt;/li&gt;&#10;&lt;li&gt;Z-Nullpunkt ermitteln und setzen&lt;/li&gt;&#10;&lt;li&gt;CNC zurück in Warteposition fahren&lt;/li&gt;&#10;&lt;li&gt;Spindelwarmlauf durchführen&lt;/li&gt;&#10;&lt;li&gt;Peripheriegeräte auf Funktion prüfen (Absaugung, Kühlschmierung etc.)&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;h3 id="während-des-automatikbetriebs"&gt;Während des Automatikbetriebs&lt;/h3&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Maschine überwachen&#10;&lt;ol&gt;&#10;&lt;li&gt;Hören: Klingt die Maschine &amp;ldquo;wie immer&amp;rdquo;? Gibt es Vibrationen oder hört sich irgend etwas merkwürdig an?&lt;/li&gt;&#10;&lt;li&gt;Sehen: Ist die Düse für Kühlschmierstoff korrekt ausgerichtet? Alle Parameter am PC im grünen Bereich? Verfahrwege OK?&lt;/li&gt;&#10;&lt;li&gt;Fühlen: Treten Vibrationen der Maschine auf? Führen z.B. Kühlgebläse einen merklichen Luftstrom?&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;Falls erforderlich: Werkzeugwechsel durchführen bzw. Werkzeuge vermessen&lt;/li&gt;&#10;&lt;li&gt;Falls etwas nicht in Ordnung scheint: Job per &amp;ldquo;Pause&amp;rdquo;-Taste unterbrechen&lt;/li&gt;&#10;&lt;li&gt;Im Falle eines Falles den Not-Aus betätigen&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="nach-abschluss-des-fräsjobs"&gt;Nach Abschluss des Fräsjobs&lt;/h3&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Maschine zurück vor die Referenzschalter bewegen&lt;/li&gt;&#10;&lt;li&gt;Not-Aus betätigen und Maschinenrechner trennen&lt;/li&gt;&#10;&lt;li&gt;Energieversorgung der Maschine abschalten&lt;/li&gt;&#10;&lt;li&gt;Werkstück und gegebenenfalls Reststücke vom Maschinentisch nehmen&lt;/li&gt;&#10;&lt;li&gt;Reinigung von Maschine und Werkstück&lt;/li&gt;&#10;&lt;/ul&gt;&#10;</description></item><item><title>Vom Bild zum Pfad</title><link>https://blog.schallbert.de/path-from-image/</link><pubDate>Mon, 04 Jul 2022</pubDate><author>Schallbert</author><guid>https://blog.schallbert.de/path-from-image/</guid><description type="html">&#10; &lt;img src="https://blog.schallbert.de/assets/images/posts/2022-07-04_cam-thumb.jpg"&#10; class="post-cover"&#10; alt="Image: CAM drawing of Image-to-Path engraving"&#10; title="Vom Bild zum Pfad" /&gt;&#10;&lt;p&gt;Dies ist ein kurzer Beitrag über die Verwendung der beiden Open-Source-Programme &lt;a href="https://www.getpaint.net/" target="_blank" rel="noopener noreferrer" class="external-link"&gt;Paint.NET&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt; und &lt;a href="https://inkscape.org/" target="_blank" rel="noopener noreferrer" class="external-link"&gt;Inkscape&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt;, um aus Pixelgrafiken Pfade zu erzeugen. Diese können dann z.B. für Gravuren auf einer CNC-Maschine, einem Laserschneider oder einem Plotter verwendet werden. Und das sogar auf Grundlage eines digitalen Bildes von geringer Qualität in einem verlustbehafteten Datenkompressionsformat wie JPEG.&lt;/p&gt;&#10;&lt;p&gt;Der Beitrag wurde inspiriert von &lt;a href="https://graphicdesign.stackexchange.com/questions/113560/convert-parallel-paths-into-one-in-inkscape" target="_blank" rel="noopener noreferrer" class="external-link"&gt;diesem ausgezeichneten Stackexchange-Thread&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt;.&lt;/p&gt;&#10;&lt;h2 id="die-bildquelle"&gt;Die Bildquelle&lt;/h2&gt;&#10;&lt;figure class="media-frame media-frame--right"&gt;&#10; &lt;img src="https://blog.schallbert.de/assets/images/posts/2022-07-04_original.jpg" alt="Image: Lagerfeuer - wunderschön gezeichnet von Schallbert"&gt;&lt;/figure&gt;&#10;&lt;p&gt;Alles beginnt mit zu konvertierenden dem Bild (bzw. der Pixelgrafik).&lt;/p&gt;&#10;&lt;h3 id="geistiges-eigentum"&gt;Geistiges Eigentum&lt;/h3&gt;&#10;&lt;p&gt;Zu beachten ist, dass Bilder (auch selbstgezeichnete) in der Regel urheberrechtlich geschützt sind, so dass zunächst die (schriftliche) Zustimmung des Eigentümers des geistigen Eigentums eingeholt werden muss.&lt;/p&gt;&#10;&lt;p&gt;Sind Sie der Inhaber der geistigen Eigentumsrechte, ist das viel einfacher. Aus diesem Grund habe ich für diese kurze Demo ein Bild gewählt, das ich selbst erstellt habe.&lt;/p&gt;&#10;&lt;h3 id="bildqualität"&gt;Bildqualität&lt;/h3&gt;&#10;&lt;p&gt;Richtig gut zeichnen kann ich allerdings nicht, wie das Bild klar andeutet. Einige Linien sind übereinander gemalt und der Kontrast ist gering. Perfekte Bedingungen, um zu zeigen, was die Software leisten kann!&lt;/p&gt;&#10;&lt;p&gt;Hinweis: Es gilt wie immer das Credo &amp;ldquo;Garbage in, garbage out&amp;rdquo;. Es ist also sicher zu stellen, dass vor Beginn der Arbeiten die bestmögliche Bildqualität erreicht wird. Auf diese Weise ist die Bereinigung des Bildes viel einfacher und die Gravurpfade fallen simpler und genauer aus.&lt;/p&gt;&#10;&lt;h2 id="paintnet"&gt;Paint.NET&lt;/h2&gt;&#10;&lt;figure class="media-frame media-frame--right"&gt;&#10; &lt;img src="https://blog.schallbert.de/assets/images/posts/2022-07-04_luminance.jpg" alt="Image: Luminance change for maximum contrast"&gt;&lt;/figure&gt;&#10;&lt;h3 id="farbkorrektur-und-freistellung"&gt;Farbkorrektur und Freistellung&lt;/h3&gt;&#10;&lt;p&gt;Schneiden Sie Ihr Bild zunächst auf den Inhalt zu, den Sie später verwenden möchten. Nehmen Sie dann das Werkzeug &lt;code&gt;Helligkeitskurve&lt;/code&gt; (Anpassen -&amp;gt; Kurven) und versuchen Sie, die hellen und dunklen Töne so weit wie möglich zu trennen.&lt;/p&gt;&#10;&lt;p&gt;Zweitens, wenn Ihr Bild so schlecht ist wie meines, verwenden Sie das Werkzeug &lt;code&gt;Zauberstab&lt;/code&gt;. Spielen Sie mit den Toleranzen für die Farberkennung - um so den Hintergrund so gut wie möglich zu entfernen und das Motiv freizustellen.&lt;/p&gt;&#10;&lt;p&gt;Drittens: Verwenden Sie das &lt;code&gt;Kontur&lt;/code&gt;-Werkzeug (Effekte -&amp;gt; Stilisieren -&amp;gt; Kontur), um eine schöne dicke Linie als Umriss zu erhalten. Eine Umwandlung des Bildes in Graustufen und eine weitere Erhöhung des Kontrasts können helfen, diese Linie schwarz zu machen. Falls Sie Linien verlieren, die nicht dunkel genug sind - keine Sorge, das lässt sich später in Inkscape leicht beheben.&lt;/p&gt;&#10;&lt;h3 id="weitere-bereinigung"&gt;Weitere Bereinigung&lt;/h3&gt;&#10;&lt;p&gt;Entfernen Sie so viele &amp;ldquo;Pixelwolken&amp;rdquo; und andere Artefakte aus dem Bild wie möglich mit den Werkzeugen &lt;code&gt;Zauberstab&lt;/code&gt; oder &lt;code&gt;Radiergummi&lt;/code&gt;, das ist jetzt einfacher als später.&lt;/p&gt;&#10;&lt;p&gt;Speichern Sie Ihr Bild als portable Netzwerkgrafik &lt;code&gt;.PNG&lt;/code&gt;.&lt;/p&gt;&#10;&lt;figure class="media-frame media-frame--center"&gt;&#10; &lt;img src="https://blog.schallbert.de/assets/images/posts/2022-07-04_outline.jpg" alt="Image: Outline tool for continuous and thick lines"&gt;&lt;/figure&gt;&#10;&lt;h2 id="inkscape"&gt;Inkscape&lt;/h2&gt;&#10;&lt;p&gt;Öffnen Sie das Bild in Inkscape. Wählen Sie die Standard-Import-Einstellungen &lt;code&gt;DPI der Datei verwenden&lt;/code&gt;.&lt;/p&gt;&#10;&lt;h3 id="nachzeichnen"&gt;Nachzeichnen&lt;/h3&gt;&#10;&lt;p&gt;Wählen Sie &lt;code&gt;Pfad -&amp;gt; Bitmap nachzeichnen&lt;/code&gt;. In dem neu geöffneten Tab wählen Sie &lt;code&gt;Trace Bitmap&lt;/code&gt;, &lt;code&gt;Single Scan&lt;/code&gt;, &lt;code&gt;Brightness Cutoff&lt;/code&gt; und spielen mit den Optionen herum, bis sich die Kontur Ihres Motivs vom Hintergrund abhebt. Stellen Sie sicher, dass Sie das Bild per Mausklick auswählen, bevor Sie auf &amp;ldquo;Aktualisieren&amp;rdquo; oder &amp;ldquo;Anwenden&amp;rdquo; klicken. Wenn Sie mit der Vorschau nicht zufrieden sind, passen Sie die Werte an. Falls Sie bei der Vielzahl der Einstellungen nicht weiterkommen, schauen Sie sich einfach &lt;a href="https://inkscape.org/doc/tutorials/tracing/tutorial-tracing.html" target="_blank" rel="noopener noreferrer" class="external-link"&gt;dieses Tutorial von Inkscape - Link zur Inkscape Website&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt; an.&lt;/p&gt;&#10;&lt;figure class="media-frame media-frame--center"&gt;&#10; &lt;img src="https://blog.schallbert.de/assets/images/posts/2022-07-04_paths.jpg" alt="IMAGE Image to Path tool at its best"&gt;&lt;/figure&gt;&#10;&lt;p&gt;OK, jetzt haben wir eine Menge Pfade. Per Klick auf &lt;code&gt;Pfad -&amp;gt; Vereinfachen&lt;/code&gt; wird die Anzahl der Stützpunkte reduziert. Entfernen Sie dann manuell Artefakte, die sich bei Verwendung der Luminanzkurven eingeschlichen haben, mit dem &lt;code&gt;Knotenwerkzeug&lt;/code&gt;.&lt;/p&gt;&#10;&lt;h3 id="füllen-und-streichen"&gt;Füllen und Streichen&lt;/h3&gt;&#10;&lt;p&gt;Damit gibt es nun genau zwei die Zeichnung außen und innen umreißende Pfade sowie eine Füllung zwischen diesen Pfaden, die die Linienstärke der ursprünglichen Zeichnung darstellt. Da wir nur die äußere Kontur behalten wollen, müssen wir die Füllung und die innere Linie entfernen.&lt;/p&gt;&#10;&lt;p&gt;Wählen Sie das Werkzeug &lt;code&gt;Linie und Füllung&lt;/code&gt; im unteren Teil der rechten Symbolleiste. Wählen Sie die Registerkarte &lt;code&gt;Linienfarbe&lt;/code&gt; und setzen Sie den Strich auf eine &lt;code&gt;deckende Farbe&lt;/code&gt;. Wählen Sie unter &lt;code&gt;Linienstil&lt;/code&gt; eine Linienbreite, die Ihnen zusagt. Gehen Sie dann zur Registerkarte &lt;code&gt;Ausfüllen&lt;/code&gt; und stellen Sie &lt;code&gt;Ohne&lt;/code&gt; ein. Jetzt haben Sie nur noch zwei Umrisslinien, von denen Sie eine löschen können, wenn Sie möchten.&lt;/p&gt;&#10;&lt;figure class="media-frame media-frame--right"&gt;&#10; &lt;img src="https://blog.schallbert.de/assets/images/posts/2022-07-04_paths_cleaned.jpg" alt="Image: Paths cleaned up and simplified"&gt;&lt;/figure&gt;&#10;&lt;h3 id="und-noch-mehr-bereinigung"&gt;Und noch mehr Bereinigung&lt;/h3&gt;&#10;&lt;p&gt;Das sieht doch schon ziemlich gut aus, oder? Wenn es Ihnen nichts ausmacht, dass die Umrisse mehr als ein einziger Strich sind, sind Sie schon fertig. Sie können nun das Bild weiter verbessern, indem Sie Pfade herausziehen oder Kurven umwandeln.&lt;/p&gt;&#10;&lt;p&gt;Verwenden Sie das Werkzeug &lt;code&gt;Pfad an ausgewählten Knoten unterbrechen&lt;/code&gt;, bevor Sie parallele Linien entfernen, damit Sie nicht versehentlich die Linien zerstören, die Sie behalten möchten. Wenn Sie mit dem Ergebnis zufrieden und alle Unsauberkeiten ausgebügelt sind, speichern Sie Ihr Werk als skalierbare Vektorgrafikdatei &lt;code&gt;SVG&lt;/code&gt;.&lt;/p&gt;&#10;&lt;p&gt;Das war&amp;rsquo;s! Jetzt kann Ihr CAM-System das Bild importieren (denken Sie an die DPI-Einstellung, damit Ihre Skalierung gültig bleibt).&lt;/p&gt;&#10;&lt;figure class="media-frame media-frame--center"&gt;&#10; &lt;img src="https://blog.schallbert.de/assets/images/posts/2022-07-04_clean.jpg" alt="Image: Fireplace SVG path work complete"&gt;&lt;/figure&gt;&#10;</description></item><item><title>CNC: Überlastung Fräsmotor</title><link>https://blog.schallbert.de/cnc-router-overload/</link><pubDate>Sat, 18 Jun 2022</pubDate><author>Schallbert</author><guid>https://blog.schallbert.de/cnc-router-overload/</guid><description type="html">&#10; &lt;img src="https://blog.schallbert.de/assets/images/posts/2022-06-18_overload-thumb.jpg"&#10; class="post-cover"&#10; alt="Image of an endmill path that doesn&amp;#39;t look good at all"&#10; title="CNC: Überlastung Fräsmotor" /&gt;&#10;&lt;h2 id="was-ich-eigentlich-wollte"&gt;Was ich eigentlich wollte&lt;/h2&gt;&#10;&lt;p&gt;Ich hatte eine Anfrage zum Schneiden und Gravieren von Hochdrucklaminaten. Dabei handelt es sich um eine Lasagne aus gepresstem Papier und &lt;a href="https://en.wikipedia.org/wiki/Phenol_formaldehyde_resin" target="_blank" rel="noopener noreferrer" class="external-link"&gt;Phenolharz&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt;, überzogen mit einer dünnen Schicht (farbigen) &lt;a href="https://en.wikipedia.org/wiki/Melamine_resin" target="_blank" rel="noopener noreferrer" class="external-link"&gt;Melaminharzes&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt;. HPL ist so widerstandsfähig, dass es für Fassadenbeplankungen verwendet wird. Es ist spülmaschinenfest und einige Varianten können auf bis zu 200°C erhitzt werden, ohne Schaden zu nehmen. HPL findet man als Platten auf Spielplätzen, Gartentischen, als Paneele in der Straßenbahn und an vielen anderen Stellen im Alltag.&#10;Also dachte ich mir: &amp;ldquo;Cooles Zeug, Probieren geht über Studieren!&amp;rdquo;&lt;/p&gt;&#10;&lt;h2 id="schnittdaten-in-hochdrucklaminaten-hpl-resopal"&gt;Schnittdaten in Hochdrucklaminaten (HPL, &amp;ldquo;Resopal&amp;rdquo;)&lt;/h2&gt;&#10;&lt;p&gt;&lt;figure class="media-frame media-frame--right"&gt;&#10; &lt;img src="https://blog.schallbert.de/assets/images/posts/2022-06-18_overload_chips.jpg" alt="Image: HPL und Späne nach dem Schneiden"&gt;&lt;/figure&gt;&#10;Ich habe die von einigen Websites empfohlenen Schnittdaten mit Werten für &amp;ldquo;Hartholz&amp;rdquo; verwendet.&#10;2-Schneider.Holz-Hartmetallschaftfräser, Schnittgeschwindigkeit &lt;code&gt;450m/min&lt;/code&gt;, &lt;code&gt;d6mm&lt;/code&gt;, &lt;code&gt;Z+6,5mm&lt;/code&gt;, &lt;code&gt;S24000rpm&lt;/code&gt;, &lt;code&gt;F3500mm/min&lt;/code&gt;, Vollnut, Gleichlauffräsen.&lt;/p&gt;&#10;&lt;h2 id="schnittergebnisse"&gt;Schnittergebnisse&lt;/h2&gt;&#10;&lt;p&gt;Und ich war erschrocken, wie der Schnitt aussah, als ich fertig war.&#10;Hier sind die Symptome:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Während des Schneidens fiel die Spindeldrehzahl wiederholt ab, stieg aber schnell wieder auf die gewünschte Drehzahl an.&lt;/li&gt;&#10;&lt;li&gt;hohe Spanlast am Fräser, große Späne, sah alles gut aus&lt;/li&gt;&#10;&lt;li&gt;der Fräser folgte keiner geraden Linie: schien dem Material irgendwie ausweichen zu wollen.&lt;/li&gt;&#10;&lt;li&gt;bei der Herstellung von Anbindungen, um das Werkstück an Ort und Stelle zu halten, bewegt sich der Fräser ein wenig quer zur Fräsbahn, obwohl er das nicht sollte&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="suche-nach-dem-übeltäter"&gt;Suche nach dem Übeltäter&lt;/h2&gt;&#10;&lt;p&gt;Zuerst habe ich die Spindel überprüft. Keine Überhitzung, immer noch fest an der Portalfräse eingespannt, kein Lagerspiel, Schaftfräser sicher befestigt. Dann dachte ich: &amp;ldquo;Vielleicht stimmt etwas mit dem Portal nicht? Kann ich es merklich verwinden?&amp;rdquo; Nein, das konnte ich nicht. Dann sah ich mir den Schaftfräser an.&lt;/p&gt;&#10;&lt;p&gt;&lt;figure class="media-frame media-frame--right"&gt;&#10; &lt;img src="https://blog.schallbert.de/assets/images/posts/2022-06-18_overload_endmill.jpg" alt="Image: dull carbide endmill after cutting HPL"&gt;&lt;/figure&gt;&#10;Es sah überhaupt nicht gut aus. Die Schnittkanten waren an den Stellen, an denen sie das Material berührt hatten, praktisch weg. Seltsam. Es war nagelneu als ich den Auftrag begann, und der lief nicht einmal 20 Minuten lang.&lt;/p&gt;&#10;&lt;h2 id="analyseergebnisse"&gt;Analyseergebnisse&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Ich habe viel zu aggressive Schnittdaten verwendet.&lt;/li&gt;&#10;&lt;li&gt;Dadurch wurde der Motor der Oberfräse weit über seine Möglichkeiten hinaus betrieben.&lt;/li&gt;&#10;&lt;li&gt;Dies führte zu einem plötzlichen Abfall der Motordrehzahl.&lt;/li&gt;&#10;&lt;li&gt;Dies wiederum führte zu einer erhöhten Spanbelastung meines Fräsers&lt;/li&gt;&#10;&lt;li&gt;Da die Lager und die Befestigung des Fräsmotors am Portal &amp;ldquo;weich&amp;rdquo; sind, versuchte der Fräser, seiner Fräsbahn auszuweichen&lt;/li&gt;&#10;&lt;li&gt;Dies hat mich wahrscheinlich vor dem Bruch des Fräsers bewahrt.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="verbesserungen"&gt;Verbesserungen&lt;/h2&gt;&#10;&lt;h3 id="neubewertung-der-schnittparameter-für-hochdrucklaminat"&gt;Neubewertung der Schnittparameter für Hochdrucklaminat&lt;/h3&gt;&#10;&lt;p&gt;Ich habe nochmal online recherchiert. HPL ist unglaublich hart und steif. Hier mal ein paar Werte zum Vergleich (Brinellhärte):&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;Buche: &lt;code&gt;~3.7N/mm²&lt;/code&gt; (&lt;a href="https://www.olivenholzprodukte.de/Holzhaerte-Tabelle-nach-Brinell" target="_blank" rel="noopener noreferrer" class="external-link"&gt;Source&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt;)&lt;/li&gt;&#10;&lt;li&gt;HPL: &lt;code&gt;~185N/mm²&lt;/code&gt; (&lt;a href="https://www.pro-hpl.org/assets/uploads/prohpl/files/200330_Technische_Kennziffern_und_physikalische_Eigenschaften_von_HPL.pdf" target="_blank" rel="noopener noreferrer" class="external-link"&gt;Source&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt;)&lt;/li&gt;&#10;&lt;li&gt;Baustahl ST70: &lt;code&gt;215N/mm²&lt;/code&gt; (&lt;a href="https://www.ingenieurkurse.de/baustofftechnik-1/stoffeigenschaften-im-bauwesen/mechanische-eigenschaften-von-baustoffen/oberflaechenhaerte/brinellhaerte.html" target="_blank" rel="noopener noreferrer" class="external-link"&gt;Source&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt;)&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;p&gt;Des Weiteren fand ich einige Empfehlungen zur spanabhebenden Verarbeitung von HPL, z.B.: &amp;ldquo;Vollhartmetallfräser sollten eine Schnittgeschwindigkeit von bis zu &lt;a href="https://www.dekorplatten.de/sites/default/files/dateien/HPL-Verarbeitungshinweise.pdf" target="_blank" rel="noopener noreferrer" class="external-link"&gt;&lt;code&gt;150m/min&lt;/code&gt;&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt;&amp;rdquo; und &amp;ldquo;Diamantbeschichtungen aufweisen oder als Einschneider zur Bearbeitung von Aluminium ausgeführt sein&amp;rdquo;.&lt;/p&gt;&#10;&lt;h3 id="zwischenlösung"&gt;Zwischenlösung&lt;/h3&gt;&#10;&lt;p&gt;&lt;figure class="media-frame media-frame--right"&gt;&#10; &lt;img src="https://blog.schallbert.de/assets/images/posts/2022-06-18_overload_corrected.jpg" alt="Image: dull carbide endmill after cutting HPL"&gt;&lt;/figure&gt;&#10;Um die Dinge zu korrigieren, habe ich alle Ausschnitte mit den Schlicht-Einstellungen in CAM erneut durchgeführt. Mit einem neuen Schaftfräser und weniger aggressiven Vorschubgeschwindigkeiten von &lt;code&gt;F2500mm/min&lt;/code&gt; und einer aktualisierten Tiefe pro Durchgang von &lt;code&gt;Z+1,5mm&lt;/code&gt;.&#10;Das Ergebnis sieht jetzt viel besser aus.&lt;/p&gt;&#10;&lt;h3 id="optimierung-der-schnittdaten"&gt;Optimierung der Schnittdaten&lt;/h3&gt;&#10;&lt;p&gt;Dann berechnen wir schnell mal neue Schnittdaten aufgrund der oben gewonnenen Erkenntnisse. Ich wähle einen &lt;code&gt;4mm&lt;/code&gt; Einschneider (&lt;code&gt;z=1&lt;/code&gt;) mit Beschichtung zur besseren Wärmeabfuhr für Aluminium und lege die oben genannte Schnittgeschwindigkeit von &lt;code&gt;vc=150m/min&lt;/code&gt; für HPL zugrunde. Weiterhin wähle ich einen Zahnvorschub von &lt;code&gt;fTooth = 0,025mm&lt;/code&gt;, ähnlich wie beim Fräsen von Stahl.&lt;/p&gt;&#10;&lt;p&gt;Zieldrehzahl: &lt;/p&gt;&#10;$$n=\frac{v_c}{\pi d}=\frac{150000\frac{mm}{min}}{\pi \cdot 4mm}=12000\frac{1}{min}$$&lt;p&gt;Zielvorschub: &lt;/p&gt;&#10;$$F=n \cdot f_{Tooth} \cdot z = 12000\frac{1}{min} \cdot 0,025mm \cdot min \cdot 1= 300\frac{mm}{min}$$&lt;p&gt;Ich habe einen &lt;code&gt;4mm&lt;/code&gt;-Schaftfräser gewählt, weil das Drehmoment meines Fräsmotors bei sinkender Drehzahl überproportional abnimmt. Bei größerem Fräserdurchmesser würde dieser Effekt wahrscheinlich zu einer unzureichenden Schnittleistung führen. Spindeln mit einer Asynchronmaschine sind hier durch ihr konstant hohes Drehmoment im unteren Drehzahlbereich (bei Vektorsteuerung kann es sogar deutlich über dem Nennmoment des Motors liegen) ganz klar im Vorteil.&lt;/p&gt;&#10;&lt;p&gt;Der berechnete Vorschub kommt mir so langsam vor. Ich hoffe, dass sich das Material dadurch nicht so stark erhitzt, dass es delaminiert (laut Wikipedia schmilzt es nicht&amp;hellip;)&lt;/p&gt;&#10;&lt;p&gt;Zur Information: &lt;a href="https://hobbyline.info/forum/index.php?thread/678-hpl-platten-fr%C3%A4sen/" target="_blank" rel="noopener noreferrer" class="external-link"&gt;Hier ist der zugehörige Thread&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt; in dem Forum, das ich regelmäßig besuche.&lt;/p&gt;&#10;&lt;h3 id="weitere-tests"&gt;Weitere Tests&lt;/h3&gt;&#10;&lt;p&gt;&lt;figure class="media-frame media-frame--right"&gt;&#10; &lt;img src="https://blog.schallbert.de/assets/images/posts/2022-06-18_coated_new.jpg" alt="Image: new coated carbide endmill for aluminium"&gt;&lt;/figure&gt;&#10;Ich habe einige Teile mit oben angesprochenem Fräser und Einstellungen gefertigt. Um die Fertigungszeiten etwas im Zaum zu halten, habe ich die Werte leicht angepasst: &lt;code&gt;ftooth = 0.04mm&lt;/code&gt; und &lt;code&gt;vc = 130m/min&lt;/code&gt;. Für den &lt;code&gt;4mm&lt;/code&gt; Fräser ergibt sich&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;code&gt;S = 10300U/min&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;F = 410mm/min&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;Z+ = 3mm&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;vc = 1%&lt;/code&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;Dieser Schaftfräser lebte etwa 1 Stunde lang. Nicht lange genug. Das Schneiden mit einem solchen Fräser könnte nie wirtschaftlich werden. Das HPL, das ich verwende, hat zwei Materialeigenschaften, die Hartmetallfräser schnell zerstören: Erstens ist es abrasiv, sodass die dünne Schneide des Fräsers abgetragen und zerstört wird. Meines ist ganz besonders abrasiv, da es einen unheimlich hohen Faseranteil besitzt. Zweitens leiten die Späne die entstehende Wärme nicht gut von der Schneide ab, so dass ihre Schärfe noch schneller nachlässt. Hitze scheint das Kryptonit für Hartmetallfräser zu sein.&lt;/p&gt;&#10;&lt;figure class="media-frame media-frame--right"&gt;&#10; &lt;img src="https://blog.schallbert.de/assets/images/posts/2022-06-18_coated_worn.jpg" alt="Image: coated carbide endmill for aluminium after 1h"&gt;&lt;/figure&gt;&#10;&lt;h3 id="endgültige-lösung"&gt;Endgültige Lösung&lt;/h3&gt;&#10;&lt;p&gt;Eine wirtschaftlichere Lösung mit 40-facher (Herstellerangabe) Lebensdauer wäre ein Hartmetallfräser mit Diamantschneiden (z. B. wie &lt;a href="https://www.artifex24.de/JSO-5mm-Diamant-PKD-Nutschaftfraeser-Diatec-DUO-5x10/50mm-Z2-S6-rechts" target="_blank" rel="noopener noreferrer" class="external-link"&gt;dieser hier&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt;). Der Nachteil ist, dass sie fast zehnmal so teuer sind. Wenn ich dieses Material in Zukunft öfter schneiden muss, kaufe ich vielleicht einen und teile meine Erfahrungen - in der Zwischenzeit lasse ich die Fräser lieber schärfen, um Geld zu sparen.&lt;/p&gt;&#10;</description></item><item><title>CNC 'Opferplatte'</title><link>https://blog.schallbert.de/cnc-spoilboard-diy/</link><pubDate>Sun, 12 Jun 2022</pubDate><author>Schallbert</author><guid>https://blog.schallbert.de/cnc-spoilboard-diy/</guid><description type="html">&#10; &lt;img src="https://blog.schallbert.de/assets/images/spoilboard/spoilboard-thumb.jpg"&#10; class="post-cover"&#10; alt="Image: Spoilboard for my BasicLine0607 CNC. It features a frame so pasts can be positioned repeatedly, and it has a hole grid to allow clamping devices to be inserted."&#10; title="CNC &amp;#39;Opferplatte&amp;#39;" /&gt;&#10;&lt;h2 id="materialliste"&gt;Materialliste&lt;/h2&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Artikel&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Anzahl&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;~ Kosten [€]&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;MDF, Stärke 19mm, 840x730&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;2&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;30&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;MDF, Stärke 5mm, 840x730&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;1&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;5&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Einschlagmutter&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;17&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;9&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;M6 Maschinenschraube, 20mm + M6 Hammermutter + Unterlegscheibe&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;20&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;12&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;M6 Maschinenschraube, 35mm + Unterlegscheibe&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;17&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;5&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Holzleim&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;-&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;0,10&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;h2 id="werkzeuge"&gt;Werkzeuge&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Schraubendreher / Schraubenschlüssel / Steckschlüssel&lt;/li&gt;&#10;&lt;li&gt;Ihre CNC&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="der-aufbau"&gt;Der Aufbau&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Laden Sie die Zeichnungen &lt;a href="https://blog.schallbert.de/assets/docs/basicline0607_spoilboard_drawings_by_schallbert.zip"&gt;als zip-Datei&lt;/a&gt; herunter&lt;/li&gt;&#10;&lt;li&gt;Passen Sie bei Bedarf die Abmessungen an &lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/li&gt;&#10;&lt;li&gt;Importieren Sie die Zeichnung in Ihr CAM-Werkzeug. Passen Sie die Materialstärke an, falls Sie andere Platten verwenden als ich.&lt;/li&gt;&#10;&lt;li&gt;Bereiten Sie Senkbohrungen für Ihre Befestigungselemente vor, die am Maschinenrahmen befestigt werden. Die Tiefe dieser Bohrungen bestimmt die Reserve für das Planfräsen und damit das Aufbereiten verschlissener Oberflächen.&lt;/li&gt;&#10;&lt;li&gt;Da sowohl der Anschlag als auch Opferplatt größer sind als der von der CNC erreichbare Bereich, müssen Sie mehrere Jobs programmieren. Wählen Sie Ihre XY-Nullpunkte mit Bedacht und ziehen Sie gern die Projektseite zu Rate, auf der ich mein Vorgehen detailliert beschrieben habe (unten verlinkt).&lt;/li&gt;&#10;&lt;li&gt;Beachten Sie auch, dass die T-Nuten &amp;ldquo;von unten&amp;rdquo; gefräst werden müssen, falls Sie keinen Schlüssellochfräser haben.&lt;/li&gt;&#10;&lt;li&gt;Nachdem Ihre CNC die Aufträge abgearbeitet hat, kleben Sie die obere und untere MDF-Platte zusammen, damit die Hammermuttern nicht durch die Schlitze fallen können.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;&lt;a href="https://blog.schallbert.de/projects/cnc_spoilboard/"&gt;Zurück zur Projekt-Hauptseite&lt;/a&gt;&lt;/p&gt;&#10;&lt;div class="footnotes" role="doc-endnotes"&gt;&#10;&lt;hr&gt;&#10;&lt;ol&gt;&#10;&lt;li id="fn:1"&gt;&#10;&lt;p&gt;Hinweis: Die mittlere Versteifung des Maschinenrahmens hat keine festgelegte Position, sie kann bei Ihnen also an einer anderen Position stehen.&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;/div&gt;&#10;</description></item><item><title>CNC Teil1 - Portalfräsmaschine</title><link>https://blog.schallbert.de/portal-milling/</link><pubDate>Sat, 12 Feb 2022</pubDate><author>Schallbert</author><guid>https://blog.schallbert.de/portal-milling/</guid><description type="html">&#10; &lt;img src="https://blog.schallbert.de/assets/images/posts/2022-02-12_portalmillingmachine-thumb.jpg"&#10; class="post-cover"&#10; alt="Image: My portal milling machine in mid-construction"&#10; title="CNC Teil1 - Portalfräsmaschine" /&gt;&#10;&lt;h2 id="cnc-portalfräsmaschine---für-anfänger"&gt;CNC Portalfräsmaschine - für Anfänger&lt;/h2&gt;&#10;&lt;p&gt;Es ist Winter 2021, und meine erste CNC-Maschine wird bald geliefert. Es wird ein Bausatz sein, der aus einer Menge Pakete und noch mehr Einzelteilen besteht. Ich habe die Maschine bestellt, weil ich Prototypen für &lt;a href="https://blog.schallbert.de/projects/aa_alpha_1_1/"&gt;AnywhereAmps&lt;/a&gt; schneller und genauer fertigen möchte. Und natürlich um ein paar weitere Hardware-Projekte umzusetzen, die mir schon länger im Kopf herumschwirren.&lt;/p&gt;&#10;&lt;h3 id="cnc"&gt;Moment mal&lt;/h3&gt;&#10;&lt;p&gt;&lt;figure class="media-frame media-frame--right"&gt;&#10; &lt;img src="https://blog.schallbert.de/assets/images/posts/2022-02-12_gcode.jpg" alt="G-code example"&gt;&lt;/figure&gt;&#10;Oh, Ok. CNC bedeutet &lt;a href="https://en.wikipedia.org/wiki/Numerical_control" target="_blank" rel="noopener noreferrer" class="external-link"&gt;computer numerical control&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt; und beschreibt, wie die Maschine gesteuert wird - nicht von Hand, sondern durch Instruktionen eines Computers.&lt;/p&gt;&#10;&lt;p&gt;Diese werden &lt;a href="https://en.wikipedia.org/wiki/G-code" target="_blank" rel="noopener noreferrer" class="external-link"&gt;G-Code&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt; genannt, und sind in der häufig benutzten Interpretersprache RS274-NGC geschrieben, die Industriestandard für computergesteuerte Bearbeitungszentren geworden ist.&lt;/p&gt;&#10;&lt;p&gt;Eine Portalfräsmaschine ist einer Oberfräse nicht unähnlich. Der Fräsmotor ist auf einem Gestell montiert, das ihn in (meist) drei Achsen X, Y, Z mithilfe von &lt;a href="https://en.wikipedia.org/wiki/Stepper_motor" target="_blank" rel="noopener noreferrer" class="external-link"&gt;Schrittmotoren&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt; oder &lt;a href="https://en.wikipedia.org/wiki/Servomotor" target="_blank" rel="noopener noreferrer" class="external-link"&gt;Servomotoren&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt; bewegt. Ein Rechner steuert diese Bewegungen und ist so in der Lage, nahezu beliebige Formen zu schneiden. Die Kinematik der Portalfräsmaschine ist ähnlich zu der von &lt;a href="https://en.wikipedia.org/wiki/3D_printing#Processes_and_printers" target="_blank" rel="noopener noreferrer" class="external-link"&gt;3D-Druckern&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt;, obwohl sie natürlich ganz unterschiedliche Anforderungen an die Mechanik haben - eine Portalfräsmaschine muss viel stabiler, steifer und schwerer konstruiert werden, da die Rahmenkonstruktion sämtliche Schneid- und Beschleunigungskräfte aufnehmen muss.&lt;/p&gt;&#10;&lt;p&gt;Natürlich sind CNC-Maschinen nicht auf 3D-Drucker und Fräsmaschinen beschränkt. Es gibt CNC-&lt;a href="https://en.wikipedia.org/wiki/Lathe" target="_blank" rel="noopener noreferrer" class="external-link"&gt;Drehmaschinen&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt;, &lt;a href="https://en.wikipedia.org/wiki/Plotter" target="_blank" rel="noopener noreferrer" class="external-link"&gt;Plotter&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt;, &lt;a href="https://en.wikipedia.org/wiki/Laser_cutting" target="_blank" rel="noopener noreferrer" class="external-link"&gt;Laserschneider&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt;, &lt;a href="https://en.wikipedia.org/wiki/Water_jet_cutter" target="_blank" rel="noopener noreferrer" class="external-link"&gt;Wasserstrahlschneider&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt; und viele mehr. Streng genommen sind sogar Industrieroboter CNC-Maschinen.&lt;/p&gt;&#10;&lt;h2 id="fragen"&gt;Fragen&lt;/h2&gt;&#10;&lt;p&gt;Dies sind einige der Fragen, die ich hatte, bevor ich dieses ziemlich teure Stück Technik gekauft habe. Einige davon lassen sich leicht in ein paar Zeilen beantworten, andere würden wahrscheinlich einen ganzen Artikel für sich allein füllen.&lt;/p&gt;&#10;&lt;h3 id="cnc-fräsmaschine"&gt;CNC-Fräsmaschine&lt;/h3&gt;&#10;&lt;h4 id="beschleunigt-sie-wirklich-meinen-prototyping-prozess"&gt;Beschleunigt sie wirklich meinen Prototyping-Prozess?&lt;/h4&gt;&#10;&lt;p&gt;Ich weiß es noch nicht, aber ich hoffe es. Die Holzarbeiten für einen einzigen Prototyp nehmen etwa 8 Stunden meiner Zeit in Anspruch. Am meisten Zeit verschlingen die Vorbereitungen für den Zuschnitt, die Messungen und das Abpausen. Allein der Lautsprecheradapter von AnywhereAmps Alpha mit seiner gewölbten Oberfläche nimmt mehr als eine Stunde Fertigungszeit in Anspruch.&lt;/p&gt;&#10;&lt;p&gt;Mit einer CNC-Portalfräsmaschine hoffe ich, mehr wie ein Plätzchenbäcker zu werden: Alle Teile für AnywhereAmps (mit Ausnahme des zylindrischen Gehäuses) in einem einzigen Stück Sperrholz zu verschachteln, die Maschine die Arbeit machen zu lassen und nach einer Weile nur noch minimale Nacharbeiten beim Ausschneiden und Schleifen der Teile zu erledigen.&lt;/p&gt;&#10;&lt;p&gt;Und wenn ich einen weiteren Prototyp oder andere Lautsprecherdurchmesser haben möchte: Ich passe einige Parameter in meinem CAD-Tool an, stelle die Werkzeugwege neu ein, schicke sie an den Computer der Maschine, spanne ein neues Stück Sperrholz ein und drücke auf &amp;ldquo;Auftrag ausführen&amp;rdquo;. Fertig (in der idealen Welt).&lt;/p&gt;&#10;&lt;p&gt;Andererseits braucht das Einarbeiten in die ganzen Software-Tools auch seine Zeit. Mein Einführungsartikel über &lt;a href="https://blog.schallbert.de/freecad-get-started/"&gt;FreeCAD hier verlinkt&lt;/a&gt; ist ein Beispiel dafür.&lt;/p&gt;&#10;&lt;h4 id="mehr-geld-für-portalhardware-oder-lieber-für-den-spindelantrieb-ausgeben"&gt;Mehr Geld für Portalhardware oder lieber für den Spindelantrieb ausgeben?&lt;/h4&gt;&#10;&lt;p&gt;Das ist eine Frage an die Experten, die ich selbst erst beantworten kann, wenn ich schon eine Weile eine CNC besitze. Ich habe mich dafür entschieden, mehr Geld für das Portal und weniger für die Spindel auszugeben, und zwar aus mehreren Gründen, die sich aus dem Bauch heraus ergeben:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Das Portal ist meine Maschine, die Spindel nur ein Teil davon.&lt;/li&gt;&#10;&lt;li&gt;Die Spindel ist günstiger, leichter auszutauschen und bei weitem nicht so aufwendig zu montieren wie das Portal, also möchte ich, dass das Portal eine Konstante ist.&lt;/li&gt;&#10;&lt;li&gt;Wenn ich durch die Fähigkeiten meiner Portalfräsmaschine eingeschränkt bin, müsste ich zuerst herausfinden, warum, und dann an einzelnen Komponenten herumschrauben, um sie zu verbessern. Wenn die Spindel der limitierende Faktor ist, kaufe ich mir einfach eine stärkere und gut ist.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h4 id="spindle-power"&gt;Wie viel Spindelleistung?&lt;/h4&gt;&#10;&lt;p&gt;Das ist meine erste schwierige Frage. Ich bin mir fast sicher, dass ich für meine Holzbearbeitung kein 2,2-kW-Monster brauche. Um anständige Vorschubgeschwindigkeiten zu erzielen und genügend Spielraum für Dichteunregelmäßigkeiten wie Astlöcher zu haben, könnte es eine gute Idee sein, sich im Leistungssegment der Handoberfräse zwischen 700W und 1200W zu orientieren, was mir immer gute Dienste geleistet hat. Ich habe mich für eine 1000W &lt;a href="https://en.wikipedia.org/wiki/Universal_motor#cite_note-tm-6" target="_blank" rel="noopener noreferrer" class="external-link"&gt;Universalmotor&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt; Maschine entschieden.&lt;/p&gt;&#10;&lt;p&gt;Im Gegensatz zu den oft als &amp;ldquo;HF-Spindeln&amp;rdquo; (HF = Hochfrequenz) bezeichneten Drehstrommotoren benötigen sie keinen &lt;a href="https://blog.schallbert.de/cnc-electronics/#vfd"&gt;Frequenzumrichter&lt;/a&gt; und keine externe Kühlung, da ihr Lüfter auf die Welle geschraubt ist. Andererseits sind sie in der Regel lauter (der Lüfter ist nicht unabhängig von der Motordrehzahl) und weniger effizient (Lüfterverluste, Kommutierungsverluste, Kupferverluste, Magnetisierungsverluste usw.) Ich habe im Internet nur grobe Zahlen zum Wirkungsgrad gefunden, also nehmen wir mal an:&lt;/p&gt;&#10;&lt;p&gt;&lt;code&gt;1000W&lt;/code&gt; Universalmotorantrieb &lt;code&gt;*30%&lt;/code&gt; Gesamtwirkungsgrad inkl. Elektronik &amp;amp; Lüfter: &lt;code&gt;300W&lt;/code&gt; @ Motorwelle&lt;/p&gt;&#10;&lt;p&gt;&lt;code&gt;700W&lt;/code&gt; &lt;a href="https://www.scribd.com/document/776268309/2-4-6polig-e-M-asynchron-IP44-IP56" target="_blank" rel="noopener noreferrer" class="external-link"&gt;Asynchronmaschine&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt; &lt;code&gt;*85%&lt;/code&gt; Wirkungsgrad &lt;code&gt;*90%&lt;/code&gt; &lt;a href="http://www.variablefrequencydrive.org/vfd-efficiency" target="_blank" rel="noopener noreferrer" class="external-link"&gt;Wirkungsgrad Steuerung&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt; &lt;code&gt;*97%&lt;/code&gt; external cooling: &lt;code&gt;520W&lt;/code&gt; @ motor shaft&lt;/p&gt;&#10;&lt;p&gt;Das wäre ein gewaltiger Unterschied, so dass sich eine spätere Aufrüstung doch lohnen könnte. Außerdem reichen für eine HF-Spindel im Vergleich zu einem konventionellen Antrieb geringere Wattzahlen aus.&lt;/p&gt;&#10;&lt;h4 id="tool-changer"&gt;Automatischer Werkzeugwechsler - ja oder nein?&lt;/h4&gt;&#10;&lt;p&gt;Das hängt wohl davon ab, was ich brauche. Ich kaufe mir zunächst einen einfachen Fräsmotor mit digitaler Drehzahlregelung als Spindel. Ein &amp;ldquo;richtiger&amp;rdquo; Werkzeugwechsler - richtig bedeutet, dass ich auch Werkzeugschäfte von &lt;code&gt;10mm&lt;/code&gt; und größer montieren kann und gewuchtete Spannzangen, 3-Phasen-Antrieb mit eigenständiger Kühlung und Frequenzumrichter habe - würde ~10 mal so viel kosten. Außerdem kostet jedes ER20-Spannzangenfutter für den Werkzeugwechsler mal eben die Hälfte meines Fräsmotors. Davon bräuchte ich mehr als eine, wenn der Werkzeugwechsler Sinn machen soll. Und ich bräuchte eine Druckluftanlage mit Schaltkasten usw. Das alles zusammen würde die Kosten für die Portalfräse locker überschreiten!&lt;/p&gt;&#10;&lt;p&gt;Schlussfolgerung: Wenn ich die CNC in Zukunft sehr oft benutzen werde und wenn meine Projekte unbedingt häufige Werkzeugwechsel zum Schruppen, Glätten, Fasen, 3D usw. erfordern, dann könnte ich diesen teuren Schritt in Betracht ziehen. Vielleicht. Irgendwann.&lt;/p&gt;&#10;&lt;h4 id="welche-größe-ist-die-beste"&gt;Welche Größe ist die beste?&lt;/h4&gt;&#10;&lt;p&gt;Idealerweise könnte man für die Bearbeitung von Sperrholzplatten eine ganze Standardplatte von &amp;ldquo;1250mm x 2500mm&amp;rdquo; oder einen Bruchteil davon, z.B. &amp;ldquo;610mm x 1250mm&amp;rdquo;, auflegen. Aber selbst die kleineren Platten würden nicht in den Keller meiner kleinen Wohnung passen. Also entschied ich mich für eine mit &lt;code&gt;840mm x 740mm&lt;/code&gt; Auflagefläche.&lt;/p&gt;&#10;&lt;p&gt;Für Ihre Wahl: Prüfen Sie, ob Sie platzmäßig eingeschränkt sind. Wenn nicht, dann machen Sie sich gründlich Gedanken darüber, was Sie mit Ihrer Maschine machen wollen. Die Größe der Maschine ergibt sich automatisch, wenn Sie wissen, wofür Sie sie hauptsächlich einsetzen wollen.&lt;/p&gt;&#10;&lt;h4 id="plug-and-play-oder-ein-bausatz"&gt;Plug-and-play oder ein Bausatz?&lt;/h4&gt;&#10;&lt;p&gt;Dies hängt von mehreren Aspekten ab: Von Budget, der Zeit, die man zu investieren bereit ist, und natürlich davon, ob man zumindest ein bisschen Talent im Umgang mit Schraubendrehern, Muttern, Abisolierzangen und dem Lötkolben hat.&#10;Es kommt auch darauf an, ob einem jede Schraube Ihrer Maschine persönlich bekannt sein soll.&lt;/p&gt;&#10;&lt;h4 id="kugelumlaufspindeln-zum-bewegen-der-achsen"&gt;Kugelumlaufspindeln zum Bewegen der Achsen?&lt;/h4&gt;&#10;&lt;p&gt;Flinke Eilgänge, hohe Wiederholgenauigkeit durch reduziertes oder eliminiertes Spiel oder höhere Vorschubgeschwindigkeiten? Fräsen im Gleichlauf, um die Oberflächenqualität und die Standzeit der Werkzeuge zu erhöhen? Wenn Sie einen dieser Punkte bejahen, sollten Sie das zusätzliche Geld für Kugelumlaufspindeln ausgeben.&lt;/p&gt;&#10;&lt;h4 id="zusätzliche-vielseitigkeit"&gt;zusätzliche Vielseitigkeit?&lt;/h4&gt;&#10;&lt;p&gt;Wie im Abschnitt &lt;a href="https://blog.schallbert.de/portal-milling/#cnc"&gt;Moment mal&lt;/a&gt; beschrieben, wäre das Portal selbst auch für andere Zwecke geeignet. Es gibt Schleppmesser zum Plotten, 3D-Druckköpfe und sogar Gravurlaser, die bei Bedarf an das Portal angeflanscht werden könnten.&lt;/p&gt;&#10;&lt;p&gt;Um sich darauf vorzubereiten, ist eine Spindel, die auf den Euronorm-Hals mit einem Durchmesser von 43 mm passt möglicherweise die beste Wahl, da die meisten anderen Werkzeuge auch für diese Passform erhältlich sind. Dies erleichtert einen eventuellen Umbau. Wobei andererseits die meisten Maschinen, die etwas taugen, spezialisiert sind auf ihr Fach - ein 3D-Drucker schafft wahnwitzige Beschleunigungsvorgänge, der Plotter spart beim Platzverbrauch und die CNC-Fräse ist nunmal wegen der Schneidkräfte stabiler gebaut.&lt;/p&gt;&#10;&lt;h3 id="allgemeine-fragen"&gt;Allgemeine Fragen&lt;/h3&gt;&#10;&lt;h4 id="entsteht-dabei-viel-staub"&gt;Entsteht dabei viel Staub?&lt;/h4&gt;&#10;&lt;p&gt;Ja. Besorgen Sie sich eine gute Staubabsaugung. Ich würde ein Zyklonsystem oder einen dieser riesigen Textilbeutel empfehlen, die normalerweise bei stationären Sägen verwendet werden. Wenn Sie Ihre Maschine regelmäßig benutzen, reicht die Aufnahmekapazität eines Werkstattsaugers allein möglicherweise nicht aus.&lt;/p&gt;&#10;&lt;p&gt;Außerdem sollten Sie den Staubsauger gut erden (z. B. indem Sie die Erdungsleitung(en) mit dem Erdungspunkt Ihres Schaltkastens verbinden) und antistatische Saugschläuche kaufen, die Sie an die Erdung des Staubsaugers oder des Staubbehälters anschließen können.&#10;Auf diese Weise vermeiden Sie, dass Sie jedes Mal, wenn Sie vakuumbezogene Dinge berühren, einen leichten Schlag bekommen, und Sie können einen schwer auszumachenden Grund dafür ausschließen, dass Ihre Maschine verrückt spielt, z. B. plötzliches Einfrieren der Software, zufälliges Erkennen von Not-Aus-Ereignissen durch die Steuerung, Falschauslösung eines Referenzschalters oder sogar Schluckauf bei Schrittmotoren. Es gibt viele Fälle in verschiedenen Foren, in denen dies die Ursache war oder gewesen sein könnte, z. B. &lt;a href="https://cambamcnc.com/forum/index.php?topic=4524.0" target="_blank" rel="noopener noreferrer" class="external-link"&gt;hier&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt;.&lt;/p&gt;&#10;&lt;h4 id="ist-sie-laut"&gt;Ist sie laut?&lt;/h4&gt;&#10;&lt;p&gt;Ja. Der Geräuschpegel ist vergleichbar mit dem einer Handoberfräse. Sie ist schon im Leerlauf laut, und es wird noch schlimmer, wenn sie durch Material fährt. Es könnte also eine gute Idee sein die leiseren, aber teureren Hochfrequenzspindeln mit externer Kühlung zu kaufen. Darüber hinaus sollte (&lt;a href="https://eur-lex.europa.eu/legal-content/DE/TXT/PDF/?uri=CELEX:02006L0042-20091215&amp;amp;rid=1" target="_blank" rel="noopener noreferrer" class="external-link"&gt;und je nach den örtlichen Vorschriften sogar muss&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt;) Ihre Maschine aus Sicherheitsgründen, aber auch zur Lärmminderung, eine Einhausung erhalten. Sie hilft auch dabei, Feinstaub in der Raumluft zu reduzieren.&lt;/p&gt;&#10;&lt;p&gt;Die Geräuschentwicklung hängt aber auch stark vom verwendeten Fräser ab. Meiner Erfahrung nach klingen kurze Planfräser mit großem Durchmesser und 10-mm-Schaft &lt;a href="https://blog.schallbert.de/my-endmill-screams/"&gt;angenehmer&lt;/a&gt; und sind vielleicht sogar weniger laut als Fräser mit Fischschwanz oder besonders langem Schaft.&lt;/p&gt;&#10;&lt;h4 id="wie-sieht-der-arbeitsablauf-aus"&gt;Wie sieht der Arbeitsablauf aus?&lt;/h4&gt;&#10;&lt;p&gt;Hier ist eine vereinfachte Darstellung des Arbeitsablaufs mit einer CNC-Maschine.&#10;&lt;figure class="media-frame media-frame--center"&gt;&#10; &lt;img src="https://blog.schallbert.de/assets/images/posts/2022-02-12_cncworkflow.jpg" alt="Bild: CNC-Arbeitsablauf in Kürze"&gt;&lt;/figure&gt;&#10;Ähnlich wie beim Handwerk beginnt alles mit einer Idee. Die Zeichnungen und Bemaßungen der Teile werden nicht auf einem leeren Blatt Papier, sondern in einem Computer Aided Design-Tool erstellt. Die Zeichnung oder 3D-Modelldatei wird dann in einem Computer Aided Manufacturing Tool weiterverarbeitet, wo geeignete Fräswerkzeuge ausgewählt, die Frässtrategien festgelegt und die Werkzeugwege erzeugt werden. Die resultierende G-Code-Datei wird dann an die eigentliche CNC Software gesendet, die die Schrittmotortreiber steuert. Diese senden Stromimpulse an die Schrittmotoren, die wiederum die Maschine mechanisch verfahren, um das Teil zu fertigen.&lt;/p&gt;&#10;&lt;h3 id="fragen-zum-betrieb"&gt;Fragen zum Betrieb&lt;/h3&gt;&#10;&lt;h4 id="milling-style"&gt;Fräsen im Gleich- oder Gegenlauf?&lt;/h4&gt;&#10;&lt;p&gt;Dies ist eine Entscheidung, die in der CAM-Software getroffen wird.&lt;/p&gt;&#10;&lt;p&gt;Fräsen im Gegenlauf = der Fräser &amp;ldquo;schnitzt&amp;rdquo; in das Material, seine Schneiden drehen sich entgegen der Materialtransportrichtung. Der Gegenlauf wird bei allen Kreissägen verwendet die ich kenne, um Rückschläge zu vermeiden oder das Werkstück auf dem Tisch zu halten.&#10;Gleichlauffräsen = der Fräser &amp;ldquo;frisst&amp;rdquo; sich in das Material, seine Schneiden rotieren mit der Transportrichtung. Der Fräser neigt dazu, sich selbst in das Material zu ziehen.&#10;Weitere Informationen z.B. auf &lt;a href="https://www.harveyperformance.com/in-the-loupe/conventional-vs-climb-milling/" target="_blank" rel="noopener noreferrer" class="external-link"&gt;harveryperformance&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt; oder &lt;a href="https://blog.tormach.com/climb-milling-versus-conventional-milling-sneaky-cnc-tricks" target="_blank" rel="noopener noreferrer" class="external-link"&gt;tormachs blog&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt;.&lt;/p&gt;&#10;&lt;p&gt;Für welche der beiden Möglichkeiten Sie sich entscheiden sollten, hängt von der Steifigkeit und dem Gewicht Ihrer Maschine, den Drehmoment Ihres Schrittmotors, der Leistung Ihrer Schrittmotorantriebe und dem Material ab, das Sie bearbeiten. Wenn Sie eine steife, schwere, leistungsstarke Maschine (mit Kugelumlaufspindeln) haben und mit eher weichen Materialien arbeiten, sollten Sie das Gleichlauffräsen verwenden. Beobachten Sie Ihre Maschine genau, um zu sehen, ob sich alles glatt anfühlt und anhört (!). Im Zweifelsfall sollten Sie im Gegenlauf fräsen. Arbeiten Sie bei handgeführten Oberfräsen immer den Gegenlauf!&lt;/p&gt;&#10;&lt;p&gt;Nachtrag: Ich fräse Dibond im Gegenlauf mit guten Ergebnissen, Acrylglas und Holz jedoch bearbeite ich im Gleichlauf.&lt;/p&gt;&#10;&lt;h4 id="wie-spannt-man-das-werkstück-schnell-und-einfach-auf"&gt;Wie spannt man das Werkstück schnell und einfach auf?&lt;/h4&gt;&#10;&lt;p&gt;Das hängt wiederum von Ihrem Material ab:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Große Platten: Vakuumtisch oder Anschlag mit Klemmen, die die Platte gegen den Anschlag drücken&lt;/li&gt;&#10;&lt;li&gt;Kleine Platten: Klemmen oder Verschraubung auf dem Fräsbett&lt;/li&gt;&#10;&lt;li&gt;Kleine Blöcke: Schraubstock&lt;/li&gt;&#10;&lt;li&gt;Unregelmäßige Formen: Klemmen, die das Material auf dem Fräsbett niederhalten&lt;/li&gt;&#10;&lt;li&gt;Beidseitiges Fräsen: projektspezifische Vorrichtungen, die das Material in Position halten&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;Hmm, die &lt;a href="https://blog.schallbert.de/projects/cnc_spoilboard/"&gt;Opferplatte mit Anschlag&lt;/a&gt; wird wahrscheinlich eins meiner ersten Projekte mit der neuen Maschine.&lt;/p&gt;&#10;&lt;h4 id="mit-welchen-bits--fräsern-sollte-man-beginnen"&gt;Mit welchen Bits / Fräsern sollte man beginnen?&lt;/h4&gt;&#10;&lt;p&gt;Ich würde für den Anfang die folgenden allgemeinen Fräser empfehlen. Sie sollten natürlich in Herstellung, Spiralform, Nutenzahl usw. zum verwendeten Material passen.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Klassischer Schaftfräser mit &lt;code&gt;6mm&lt;/code&gt; oder 1/4&amp;quot;, Spirale mit &lt;code&gt;15-30°&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;2mm&lt;/code&gt; Schaftfräser mit Freischnitt für feines Material oder kleine Löcher&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;60°&lt;/code&gt; und &lt;code&gt;90°&lt;/code&gt; Gravierfräser für Gravuren und Fasen&lt;/li&gt;&#10;&lt;li&gt;Planfräser für großflächiges Fräsen&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h4 id="mein-schwerpunkt-ist-holz-was-sind-geeignete-vorschübe-und-drehzahlen"&gt;Mein Schwerpunkt ist Holz, was sind geeignete Vorschübe und Drehzahlen?&lt;/h4&gt;&#10;&lt;p&gt;Birkensperrholz ist hart aber nachgiebig. Die geeigneten Werte berücksichtigen immer die Stabilität der Maschine, die Drehmomente der Schrittmotoren und die Spindelleistung.&lt;/p&gt;&#10;&lt;p&gt;Wichtig ist, dass der Fräser Späne erzeugt und keinen Staub. Deshalb sollten niedrige Vorschubgeschwindigkeiten bei hohen Spindeldrehzahlen vermieden werden. Für den Anfang in Holz: Verwenden Sie die Hälfte Ihres Werkzeugdurchmessers als Tiefe pro Durchgang, berechnen Sie die Spindeldrehzahl mit der Formel für Vorschübe und Drehzahlen oder einem Rechner aus dem Internet, und probieren Sie diese aus. Schauen Sie sich die Späne an. Hören Sie der Maschine bei der Arbeit zu. Hört sie sich &amp;ldquo;gut&amp;rdquo; an? Erhöhen Sie die Tiefe pro Durchgang oder die Vorschubgeschwindigkeit allmählich und hören Sie an dem Punkt auf, an dem entweder Ihre Spindel gestresst klingt, Ihr Finish schlechter wird oder Sie sich mit Ihrer Maschine nicht mehr sicher fühlen. Drehen Sie wieder eine Stufe zurück, und das könnte Ihre ideale Vorschubgeschwindigkeit und Durchgangstiefe für das Material und den Fräser sein, den Sie gerade verwenden.&lt;/p&gt;&#10;&lt;p&gt;Für meine Maschine habe ich mich für &lt;code&gt;F3500mm/min&lt;/code&gt; = &lt;code&gt;138in/m&lt;/code&gt; bei &lt;code&gt;S24000U/min&lt;/code&gt; und einer Tiefenzustellung in Höhe des Fräsdurchmessers &lt;code&gt;Z+6mm&lt;/code&gt;, Bahnüberlappung &lt;code&gt;10%&lt;/code&gt; entschieden. Für die Recherche habe ich die folgenden Websites benutzt: &lt;a href="https://www.cnccookbook.com/feeds-speeds-cnc-wood-cutting/" target="_blank" rel="noopener noreferrer" class="external-link"&gt;cnccookbook&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt;, &lt;a href="https://www.cncrechner.de/rechner/vorschub/" target="_blank" rel="noopener noreferrer" class="external-link"&gt;cnc-rechner&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt; sowie Webseiten von Werkzeugherstellern wie &lt;a href="https://webseite.sorotec.de/download/fraesparameter/schnittwerte.pdf" target="_blank" rel="noopener noreferrer" class="external-link"&gt;Sorotec&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt;.&lt;/p&gt;&#10;&lt;h2 id="weiterlesen"&gt;Weiterlesen?&lt;/h2&gt;&#10;&lt;p&gt;&lt;a href="https://blog.schallbert.de/portal-milling-build/"&gt;CNC: Der Aufbau&lt;/a&gt;&#10;&lt;a href="https://blog.schallbert.de/cnc-electronics/"&gt;CNC Elektronik&lt;/a&gt;&lt;/p&gt;&#10;</description></item><item><title>Konfiguration des IC MAX1756x</title><link>https://blog.schallbert.de/configure-max1756x/</link><pubDate>Sat, 04 Dec 2021</pubDate><author>Schallbert</author><guid>https://blog.schallbert.de/configure-max1756x/</guid><description type="html">&#10; &lt;img src="https://blog.schallbert.de/assets/images/posts/2021-12-04_max1756x-thumb.jpg"&#10; class="post-cover"&#10; alt="Image: Max1756x typicall application, image courtesy of Maxim Integrated"&#10; title="Konfiguration des IC MAX1756x" /&gt;&#10;&lt;h2 id="power-supervisor-konfiguration-leicht-gemacht"&gt;Power Supervisor Konfiguration leicht gemacht&lt;/h2&gt;&#10;&lt;p&gt;&lt;figure class="media-frame media-frame--center"&gt;&#10; &lt;img src="https://blog.schallbert.de/assets/images/posts/2021-12-04_max17562.jpg" alt="Image: MAX17562 auf meiner Leiterplatte für AnywhereAmps"&gt;&lt;/figure&gt;&#10;Ich verwende MAX17562 ICs in meinem Design für &lt;a href="https://blog.schallbert.de/anywhereamps-get-pcb/"&gt;AnywhereAmps Alpha 1.1&lt;/a&gt;. Daher habe ich eine kurze Zusammenfassung der MAX1756x-Funktionen und deren Konfiguration erstellt 🙂.&lt;/p&gt;&#10;&lt;p&gt;Das Datenblatt ist die Grundlage für alle Informationen, die ich hier bereitstelle. Ich füge lediglich einige Überlegungen zur Gestaltung, Details zu meiner Art der Nutzung und Anwendungsvorschläge hinzu.&lt;/p&gt;&#10;&lt;h3 id="was-ist-dieser-chip-nochmal"&gt;Was ist dieser Chip nochmal?&lt;/h3&gt;&#10;&lt;p&gt;&lt;a href="https://www.maximintegrated.com/en/products/power/protection-control/protection-ics/MAX17561.html" target="_blank" rel="noopener noreferrer" class="external-link"&gt;MAX1756x&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt; ist ein einstellbarer Überspannungs-/Unterspannungs- und Überstromschutz-IC. Er ist in drei verschiedenen Versionen für die Behandlung von Überstromereignissen erhältlich:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;MAX17561: Schaltet sich bei einem Überstromereignis aus und stellt sich nach typischerweise &lt;code&gt;600ms&lt;/code&gt; selbsttätig ab.&lt;/li&gt;&#10;&lt;li&gt;MAX17562: Schaltet sich bei einem Überstromereignis ab; Neustart nach Freigabezyklus&lt;/li&gt;&#10;&lt;li&gt;MAX17563: Setzt den normalen Betrieb mit aktivem Strombegrenzer fort (führt Wärme ab)&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;Beide Versionen begrenzen Überstromereignisse auf die konfigurierte Stromgrenze.&lt;/p&gt;&#10;&lt;h3 id="mein-max1756x-anwendungstool"&gt;Mein MAX1756x-Anwendungstool&lt;/h3&gt;&#10;&lt;p&gt;&lt;figure class="media-frame media-frame--center"&gt;&#10; &lt;img src="https://blog.schallbert.de/assets/images/posts/2021-12-04_spreadsheet.jpg" alt="Image: Max1756x-Anwendungsrechner-Tabelle"&gt;&lt;/figure&gt;&#10;Um die Verwendung des Max1756x IC in Ihrer Anwendung zu vereinfachen, können Sie meine &lt;a href="https://github.com/Schallbert/AnywhereAmps/blob/master/Preamp/max1756x_application_calculator.xlsx" target="_blank" rel="noopener noreferrer" class="external-link"&gt;Max1756x Kalkulationstabelle&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt; verwenden.&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;&#10;&lt;h3 id="max1756x-strombegrenzer--überlastdetektor"&gt;MAX1756x Strombegrenzer / Überlastdetektor&lt;/h3&gt;&#10;&lt;p&gt;&lt;figure class="media-frame media-frame--right"&gt;&#10; &lt;img src="https://blog.schallbert.de/assets/images/posts/2021-12-04_seti.jpg" alt="SETI resistor configuration from MAX1756x datasheet"&gt;&lt;figcaption class="media-caption"&gt;&#10; &lt;span class="caption-text"&gt;Courtesy of Maxim Integrated: SETI resistor config&lt;/span&gt;&lt;a&#10; href="https://www.analog.com/media/en/technical-documentation/data-sheets/MAX17561-MAX17563.pdf"&#10; class="attr-link"&#10; aria-label="Attribution 1"&#10; &gt;&#10; &lt;sup class="attr-id"&gt;[1]&lt;/sup&gt;&#10; &lt;/a&gt;&lt;/figcaption&gt;&lt;/figure&gt;&#10;Der IC verfügt über einen einstellbaren Strombegrenzer und eine Überstromerkennung (&lt;code&gt;SETI&lt;/code&gt;). Wenn der Strom über den &lt;code&gt;SETI&lt;/code&gt;-Schwellenwert ansteigt, wird er auf den eingestellten Wert begrenzt. Für MAX17561 und MAX17562: Bleibt diese Bedingung länger als die typische &lt;code&gt;20.7ms&lt;/code&gt; Tastzeit bestehen, schaltet der Baustein den Lastkreis ab. Da der MAX17563 seinen normalen Betrieb fortsetzt, kann seine Verlustleistung irgendwann zu einer Übertemperaturabschaltung führen.&lt;/p&gt;&#10;&lt;p&gt;So konfiguriert man den Strombegrenzer / die Überlasterkennung über den Eingang &lt;code&gt;SETI&lt;/code&gt;:&#10;Einen Widerstand entsprechend der Kurve auf der rechten Seite (aus dem Datenblatt) auswählen und verbinden mit &lt;code&gt;SETI&lt;/code&gt; und &lt;code&gt;GND&lt;/code&gt; verbinden. Für AnywhereAmps Alpha 1.2 verwende ich einen &lt;code&gt;3k3&lt;/code&gt;-Widerstand, um eine Stromgrenze von &lt;code&gt;~3.5A&lt;/code&gt; zu erreichen.&lt;/p&gt;&#10;&lt;h3 id="max1756x-unterspannungskonfiguration"&gt;MAX1756x Unterspannungskonfiguration&lt;/h3&gt;&#10;&lt;p&gt;Der IC verfügt über eine Unterspannungsabschaltung (&lt;code&gt;UVLO&lt;/code&gt;). Wenn die Spannung für etwa &lt;code&gt;16,7ms&lt;/code&gt; unter den &lt;code&gt;UVLO&lt;/code&gt;-Schwellenwert sinkt, schalten die Leistungstransistoren des Bausteins den Lastkreis ab. Intern vergleicht der IC die Eingangsspannung am &lt;code&gt;UVLO&lt;/code&gt;-Pin mit der Referenzspannung &amp;ldquo;Vbg = 1,2V&amp;rdquo;. Um den Schwellenwert für die Unterspannungsabschaltung einzustellen, verwenden Sie einen Spannungsteiler, um den &lt;code&gt;UVLO&lt;/code&gt;-Pegel während des normalen Betriebs über &lt;code&gt;Vbg&lt;/code&gt; zu halten.&lt;/p&gt;&#10;&lt;h3 id="max1756x-überspannungskonfiguration"&gt;MAX1756x Überspannungskonfiguration&lt;/h3&gt;&#10;&lt;p&gt;Der IC verfügt über eine Überspannungsabschaltung (&lt;code&gt;OVLO&lt;/code&gt;). Wenn die Spannung für etwa &lt;code&gt;16,7ms&lt;/code&gt; über den &lt;code&gt;OVLO&lt;/code&gt;-Schwellenwert steigt, schalten die Leistungstransistoren des Bausteins den Lastkreis ab.&#10;Die Funktionsweise ist identisch mit der Unterspannungsabschaltung, mit dem einzigen Unterschied, dass die Spannung am &lt;code&gt;OVLO&lt;/code&gt;-Pin unter normalen Betriebsbedingungen unter &lt;code&gt;Vbg&lt;/code&gt; bleiben sollte.&lt;/p&gt;&#10;&lt;h3 id="max1756x-verpolschutz"&gt;MAX1756x Verpolschutz&lt;/h3&gt;&#10;&lt;p&gt;Der Verpolschutz des ICs kann durch Ziehen des &lt;code&gt;*RIEN&lt;/code&gt;-Pins nach &lt;code&gt;GND&lt;/code&gt; aktiviert werden. Soll diese Funktion genutzt werden ist zu beachten, dass ungepolte Bypass-Kondensatoren am Eingang des ICs verwendet werden müssen. Nutzt man &lt;a href="https://blog.schallbert.de/capacitor-problems/#explosion"&gt;wie ich es getan habe&lt;/a&gt; Elkos, so explodieren diese, sollte die Betriebsspannung verpolt werden.&lt;/p&gt;&#10;&lt;h3 id="fehler-flag-ausgang"&gt;Fehler *FLAG Ausgang&lt;/h3&gt;&#10;&lt;p&gt;Der MAX1756x zeigt unter den folgenden Bedingungen einen Stromversorgungsfehler über seinen &lt;code&gt;*FLAG&lt;/code&gt;-Port an:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Thermische Überlast&lt;/li&gt;&#10;&lt;li&gt;Überspannungsereignis definiert durch &lt;code&gt;OVLO&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;Verpolung: wenn der Verpolschutz &lt;code&gt;*RIEN&lt;/code&gt; aktiviert wurde&lt;/li&gt;&#10;&lt;li&gt;Überlaststrom, definiert durch &lt;code&gt;SETI&lt;/code&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="empfehlung-tvs-dioden-verwenden"&gt;Empfehlung: TVS-Dioden verwenden&lt;/h3&gt;&#10;&lt;p&gt;Wie das Datenblatt empfiehlt und &lt;a href="https://blog.schallbert.de/capacitor-problems/#inductance"&gt;meine Erfahrung aus früheren Vorfällen&lt;/a&gt; zeigt, würde ich &lt;code&gt;27V&lt;/code&gt; &lt;a href="https://blog.schallbert.de/knowledge-tvsdiodes/"&gt;Transient Voltage Suppressor diodes&lt;/a&gt; parallel zu den beiden Eingangs- und Ausgangsports des MAX1756x verwenden. Sie schützt (alle induktiven) Lastschaltungen vor negativen Spannungsspitzen beim Abschalten und den IC selbst vor Überspannungen beim Anschluss einer spannungsführenden Stromversorgung. Außerdem begrenzt er die Eingangsspannung in umgekehrter Richtung auf unbedenkliche Werte.&#10;&lt;figure class="media-frame media-frame--center"&gt;&#10; &lt;img src="https://blog.schallbert.de/assets/images/posts/2021-12-04_tvs.jpg" alt="Image: TVS-Verwendung in MAX1756x-Schaltung"&gt;&lt;/figure&gt;&lt;/p&gt;&#10;&lt;h3 id="empfehlung-2-verwenden-sie-nicht-polarisierte-eingangskondensatoren"&gt;Empfehlung 2: Verwenden Sie nicht polarisierte Eingangskondensatoren&lt;/h3&gt;&#10;&lt;p&gt;Um Probleme beim Neustart des IC zu vermeiden, wenn er an &amp;ldquo;schwache&amp;rdquo; Stromversorgungen oder hochohmige Eingangsleitungen angeschlossen ist, sollten größere nicht-polarisierte Eingangskondensatoren als üblich verwendet werden (nein, &amp;ldquo;100nF&amp;rdquo; sind eher nicht genug!) - insbesondere, wenn kapazitive oder andere Lasten betrieben werden, die Eingangsstoßströme verursachen.&lt;/p&gt;&#10;&lt;p&gt;Für weitere Informationen zur Vermeidung von Problemen in diesem Bereich bitte in meinen Blog-Eintrag über &lt;a href="https://blog.schallbert.de/knowledge-inrushlimiters/"&gt;Einschaltstrombegrenzer&lt;/a&gt; weiterstöbern.&lt;/p&gt;&#10;&lt;div class="footnotes" role="doc-endnotes"&gt;&#10;&lt;hr&gt;&#10;&lt;ol&gt;&#10;&lt;li id="fn:1"&gt;&#10;&lt;p&gt;Zu beachten: Obwohl ich das Datenblatt gründlich gelesen und die Daten sorgfältig hinzugefügt habe, kann ich natürlich keinerlei Garantie für die Ergebnisse übernehmen, die Sie mit diesem Tool erzielen.&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;/div&gt;&#10;</description></item><item><title>Videos mit dem VLC player konvertieren</title><link>https://blog.schallbert.de/video-conversion/</link><pubDate>Wed, 27 Oct 2021</pubDate><author>Schallbert</author><guid>https://blog.schallbert.de/video-conversion/</guid><description type="html">&#10; &lt;img src="https://blog.schallbert.de/assets/images/posts/2021-10-27_vlc-thumb.jpg"&#10; class="post-cover"&#10; alt="Image: VLC media player icon"&#10; title="Videos mit dem VLC player konvertieren" /&gt;&#10;&lt;h2 id="website-medienerstellung"&gt;Website: Medienerstellung&lt;/h2&gt;&#10;&lt;p&gt;Für diese Website habe ich viele Mediendateien konvertiert. Die selbstgemachten Fotos sind sehr groß, was zu langen Ladezeiten der Seite und bildschirmfüllenden Bildern führt. Während es recht einfach ist, ihre Größe zu reduzieren und die JPEG-Komprimierung zu erhöhen, ist dies bei Videos schwieriger.&lt;/p&gt;&#10;&lt;h2 id="das-problem"&gt;Das Problem&lt;/h2&gt;&#10;&lt;p&gt;&lt;figure class="media-frame media-frame--right"&gt;&#10; &lt;img src="https://blog.schallbert.de/assets/images/posts/2021-10-27_wtf-vlc.jpg" alt="Image: VLCs Vorschau Effekte und Filter Fenster"&gt;&lt;/figure&gt;&#10;Hä, VLC?!&#10;Ich verwende den beliebten &lt;a href="https://www.videolan.org/vlc/" target="_blank" rel="noopener noreferrer" class="external-link"&gt;vlc player&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt; und irgendwie habe ich einige Grundkonzepte nicht richtig verstanden. Entweder wird mein Video nicht wie geplant in Graustufen angezeigt, die Ausgabedatei ist leer (Verwendung von &lt;code&gt;H.264&lt;/code&gt; statt &lt;code&gt;H.265&lt;/code&gt; behebt das Problem), das Seitenverhältnis scheint verzerrt zu sein, oder das Video hat sich plötzlich gedreht, was ich weder wollte noch erwartet habe.&lt;/p&gt;&#10;&lt;h2 id="in-diesem-beitrag"&gt;In diesem Beitrag&lt;/h2&gt;&#10;&lt;p&gt;Eine Reihe von Schritten hilft mir, wie man einfache Aufgaben zur Konvertierung und rudimentäre Bearbeitung von Videos mit vlc umsetzt.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="https://blog.schallbert.de/video-conversion/#colors"&gt;Farben verändern oder auf Graustufen wechseln&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://blog.schallbert.de/video-conversion/#rotation"&gt;Das Video rotieren&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://blog.schallbert.de/video-conversion/#cropping"&gt;Ausschnitt eines Videos verwenden, Auflösung oder Seitenverhältnis anpassen&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://blog.schallbert.de/video-conversion/#cutting"&gt;Ein Video schneiden&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://blog.schallbert.de/video-conversion/#scaling"&gt;Größe des Videos auf dem Datenträger verringern&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="wie-funktioniert-das-mit-den-filtern"&gt;Wie funktioniert das mit den Filtern?&lt;/h2&gt;&#10;&lt;figure class="media-frame media-frame--right"&gt;&#10; &lt;img src="https://blog.schallbert.de/assets/images/posts/2021-10-27_video-effects.jpg" alt="Image: VLC&amp;#39;s preview Effects and filters window"&gt;&lt;/figure&gt;&#10;&lt;h3 id="vorschau-der-filter"&gt;Vorschau der Filter&lt;/h3&gt;&#10;&lt;p&gt;VLC verfügt über eine Schnellvorschau für die gängigsten Filter im Menü &amp;ldquo;Werkzeuge -&amp;gt; Effekte und Filter&amp;rdquo;. Dies wirkt sich direkt auf das Video aus, das Sie ansehen, aber nicht auf Ihre gespeicherte Datei. Sie dient lediglich dazu, eine Vorschau zu erstellen und die Auswirkungen dieser Filter auf Ihr Video zu kontrollieren. In &lt;a href="https://www.videoproc.com/troubleshoot-vlc/how-to-crop-a-video-in-vlc.htm" target="_blank" rel="noopener noreferrer" class="external-link"&gt;diesem VideoProc-Blogeintrag&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt; finden Sie ausführliche Anleitungen - und, was noch wichtiger ist, viele Bilder, die Sie dabei unterstützen. Für die ungeduldige Fraktion: weiterlesen 😉&lt;/p&gt;&#10;&lt;h3 id="gefiltertes-video-in-datei-speichern"&gt;Gefiltertes Video in Datei speichern&lt;/h3&gt;&#10;&lt;p&gt;&lt;figure class="media-frame media-frame--right"&gt;&#10; &lt;img src="https://blog.schallbert.de/assets/images/posts/2021-10-27_profile.jpg" alt="Image: VLC&amp;#39;s conversion profile window for saving"&gt;&lt;/figure&gt;&#10;Um einen Filter zu speichern, den Sie für Ihre Vorschau ausgewählt haben, müssen Sie ihn zum Konvertierungsprofil hinzufügen. Solange sie angekreuzt bleiben, wird &lt;em&gt;jedes&lt;/em&gt; Speichern mit diesem Profil Ihr Video verändern, auch wenn Sie alle Änderungen, die Sie in der Vergangenheit an den Vorschaufiltern vorgenommen haben, rückgängig gemacht haben!&lt;/p&gt;&#10;&lt;h2 id="colors"&gt;Wie kann ich die Farben in meinem Video ändern?&lt;/h2&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;Öffnen Sie die Videodatei, die Sie ändern möchten.&lt;/li&gt;&#10;&lt;li&gt;Klicken Sie auf &amp;ldquo;Werkzeuge -&amp;gt; Effekte und Filter&amp;rdquo; (oder drücken Sie &amp;ldquo;Strg+E&amp;rdquo;)&lt;/li&gt;&#10;&lt;li&gt;Es öffnet sich ein Dialogfeld mit drei Registerkarten. Wählen Sie die Registerkarte &amp;ldquo;Videoeffekte&amp;rdquo;.&lt;/li&gt;&#10;&lt;li&gt;Markieren Sie unter &amp;ldquo;Essentials&amp;rdquo; die Option &amp;ldquo;Bildanpassung&amp;rdquo;.&lt;/li&gt;&#10;&lt;li&gt;Nehmen Sie Ihre Änderungen vor und klicken Sie auf &amp;ldquo;Speichern&amp;rdquo; und dann auf &amp;ldquo;Schließen&amp;rdquo;. Eine Vorschau des Effekts wird im Hauptfenster angezeigt.&lt;/li&gt;&#10;&lt;li&gt;Öffnen Sie die Wiedergabelistenansicht durch Drücken von &amp;ldquo;Wiedergabeliste umschalten&amp;rdquo; (Strg+L).&lt;/li&gt;&#10;&lt;li&gt;Klicken Sie mit der rechten Maustaste auf Ihr Video und wählen Sie &amp;ldquo;Speichern&amp;hellip;&amp;rdquo; im Kontextmenü.&lt;/li&gt;&#10;&lt;li&gt;Drücken Sie das Schraubenschlüssel-Symbol &amp;ldquo;Ausgewähltes Profil bearbeiten&amp;rdquo; und wählen Sie auf der Registerkarte &amp;ldquo;Videocodec&amp;rdquo; die Unterregisterkarte &amp;ldquo;Filter&amp;rdquo;.&lt;/li&gt;&#10;&lt;li&gt;Markieren Sie den Filter &amp;ldquo;Bildeigenschaften&amp;rdquo;. Dadurch wird Ihre Änderung durchgeführt, sobald Sie Ihre Datei speichern.&lt;/li&gt;&#10;&lt;li&gt;Geben Sie eine Zieldatei ein und klicken Sie auf &amp;ldquo;Start&amp;rdquo;.&lt;/li&gt;&#10;&lt;li&gt;Vergessen Sie nicht, den Filter &amp;ldquo;Bildeigenschaften&amp;rdquo; in Ihrem Profil zu deaktivieren, wenn Sie damit fertig sind. Nehmen Sie auch die Änderungen zurück, die Sie auf der Registerkarte &amp;ldquo;Videoeffekte&amp;rdquo; vorgenommen haben (Schritt 4).&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;h2 id="rotation"&gt;Wie drehe ich mein Video?&lt;/h2&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;Öffnen Sie die Videodatei, die Sie ändern möchten.&lt;/li&gt;&#10;&lt;li&gt;Klicken Sie auf &amp;ldquo;Werkzeuge -&amp;gt; Effekte und Filter&amp;rdquo; (oder drücken Sie &amp;ldquo;Strg+E&amp;rdquo;)&lt;/li&gt;&#10;&lt;li&gt;Es öffnet sich ein Dialogfeld mit drei Registerkarten. Wählen Sie die Registerkarte &amp;ldquo;Videoeffekte&amp;rdquo;.&lt;/li&gt;&#10;&lt;li&gt;Wählen Sie unter &amp;ldquo;Geometrie&amp;rdquo; die Option &amp;ldquo;Transformieren&amp;rdquo;.&lt;/li&gt;&#10;&lt;li&gt;Nehmen Sie Ihre Änderungen vor und klicken Sie auf &amp;ldquo;Speichern&amp;rdquo; und dann auf &amp;ldquo;Schließen&amp;rdquo;. Eine Vorschau des Effekts wird im Hauptfenster angezeigt.&lt;/li&gt;&#10;&lt;li&gt;Öffnen Sie die Wiedergabelistenansicht durch Drücken von &amp;ldquo;Wiedergabeliste umschalten&amp;rdquo; (Strg+L).&lt;/li&gt;&#10;&lt;li&gt;Klicken Sie mit der rechten Maustaste auf Ihr Video und wählen Sie &amp;ldquo;Speichern&amp;hellip;&amp;rdquo; im Kontextmenü.&lt;/li&gt;&#10;&lt;li&gt;Drücken Sie das Schraubenschlüssel-Symbol &amp;ldquo;Ausgewähltes Profil bearbeiten&amp;rdquo; und wählen Sie auf der Registerkarte &amp;ldquo;Videocodec&amp;rdquo; die Unterregisterkarte &amp;ldquo;Filter&amp;rdquo;.&lt;/li&gt;&#10;&lt;li&gt;Markieren Sie den Filter &amp;ldquo;Videotransformation&amp;rdquo;. Dadurch wird Ihre Änderung durchgeführt, sobald Sie Ihre Datei speichern.&lt;/li&gt;&#10;&lt;li&gt;Geben Sie eine Zieldatei ein und klicken Sie auf &amp;ldquo;Start&amp;rdquo;.&lt;/li&gt;&#10;&lt;li&gt;Vergessen Sie nicht, das Häkchen beim Filter &amp;ldquo;Bildeigenschaften&amp;rdquo; in Ihrem Profil zu entfernen. Nehmen Sie auch die Änderungen zurück, die Sie auf der Registerkarte &amp;ldquo;Videoeffekte&amp;rdquo; vorgenommen haben.&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;h2 id="cropping"&gt;Wie kann ich mein Video zuschneiden?&lt;/h2&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;Öffnen Sie die Videodatei, die Sie ändern möchten.&lt;/li&gt;&#10;&lt;li&gt;Klicken Sie auf &amp;ldquo;Werkzeuge -&amp;gt; Effekte und Filter&amp;rdquo; (oder drücken Sie &amp;ldquo;Strg+E&amp;rdquo;)&lt;/li&gt;&#10;&lt;li&gt;Es öffnet sich ein Dialogfeld mit drei Registerkarten. Wählen Sie die Registerkarte &amp;ldquo;Videoeffekte&amp;rdquo;.&lt;/li&gt;&#10;&lt;li&gt;Spielen Sie unter &amp;ldquo;Zuschneiden&amp;rdquo; mit den Pixelwerten herum und beobachten Sie das Vorschaufenster genau, bis Sie mit dem Zuschnitt zufrieden sind. Notieren oder merken Sie sich die Einstellungen, die Sie anwenden möchten. Schließen Sie den Dialog.&lt;/li&gt;&#10;&lt;li&gt;Klicken Sie auf &amp;ldquo;Werkzeuge -&amp;gt; Voreinstellungen&amp;rdquo; (oder drücken Sie &amp;ldquo;Strg+P&amp;rdquo;)&lt;/li&gt;&#10;&lt;li&gt;Wählen Sie auf der Registerkarte &lt;code&gt;Interface&lt;/code&gt; (Start) die Optionsschaltfläche &lt;code&gt;Show Settings - All&lt;/code&gt;.&lt;/li&gt;&#10;&lt;li&gt;Scrollen Sie nach unten zum Element &amp;ldquo;Video&amp;rdquo; und öffnen Sie &amp;ldquo;Filter&amp;rdquo;.&lt;/li&gt;&#10;&lt;li&gt;Wählen Sie den &amp;ldquo;Video-Zuschneidefilter&amp;rdquo;.&lt;/li&gt;&#10;&lt;li&gt;Suchen Sie das Element &lt;code&gt;Cropadd&lt;/code&gt; in der Filterliste auf der linken Seite. Geben Sie die Werte ein, die Sie sich in der Vorschau gemerkt/aufgeschrieben haben. Klicken Sie auf &amp;ldquo;Speichern&amp;rdquo;.&lt;/li&gt;&#10;&lt;li&gt;Öffnen Sie die Wiedergabelistenansicht, indem Sie auf &amp;ldquo;Wiedergabeliste umschalten&amp;rdquo; (Strg+L) drücken. Klicken Sie dann mit der rechten Maustaste auf Ihr Video und wählen Sie &amp;ldquo;Speichern&amp;hellip;&amp;rdquo; aus dem Kontextmenü.&lt;/li&gt;&#10;&lt;li&gt;Drücken Sie das Schraubenschlüssel-Symbol &amp;ldquo;Ausgewähltes Profil bearbeiten&amp;rdquo; und wählen Sie auf der Registerkarte &amp;ldquo;Videocodec&amp;rdquo; die Unterregisterkarte &amp;ldquo;Filter&amp;rdquo;.&lt;/li&gt;&#10;&lt;li&gt;Aktivieren Sie den Filter &amp;ldquo;Videoschnitt&amp;rdquo;. Dadurch wird die Änderung durchgeführt, sobald Sie Ihre Datei speichern.&lt;/li&gt;&#10;&lt;li&gt;Geben Sie eine Zieldatei ein und klicken Sie auf &amp;ldquo;Start&amp;rdquo;.&lt;/li&gt;&#10;&lt;li&gt;Vergessen Sie nicht, das Häkchen bei &amp;ldquo;Video-Zuschnittfilter&amp;rdquo; in Ihrem Profil zu entfernen. Nehmen Sie auch die Änderungen zurück, die Sie in den Einstellungen unter &amp;ldquo;Filter&amp;rdquo; vorgenommen haben.&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;h2 id="cutting"&gt;Wie kürze ich mein Video?&lt;/h2&gt;&#10;&lt;p&gt;Hinweis: Eine ausführlichere Version dieses Themas findet sich in &lt;a href="https://www.movavi.io/how-to-trim-video-in-vlc-en/" target="_blank" rel="noopener noreferrer" class="external-link"&gt;diesem Beitrag von movavi&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt;.&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;Öffnen Sie die Videodatei, die Sie ändern möchten.&lt;/li&gt;&#10;&lt;li&gt;Zeigen Sie die Schaltfläche &amp;ldquo;Aufnehmen&amp;rdquo; im VLC Player an (markieren Sie &amp;ldquo;Ansicht-&amp;gt;Erweiterte Steuerelemente&amp;rdquo;).&lt;/li&gt;&#10;&lt;li&gt;Springen Sie an die Stelle, an der das geschnittene Video beginnen soll.&lt;/li&gt;&#10;&lt;li&gt;Drücken Sie die rote Schaltfläche &amp;ldquo;Aufnehmen&amp;rdquo;.&lt;/li&gt;&#10;&lt;li&gt;Spielen Sie die Videosequenz ab. Halten Sie an der Stelle an, an der der Zuschnitt enden soll.&lt;/li&gt;&#10;&lt;li&gt;VLCs Standardspeicherort für die Videoausgabe: &lt;code&gt;C:\Benutzer\Benutzername\Video&lt;/code&gt;&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;h2 id="scaling"&gt;Wie ändere ich die Videoauflösung?&lt;/h2&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;Öffnen Sie die Videodatei, die Sie ändern möchten.&lt;/li&gt;&#10;&lt;li&gt;Öffnen Sie die Wiedergabelistenansicht, indem Sie &amp;ldquo;Wiedergabeliste umschalten&amp;rdquo; (Strg+L) drücken. Klicken Sie dann mit der rechten Maustaste auf Ihr Video und wählen Sie &amp;ldquo;Speichern&amp;hellip;&amp;rdquo; aus dem Kontextmenü.&lt;/li&gt;&#10;&lt;li&gt;Drücken Sie das Schraubenschlüssel-Symbol &amp;ldquo;Ausgewähltes Profil bearbeiten&amp;rdquo; und wählen Sie auf der Registerkarte &amp;ldquo;Videocodec&amp;rdquo; die Unterregisterkarte &amp;ldquo;Auflösung&amp;rdquo;.&lt;/li&gt;&#10;&lt;li&gt;Geben Sie die Videogröße ein, in die Sie konvertieren möchten, und klicken Sie auf &amp;ldquo;Speichern&amp;rdquo;.&lt;/li&gt;&#10;&lt;/ol&gt;&#10;</description></item><item><title>Arbeitsabläufe mit FreeCAD</title><link>https://blog.schallbert.de/freecad-get-started/</link><pubDate>Tue, 12 Oct 2021</pubDate><author>Schallbert</author><guid>https://blog.schallbert.de/freecad-get-started/</guid><description type="html">&#10; &lt;img src="https://blog.schallbert.de/assets/images/posts/2021-10-12_pad-thumb.jpg"&#10; class="post-cover"&#10; alt="Image: Freecad example design in 3D view"&#10; title="Arbeitsabläufe mit FreeCAD" /&gt;&#10;&lt;h2 id="motivation"&gt;Motivation&lt;/h2&gt;&#10;&lt;p&gt;&lt;figure class="media-frame media-frame--right"&gt;&#10; &lt;img src="https://upload.wikimedia.org/wikipedia/commons/f/f7/FreeCAD-logo.svg" alt="FreeCad logo"&gt;&lt;figcaption class="media-caption"&gt;&#10; &lt;span class="caption-text"&gt;FreeCad logo&lt;/span&gt;&lt;a&#10; href="https://commons.wikimedia.org/wiki/File:FreeCAD-logo.svg#file"&#10; class="attr-link"&#10; aria-label="Attribution 1"&#10; &gt;&#10; &lt;sup class="attr-id"&gt;[1]&lt;/sup&gt;&#10; &lt;/a&gt;&lt;/figcaption&gt;&lt;/figure&gt;&#10;Ich habe gerade eine zweite Bestellung für AnywhereAmps Alpha erhalten. Mein erster Prototyp hat bereits ein neues Zuhause, also werde ich mindestens drei weitere Exemplare bauen. Alle Holzarbeiten, die von Hand ausgeführt werden, würden 4-5 Stunden pro Exemplar in Anspruch nehmen, also habe ich mich entschlossen, sie auf den eigentlichen Bauprozess zu beschränken, der - hoffentlich - nur eine Stunde dauert.&#10;Dies möchte ich erreichen, indem ich die Holzteile mit einer CNC-Maschine fräsen lasse.&lt;/p&gt;&#10;&lt;h2 id="cad-werkzeug"&gt;CAD-Werkzeug&lt;/h2&gt;&#10;&lt;p&gt;Eine solche Maschine würde die Pläne, die ich von Hand skizziert habe, nicht verarbeiten. Also musste ich mich mit einer Software vertraut machen, die 2D-Skizzen in ein 3D-Modell umwandeln kann, und schließlich mit einem weiteren Werkzeug, das die Komponenten des 3D-Modells in eine Bahnsteuerung für die CNC-Maschine übersetzt, mit der ich meine Teile fräsen will.&#10;Für die 3D-Arbeiten habe ich die Software &lt;a href="https://www.freecad.org/" target="_blank" rel="noopener noreferrer" class="external-link"&gt;FreeCAD&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt; gewählt.&lt;/p&gt;&#10;&lt;h2 id="aller-anfang-ist-schwer"&gt;Aller Anfang ist schwer&lt;/h2&gt;&#10;&lt;p&gt;&lt;figure class="media-frame media-frame--right"&gt;&#10; &lt;img src="https://blog.schallbert.de/assets/images/posts/2021-10-12_freecad_parts3d.jpg" alt="Image: parts construction complete"&gt;&lt;/figure&gt;&#10;Aber FreeCAD ist&amp;hellip; naja, ich bin halt kein CAD-Designer oder Maschinenbauingenieur. Daher ist der Einstieg in dieses Tool für mich ziemlich schwierig. Glücklicherweise gibt es einige gute Tutorials wie dieses: &lt;a href="https://www.youtube.com/watch?v=C1JG6l1uIJw" target="_blank" rel="noopener noreferrer" class="external-link"&gt;youtube link&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt;, dennoch habe ich einige Stunden gebraucht, bis ich mein erstes Teil gezeichnet hatte. Außerdem ist das, was auf dem Bild rechts zu erkennen ist, noch lange nicht der fertige Entwurf.&lt;/p&gt;&#10;&lt;h2 id="freecad-arbeitsablauf"&gt;FreeCAD Arbeitsablauf&lt;/h2&gt;&#10;&lt;p&gt;FreeCAD ist meiner Meinung nach (Stand Ende 2021) kein selbsterklärendes Werkzeug. Es ist sehr vielseitig und daher komplex und umfangreich. Da ich es zum Zeichnen von 3D-Teilen und/oder zur &lt;a href="https://de.wikipedia.org/wiki/Computerized_Numerical_Control#DIN/ISO-Programmierung_bzw._G-Code" target="_blank" rel="noopener noreferrer" class="external-link"&gt;G-Code&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt;-Generierung verwenden möchte, werde ich nur eine Handvoll seiner Arbeitsbereiche benötigen.&lt;/p&gt;&#10;&lt;p&gt;Natürlich können die folgenden Zeilen nicht mehr als eine Schnellstartanleitung sein. Es gibt tonnenweise hilfreiches Material wie ein FreeCad &lt;a href="https://wiki.freecad.org/" target="_blank" rel="noopener noreferrer" class="external-link"&gt;Wiki&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt;, ein &lt;a href="https://forum.freecad.org/" target="_blank" rel="noopener noreferrer" class="external-link"&gt;Forum&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt;, und viele, viele Tutorial-Videos usw., die die Dinge besser und ausführlicher erklären als ich es kann. &lt;a href="https://wiki.freecad.org/Getting_started" target="_blank" rel="noopener noreferrer" class="external-link"&gt;https://wiki.freecad.org/Getting_started&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&#10;&lt;h3 id="erst-die-abmessungen---das-modul-spreadsheet"&gt;Erst die Abmessungen - das Modul &amp;ldquo;Spreadsheet&amp;rdquo;&lt;/h3&gt;&#10;&lt;p&gt;Schaffen wir zuerst einen zentralen Ort, an dem wir alle Maße unseres Projekts aufbewahren. Wir werden sie später in den Zeichnungen, 3D-Modellen und Baugruppen verknüpfen, so dass sich geänderte Werte in der Kalkulationstabelle automatisch auf alles andere angewendet werden (für mich übrigens &lt;em&gt;der&lt;/em&gt; Vorteil dieses CAD-Programms gegenüber vielen anderen, bei denen quasi von Vorn begonnen werden muss, wenn man die Größe des Bauteils anpassen möchte).&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;Wählen Sie das Modul &amp;ldquo;Spreadsheet&amp;rdquo; an. Erstellen Sie ein Arbeitsblatt und benennen Sie es z. B. in &amp;ldquo;Abmessungen&amp;rdquo; um.&lt;/li&gt;&#10;&lt;li&gt;Tragen Sie Namen Ihrer Dimensionen ein. Ich habe festgestellt, dass es gut lesbar ist, wenn Sie für jede Dimension die Namenskonvention &lt;code&gt;Teil_Beschreibung_Attribut&lt;/code&gt; verwenden.&lt;/li&gt;&#10;&lt;li&gt;Nachdem Sie den Wert Ihrer Dimension eingegeben haben, klicken Sie mit der rechten Maustaste auf die Zelle und wählen Sie &amp;ldquo;Eigenschaften&amp;rdquo;.&lt;/li&gt;&#10;&lt;li&gt;Im folgenden Dialog wählen Sie die &amp;ldquo;Alias&amp;rdquo;-Leiste und geben den Namen des Maßes &lt;code&gt;dimensionName&lt;/code&gt; ein.&lt;/li&gt;&#10;&lt;li&gt;Nun sind Sie in jeder Skizze in der Lage, diese Maße unter ihrem Alias auszuwählen. Klicken Sie &amp;ldquo;Save&amp;rdquo;, um den Dialog zu schließen.&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;figure class="media-frame media-frame--center"&gt;&#10; &lt;img src="https://blog.schallbert.de/assets/images/posts/2021-10-12_spreadsheet.jpg" alt="Image: Spreadsheet example in FreeCad"&gt;&lt;/figure&gt;&#10;&lt;h3 id="skizze-anfertigen---scetcher-in-der-parts-design-workbench"&gt;Skizze anfertigen - scetcher in der &amp;ldquo;Parts Design Workbench&amp;rdquo;&lt;/h3&gt;&#10;&lt;p&gt;Nun erstellen wir die erste Skizze des Teils, wobei die soeben erstellten Maße verwendet werden. Am besten beginnt man mit sogenannten Master-Skizzen, die alle Elemente einer Zeichnung in einer bestimmten Ansicht, z.B. auf der XY-Ebene, enthalten. Von ihnen werden dann die für dreidimensionale Modelle erforderlichen Grundriss-Skizzen der jeweiligen Achsenpaare abgeleitet.&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;Aktivieren Sie das Konstruktionsmodul &amp;ldquo;Part Design&amp;rdquo;.&lt;/li&gt;&#10;&lt;li&gt;Erstellen Sie einen neuen Körper mit dem blauen Baustein-Symbol.&lt;/li&gt;&#10;&lt;li&gt;Erstellen Sie eine neue Skizze für diesen Körper mit dem Skizzen-Symbol. Wählen Sie z.B. die XY-Ebene.&lt;/li&gt;&#10;&lt;li&gt;Benennen Sie Ihre Skizze um, damit Sie sich ihren Zweck leicht merken können. Da Ihre ersten Skizzen die &amp;ldquo;Master&amp;rdquo;-Skizzen sind, schlage ich vor, sie &amp;ldquo;Master_IhrTeilename_xy&amp;rdquo; zu nennen.&lt;/li&gt;&#10;&lt;li&gt;Doppelklicken Sie auf die Skizze und beginnen Sie mit dem Zeichnen Ihrer Formen.&#10;&lt;figure class="media-frame media-frame--right"&gt;&#10; &lt;img src="https://blog.schallbert.de/assets/images/posts/2021-10-12_usingalias.jpg" alt="Image: Using spreadsheet alias in Parts Design workbench"&gt;&lt;/figure&gt;&lt;/li&gt;&#10;&lt;li&gt;Stellen Sie sicher, dass Sie Ihre Skizze vollständig definieren (&lt;a href="https://www.youtube.com/watch?v=F6H1iPwVg2o" target="_blank" rel="noopener noreferrer" class="external-link"&gt;youtube link&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt;). Verwenden Sie die Abmessungen, die Sie in die Kalkulationstabelle eingegeben haben, als Hilfe: Doppelklicken Sie auf Ihre Maßeinschränkung und geben Sie &amp;ldquo;=&amp;rdquo; ein oder drücken Sie die kleine runde Schaltfläche &amp;ldquo;fx&amp;rdquo;. Geben Sie den Namen Ihrer Kalkulationstabelle ein (zum Glück gibt es hier die Autovervollständigung) und dann den Alias der Dimension, die Sie in der Definition widerspiegeln wollen.&lt;/li&gt;&#10;&lt;li&gt;Wiederholen Sie diesen Vorgang für jede Bemaßungsabhängigkeit Ihrer Zeichnung.&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;p&gt;Mit Ihren fertigen Master-Skizzen (je eine für jede Achsenkombination) stehen alle Informationen für jeden Drittanbieter zur Verfügung, der Ihre Teile fertigen kann. Wenn Sie das tun möchten, können Sie Ihre Skizzen hier in DXF-Dateien exportieren, und schon sind Sie fertig.&#10;Andernfalls: Lesen Sie unten weiter.&lt;/p&gt;&#10;&lt;h3 id="3d-teile-erstellen---teile-design-workbench"&gt;3D-Teile erstellen - Teile Design Workbench&lt;/h3&gt;&#10;&lt;p&gt;Um ein echtes 3D-Teil aus Ihren Master-Skizzen zu erstellen, müssen Sie davon abgeleitete Skizzen erstellen, die extrudiert oder ausgeschnitten werden können. Sie müssen zunächst verstehen, wie FreeCAD Teile und Skizzen baumartig ausrichtet:&#10;Jedes extrudierte (3D)-Teil hat eine zugrunde liegende Skizze, die definiert, wie es aussieht. Seine Extrusionsrichtung hängt direkt von der Ebene der Skizze ab. Jedes Teil kann eine oder mehrere Bezugsebenen haben, an denen andere Teile befestigt werden können, die wiederum Teile, Löcher oder Taschen auf dieser spezifischen Fläche bilden.&lt;/p&gt;&#10;&lt;p&gt;FreeCAD zeigt nur das &amp;ldquo;letzte&amp;rdquo; Mitglied des Bauteilbaums an, das alle abhängigen Teile enthält, die Sie zuvor entworfen haben. Um die Sichtbarkeit umzuschalten, drücken Sie einfach die Leertaste.&#10;&lt;figure class="media-frame media-frame--center"&gt;&#10; &lt;img src="https://blog.schallbert.de/assets/images/posts/2021-10-12_pad.jpg" alt="Image: FreeCAD&amp;#39;s pad design tree view"&gt;&lt;/figure&gt;&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;Erstellen Sie eine neue Skizze in der Baumstruktur Ihres Teils. Dies wird Ihr erstes &amp;ldquo;Pad&amp;rdquo; sein, d.h. Ihr eigentliches 3D-Teil.&lt;/li&gt;&#10;&lt;li&gt;Wählen Sie das Werkzeug &lt;code&gt;create an edge linked to an external geometry&lt;/code&gt; (Hotkey &amp;ldquo;X&amp;rdquo;) und wählen Sie das Basisteil Ihrer ursprünglichen Master-Skizze aus.&lt;/li&gt;&#10;&lt;li&gt;Zeichnen Sie Ihre Form so, dass sie mit dieser Form übereinstimmt, und legen Sie ihre Maße fest, wiederum unter Verwendung der zuvor erstellten Bemaßungstabelle. Sie sollten dies jedoch nicht allzu oft benötigen, da Sie alle möglichen Kanten, die Sie finden konnten, bereits mit Ihrer Musterskizze verknüpft haben.&lt;/li&gt;&#10;&lt;li&gt;Jetzt kommt der spaßige Teil: Schließen Sie die Skizze, klicken Sie dann auf das Symbol &lt;code&gt;pad a selected sketch&lt;/code&gt; und geben Sie die gewünschte Höhe des Teils ein.&lt;/li&gt;&#10;&lt;li&gt;Das war&amp;rsquo;s!&lt;/li&gt;&#10;&lt;li&gt;Um ein weiteres Teil, eine Tasche oder ein Loch auf einer der Flächen Ihres Teiles zu erstellen, erstellen Sie zunächst eine neue Skizze und geben Sie ihr einen aussagekräftigen Namen. Klicken Sie dann auf die Fläche, auf der diese Skizze basieren soll. Wählen Sie schließlich das Werkzeug &lt;code&gt;set the Support of a scetch&lt;/code&gt; und wählen Sie die zuvor erstellte Skizze aus. Wiederholen Sie den Vorgang ab Schritt 2, bis Ihr Teil vollständig ist.&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;p&gt;Hm, Ihr neues Teil sitzt direkt auf dem Master-Sketch, so dass Sie es nicht mehr sehen können? Keine Panik, lesen Sie einfach weiter.&lt;/p&gt;&#10;&lt;h3 id="3d-teile-anordnen---das-modul-draft"&gt;3D-Teile anordnen - das Modul &amp;ldquo;Draft&amp;rdquo;&lt;/h3&gt;&#10;&lt;p&gt;Meiner Meinung nach ist es sehr mühsam, Teile in der Konstruktionswerkbank neu anzuordnen. Es wird viel einfacher, wenn Sie die Werkbank &amp;ldquo;Entwurf&amp;rdquo; (Draft) für diese Aufgabe verwenden. Auch hier können Sie Teile einfach klonen und nach Ihren Vorstellungen anordnen.&lt;/p&gt;&#10;&lt;figure class="media-frame media-frame--center"&gt;&#10; &lt;img src="https://blog.schallbert.de/assets/images/posts/2021-10-12_move.jpg" alt="Image: move in FreeCAD&amp;#39;s Draft workbench"&gt;&lt;/figure&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;Aktivieren Sie das Modul &amp;ldquo;Draft&amp;rdquo;.&lt;/li&gt;&#10;&lt;li&gt;Wählen Sie das Pad/Teil, an dem Sie zuvor gearbeitet haben, im Teilebaum aus.&lt;/li&gt;&#10;&lt;li&gt;Klicken Sie auf das Schaf-Symbol, um Ihr Teil zu klonen.&lt;/li&gt;&#10;&lt;li&gt;Machen Sie das ursprüngliche Pad unsichtbar, indem Sie die Leertaste drücken, während das Teil aktiv ist.&lt;/li&gt;&#10;&lt;li&gt;Wählen Sie das geklonte Teil aus und benennen Sie es sinnvoll um, z.B. &lt;code&gt;derGerät_part&lt;/code&gt;.&lt;/li&gt;&#10;&lt;li&gt;Wählen Sie das &amp;ldquo;Verschieben&amp;rdquo;-Symbol (im obigen Bild grün markiert).&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;figure class="media-frame media-frame--right"&gt;&#10; &lt;img src="https://blog.schallbert.de/assets/images/posts/2021-10-12_neat.jpg" alt="Image: part scetches and pads aligned side by side"&gt;&lt;/figure&gt;&#10;&lt;p&gt;Eine Verschiebe-Operation besteht aus zwei Schritten: Zuerst müssen Sie die Referenzposition für Ihre Verschiebung eingeben. Entweder wählen Sie den Punkt aus, indem Sie irgendwo in der 3D-Ansicht klicken und dann den Cursor ein wenig bewegen (meine Empfehlung), oder Sie geben den Bezugspunkt in die Felder auf der linken Seite ein und bestätigen jede Achse mit &amp;ldquo;Enter&amp;rdquo;.&#10;Der zweite Schritt ist die eigentliche Bewegung gegenüber Ihrem Referenzpunkt. Ich empfehle, diese Werte mit der Tastatur einzugeben, da es unglaublich schwierig ist, mit der Maus eine exakte Position anzufahren.&#10;Bestätigen Sie mit &amp;ldquo;Enter&amp;rdquo;, und die Verschiebung sollte abgeschlossen sein.&lt;/p&gt;&#10;&lt;p&gt;Cool, jetzt haben Sie ein Bemaßungsblatt, Master-Skizzen, die Ihre Teile vollständig spezifizieren, die Teile selbst als 3D-Körper und das alles ordentlich sortiert in Ihrer Ansicht!&lt;/p&gt;&#10;&lt;h3 id="techdraw-erstellen-sie-eine-klassische-papier-2d-zeichnung-als-pdf"&gt;TechDraw: Erstellen Sie eine klassische &amp;ldquo;Papier 2D&amp;rdquo; Zeichnung als PDF&lt;/h3&gt;&#10;&lt;p&gt;Abschließend möchten Sie vielleicht eine klassische 2D-Zeichnung Ihres Teils exportieren? Zum Glück ist keine schwere Aufgabe.&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;Aktivieren Sie das &lt;code&gt;TechDraw&lt;/code&gt;-Modul.&lt;/li&gt;&#10;&lt;li&gt;Drücken Sie das Symbol &amp;ldquo;Standardseite einfügen&amp;rdquo;.&lt;/li&gt;&#10;&lt;li&gt;Wählen Sie im Teilebaum das 3D-Teil aus, das Sie zeichnen lassen möchten.&lt;/li&gt;&#10;&lt;li&gt;Drücken Sie auf das Symbol &amp;ldquo;Mehrere Ansichten von zeichnungsfähigen Objekten einfügen&amp;rdquo; und wählen Sie die Ansichten aus, die vorhanden sein sollen.&lt;/li&gt;&#10;&lt;li&gt;Fügen Sie mithilfe der Symbolleiste Maße, Anmerkungen usw. hinzu.&lt;/li&gt;&#10;&lt;li&gt;Verwenden Sie die Funktion &amp;ldquo;Ansichtsrahmen ein-/ausschalten&amp;rdquo;, wenn sich Ihre Geometrien überschneiden, damit Sie sie wieder auswählen können.&lt;/li&gt;&#10;&lt;li&gt;Fügen Sie bei Bedarf kosmetische Linien ein, z. B. um Symmetrielinien zu zeichnen.&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;p&gt;Das resultierende Dokument könnte wie folgt aussehen:&#10;&lt;figure class="media-frame media-frame--center"&gt;&#10; &lt;img src="https://blog.schallbert.de/assets/images/posts/2021-10-12_drawing.jpg" alt="Image: classic drawing in FreeCAD"&gt;&lt;/figure&gt;&lt;/p&gt;&#10;&lt;p&gt;Weitere Informationen zu diesem Modul sind auf dem &lt;a href="https://wiki.freecad.org/Basic_TechDraw_Tutorial" target="_blank" rel="noopener noreferrer" class="external-link"&gt;FreeCAD Wiki&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt; verfügbar.&lt;/p&gt;&#10;</description></item><item><title>Tipps für besseres Hardware Design</title><link>https://blog.schallbert.de/anywhereamps-get-pcb/</link><pubDate>Tue, 21 Sep 2021</pubDate><author>Schallbert</author><guid>https://blog.schallbert.de/anywhereamps-get-pcb/</guid><description type="html">&#10; &lt;img src="https://blog.schallbert.de/assets/images/posts/2021-10-16_board-delivered-thumb.jpg"&#10; class="post-cover"&#10; alt="Image: Preamp prototype board soldered and working"&#10; title="Tipps für besseres Hardware Design" /&gt;&#10;&lt;h2 id="motivation"&gt;Motivation&lt;/h2&gt;&#10;&lt;p&gt;Ich habe meine erste Anfrage für die Fertigung eines AnywhereAmps Alpha. Da ich nicht noch einmal 10h für den Bau aufwenden möchte, habe ich beschlossen, die Zeit in die Beschleunigung des Herstellungsprozesses zu investieren. Ich fand heraus, dass ich etwa eine Stunde pro Verstärker sparen könnte, wenn ich die Platine für mich herstellen lassen würde. Leider hat mich die Umstellung der Platine von manuellem Schneiden, Fräsen, Bohren und Löten auf ein PCB-Design doppelt so viel Zeit gekostet, als wenn ich sie bereits komplett gebaut hätte. Und ich weiß noch nicht einmal, ob das funktioniert. Aber fangen wir von vorne an.&lt;/p&gt;&#10;&lt;h2 id="anforderungen-an-die-neue-leiterplatte"&gt;Anforderungen an die neue Leiterplatte&lt;/h2&gt;&#10;&lt;p&gt;Die Platine soll enthalten&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;die Vorverstärkerschaltung, wie sie für AnywhereAmps Alpha entworfen wurde&lt;/li&gt;&#10;&lt;li&gt;die Zwei-Wege-Weichenschaltung, wie sie für &lt;em&gt;zukünftige&lt;/em&gt; AnywhereAmps Beta entwickelt wurde&lt;/li&gt;&#10;&lt;li&gt;einen schaltenden Abwärtswandler zur Bereitstellung von 9V DC für Aux-Effekte&lt;/li&gt;&#10;&lt;li&gt;eine Stromüberwachungsschaltung, die sowohl Batterie als auch Platine vor Überlastung, Kurzschluss, Unterspannung und Rückspannung schützt&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;Auf diese Weise möchte ich die Elektronik schrittweise professionalisieren. Ich beabsichtige, die gleiche Platine für alle Varianten der AnywhereAmps zu verwenden. Außerdem würde ich einige externe Komponenten loswerden, die ich von Hand herstellen und platzieren musste: Sicherung, hochstromfähiger Netzschalter, 9V-Regler und seine Kühlung, sowie einige Kabel.&lt;/p&gt;&#10;&lt;h2 id="bauteilauswahl"&gt;Bauteilauswahl&lt;/h2&gt;&#10;&lt;h3 id="abwärtswandler"&gt;Abwärtswandler&lt;/h3&gt;&#10;&lt;p&gt;&lt;figure class="media-frame media-frame--right"&gt;&#10; &lt;img src="https://blog.schallbert.de/assets/images/posts/2021-09-21_switching_efficiency.jpg" alt="Image: Typische Wirkungsgradkurve eines Abwärtsschaltwandlers im Vergleich zum Laststrom"&gt;&lt;/figure&gt;&#10;Ich habe im Internet nach einem Abwärtsschaltwandler mit geringer elektromagnetischer Interferenz (EMI) und einem Ausgang von &lt;code&gt;&amp;gt;1A&lt;/code&gt; bei &lt;code&gt;9V&lt;/code&gt; gesucht. Ein Linearregler hätte zwar weniger Störungen ausgesendet, aber bei einer Batterie-Nennspannung von &lt;code&gt;18V&lt;/code&gt; hätte ich im schlimmsten Fall um &lt;code&gt;9W&lt;/code&gt; thermische Verluste in Kauf nehmen müssen. Daher wäre diese Lösung überhaupt nicht batterieschonend gewesen. Ich entschied mich für ein (teures) Design, das alle notwendigen Komponenten in einem Baustein enthält, so dass ich nur noch das PCB-Layout richtig hinbekommen musste, um die EMI zu reduzieren. Ich fügte ein paar Bypass-Kondensatoren und einen Spannungsteiler für den Zielspannungs-Sollwert hinzu. Das war&amp;rsquo;s! (Dachte ich damals noch. &lt;a href="https://blog.schallbert.de/pcbs-arrived/#soldering"&gt;So sah es tatsächlich aus&lt;/a&gt;)&lt;/p&gt;&#10;&lt;h3 id="power-supervisor"&gt;Power Supervisor&lt;/h3&gt;&#10;&lt;p&gt;&lt;figure class="media-frame media-frame--right"&gt;&#10; &lt;img src="https://blog.schallbert.de/assets/images/posts/2021-09-21_converter.jpg" alt="Image: Integrierter Abwärtswandler: Fast ein Würfel"&gt;&lt;/figure&gt;&#10;Der einzige Schutz für meine Verstärker war bisher eine Sicherung, deren Wert auf den höchsten Betriebsstrom eingestellt war, den ich in den Schaltkreisen erwartete. In den frühen Prototypenphasen habe ich einige Operationsverstärker durch versehentliche Verpolung zerstört. Außerdem möchte ich vermeiden, dass der Akku völlig entladen wird, wenn ich vergesse, auf die Ladeanzeigen zu achten. Deshalb habe ich einen &lt;a href="https://blog.schallbert.de/configure-max1756x/"&gt;Power Supervisor IC&lt;/a&gt; ausgewählt, der Über- und Unterspannung und weitere Fehler erkennt und sowohl die Schaltkreise als auch den Akku vor Schäden schützt.&lt;/p&gt;&#10;&lt;h3 id="gruppierung-passiver-bauteile"&gt;Gruppierung passiver Bauteile&lt;/h3&gt;&#10;&lt;p&gt;Ich habe gelernt, dass die Herstellung einer Leiterplatte mit vielen verschiedenen Bauteilen teurer und fehleranfälliger ist als bei Verwendung weniger unterschiedlicher Bauteile, auch wenn ihre Gesamtzahl auf diese Weise steigt. Also habe ich viele Werte überarbeitet und die Simulation für den Audio-Vorverstärker mit diesen neuen Werten erneut durchgeführt. Schließlich gelang es mir, die Schaltung von 8/5 auf 3 verschiedene Widerstands- und 3 verschiedene Kondensatorwerte zu reduzieren!&lt;/p&gt;&#10;&lt;h3 id="kondensatoren---mal-wieder"&gt;Kondensatoren - mal wieder&lt;/h3&gt;&#10;&lt;p&gt;Ich habe zunächst MLCC (Multilayer Ceramic Capacitors) in meinem Design verwendet, sowohl für den Bypass als auch für die Audio-Entkopplungskondensatoren. Nach erneuter Lektüre der Dokumente, auf die ich in meinem Beitrag &lt;a href="https://blog.schallbert.de/preamp-design-considerations/"&gt;preamp-design-considerations/&lt;/a&gt; hingewiesen hatte, stellte ich fest, dass dieses Kondensator-Design Probleme mit Verzerrungen bei Audiosignalen zu haben scheint. Das Bild unten zeigt einen Vergleich verschiedener Kondensatortypen und -größen. Man erkennt, dass Folienkondensatoren hier am besten und MLCCs am schlechtesten abschneiden. Da ich keine Folienkondensatoren in der von mir benötigten Größe auf SMD-Basis finden konnte und Aluminium-Elektrolytkondensatoren zu groß waren, habe ich gepolte Tantalkondensatoren gewählt. Für die Bypass-Kondensatoren wählte ich &lt;a href="https://passive-components.eu/why-low-esr-matters-in-capacitor-design/" target="_blank" rel="noopener noreferrer" class="external-link"&gt;low-ESR&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt; Typen.&#10;&lt;figure class="media-frame media-frame--center"&gt;&#10; &lt;img src="https://blog.schallbert.de/assets/images/posts/2021-09-21_capcompare.jpg" alt="Image: capacitor types compared for Audio usage"&gt;&lt;figcaption class="media-caption"&gt;&#10; &lt;span class="caption-text"&gt;TI Audio Design Journal: Vergleich verschiedener Kondensatortypen&lt;/span&gt;&lt;a&#10; href="https://www.ti.com/lit/an/slyt796/slyt796.pdf?ts=1630627717321&amp;amp;ref_url=https%253A%252F%252Fwww.startpage.com%252F"&#10; class="attr-link"&#10; aria-label="Attribution 1"&#10; &gt;&#10; &lt;sup class="attr-id"&gt;[1]&lt;/sup&gt;&#10; &lt;/a&gt;&lt;/figcaption&gt;&lt;/figure&gt;&lt;/p&gt;&#10;&lt;h2 id="schaltungsentwurf"&gt;Schaltungsentwurf&lt;/h2&gt;&#10;&lt;p&gt;Ich wählte die Open-Source-Software &lt;a href="https://www.kicad.org/" target="_blank" rel="noopener noreferrer" class="external-link"&gt;KiCad&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt; als Werkzeug zum Schaltungsentwurf und zeichnete alle meine bestehenden Schaltpläne neu, wobei ich die oben beschriebenen Komponenten hinzufügte. Man erkennt gut, dass der Verstärkerteil nur die rechte Hälfte des Schaltplans füllt, während die linke Hälfte der Stromversorgung und der Überwachungsschaltung gewidmet ist.&lt;/p&gt;&#10;&lt;figure class="media-frame media-frame--center"&gt;&#10; &lt;img src="https://blog.schallbert.de/assets/images/posts/2021-09-21_schematics.jpg" alt="Image: AnywhereAmps Power &amp;amp; Preamp-Schaltung mit KiCad"&gt;&lt;/figure&gt;&#10;&lt;p&gt;Ich habe versucht, die Schaltpläne so übersichtlich wie möglich zu gestalten, damit sie leicht zu lesen sind. Ich habe häufig globale Bezeichnungen verwendet und Steckverbinder zur einfacheren Montage hinzugefügt.&lt;/p&gt;&#10;&lt;h2 id="pcb-design"&gt;PCB-Design&lt;/h2&gt;&#10;&lt;p&gt;Dies war der schwierigste Teil für mich. Ich habe noch nie eine Leiterplatte für Audioanwendungen entworfen, also musste ich eine Menge Richtlinien lesen, bevor ich anfing.&lt;/p&gt;&#10;&lt;h3 id="anleitungen-und-tutorials"&gt;Anleitungen und Tutorials&lt;/h3&gt;&#10;&lt;p&gt;Ich liste einige davon unten zur Information auf:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="https://www.allaboutcircuits.com/technical-articles/clean-power-for-every-ic-part-1-understanding-bypass-capacitors/" target="_blank" rel="noopener noreferrer" class="external-link"&gt;Rauschen auf Leiterplatten und wie man es vermeidet&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://www.renesas.com/en/document/apn/an1325-choosing-and-using-bypass-capacitors" target="_blank" rel="noopener noreferrer" class="external-link"&gt;Wie man Bypass-Kondensatoren am besten platziert&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://www.autodesk.com/products/eagle/blog/8-pcb-grounding-rules/" target="_blank" rel="noopener noreferrer" class="external-link"&gt;Massefläche oder nicht?&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://electronics.stackexchange.com/questions/52603/how-to-connect-ground-planes-together" target="_blank" rel="noopener noreferrer" class="external-link"&gt;Wie man verschiedene Massen für Signal, Stromversorgung etc. verbindet&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://resources.altium.com/p/top-5-pcb-design-guidelines-every-pcb-designer-needs-know" target="_blank" rel="noopener noreferrer" class="external-link"&gt;Bauteilpositionen für den Lötvorgang optimieren&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://www.elektronikpraxis.vogel.de/pcb-design-regeln-sieben-suenden-beim-leiterplatten-design-a-356703/" target="_blank" rel="noopener noreferrer" class="external-link"&gt;Übliche Probleme beim Platinendesign&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://www.multi-circuit-boards.eu/leiterplatten-design-hilfe/oberflaeche/leiterbahn-strombelastbarkeit.html" target="_blank" rel="noopener noreferrer" class="external-link"&gt;Wie viel Strom kann ich über welche Leiterbahn schicken?&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://community.aisler.net/c/knowledge-base/design-rules/41" target="_blank" rel="noopener noreferrer" class="external-link"&gt;PCB Design Tipps für die maschinelle Fertigung&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="anywhereamps-pcb-erklärt"&gt;AnywhereAmps PCB erklärt&lt;/h3&gt;&#10;&lt;p&gt;Das Ergebnis nach ein einigen Stunden Arbeit:&lt;/p&gt;&#10;&lt;figure class="media-frame media-frame--center"&gt;&#10; &lt;img src="https://blog.schallbert.de/assets/images/posts/2021-09-21_pcb.jpg" alt="Image: PCB fully routed on a 2-layer design"&gt;&lt;/figure&gt;&#10;&lt;p&gt;Die Platine ist in zwei Lagen vollständig geroutet.&lt;/p&gt;&#10;&lt;p&gt;Ich habe die Leiterplatte in drei Bereiche unterteilt.&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;Links: der 9V-Schaltregler, der seinem Referenzdesign (Datenblatt) folgend mit Hilfe der Bypass-Kondensatoren einen Stromkreis um sich selbst bilden und den größten Teil der elektromagnetischen Störaussendung auslöschen würde. Das thermische Design, lässt viel Platz für Kupfer und einige Durchkontaktierungen, sodass die Wärme vom Chip gut abgeführt werden kann.&lt;/li&gt;&#10;&lt;li&gt;Mitte: Die Stromanschlüsse und die Überwachungsschaltung. Ich habe Lötbrücken gesetzt, um die Nennspannung der Batterie für die Unterspannungserkennung auszuwählen.&lt;/li&gt;&#10;&lt;li&gt;Rechts und oben: Vorverstärker und analoge Signalschaltung, getrennt von der übrigen Elektronik durch eine dicke Massebahn auf der oberen Ebene und eine eigene Massefläche auf der Unterseite. Ich hoffe, das ist genug.&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;p&gt;Da ich die ersten Prototypen von Hand löten werde, um zu prüfen, ob alles gut funktioniert, habe ich &amp;ldquo;große&amp;rdquo; 0805 SMD-Bauteile verwendet. Ich habe den Abstand zwischen den Bauteilen größer gemacht, als es die PCB-Spezifikation verlangt. Leider waren die hochintegrierten Leistungs-ICs nicht in &amp;ldquo;Hobby-Löt-Elektronik&amp;rdquo;-Größen erhältlich, so dass ich hier noch einige Mühen auf mich nehmen muss.&lt;/p&gt;&#10;&lt;p&gt;So wird es also aussehen. Die Leiterplatte wird 45mm x 69mm groß sein.&#10;&lt;figure class="media-frame media-frame--center"&gt;&#10; &lt;img src="https://blog.schallbert.de/assets/images/posts/2021-09-21_pcb3d.jpg" alt="Image: 3D-Ansicht der Leiterplatte"&gt;&lt;/figure&gt;&lt;/p&gt;&#10;&lt;h2 id="herunterladen-oder-eigene-beiträge-erwünscht"&gt;Herunterladen oder eigene Beiträge erwünscht?&lt;/h2&gt;&#10;&lt;p&gt;Alle meine Zeichnungen in CAD sowie Stromlaufpläne sind quelloffen und zum Download auf meinem eigens dafür angelegten &lt;a href="https://github.com/Schallbert/AnywhereAmps/" target="_blank" rel="noopener noreferrer" class="external-link"&gt;Github Repo&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt; verfügbar.&lt;/p&gt;&#10;&lt;p&gt;Nächste Schritte: &lt;a href="https://blog.schallbert.de/pcbs-arrived/"&gt;Platinen geliefert und verlötet&lt;/a&gt;&lt;/p&gt;&#10;</description></item><item><title>MobFobAmp</title><link>https://blog.schallbert.de/mobfobamp-diy/</link><pubDate>Thu, 10 Jun 2021</pubDate><author>Schallbert</author><guid>https://blog.schallbert.de/mobfobamp-diy/</guid><description type="html">&#10; &lt;img src="https://blog.schallbert.de/assets/images/mobfobamp/unfolded-thumb.jpg"&#10; class="post-cover"&#10; alt="Image: MobFobAmp Folded"&#10; title="MobFobAmp" /&gt;&#10;&lt;h2 id="plans"&gt;Pläne&lt;/h2&gt;&#10;&lt;section class="hugo-gallery"&gt;&#10; &lt;div class="hugo-gallery__frame"&gt;&#10; &lt;div class="hugo-gallery__grid" role="list"&gt;&lt;a&#10; class="hugo-gallery__thumb"&#10; href="#gallery-full-0"&#10; aria-label="Image: MobFobAmp pencil drawing on a sheet of paper. It features front and side view, and includes a scetch of the speaker chassis which is mounted inside-out. The box itself looks like a rectangle with hinges that allow it to fold flat."&gt;&#10; &lt;img&#10; src="https://blog.schallbert.de/assets/images/mobfobamp/scetch_sidefront.jpg"&#10; alt="Image: MobFobAmp pencil drawing on a sheet of paper. It features front and side view, and includes a scetch of the speaker chassis which is mounted inside-out. The box itself looks like a rectangle with hinges that allow it to fold flat."&#10; class="hugo-gallery__thumb-img"&#10; loading="lazy"&gt;&#10; &lt;/a&gt;&lt;a&#10; class="hugo-gallery__thumb"&#10; href="#gallery-full-1"&#10; aria-label="Image: MobFobAmp pencil drawing on a sheet of paper. It is a top/bottom view, and includes domensions. It looks like a square ."&gt;&#10; &lt;img&#10; src="https://blog.schallbert.de/assets/images/mobfobamp/scetch_topbottom.jpg"&#10; alt="Image: MobFobAmp pencil drawing on a sheet of paper. It is a top/bottom view, and includes domensions. It looks like a square ."&#10; class="hugo-gallery__thumb-img"&#10; loading="lazy"&gt;&#10; &lt;/a&gt;&lt;a&#10; class="hugo-gallery__thumb"&#10; href="#gallery-full-2"&#10; aria-label="Image: MobFobAmp&amp;#39;s circuit diagram as a pencil drawing. It shows a battery, fuse, on/off switch, status indicator LED the amplifier board with in- and output jacks and the speaker it drives."&gt;&#10; &lt;img&#10; src="https://blog.schallbert.de/assets/images/mobfobamp/scetch_circuitdiagram.jpg"&#10; alt="Image: MobFobAmp&amp;#39;s circuit diagram as a pencil drawing. It shows a battery, fuse, on/off switch, status indicator LED the amplifier board with in- and output jacks and the speaker it drives."&#10; class="hugo-gallery__thumb-img"&#10; loading="lazy"&gt;&#10; &lt;/a&gt;&lt;/div&gt;&lt;div class="hugo-gallery__caption"&gt;&#10; Plans for my Mobile Foldable Amplifier.&#10; &lt;/div&gt;&lt;/div&gt;&#10;&#10; &lt;div class="hugo-gallery__full" aria-live="polite"&gt;&lt;figure&#10; id="gallery-full-0"&#10; class="hugo-gallery__figure media-frame media-frame--center"&gt;&#10; &lt;img&#10; src="https://blog.schallbert.de/assets/images/mobfobamp/scetch_sidefront.jpg"&#10; alt="Image: MobFobAmp pencil drawing on a sheet of paper. It features front and side view, and includes a scetch of the speaker chassis which is mounted inside-out. The box itself looks like a rectangle with hinges that allow it to fold flat."&gt;&lt;figcaption&gt;Front and side view scetch with dimensions&lt;/figcaption&gt;&lt;/figure&gt;&lt;figure&#10; id="gallery-full-1"&#10; class="hugo-gallery__figure media-frame media-frame--center"&gt;&#10; &lt;img&#10; src="https://blog.schallbert.de/assets/images/mobfobamp/scetch_topbottom.jpg"&#10; alt="Image: MobFobAmp pencil drawing on a sheet of paper. It is a top/bottom view, and includes domensions. It looks like a square ."&gt;&lt;figcaption&gt;Top and bottom view scetch with dimensions, shows the mounting side of the panels&lt;/figcaption&gt;&lt;/figure&gt;&lt;figure&#10; id="gallery-full-2"&#10; class="hugo-gallery__figure media-frame media-frame--center"&gt;&#10; &lt;img&#10; src="https://blog.schallbert.de/assets/images/mobfobamp/scetch_circuitdiagram.jpg"&#10; alt="Image: MobFobAmp&amp;#39;s circuit diagram as a pencil drawing. It shows a battery, fuse, on/off switch, status indicator LED the amplifier board with in- and output jacks and the speaker it drives."&gt;&lt;figcaption&gt;Minimal added circuitry: Switch, fuse, LED, 1k Resistor to set amp gain to max&lt;/figcaption&gt;&lt;/figure&gt;&lt;/div&gt;&#10;&lt;/section&gt;&#10;&#10;&lt;h2 id="listen"&gt;Listen&lt;/h2&gt;&#10;&lt;h3 id="werkzeuge"&gt;Werkzeuge&lt;/h3&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Benötigte Werkzeuge&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Bohrmaschine&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Oberfräse, Kopierring, Parallelanschlag&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Multitool: Schleifen, Holzschnitt, Schneidkopf, Zirkel&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Optional: Handkreissäge mit Schutzbügel&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Handsäge, fein&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Zwingen&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Stechbeitel, 12mm&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Hammer&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Schraubendreher, Bits&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Holzbohrer: 3mm, 5mm, 6mm, 8mm, 12mm, Senkbohrer 45°, Forstner 30mm&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Stahlbohrer: 3mm, Senkbohrung 45°&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Messerköpfe: 8mm gerade, 12mm gerade, 45° optional&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Lötkolben, Lötzinn, Schrumpfschlauch, 1m 1x0,75mm² Leitung&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;h3 id="materialliste"&gt;Materialliste&lt;/h3&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Artikel&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Größe [mm]&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Anzahl&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;~ Kosten [€]&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Vorder-/Rückseite: Birke Multiplex&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;L 500 B 260 B 12&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;2&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;12&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Oben/Unten: Birke Multiplex&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;L 260 B 248 B 12&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;2&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;4&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Seiten: Birke Multiplex&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;L 500 B 110 B 12&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;4&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;8&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Verstärkung &amp;amp; Halterungen&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;L 260 B 236 W 12&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;1&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;2&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Schrauben (vorzugsweise Torx)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;12 x 3&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;100&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;5&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Schrauben (Batteriehalter, Lenker)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;35 x 4&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;4&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;0,20&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Schrauben &amp;amp; Muttern (Lautsprecher)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;15 x M4&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;3&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;0,20&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Platinenhalter&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;d5 x 16&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;14&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;3&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Klavierband&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;500 x 32&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;6&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;18&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Verschlüsse&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;50 x 12&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;2&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;9&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Fahrradschlauch (Flexible Scharniere &amp;amp; Riemen)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;28&amp;quot;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;1&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;6&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&amp;ldquo;P-Typ&amp;rdquo; Schaumstoff- oder Gummidichtung&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;500 x 9 x 7&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;6&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;8&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;P-Typ&amp;quot; Schaumstoff- oder Gummidichtung&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;260 x 9 x 7&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;4&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;4&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Schaumstoff- oder Gummidichtung vom Typ &amp;ldquo;P&amp;rdquo;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;236 x 9 x 7&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;4&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;4&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;I-Typ&amp;quot; Schaumstoffdichtung (Lautsprecher)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;600 x 9 x 2&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;1&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;2&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Aluminiumschiene&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;260 x 12&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;4&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;2&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Abstandhalter (Auto-unfold Funktion)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;do 30 di 4&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;4&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;2&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Tragegriff&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Was Sie bevorzugen&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;1&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;?&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Verstärker (z.B. Adafruit 20W Class-D Verstärker)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;1&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;20&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Lautsprecher (z.B. Visaton W 170S 4Ohm)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;d170, W 81&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;1&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;35&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Batterie, 10V - 14V&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Was Sie bevorzugen&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;1&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;?&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Sicherung, Schalter, LED, Widerstände: Siehe Schaltplan&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Was Sie bevorzugen&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;1&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;?&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Ersatzholz z.B. als Maske&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;z.B. 300 x 300&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;1&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;0&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Gummikleber oder Heißkleber (luftdichte Lücken)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;20g&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;1&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;3&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;h2 id="der-bau"&gt;Der Bau&lt;/h2&gt;&#10;&lt;h3 id="verlegung"&gt;Verlegung&lt;/h3&gt;&#10;&lt;p&gt;Zuerst werden alle Falze gefräst damit die Dichtungen in das Gehäuse montiert werden können.&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;figure class="media-frame media-frame--right"&gt;&#10; &lt;img src="https://blog.schallbert.de/assets/images/mobfobamp/scetch_routerripfence_7mm.png" alt="Image: router_ripfence_7mm"&gt;&lt;/figure&gt;&#10;Montieren Sie den geraden &lt;code&gt;8mm&lt;/code&gt;-Fräser. Bei einer Schnitttiefe von &lt;code&gt;3mm&lt;/code&gt; setzen Sie den Parallelanschlag so ein, dass die Mitte der Fräse &lt;code&gt;7mm&lt;/code&gt; vom Anschlag entfernt ist. Achten Sie darauf, dass Sie die Oberfräse gut führen, damit Ihre Schnitte gerade und sauber werden.&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;Fahren Sie mit den vorderen und hinteren Platten fort (500x260x12). Fräsen Sie die langen Außenseiten der beiden Bretter.&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;Schneiden Sie nun die klappbaren Seiten des Schrankes zu. Nehmen Sie dafür zwei der vier Teile &amp;ldquo;500x110x12&amp;rdquo;. Die langen Seiten müssen nach oben zeigen. Verwenden Sie Ihre Oberfräse, um die Innenseiten dieser Bretter wie folgt zu schneiden:&#10;&lt;figure class="media-frame media-frame--right"&gt;&#10; &lt;img src="https://blog.schallbert.de/assets/images/mobfobamp/scetch_bevelsides_8mm.png" alt="Image: bevel_sides_8mm"&gt;&lt;/figure&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;Nun ist es an der Zeit, die umlaufenden Dichtungen von Deckel und Boden zu fertigen. Nehmen Sie die &lt;a href="https://blog.schallbert.de/mobfobamp-diy/#plans"&gt;Pläne&lt;/a&gt; zur Hilfe.&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;Montieren Sie den 12mm-Fräser auf die Oberfräse. Stellen Sie den Parallelanschlag neu ein, damit die Oberfräse ohne Abstand zum Anschlag fräst. Fräsen Sie einen Falz von etwa 4mm Tiefe an eine Seite von Deckel und Boden, damit hier später das Gummischarnier montiert werden kann.&#10;Schleifen Sie überstehende Fasern vorsichtig mit einem 180er-Papier ab.&#10;&lt;figure class="media-frame media-frame--center"&gt;&#10; &lt;img src="https://blog.schallbert.de/assets/images/mobfobamp/rubberhinge_cutout.jpg" alt="Image: cutout for the rubber hinge"&gt;&lt;/figure&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;Verwenden Sie einen an der Oberfräse angebrachten Zirkel oder das Multitool, um den Innenring mit einem Durchmesser von &lt;code&gt;148mm&lt;/code&gt; für die Lautsprecheröffnung zu schneiden. Drei Durchgänge auf der Oberfräse sollten genug sein.&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;Fertigen Sie eine Schablone an. Nehmen Sie dafür ein Reststück, z.B. aus Sperrholz. Der Lochkreis der Schablone sollte wie folgt berechnet werden: Außendurchmesser des Lautsprechers plus Differenz aus Abstand Kopierring zu Achsmitte und Fräserradius. So erreichen Sie einen Enddurchmesser der Falz von &lt;code&gt;170mm&lt;/code&gt;. Es sollte jetzt so aussehen:&#10;&lt;figure class="media-frame media-frame--center"&gt;&#10; &lt;img src="https://blog.schallbert.de/assets/images/mobfobamp/speakercutout_mask.jpg" alt="Image: mask for the speaker inlay"&gt;&lt;/figure&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;Zentrieren Sie die Schablone auf dem &lt;code&gt;148mm&lt;/code&gt; Ausschnitt an der Vorderseite und befestigen Sie sie (z.B. mit doppelseitigem Klebeband). Montieren Sie den Kopierring an der Oberfräse. Stellen Sie sicher, dass Sie den &lt;code&gt;12mm&lt;/code&gt; Fräskopf verwenden und eine Fasen-Tiefe von nicht mehr als &lt;code&gt;8mm&lt;/code&gt; verwenden - der Lautsprecher hat &lt;code&gt;7mm&lt;/code&gt; Tiefe, fügen Sie &lt;code&gt;1mm&lt;/code&gt; für die Dichtung hinzu.&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;Schleifen Sie die Kanten ein wenig ab. Verwenden Sie das Multitool, um kleine Unebenheiten zu korrigieren, die eventuell noch vorhanden sind. Wiederholen Sie den Vorgang, bis der Lautsprecher gut sitzt.&#10;&lt;figure class="media-frame media-frame--center"&gt;&#10; &lt;img src="https://blog.schallbert.de/assets/images/mobfobamp/speakercutout_ready.jpg" alt="Image: Speaker cutout plus inlay complete"&gt;&lt;/figure&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;Schneiden Sie nun die Aussparungen für die Gegenstücke der Verriegelungen. Stellen Sie die Oberfräse auf die Tiefe des Materials + Tiefe der Dichtungsnut ein (damit sie hinter der Dichtung sitzen kann) und verwenden Sie den Parallelanschlag, um die Mitte der oberen und unteren Teile anzupassen. Beachten Sie, dass Sie orthogonal durch die Nuten für die Dichtungen schneiden, die Sie zuvor hergestellt haben.&#10;&lt;figure class="media-frame media-frame--center"&gt;&#10; &lt;img src="https://blog.schallbert.de/assets/images/mobfobamp/latch_counterpart.jpg" alt="Image: latch"&gt;&lt;/figure&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;h3 id="beschläge"&gt;Beschläge&lt;/h3&gt;&#10;&lt;p&gt;Die Beschläge werden vor dem Zusammenbau des Gehäuses montiert, da der Gegendruck der Dichtungen das Schließen erschwert.&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;Montieren Sie die Haken an der oberen und unteren Platte mit je zwei Schrauben &lt;code&gt;3x12&lt;/code&gt;.&lt;/li&gt;&#10;&lt;li&gt;Verwenden Sie Heiß- oder Gummikleber, um die Metallkanten gegen den Ausschnitt abzudichten.&#10;&lt;figure class="media-frame media-frame--center"&gt;&#10; &lt;img src="https://blog.schallbert.de/assets/images/mobfobamp/latch_counterpart_sealed.jpg" alt="Image: latch_counterpart_sealed"&gt;&lt;/figure&gt;&lt;/li&gt;&#10;&lt;li&gt;Schneiden Sie ein Stück aus dem Fahrradschlauch, Länge: &lt;code&gt;260mm&lt;/code&gt; .&lt;/li&gt;&#10;&lt;li&gt;Schneiden Sie dieses Stück parallel zur langen Seite in zwei Hälften, so dass zwei Riemen entstehen.&lt;/li&gt;&#10;&lt;li&gt;Bohren Sie 5 Löcher in gleichem Abstand in jede Aluminiumstange und benutzen Sie die &lt;code&gt;45°&lt;/code&gt; Senker um später die Schraubenköpfe dort einpassen zu können.&lt;/li&gt;&#10;&lt;li&gt;Legen Sie einen Gummiriemen unter die Alustange und befestigen Sie ihn an der oberen Rückseite der Deckelplatte.&#10;&lt;figure class="media-frame media-frame--center"&gt;&#10; &lt;img src="https://blog.schallbert.de/assets/images/mobfobamp/rubberhinge_mounted.jpg" alt="Image: rubberhinge_mounted"&gt;&lt;/figure&gt;&lt;/li&gt;&#10;&lt;li&gt;Wiederholen Sie Schritt 6 mit der Bodenplatte.&lt;/li&gt;&#10;&lt;li&gt;Legen Sie das vordere, obere und untere Brett zusammen auf den Tisch, so dass sie ein großes C bilden.&lt;/li&gt;&#10;&lt;li&gt;Bringen Sie die Verschlüsse mittig am vorderen Brett an und stellen Sie sicher, dass sie die oberen/unteren &amp;ldquo;Deckel&amp;rdquo; fest geschlossen halten und die oberen/unteren Bretter in einem 90°-Winkel zur Vorderseite stehen.&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;h3 id="positionierstücke"&gt;Positionierstücke&lt;/h3&gt;&#10;&lt;p&gt;Montieren Sie nun die Fixierungselemente, die eigentlich Regalböden an ihrem Platz halten, an der Ober- und Unterseite des Gehäuses. Sie fixieren die Seitenteile an ihrem Platz und versteifen das Gehäuse.&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;Markieren Sie die Stellen, an denen die Regalbodenhalter am Rand der Nut angebracht werden sollen. Die Abstände finden Sie &lt;a href="https://blog.schallbert.de/mobfobamp-diy/#plans"&gt;in den Plänen&lt;/a&gt;.&lt;/li&gt;&#10;&lt;li&gt;Verwenden Sie einen &lt;code&gt;5mm&lt;/code&gt; Holzbohrer und markieren mit Klebeband eine Tiefe von &lt;code&gt;8mm&lt;/code&gt;, damit nicht ganz durch das Brett gebohrt wird.&lt;/li&gt;&#10;&lt;li&gt;Bohren Sie die 6 Löcher in Deckel- und Bodenplatte und stecken dann die Positionierstücke dort hinein.&lt;/li&gt;&#10;&lt;li&gt;Stellen Sie sicher, dass die Kragen der Positionsstücke auf gleicher Höhe sind wie die Oberfläche der Platte (und nicht in der Nut versenkt sind).&lt;/li&gt;&#10;&lt;li&gt;Entfernen Sie vorerst die Fixierungen wieder, denn die Dichtungen müssen vorher montiert werden.&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;h3 id="dichtungen"&gt;Dichtungen&lt;/h3&gt;&#10;&lt;p&gt;Sie machen das Gehäuse schließlich luftdicht, werden aber bei Klappvorgängen recht stark beansprucht.&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;Achten Sie darauf, dass die gefrästen Vertiefungen sauber und trocken sind, damit das Klebeband die volle Haltekraft entfalten kann.&lt;/li&gt;&#10;&lt;li&gt;Beginnen Sie mit je 4 Dichtungen für Boden- und Deckelplatte. Sie könnten etwas breiter sein als die Vertiefung, verwenden Sie in diesem Fall eine Plastikkarte oder ein ähnliches, weiches Werkzeug, um sie einzupassen.&lt;/li&gt;&#10;&lt;li&gt;Nehmen Sie ein Rasiermesser oder ein Messer mit einer spitzen Klinge zur Hand um Löcher in die Dichtungen zu schneiden, in die die Fixierstücke hineingedrückt werden können Orientieren Sie sich dabei an den Markierungen für die Löcher, die Sie zuvor angebracht haben.&lt;/li&gt;&#10;&lt;li&gt;Benutzen Sie einen Hammer, um die Positionierungselemente vorsichtig durch die Dichtungen zu drücken.&lt;/li&gt;&#10;&lt;li&gt;Nehmen Sie zum Schluss einen kleinen Schraubenzieher oder eine Klinge, um die Dichtung wie einen kurzen Kragen um die Fixierungen herum anzuheben - das Gehäuse muss luftdicht verschlossen werden.&#10;&lt;figure class="media-frame media-frame--center"&gt;&#10; &lt;img src="https://blog.schallbert.de/assets/images/mobfobamp/gaskets_mounted.jpg" alt="Image: gaskets_topbottom_mounted"&gt;&lt;/figure&gt;&lt;/li&gt;&#10;&lt;li&gt;Bringen Sie die Dichtungen an den beiden Seitenteilen an.&lt;/li&gt;&#10;&lt;li&gt;Bringen Sie zwei Dichtungen pro Vor/Rückwand an.&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;h3 id="automatisches-auffalten"&gt;Automatisches Auffalten&lt;/h3&gt;&#10;&lt;p&gt;Dies ist eine optionale Funktion. Mit ihrer Hilfe klappt sich das Gehäuse von selbst auf, sodass das Fixieren mittels Boden- und Deckelplatte leichter fällt.&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;Nehmen Sie die vier Seitenteile zur Hand. Bohren Sie mit einem Forstnerbohrer einen &lt;code&gt;3mm&lt;/code&gt; tiefen Kreis genau in die Mitte der Innenseiten der Seitenteile.&lt;/li&gt;&#10;&lt;li&gt;Schneiden Sie zwei &lt;code&gt;70mm&lt;/code&gt; lange Stücke aus dem Gummischlauch.&lt;/li&gt;&#10;&lt;li&gt;Befestigen Sie die erhaltenen Riemen an zwei zusammengehörigen Seitenteilen mit Hilfe der &lt;code&gt;30mm&lt;/code&gt; Unterlegscheibe und einer Schraube genau in dem Kreis, der vorher ausgeschnitten wurde.&#10;&lt;figure class="media-frame media-frame--center"&gt;&#10; &lt;img src="https://blog.schallbert.de/assets/images/mobfobamp/autounfold.jpg" alt="Image: auto unfold feature"&gt;&lt;/figure&gt;&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;p&gt;Die Unterlegscheiben werden benötigt, um den Bereich zu vergrößern, in dem das Gummiband am Holz befestigt ist. Ohne sie würde das Gummi um die Schraube herum reißen.&lt;/p&gt;&#10;&lt;h3 id="scharniere"&gt;Scharniere&lt;/h3&gt;&#10;&lt;p&gt;Die Montage der Scharniere mit den Dichtungen ist etwas fummelig. Sie könnten ein weiteres Paar Hände oder einige Klammern benötigen.&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;Legen Sie die Frontplatte auf den Tisch. Setzen Sie die beiden Seitenteile mit den Dichtungen so auf der Frontplatte auf, dass sie auf der Dichtung &amp;ldquo;stehen&amp;rdquo;.&lt;/li&gt;&#10;&lt;li&gt;&lt;figure class="media-frame media-frame--right"&gt;&#10; &lt;img src="https://blog.schallbert.de/assets/images/mobfobamp/scetch_pianohinge_corner.png" alt="Bild: Montage der Scharniere an der inneren Ecke"&gt;&lt;/figure&gt;&#10;Während die Seitenteile gegen die Dichtungen der Frontplatte gedrückt werden (orange), setzen Sie die Scharniere (rot) ein und markieren die Positionen der Löcher.&lt;/li&gt;&#10;&lt;li&gt;Montieren Sie die Scharniere. Achten Sie darauf, dass kein Spalt zwischen den Seiten und der Frontplatte entsteht.&lt;/li&gt;&#10;&lt;li&gt;Wiederholen Sie den Vorgang mit den anderen beiden Seiten und der Rückwand.&lt;/li&gt;&#10;&lt;li&gt;Setzen Sie die beiden Hälften zusammen. Sie werden sich aufgrund des Drucks der Dichtung nach innen bewegen wollen, verwenden Sie also die Verstärkungsplatte, um das Gehäuse vollständig aufgeklappt zu halten. Ich habe für diesen Schritt ein Stück Holz mit den Maßen &lt;code&gt;236 x 27 x 12&lt;/code&gt; verwendet.&lt;/li&gt;&#10;&lt;li&gt;Wenn Sie die Auto-Unfold-Funktion vorbereitet haben, ist es jetzt an der Zeit, die losen Enden des Gummibandes auf Spannung zu bringen und sie auf der gegenüberliegenden Seite zu befestigen.&lt;/li&gt;&#10;&lt;li&gt;Montieren Sie schließlich die beiden Scharniere auf beiden Seiten der Schrankaußenfläche. Achten Sie darauf, dass kein Spalt zwischen den Seitenteilen entsteht.&lt;/li&gt;&#10;&lt;li&gt;Probieren Sie den Mechanismus aus. Wenn Sie das Gehäuse zusammenklappen, sollte er sich von selbst entfalten, wenn Sie die Scharniere richtig montiert haben.&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;h3 id="oben-und-unten"&gt;Oben und unten&lt;/h3&gt;&#10;&lt;p&gt;In diesem Schritt werden die Fixierlöcher gebohrt und das Gummischarnier montiert. Auf diese Weise werden nur zwei statt acht Verriegelungen benötigt und der mechanische Druck auf die Dichtungen bleibt hoch genug.&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;Halten Sie das Gehäuse aufgeklappt.&lt;/li&gt;&#10;&lt;li&gt;Tragen Sie etwas Farbe auf die bereits in Deckel- und Bodenplatte montierten Fixierungen auf.&lt;/li&gt;&#10;&lt;li&gt;markieren Sie die Stellen zum Bohren der Löcher auf der Ober- und Unterseite des Gehäuses, indem Sie diese ausrichten und dann die aufgeklappte Gehäuseschale und die Ober- und Unterteile zusammenpressen.&lt;/li&gt;&#10;&lt;li&gt;&lt;figure class="media-frame media-frame--right"&gt;&#10; &lt;img src="https://blog.schallbert.de/assets/images/mobfobamp/scetch_rubberhinge_rear.png" alt="rubber_hinge"&gt;&lt;/figure&gt;&#10;Benutzen Sie den &lt;code&gt;5mm&lt;/code&gt; Bohrer, um die Löcher an den Stirnseiten des Gehäuses entsprechend der markierten Punkte zu bohren, Tiefe wiederum &lt;code&gt;8mm&lt;/code&gt;.&lt;/li&gt;&#10;&lt;li&gt;Legen Sie Boden- und Deckelplatte auf und prüfen, ob alles gut passt. Probieren Sie die Verschlüsse aus. Wenn die Riegel nicht 100%ig passen, kann man mit der Bohrmaschine vorsichtig nachhelfen.&lt;/li&gt;&#10;&lt;li&gt;Befestigen Sie die obere und untere Platte mit den beiden verbleibenden Aluminiumstangen (grün) und dem losen Ende des Gummischarniers (schwarz) an der Rückseite des Gehäuses, wie in der Skizze gezeigt.&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;h3 id="funktioniert-alles"&gt;Funktioniert alles?&lt;/h3&gt;&#10;&lt;p&gt;Wow, der Verstärker ist fast fertig! Das Zusammen- und Auseinanderklappen sollte jetzt funktionieren.&#10;&lt;figure class="media-frame media-frame--center"&gt;&#10; &lt;img src="https://blog.schallbert.de/assets/images/mobfobamp/cabinet_complete.jpg" alt="montierter Schrank"&gt;&lt;/figure&gt;&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;Montieren Sie den Lautsprecher, aber vergessen Sie nicht, zuerst die Dichtung einzubauen.&#10;&lt;figure class="media-frame media-frame--center"&gt;&#10; &lt;img src="https://blog.schallbert.de/assets/images/mobfobamp/speaker_assembly.jpg" alt="speaker gaskets"&gt;&lt;/figure&gt;&#10;Drei Maschinenschrauben &lt;code&gt;M4x15&lt;/code&gt; mit Muttern sorgen für eine sichere Befestigung des Lautsprechers.&lt;/li&gt;&#10;&lt;li&gt;Um den Verstärker zu konfigurieren sind ein paar Brücken zu verlöten. Befolgen Sie dafür die &lt;a href="https://learn.adafruit.com/adafruit-20w-stereo-audio-amplifier-class-d-max9744/analog-control" target="_blank" rel="noopener noreferrer" class="external-link"&gt;Anleitung von Adafruit&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt; für eine analoge Steuerung der Verstärkung. Montieren Sie das Potentiometer oder stellen den Verstärker gleich auf 100% Verstärkung, dem &lt;a href="https://blog.schallbert.de/mobfobamp-diy/#plans"&gt;Schaltplan&lt;/a&gt; folgend.&lt;/li&gt;&#10;&lt;li&gt;Sicherung und Schalter werden eventuell noch nicht benötigt. Anstelle einer Batterie kann ein Netzteil mit Stromregelung angeschlossen werden, zum Schutz vor Kurzschlüssen auf &lt;code&gt;12V @ 1A&lt;/code&gt; einstellen.&lt;/li&gt;&#10;&lt;li&gt;Für einen Funktionstest löten Sie eine &lt;code&gt;6,3mm&lt;/code&gt;-Eingangsbuchse an ein paar Drähte oder ein altes Instrumentenkabel und stecken es in die Klemmen des linken Kanals des Verstärkers.&#10;&lt;figure class="media-frame media-frame--center"&gt;&#10; &lt;img src="https://blog.schallbert.de/assets/images/mobfobamp/electronics_assembly.jpg" alt="Image: Elektronik anschließen"&gt;&lt;/figure&gt;&lt;/li&gt;&#10;&lt;li&gt;Schließen Sie Ihr Instrument an und probieren den Verstärker aus.&lt;/li&gt;&#10;&lt;li&gt;Hinweis: Wenn Ihr Instrument passiv ist, d.h. keinen eingebauten Vorverstärker hat, benötigen Sie höchstwahrscheinlich einen zusätzlichen Vorverstärker oder eine aktive DI-Box, um eine akzeptable Ausgangslautstärke zu erzielen. &lt;a href="https://www.tech21nyc.com/products/sansamp-2/bassdriver-di/" target="_blank" rel="noopener noreferrer" class="external-link"&gt;Z.B. dieses Ding&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt; wird die Aufgabe gut erfüllen. Die meisten Effektpedale haben aber ebenfalls Vorverstärker eingebaut - ich habe eines dafür verwendet.&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;h3 id="fertigstellung-des-projekts"&gt;Fertigstellung des Projekts&lt;/h3&gt;&#10;&lt;p&gt;Schauen Sie sich an, wie schlank, leicht und einfach zu transportieren Ihr Verstärker ist, wenn er zusammengefaltet ist!&#10;&lt;figure class="media-frame media-frame--center"&gt;&#10; &lt;img src="https://blog.schallbert.de/assets/images/mobfobamp/folded_standing.jpg" alt="folded MobFobAmp, standing"&gt;&lt;/figure&gt;&lt;/p&gt;&#10;&lt;p&gt;Einige zusätzliche Schritte, die ich unternommen habe, waren, dem Verstärker ein angemessenes Gehäuse zu geben (das leere Schraubengehäuse&amp;hellip;), Sicherung, Eingangsbuchse(n), Schalter, LED und die Batterie hinzuzufügen. Wird der Akku eines Elektrowerkzeugs verwendet, sind die Pole des Akkus mit normalen Kabelschuhen anzuschließen. Mit etwas Holz und einer Oberfräse ist es ein Leichtes, eine Halterung zu bauen in die man den Akku einfach einklicken kann, wie ich es bei meinem Entwurf getan habe.&lt;/p&gt;&#10;&lt;p&gt;Ein Griff könnte eine gute Idee für den Transport sein, und ein Gummiband könnte das Gehäuse in einer gefalteten Position halten und Boden sowie Deckel an der Rückseite fixieren.&lt;/p&gt;&#10;&lt;p&gt;Ich hoffe sehr, dass Sie die Lektüre / den Bau genossen haben und dass Sie so viel Spaß haben werden, dieses kleine Ding überall zum Spielen mitzunehmen, wie ich es tue.&lt;/p&gt;&#10;&lt;p&gt;&lt;em&gt;Schallbert&lt;/em&gt;&lt;/p&gt;&#10;&lt;p&gt;&lt;a href="https://blog.schallbert.de/projects/mobfobamp/"&gt;Zurück zur Projekt-Hauptseite&lt;/a&gt;&lt;/p&gt;&#10;</description></item><item><title>Umzug von Github Pages</title><link>https://blog.schallbert.de/projects/move-blog-to-own-server/</link><pubDate>Mon, 01 Jan 0001</pubDate><author>Schallbert</author><guid>https://blog.schallbert.de/projects/move-blog-to-own-server/</guid><description type="html">&#10; &lt;img src="https://blog.schallbert.de/assets/images/movetoownserver/giteawebdashboard-thumb.jpg"&#10; class="post-cover"&#10; alt="Image: Gitea Dashboard, served on my machine, proxied by caddy"&#10; title="Umzug von Github Pages" /&gt;&#10;&lt;h2 id="projekt-steckbrief"&gt;Projekt-Steckbrief&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Schwierigkeitsgrad: Mittel 3/5&lt;/li&gt;&#10;&lt;li&gt;Kosten: 5-50€/Monat&lt;/li&gt;&#10;&lt;li&gt;Zeitaufwand: ~10h&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="motivation"&gt;Motivation&lt;/h2&gt;&#10;&lt;p&gt;Ich habe mich entschieden, &lt;a href="https://blog.schallbert.de/projects/thissite/"&gt;meine Website&lt;/a&gt; von &lt;a href="https://pages.github.com/" target="_blank" rel="noopener noreferrer" class="external-link"&gt;Github-Pages&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt; auf meinen eigenen Server umzuziehen. Dies geschieht aus zwei Gründen: Zum einen möchte ich den Server in Deutschland stehen haben (Datenschutz) und zum anderen bietet mir Github Pages keine einfach zu handhabende Möglichkeit, meine Site zweisprachig anzubieten.&lt;/p&gt;&#10;&lt;p&gt;Zusätzlich kann ich ebenfalls ein paar lang gehegte Wünsche realisieren: Ein eigener mini-Dateiserver und eine Webseite für meinen kleinen Nebenerwerb werden jetzt möglich. Aufsetzen werde ich sie allerdings in einem späteren Schritt.&lt;/p&gt;&#10;&lt;h2 id="überblick"&gt;Überblick&lt;/h2&gt;&#10;&lt;p&gt;In diesem Projekt werde ich einen virtuellen Server anmieten und dort per &lt;code&gt;SSH&lt;/code&gt; das Container-Managementsystem &lt;a href="https://www.docker.com/" target="_blank" rel="noopener noreferrer" class="external-link"&gt;Docker&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt; installieren.&lt;/p&gt;&#10;&lt;p&gt;In einem Container soll eine Instanz von &lt;a href="https://docs.gitea.com/next/installation/install-with-docker#startup" target="_blank" rel="noopener noreferrer" class="external-link"&gt;gitea&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt; laufen, welche das Versionsmanagement für mich übernehmen und über sogenannte Actions eine CI/CD-Pipeline&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt; bereitstellen wird.&lt;/p&gt;&#10;&lt;p&gt;Durch die Automation mit &lt;a href="https://docs.gitea.com/next/usage/actions/overview" target="_blank" rel="noopener noreferrer" class="external-link"&gt;Gitea Actions&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt; möchte ich dann in der Lage sein, die von &lt;code&gt;Jekyll&lt;/code&gt; per &lt;a href="https://docs.gitea.com/next/usage/actions/quickstart#use-actions" target="_blank" rel="noopener noreferrer" class="external-link"&gt;Workflow-Datei&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt; gebaute Site auf einem &lt;code&gt;caddy&lt;/code&gt;-Server zu veröffentlichen, also in &amp;ldquo;Produktion&amp;rdquo; zu geben.&lt;/p&gt;&#10;&lt;p&gt;&lt;a href="https://caddyserver.com/" target="_blank" rel="noopener noreferrer" class="external-link"&gt;caddy&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt; stellt hier nicht nur den Server, sondern auch einen &lt;a href="https://en.wikipedia.org/wiki/Reverse_proxy" target="_blank" rel="noopener noreferrer" class="external-link"&gt;Reverse Proxy&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt; zur Verfügung, welcher mir Portmapping und die Adresszuordnung abnehmen kann. Ganz nebenbei kümmert sich &lt;code&gt;caddy&lt;/code&gt; noch vollautomatisiert um die Zertifikatsverwaltung für &lt;code&gt;https&lt;/code&gt; über &lt;a href="https://letsencrypt.org/" target="_blank" rel="noopener noreferrer" class="external-link"&gt;Let&amp;rsquo;s Encrypt&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt;.&lt;/p&gt;&#10;&lt;p&gt;Da auch caddy in Docker laufen wird, müssen virtuelle Netzwerke angelegt und korrekt konfiguriert werden, sodass die Container miteinander &amp;ldquo;reden&amp;rdquo; können.&lt;/p&gt;&#10;&lt;p&gt;Schreiten wir zur Tat - aber immer Schritt für Schritt.&lt;/p&gt;&#10;&lt;h2 id="konfiguration-meines-servers"&gt;Konfiguration meines Servers&lt;/h2&gt;&#10;&lt;p&gt;Die folgenden Abschnitte beschreiben Schritt für Schritt, wie ich vorgegangen bin, meinen Cloud-Server einzurichten und für das Veröffentlichen dieses Blogs vorzubereiten.&lt;/p&gt;&#10;&lt;h3 id="ssh-auf-dem-server-einrichten"&gt;SSH auf dem Server einrichten&lt;/h3&gt;&#10;&lt;p&gt;Direkt nachdem ich den sogenannten &amp;ldquo;Cloud-Server&amp;rdquo; angemietet hatte, habe ich den Zugriff per SSH konfiguriert und damit den Passwort-Login deaktiviert.&#10;Dafür prüfe ich zuerst, ob mein &lt;code&gt;ssh-agent&lt;/code&gt; bereits läuft bzw. starte ihn direkt mit dem Befehl &lt;code&gt;eval ssh-agent&lt;/code&gt;.&lt;/p&gt;&#10;&lt;p&gt;Sodann erstelle ich mir ein neues Schlüsselpaar per Befehl&lt;/p&gt;&#10;&lt;p&gt;&lt;code&gt;ssh-keygen -t ed25519 -C &amp;quot;your_email@example.com&amp;quot; -f &amp;quot;~/.ssh/mein-cloud-server&amp;quot;&lt;/code&gt;&lt;/p&gt;&#10;&lt;p&gt;Dieses Beispiel erzeugt Schlüsseldateien mit dem Verfahren (&lt;code&gt;-t&lt;/code&gt;) &lt;code&gt;ed25519&lt;/code&gt;, welche per Kommentar (&lt;code&gt;-C&lt;/code&gt;) eine Mailadresse enthalten und unter dem Dateinamen (&lt;code&gt;-f&lt;/code&gt;) &lt;code&gt;mein-cloud-server&lt;/code&gt; gespeichert werden.&lt;/p&gt;&#10;&lt;p&gt;Den öffentlichen Schlüssel &lt;code&gt;mein-cloud-server.pub&lt;/code&gt; habe ich dann im Webportal meines Servers unter &amp;ldquo;Security&amp;rdquo; eingegeben und den dann erhaltenen Fingerprint verifiziert mittels&lt;/p&gt;&#10;&lt;p&gt;&lt;code&gt;ssh-keygen -lf &amp;lt;fingerprint_from_server&amp;gt; &amp;quot;~/.ssh/mein-cloud-server&amp;quot;&lt;/code&gt;&lt;/p&gt;&#10;&lt;p&gt;Anschließend habe ich die &lt;code&gt;config&lt;/code&gt;-Datei im &lt;code&gt;.ssh&lt;/code&gt;-Verzeichnis so angepasst, dass ich nur noch &lt;code&gt;ssh server&lt;/code&gt; statt der IP-Adresse eingeben muss, um mich drauf zu verbinden - Faulheit siegt 😀&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-ini" data-lang="ini"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#.ssh/config&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;Host server&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;User root&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;Hostname ip_address_of_server&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;PreferredAuthentications publickey&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;IdentityFile ~/.ssh/mein-cloud-server&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Gebe ich nun &lt;code&gt;ssh server&lt;/code&gt; in die Konsole ein, so erscheint beim ersten Mal die Meldung, dass der Verbindungsaufbau zu einem unbekannten Partner mit Fingerprint soundso stattfinden wird und bittet um explizite Zustimmung. Nun kann der Fingerprint mit dem des Servers (auf der Webseite des Anbieters) abgeglichen und somit sichergestellt werden, dass man auch wirklich zu dem angestrebten, eigenen Server verbindet und nicht zu einem Dritten, der die Anfragen lediglich transparent weiterleitet. Stimmt man mit &lt;code&gt;yes&lt;/code&gt; zu, so wird der Fingerprint der &lt;code&gt;known_hosts&lt;/code&gt;-Datei hinzugefügt und das Zielsystem in Zukunft als bekannt angesehen.&lt;/p&gt;&#10;&lt;h2 id="docker-installieren-"&gt;Docker installieren 🐳&lt;/h2&gt;&#10;&lt;p&gt;Auf meinem Server läuft ein Standard-Ubuntu, für die die von Docker bereitgestellte &lt;a href="https://docs.docker.com/engine/install/ubuntu/#install-using-the-repository" target="_blank" rel="noopener noreferrer" class="external-link"&gt;Anleitung&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt; zur Installation des Docker-Repository per &lt;code&gt;apt&lt;/code&gt; reibungslos funktioniert. Einfach per SSH drauf einwählen und die entsprechenden Befehle ausführen - fertig. Dabei wird der von mir benutzte Dienst &lt;code&gt;docker-compose&lt;/code&gt; gleich mit installiert, welcher Konfigurationsdateien für die Zielcontainer interpretieren und die Container mit den entsprechenden Parametern gleich richtig hoch- und herunterfahren kann.&lt;/p&gt;&#10;&lt;h2 id="caddy"&gt;caddy installieren 🛒&lt;/h2&gt;&#10;&lt;p&gt;Zuerst lege ich den Ordner per &lt;code&gt;mkdir caddy2&lt;/code&gt; im Stammverzeichnis meines Servers an - soviel Zeit muss sein. Um caddy im Docker laufen lassen zu können, habe ich in diesem Ordner die folgende &lt;code&gt;docker-compose.yml&lt;/code&gt; erstellt:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-yml" data-lang="yml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#caddy2/docker-compose.yml&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;version&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#39;3&amp;#39;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;services&lt;/span&gt;:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;caddy&lt;/span&gt;:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;image&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;caddy:latest&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;container_name&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;caddy&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;ports&lt;/span&gt;:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - &lt;span style="color:#e6db74"&gt;&amp;#34;80:80&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - &lt;span style="color:#e6db74"&gt;&amp;#34;443:443&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;environment&lt;/span&gt;:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - &lt;span style="color:#ae81ff"&gt;ACME_AGREE=true&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;restart&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;unless-stopped&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;volumes&lt;/span&gt;:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - &lt;span style="color:#ae81ff"&gt;./Caddyfile:/etc/caddy/Caddyfile&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - &lt;span style="color:#ae81ff"&gt;./caddy_data:/data&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - &lt;span style="color:#ae81ff"&gt;./caddy_config:/config&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - &lt;span style="color:#ae81ff"&gt;./www:/www&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;networks&lt;/span&gt;:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - &lt;span style="color:#ae81ff"&gt;caddy-proxy&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;networks&lt;/span&gt;:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;caddy-proxy&lt;/span&gt;:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;external&lt;/span&gt;: &lt;span style="color:#66d9ef"&gt;true&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Diese Datei sagt Docker, dass es für den Service das aktuellste Image von &lt;code&gt;caddy&lt;/code&gt; verwenden und dem Container den Namen &lt;code&gt;caddy&lt;/code&gt; geben soll. Des Weiteren sollen die Ports &lt;code&gt;80&lt;/code&gt; (http) sowie &lt;code&gt;443&lt;/code&gt; (https) verfügbar gemacht und die Zertifikatsverwaltung per &lt;a href="https://www.howtogeek.com/devops/how-to-request-a-letsencrypt-certificate-using-acme/#installing-acme-sh" target="_blank" rel="noopener noreferrer" class="external-link"&gt;&lt;code&gt;ACME_AGREE&lt;/code&gt;&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt; zugelassen werden. Der Container bindet die von Caddy benötigten Dateien (Caddyfile, data, config) ein und kann ebenso auf die von mir unter &lt;code&gt;/www&lt;/code&gt; abgelegten Dateien zum späteren Veröffentlichen meiner Website zugreifen. Der Container befindet sich im Netzwerk &lt;code&gt;caddy-proxy&lt;/code&gt; und durch &lt;code&gt;external: true&lt;/code&gt; weiß der Container, dass dieses Netzwerk unabhängig von diesem Container bereits besteht.&lt;/p&gt;&#10;&lt;p&gt;Damit wir den caddy-Container korrekt aufsetzen können, müssen wir also das Docker-Netzwerk vorher per &lt;code&gt;docker network create caddy-proxy&lt;/code&gt; erstellen. Mit &lt;code&gt;docker network ls&lt;/code&gt; kann man nun prüfen, ob das Netzwerk korrekt angelegt wurde.&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;NETWORK ID NAME DRIVER SCOPE&#10;&amp;lt;redacted&amp;gt; bridge bridge local&#10;&amp;lt;redacted&amp;gt; caddy2_default bridge local&#10;&amp;lt;redacted&amp;gt; caddy-proxy bridge local&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Sieht gut aus!&lt;/p&gt;&#10;&lt;p&gt;Anschließend erstelle ich eine &lt;code&gt;Caddyfile&lt;/code&gt; zur Konfiguration von Caddy:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-ini" data-lang="ini"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# caddy2/Caddyfile&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;blog.schallbert.de {&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;root * /www/blog&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;encode gzip&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;file_server&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Dieser Eintrag sagt caddy, dass der Inhalt des Ordners &lt;code&gt;/www/blog&lt;/code&gt; als Dateiserver, der die &lt;code&gt;gzip&lt;/code&gt;-Komprimierung unterstützt, unter &lt;a href="https://blog.schallbert.de/" target="_blank" rel="noopener noreferrer" class="external-link"&gt;blog.schallbert.de&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt; verfügbar machen soll.&lt;/p&gt;&#10;&lt;h3 id="test-website-erstellen-"&gt;Test-Website erstellen 🧪&lt;/h3&gt;&#10;&lt;p&gt;Ach ja, was auch noch wichtig ist, bevor wir den Container starten: Der DNS&lt;sup id="fnref:2"&gt;&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref"&gt;2&lt;/a&gt;&lt;/sup&gt; sollte die Adresse auch auflösen können. Dafür logge ich mich in meinem DNS-Manager ein und ordne der Subdomain die feste IP-Adresse meines Servers zu:&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code class="language-log" data-lang="log"&gt;TYPE NAME VALUE TTL&#10;A blog.schallbert.de &amp;lt;redacted&amp;gt; 86400&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Schlussendlich soll der Server ja auch etwas anzeigen können. Eine Testseite genügt ja schon. Also ganz fix:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;mkdir ~/caddy2/www/blog&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;cd ~/caddy2/www/blog&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;nano index.html&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Und dort dann ein unverkennbares Hello World eintragen:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-html" data-lang="html"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;&amp;lt;!-- blog/index.html --&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;&lt;span style="color:#f92672"&gt;h1&lt;/span&gt;&amp;gt;ALL YOUR BASE ARE BELONG TO US&amp;lt;/&lt;span style="color:#f92672"&gt;h1&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Speichern, fertig.&lt;/p&gt;&#10;&lt;p&gt;Das Stammverzeichnis von caddy sieht nun so aus:&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code class="language-log" data-lang="log"&gt;*caddy_config* *caddy_data* Caddyfile docker-compose.yml *www*&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Jetzt endlich kann der Container erstellt und caddy darin hochgefahren werden:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;docker compose up -d&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Die Option &lt;code&gt;-d&lt;/code&gt; bedeutet &amp;ldquo;detach&amp;rdquo;, also wird der Container hochgefahren und von der Konsole abgekoppelt, sodass sie nicht blockiert wird.&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;[+] Running 1/1&#10; ✔ Container caddy Started&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Super, das sieht auch gut aus. Jetzt schnell mal auf die Seite navigieren:&lt;/p&gt;&#10;&lt;figure class="media-frame media-frame--center"&gt;&#10; &lt;img src="https://blog.schallbert.de/assets/images/movetoownserver/address.jpg" alt="Image: caddy is displaying the test page correctly"&gt;&lt;/figure&gt;&#10;&lt;h2 id="gitea-installieren-"&gt;Gitea installieren 🍵&lt;/h2&gt;&#10;&lt;p&gt;Wie oben kurz angerissen, benötige ich Gitea für zwei Zwecke: Erstens möchte ich für meine Dateien wie von Github gewohnt ein Versionsmanagement haben und zweitens möchte ich meine Seite mit Hilfe von Gitea über Jekyll bauen und dann auf den Server schieben.&lt;/p&gt;&#10;&lt;p&gt;Wie schon bei caddy, beginnt alles in einem entsprechenden Ordner:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;cd ~&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;mkdir gitea&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;cd gitea&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;nano docker-compose.yml&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Die &lt;code&gt;docker-compose.yml&lt;/code&gt; für Gitea habe ich mir aus verschiedenen &lt;a href="https://docs.gitea.com/installation/install-with-docker" target="_blank" rel="noopener noreferrer" class="external-link"&gt;Beispielen zusammengebastelt&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt;. Hier ist sie:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-yml" data-lang="yml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# gitea/docker-compose.yml&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;version&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;3&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;networks&lt;/span&gt;:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;gitea&lt;/span&gt;:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;external&lt;/span&gt;: &lt;span style="color:#66d9ef"&gt;false&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;caddy-proxy&lt;/span&gt;:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;external&lt;/span&gt;: &lt;span style="color:#66d9ef"&gt;true&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;name&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;caddy-proxy&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;services&lt;/span&gt;:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;gitea&lt;/span&gt;:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;image&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;gitea/gitea:latest&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;container_name&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;gitea&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;restart&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;always&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;environment&lt;/span&gt;:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - &lt;span style="color:#ae81ff"&gt;USER_UID=1000&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - &lt;span style="color:#ae81ff"&gt;USER_GID=1000&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - &lt;span style="color:#ae81ff"&gt;SSH_DOMAIN=git.schallbert.de&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - &lt;span style="color:#ae81ff"&gt;GITEA_HOSTNAME=git.schallbert.de&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;networks&lt;/span&gt;:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - &lt;span style="color:#ae81ff"&gt;gitea&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - &lt;span style="color:#ae81ff"&gt;caddy-proxy&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;volumes&lt;/span&gt;:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - &lt;span style="color:#ae81ff"&gt;./gitea:/data&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - &lt;span style="color:#ae81ff"&gt;./log:/app/gitea/log&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - &lt;span style="color:#ae81ff"&gt;/etc/timezone:/etc/timezone:ro&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - &lt;span style="color:#ae81ff"&gt;/etc/localtime:/etc/localtime:ro&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;ports&lt;/span&gt;:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - &lt;span style="color:#e6db74"&gt;&amp;#34;127.0.0.1:3000:3000&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - &lt;span style="color:#e6db74"&gt;&amp;#34;222:22&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;runner&lt;/span&gt;:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;image&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;gitea/act_runner:nightly&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;environment&lt;/span&gt;:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - &lt;span style="color:#ae81ff"&gt;CONFIG_FILE=/config.yml&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - &lt;span style="color:#ae81ff"&gt;GITEA_INSTANCE_URL=https://git.schallbert.de&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - &lt;span style="color:#ae81ff"&gt;GITEA_RUNNER_NAME=ichlaufe&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - &lt;span style="color:#ae81ff"&gt;GITEA_RUNNER_REGISTRATION_TOKEN=&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;volumes&lt;/span&gt;:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - &lt;span style="color:#ae81ff"&gt;./runner/config.yml:/config.yml&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - &lt;span style="color:#ae81ff"&gt;./runner/data:/data&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - &lt;span style="color:#ae81ff"&gt;/var/run/docker.sock:/var/run/docker.sock&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Die Bedeutung ist in etwa wie folgt: &lt;code&gt;gitea&lt;/code&gt; ist Teil der Docker-Netzwerke &lt;code&gt;gitea&lt;/code&gt; sowie &lt;code&gt;caddy-proxy&lt;/code&gt;. Der Container, in dem der Service läuft, heißt &lt;code&gt;gitea&lt;/code&gt; und wird bei Absturz stets automatisch neu gestartet. Die User-ID wird mit &lt;code&gt;1000&lt;/code&gt; in einem Wertebereich gesetzt, welcher weder für Administratoren noch andere besondere Benutzer reserviert ist. Per SSH und http ist gitea unter &lt;code&gt;git.schallbert.de&lt;/code&gt; erreichbar, und zwar auf Ports &lt;code&gt;22&lt;/code&gt; bzw. &lt;code&gt;3000&lt;/code&gt; - dort aber nur per localhost, also nicht &amp;ldquo;von außen&amp;rdquo;.&lt;/p&gt;&#10;&lt;p&gt;Gitea hat Zugriff auf Zeitzone und Lokalzeit des Servers, außerdem legt es Logs unter &lt;code&gt;/log&lt;/code&gt; und Dateien unter &lt;code&gt;/data&lt;/code&gt; ab. Gitea verfügt über einen &lt;code&gt;action runner&lt;/code&gt;, der auf der gitea-Instanz läuft, &lt;code&gt;ichlaufe&lt;/code&gt; heißt und dessen Konfiguration in der &lt;code&gt;config.yml&lt;/code&gt; zu finden ist. Der Runner kann im Docker über dessen &lt;a href="https://stackoverflow.com/questions/35110146/what-is-the-purpose-of-the-file-docker-sock" target="_blank" rel="noopener noreferrer" class="external-link"&gt;Standard-Socket&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt; Aktionen ausführen, z.B. &lt;code&gt;ubuntu-latest&lt;/code&gt; installieren und darauf &lt;code&gt;Jekyll&lt;/code&gt; zum Laufen bringen. Die Basiskonfiguration des Runners habe ich &lt;a href="https://gitea.com/gitea/act_runner/src/branch/main/examples/docker-compose" target="_blank" rel="noopener noreferrer" class="external-link"&gt;dem offiziellen Repository&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt; entnommen.&lt;/p&gt;&#10;&lt;p&gt;Gitea akzeptiert nur Runner, deren Token unter &lt;code&gt;GITEA_RUNNER_REGISTRATION_TOKEN&lt;/code&gt; registriert sind - Dies holen wir zu einem späteren Zeitpunkt nach.&lt;/p&gt;&#10;&lt;p&gt;Nun starten wir Gitea mal, sodass wir die erforderlichen Ordner zur Konfiguration erstellt bekommen.&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;docker compose up&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;So sieht die Konsolenausgabe bei mir aus:&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code class="language-log" data-lang="log"&gt;[+] Running 4/2&#10; ✔ Network gitea_default Created 0.0s &#10; ✔ Network gitea_gitea Created 0.1s &#10; ✔ Container gitea Created 0.1s &#10; ✔ Container gitea-runner-1 Created 0.0s &#10;Attaching to gitea, gitea-runner-1&#10;gitea | Server listening on :: port 22.&#10;gitea | Server listening on 0.0.0.0 port 22.&#10;gitea | 2023/11/18 17:19:52 cmd/web.go:242:runWeb() [I] Starting Gitea on PID: 15&#10;gitea | 2023/11/18 17:19:52 cmd/web.go:111:showWebStartupMessage() [I] Gitea version: 1.21.0 built with GNU Make 4.4.1, go1.21.4 : bindata, timetzdata, sqlite, sqlite_unlock_notify&#10;gitea | 2023/11/18 17:19:52 cmd/web.go:112:showWebStartupMessage() [I] * RunMode: prod&#10;gitea | 2023/11/18 17:19:52 cmd/web.go:113:showWebStartupMessage() [I] * AppPath: /usr/local/bin/gitea&#10;gitea | 2023/11/18 17:19:52 cmd/web.go:114:showWebStartupMessage() [I] * WorkPath: /data/gitea&#10;gitea | 2023/11/18 17:19:52 cmd/web.go:115:showWebStartupMessage() [I] * CustomPath: /data/gitea&#10;gitea | 2023/11/18 17:19:52 cmd/web.go:116:showWebStartupMessage() [I] * ConfigFile: /data/gitea/conf/app.ini&#10;gitea | 2023/11/18 17:19:52 cmd/web.go:117:showWebStartupMessage() [I] Prepare to run web server&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h3 id="web-access"&gt;Webzugriff einrichten&lt;/h3&gt;&#10;&lt;p&gt;Nun gehe ich erneut in meinen DNS-Manager und setze die Adresse für den Webzugriff:&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code class="language-log" data-lang="log"&gt;TYPE NAME VALUE TTL&#10;A git.schallbert.de &amp;lt;redacted&amp;gt; 86400&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Außerdem muss die &lt;code&gt;Caddyfile&lt;/code&gt; angepasst werden, damit Anfragen aus dem Web auch richtig weitergeleitet werden können. Also zurück in den &lt;code&gt;caddy2&lt;/code&gt; Ordner und mit &lt;code&gt;nano Caddyfile&lt;/code&gt; folgenden Abschnitt hinzufügen:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-ini" data-lang="ini"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# caddy2/Caddyfile&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;git.schallbert.de {&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;reverse_proxy * http://gitea:3000&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Nun werden Anfragen nach &lt;code&gt;git.schallbert.de&lt;/code&gt; auf den im Docker geöffneten Port &lt;code&gt;3000&lt;/code&gt; des Gitea-Containers weitergeleitet.&lt;/p&gt;&#10;&lt;h3 id="gitea-per-web-oberfläche-konfigurieren"&gt;Gitea per Web-Oberfläche konfigurieren&lt;/h3&gt;&#10;&lt;p&gt;Navigiere ich im Browser jetzt auf die entsprechende Adresse, so bekomme ich ein Login-Fenster angezeigt - genau wie in &lt;a href="https://gitea.com/user/login" target="_blank" rel="noopener noreferrer" class="external-link"&gt;dieser Demo&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt;.&lt;/p&gt;&#10;&lt;p&gt;Nun denke ich mir ein schönes Passwort aus, klicke auf &lt;code&gt;Register&lt;/code&gt; und bekomme hernach die Möglichkeit, Gitea per Weboberfläche zu konfigurieren.&#10;Dies tue ich aber nur rudimentär, denn ich möchte am Ende ja meine eigene Konfiguration verwenden.&lt;/p&gt;&#10;&lt;p&gt;Anschließend erstelle ich wie im Kapitel &lt;a href="https://blog.schallbert.de/projects/move-blog-to-own-server/#ssh-auf-dem-server-einrichten"&gt;SSH einrichten&lt;/a&gt; oben beschrieben ein weiteres SSH-Schlüsselpaar per &lt;code&gt;ssh-keygen&lt;/code&gt; und passendem Dateinamen &lt;code&gt;-f ~/.ssh/gitea&lt;/code&gt;. Diesen lade ich dann auf Gitea unter &lt;code&gt;Settings-&amp;gt;SSH/GPG Keys&lt;/code&gt; hoch und verifiziere ihn.&lt;/p&gt;&#10;&lt;p&gt;Nun kann ich auf meinem Rechner erneut in der &lt;code&gt;config&lt;/code&gt;-Datei des &lt;code&gt;.ssh&lt;/code&gt;-Verzeichnisses den Abschnitt zum Login auf Gitea erstellen:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-ini" data-lang="ini"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# .ssh/config&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;Host gitea&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;User schallbert&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;Hostname git.schallbert.de&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;PreferredAuthentications publickey&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;Identityfile ~/.ssh/schallbert_gitea&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Jetzt schnell prüfen, ob auch alles funktioniert:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;ssh gitea&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Host &lt;span style="color:#e6db74"&gt;&amp;#39;git.schallbert.de&amp;#39;&lt;/span&gt; is known and matches the ED25519 host key.&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;debug1: Found key in /home/schallbert/.ssh/known_hosts&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Perfekt.&lt;/p&gt;&#10;&lt;h3 id="gitea-konfiguration-per-appini-fertigstellen"&gt;Gitea-Konfiguration per &lt;code&gt;app.ini&lt;/code&gt; fertigstellen&lt;/h3&gt;&#10;&lt;p&gt;Da die Konfiguration aber noch nicht abgeschlossen ist, fahre ich den Container nun wieder herunter:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;docker compose down&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;und navigiere nach &lt;code&gt;/gitea/gitea/conf&lt;/code&gt;. Dort öffne ich die &lt;code&gt;app.ini&lt;/code&gt; und modifiziere sie wie folgt:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-ini" data-lang="ini"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# conf/app.ini&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;APP_NAME&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;Gitea: Git with a cup of tea&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;RUN_MODE&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;prod&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;RUN_USER&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;git&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;WORK_PATH&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;/data/gitea&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;[repository]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;ROOT&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;/data/git/repositories&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;DEFAULT_BRANCH&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;main&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;[repository.local]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;LOCAL_COPY_PATH&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;/data/gitea/tmp/local-repo&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;[repository.upload]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;TEMP_PATH&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;/data/gitea/uploads&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;[server]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;APP_DATA_PATH&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;/data/gitea&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;DOMAIN&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;git.schallbert.de&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;SSH_DOMAIN&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;git.schallbert.de&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;HTTP_PORT&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;3000&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;ROOT_URL&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;https://git.schallbert.de/&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;DISABLE_SSH&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;false&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;SSH_PORT&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;222&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;SSH_LISTEN_PORT&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;22&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;LFS_START_SERVER&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;true&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;LFS_JWT_SECRET&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;lt;redacted&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;OFFLINE_MODE&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;false&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;[database]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;PATH&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;/data/gitea/gitea.db&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;DB_TYPE&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;sqlite3&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;HOST&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;localhost:3306&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;NAME&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;gitea&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;USER&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;root&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;PASSWD&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;LOG_SQL&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;false&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;SCHEMA&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;SSL_MODE&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;disable&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;[indexer]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;ISSUE_INDEXER_PATH&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;/data/gitea/indexers/issues.bleve&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;[session]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;PROVIDER_CONFIG&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;/data/gitea/sessions&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;PROVIDER&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;file&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;[picture]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;AVATAR_UPLOAD_PATH&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;/data/gitea/avatars&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;REPOSITORY_AVATAR_UPLOAD_PATH&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;/data/gitea/repo-avatars&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;[attachment]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;PATH&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;/data/gitea/attachments&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;[log]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;MODE&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;file&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;LEVEL&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;info&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;ROOT_PATH&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;/data/gitea/log&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;[security]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;INSTALL_LOCK&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;true&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;SECRET_KEY&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;REVERSE_PROXY_LIMIT&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;1&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;REVERSE_PROXY_TRUSTED_PROXIES&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;*&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;INTERNAL_TOKEN&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;lt;redacted&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;PASSWORD_HASH_ALGO&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;pbkdf2&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;[service]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;DISABLE_REGISTRATION&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;true&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;REQUIRE_SIGNIN_VIEW&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;false&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;REGISTER_EMAIL_CONFIRM&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;false&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;ENABLE_NOTIFY_MAIL&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;false&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;ALLOW_ONLY_EXTERNAL_REGISTRATION&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;false&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;ENABLE_CAPTCHA&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;false&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;DEFAULT_KEEP_EMAIL_PRIVATE&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;false&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;DEFAULT_ALLOW_CREATE_ORGANIZATION&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;false&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;DEFAULT_ENABLE_TIMETRACKING&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;true&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;NO_REPLY_ADDRESS&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;noreply.localhost&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;[lfs]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;PATH&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;/data/git/lfs&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;[mailer]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;ENABLED&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;false&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;[openid]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;ENABLE_OPENID_SIGNIN&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;true&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;ENABLE_OPENID_SIGNUP&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;true&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;[cron.update_checker]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;ENABLED&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;false&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;[repository.pull-request]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;DEFAULT_MERGE_STYLE&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;merge&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;[repository.signing]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;DEFAULT_TRUST_MODEL&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;committer&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;[oauth2]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;JWT_SECRET&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;lt;redacted&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;[actions]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;ENABLED&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;true&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Hier ist wichtig zu sicherzustellen, dass &lt;code&gt;ROOT_URL&lt;/code&gt; und die Portkonfiguration mit jener der &lt;code&gt;docker-compose.yml&lt;/code&gt; übereinstimmt. Die Datenbank (sqlite3) wird konfiguriert und gitea zugänglich gemacht. Außerdem deaktiviere ich aus Sicherheitsgründen die Registrierungsmöglichkeit neuer Benutzer &lt;code&gt;DISABLE_REGISTRATION = true&lt;/code&gt; sowie jene per Openid &lt;code&gt;ENABLE_OPENID_SIGNIN = false ENABLE_OPENID_SIGNUP = false&lt;/code&gt; und schalte Gitea Actions per &lt;code&gt;ENABLED = true&lt;/code&gt; ein.&lt;/p&gt;&#10;&lt;p&gt;Nun kann der Container neu gestartet werden:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;[&lt;/span&gt;+&lt;span style="color:#f92672"&gt;]&lt;/span&gt; Running 4/4&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ✔ Network gitea_default Created 0.1s &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ✔ Network gitea_gitea Created 0.0s &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ✔ Container gitea Started 0.0s &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; x Container gitea-runner-1 Error 0.1s &#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Gut, Gitea läuft schonmal. In einem letzten Schritt kümmere ich mich nun um den Action Runner.&lt;/p&gt;&#10;&lt;h3 id="action-runner-einrichten-"&gt;Action Runner einrichten 🏃&lt;/h3&gt;&#10;&lt;p&gt;Für die ersten Schritte hilft die offizielle &lt;a href="https://docs.gitea.com/usage/actions/act-runner" target="_blank" rel="noopener noreferrer" class="external-link"&gt;Anleitung&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt; weiter.&lt;/p&gt;&#10;&lt;p&gt;Ich logge mich erneut auf der Weboberfläche über &lt;code&gt;git.schallbert.de&lt;/code&gt; ein. Die Aktivierung von Actions in der &lt;code&gt;app.ini&lt;/code&gt; im vorigen Abschnitt lässt jetzt bei &lt;code&gt;Settings-&amp;gt;Actions&lt;/code&gt; ein neues Menü erscheinen.&#10;Hier klicke ich nun auf &lt;code&gt;Create new Runner&lt;/code&gt; und kopiere mir das &lt;code&gt;REGISTRATION TOKEN&lt;/code&gt;.&lt;/p&gt;&#10;&lt;p&gt;Anschließend öffne ich die &lt;code&gt;docker-compose.yml&lt;/code&gt; im Gitea-Stammverzeichnis erneut und füge wie &lt;a href="https://docs.gitea.com/usage/actions/act-runner#set-up-the-runner-using-docker-compose" target="_blank" rel="noopener noreferrer" class="external-link"&gt;hier vorgeschlagen&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt; Folgendes ein:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-yml" data-lang="yml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# gitea/docker-compose.yml&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# [...]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;runner&lt;/span&gt;:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;image&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;gitea/act_runner:nightly&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;environment&lt;/span&gt;:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - &lt;span style="color:#ae81ff"&gt;CONFIG_FILE=/config.yml&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - &lt;span style="color:#ae81ff"&gt;GITEA_INSTANCE_URL=https://git.schallbert.de&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - &lt;span style="color:#ae81ff"&gt;GITEA_RUNNER_NAME=ichlaufe&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - &lt;span style="color:#ae81ff"&gt;GITEA_RUNNER_REGISTRATION_TOKEN= &amp;lt;redacted&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Nach einem Neustart des Containers mit &lt;code&gt;docker compose down &amp;amp;&amp;amp; docker compose up -d&lt;/code&gt; erscheint nun der Runner als &amp;ldquo;gestartet&amp;rdquo; im Log:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;✔ Network gitea_default Created 0.1s &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;✔ Network gitea_gitea Created 0.0s &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;✔ Container gitea Started 0.0s &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;✔ Container gitea-runner-1 Started 0.1s &#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Hervorragend, jetzt schauen wir auf der Weboberfläche nach und siehe da:&lt;/p&gt;&#10;&lt;figure class="media-frame media-frame--center"&gt;&#10; &lt;img src="https://blog.schallbert.de/assets/images/movetoownserver/actionrunner.jpg" alt="Image: Gitea action runner is up and - running."&gt;&lt;/figure&gt;&#10;&lt;p&gt;Fehlt noch der Beweis, dass der Runner auch wirklich arbeitet.&lt;/p&gt;&#10;&lt;h3 id="funktionsprüfung-runner"&gt;Funktionsprüfung Runner&lt;/h3&gt;&#10;&lt;p&gt;Für die Prüfung des Action Runner nehme ich erneut die &lt;a href="https://blog.gitea.com/hacking-on-gitea-actions/#use-actions" target="_blank" rel="noopener noreferrer" class="external-link"&gt;Dokumentation von Gitea&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt; zur Hilfe.&#10;Ich erstelle ein neues Repository auf der Gitea-Weboberfläche mit Namen &lt;code&gt;runner-test&lt;/code&gt; und füge den Inhalt der oben verlinkten Datei im Verzeichnis &lt;code&gt;/.gitea/workflows/01-test.yml&lt;/code&gt; hinzu.&lt;/p&gt;&#10;&lt;p&gt;Commit, push, und - nichts.&lt;/p&gt;&#10;&lt;p&gt;Ah, der Workflow startet nur &lt;code&gt;on: [push]&lt;/code&gt;. Er kann also gar nicht starten, wenn er gerade selbst erst auf den Server geladen wurde.&lt;/p&gt;&#10;&lt;p&gt;Gut, erstelle ich halt noch eine Datei, commit, push. Ergebnis:&#10;&lt;figure class="media-frame media-frame--center"&gt;&#10; &lt;img src="https://blog.schallbert.de/assets/images/movetoownserver/actionsuccess.jpg" alt="Image: Gitea action runner demo passes integration"&gt;&lt;/figure&gt;&lt;/p&gt;&#10;&lt;p&gt;Wahnsinn! 🥳&lt;/p&gt;&#10;&lt;h2 id="zwischenfazit"&gt;Zwischenfazit&lt;/h2&gt;&#10;&lt;p&gt;Ich habe hier so getan, als wäre der Weg in einer geraden Linie verlaufen und als hätte alles reibungslos geklappt. Leider traf das so nicht zu. Es war zwar überraschend einfach, die Programme in Docker zum Laufen zu bringen, doch miteinander reden wollten sie lange nicht. Ich hatte zudem ziemliche Probleme mit der &lt;code&gt;Caddyfile&lt;/code&gt;&#10;So einfach sie auch erscheinen mag, lange wollte so gar nichts in meinem Browser erscheinen - weder Gitea noch die blog-Testseite. Ein Ping an die Seite vom Terminal des Servers aus funktionierte aber, also konnte ich den Fehler schnell auf die Konfiguration von caddy zurückführen.&lt;/p&gt;&#10;&lt;p&gt;Die Ursache: Da caddy im Docker läuft, muss die Caddyfile als Volume eingebunden werden. Im Caddyfile selber muss der Ordner vom Root des Volumes aus, also mit führendem &lt;code&gt;/&lt;/code&gt;, angegeben werden.&lt;/p&gt;&#10;&lt;p&gt;Auf der anderen Seite hat die Konfiguration von Gitea viel reibungsloser geklappt, als ich dachte. Sogar das aufwendige Freischalten des Runners, welcher auch im Docker nochmal extra geroutet werden muss, war weniger schlimm als ich dachte.&lt;/p&gt;&#10;&lt;p&gt;Mit diesem Grundgerüst habe ich jetzt einen flinken Server, welcher meinen Blog später bestimmt reibungslos hosten kann.&lt;/p&gt;&#10;&lt;p&gt;Die nächsten Schritte - das Aufsetzen des Bauprozesses für meine Website - werden &lt;a href="https://blog.schallbert.de/gitea-action-runner-native-jekyll/"&gt;in diesem Artikel hier&lt;/a&gt; und dann auch in Jekyll nativ &lt;a href="https://blog.schallbert.de/gitea-action-runner-jekyll-dockerimage/"&gt;hier&lt;/a&gt; abgehandelt.&lt;/p&gt;&#10;&lt;aside class="update-box update-box--note" role="note"&gt;&#10; &lt;span class="update-box__icon" aria-hidden="true"&gt;&#10; ℹ️&#10; &lt;/span&gt;&#10;&#10; &lt;div class="update-box__body"&gt;&#10; &lt;div class="update-box__heading"&gt;&#10; &lt;strong class="update-box__title"&gt;&#10; &#10; Update: Server-Architektur&#10; &#10; &lt;/strong&gt;&#10;&#10; &lt;time datetime="2024-01-27T00:00:00Z"&gt;&#10; 27. Jan. 2024&#10; &lt;/time&gt;&#10; &#10; &lt;/div&gt;&#10;&#10; &#10; &lt;div class="update-box__content"&gt;&#10; Ich habe den Server inzwischen mehrfach um Peripheriefunktionen erweitert. So habe ich mich um &lt;a href="https://blog.schallbert.de/server-protection/"&gt;Sicherheit und Backups&lt;/a&gt; ebenso gekümmert wie um &lt;a href="https://blog.schallbert.de/server-auto-upgrade/"&gt;automatische Updates&lt;/a&gt;, wobei mir die Kapselung durch Docker nicht nur einmal auf die Füße gefallen ist und einiges an Zeit gekostet hat. Auch wenn noch immer nicht alle Aspekte vollständig abgedeckt sind (Benachrichtigungen sind z.B noch ein offenes Thema), komme ich meinem Ziel, einen weitgehend selbstständig laufendes System zu schaffen, spürbar näher.&#10; &lt;/div&gt;&#10; &#10; &lt;/div&gt;&#10;&lt;/aside&gt;&#10;&lt;p&gt;Am Ende möchte ich schließlich wieder dahin zurückkehren, Inhalte zu erzeugen. Und mich nicht mehr als nötig mit dem Drumherum beschäftigen.&lt;/p&gt;&#10;&lt;div class="footnotes" role="doc-endnotes"&gt;&#10;&lt;hr&gt;&#10;&lt;ol&gt;&#10;&lt;li id="fn:1"&gt;&#10;&lt;p&gt;CI/CD steht für &amp;ldquo;&lt;a href="https://en.wikipedia.org/wiki/Continuous_integration" target="_blank" rel="noopener noreferrer" class="external-link"&gt;Continuous Integration&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt; / &lt;a href="https://en.wikipedia.org/wiki/Continuous_deployment" target="_blank" rel="noopener noreferrer" class="external-link"&gt;Continuous deployment&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt;&amp;rdquo; und bedeutet, dass das System bei Update der verwalteten Dateien automatisch die Website neu baut, testet und veröffentlicht.&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li id="fn:2"&gt;&#10;&lt;p&gt;DNS steht für &lt;a href="https://en.wikipedia.org/wiki/Domain_Name_System" target="_blank" rel="noopener noreferrer" class="external-link"&gt;Domain Name System&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt;, ein verteiltes hierarchisches System zur Namensauflösung von Websites. Hintergrund ist, dass es viel schwieriger ist, sich eine IPV6-Adresse wie &lt;code&gt;2a02:ec80:300:ed1a:0:0:0:1&lt;/code&gt; zu merken statt &lt;code&gt;en.wikipedia.org&lt;/code&gt; in die Adresszeile eines Browsers einzugeben.&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;/div&gt;&#10;</description></item></channel></rss>