<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.base48.cz/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Klubko</id>
	<title>base48 - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.base48.cz/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Klubko"/>
	<link rel="alternate" type="text/html" href="https://wiki.base48.cz/wiki/Special:Contributions/Klubko"/>
	<updated>2026-10-22T23:00:53Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.45.4</generator>
	<entry>
		<id>https://wiki.base48.cz/w/index.php?title=Small_CNC&amp;diff=5673</id>
		<title>Small CNC</title>
		<link rel="alternate" type="text/html" href="https://wiki.base48.cz/w/index.php?title=Small_CNC&amp;diff=5673"/>
		<updated>2026-09-21T07:05:35Z</updated>

		<summary type="html">&lt;p&gt;Klubko: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Project&lt;br /&gt;
 |name=Small CNC&lt;br /&gt;
 |shortdesc=Small CNC machine&lt;br /&gt;
 |image=Small-CNC.jpeg&lt;br /&gt;
 |founder=base48&lt;br /&gt;
 |coops=[[User:Lubko|Lubko]]&lt;br /&gt;
 |status=active&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Safety ==&lt;br /&gt;
[[File:Cnc e-stop.jpg|thumb|400x400px|Emergency stop|none]]&lt;br /&gt;
&lt;br /&gt;
* Emergency stop (E-stop) cuts power to motors, should be released only when milling is in progress&lt;br /&gt;
&lt;br /&gt;
* Debris and broken tool parts my go flying from the spindle. Wear eye protection when E-stop is released!&lt;br /&gt;
&lt;br /&gt;
== Operation ==&lt;br /&gt;
&lt;br /&gt;
=== Milling machine ===&lt;br /&gt;
[[File:Cnc mill.jpg|thumb|200x200px|Milling machine|right]]Small three axis CNC machine, controlled by PC with LinuxCNC.&lt;br /&gt;
&lt;br /&gt;
Good for [[PCB Milling]]!&lt;br /&gt;
&lt;br /&gt;
=== Motor driver and spindle controller ===&lt;br /&gt;
[[File:Cnc driver.jpg|thumb|200x200px|Motor drivers, spindle control|right]]Normally set to be controlled by PC, but provides manual spindle control.&lt;br /&gt;
&lt;br /&gt;
Also contains the emergency stop.&lt;br /&gt;
&lt;br /&gt;
=== LinuxCNC controller ===&lt;br /&gt;
[[File:Cnc linuxcnc.jpg|thumb|200x200px|LinuxCNC controller|right]]PC running LinuxCNC atop RTAI kernel. Provides manual movement control and runs GCode programs.&lt;br /&gt;
&lt;br /&gt;
=== Spindle cooling ===&lt;br /&gt;
[[File:Cnc cooling pump.jpg|thumb|200x200px|Spindle cooling pump|right]]Water needs to flow when spindle is running. Turned on/off via extension plug along with mill and controllers.&lt;br /&gt;
&lt;br /&gt;
=== Tools, bits, drills ===&lt;br /&gt;
[[File:Cnc tool box.jpg|thumb|200x200px|Tool box|right]]&lt;br /&gt;
[[File:Mill three bits.jpg|thumb|200x200px|V-shaped tool, 0.8 mm drill, and 3.175 cutting bit]]&lt;br /&gt;
There&#039;s a box with a lot of various tools. Few are going to be useful for PCB milling: a sharp cutting tool, a 0.6 mm or 0.8 mm drill and the 3.175 mm sideways drill.&lt;br /&gt;
&lt;br /&gt;
Use 13 mm and 17 mm wrenches to unscrew the tool holder and replace the tool.&lt;br /&gt;
&lt;br /&gt;
=== Workpiece probing ===&lt;br /&gt;
[[File:Cnc probe.jpg|thumb|200x200px|Probe attachment|right]]Probe triggers when there&#039;s a conductive path from it to tool/chasis ground. To use it, the workpiece needs to be isolated from tool/chasis ground and have the proble clamped to it.&lt;br /&gt;
&lt;br /&gt;
== Tips &amp;amp; Tricks ==&lt;br /&gt;
&lt;br /&gt;
=== GCode simulation/preview ===&lt;br /&gt;
You can verify if everything is correct by importing all files to [https://camotics.org/ Camotics] G-code simulator.&lt;br /&gt;
&lt;br /&gt;
Ideally your board should start at positive X, Y coordinates with lower left corner near X0/Y0.&lt;br /&gt;
&lt;br /&gt;
=== Useful GCodes ===&lt;br /&gt;
* &#039;&#039;&#039;G0 X0 Y0 F100&#039;&#039;&#039; -- Non-cutting move to X0 Y0 at 100mm/min, Z coordinate stays&lt;br /&gt;
* &#039;&#039;&#039;G38.2 Z-5 F30&#039;&#039;&#039; -- Move Z up to -5mm at 30mm/min (slowly) until probe trips&lt;br /&gt;
&lt;br /&gt;
== Pictures ==&lt;br /&gt;
Feel free to upload pictures of your finished PCBs and add link(s) to following gallery:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;100&amp;quot; mode=&amp;quot;nolines&amp;quot;&amp;gt;&lt;br /&gt;
File:Milled-pcb-esp8266.jpg&lt;br /&gt;
File:Milled-pcb-phsensor.jpg&lt;br /&gt;
File:Milling pcb2 stm32f042.jpg&lt;br /&gt;
File:Oven.jpg&lt;br /&gt;
File:3020pcb.jpg&lt;br /&gt;
File:Hc pcb.jpg&lt;br /&gt;
File:Synth pcb.jpg&lt;br /&gt;
File:Millingatbase.jpg&lt;br /&gt;
File:Audiothing0.jpeg&lt;br /&gt;
File:Audiothing1.jpeg&lt;br /&gt;
File:Audiothing2.jpg&lt;br /&gt;
File:Mag brk.jpeg&lt;br /&gt;
File:RN2348PCB.JPG&lt;br /&gt;
File:Cpld brk.jpg&lt;br /&gt;
File:Amp2.jpg&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;/div&gt;</summary>
		<author><name>Klubko</name></author>
	</entry>
	<entry>
		<id>https://wiki.base48.cz/w/index.php?title=File:Mill_three_bits.jpg&amp;diff=5672</id>
		<title>File:Mill three bits.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.base48.cz/w/index.php?title=File:Mill_three_bits.jpg&amp;diff=5672"/>
		<updated>2026-09-21T07:03:41Z</updated>

		<summary type="html">&lt;p&gt;Klubko: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;CNC tools&lt;/div&gt;</summary>
		<author><name>Klubko</name></author>
	</entry>
	<entry>
		<id>https://wiki.base48.cz/w/index.php?title=PCB_Milling&amp;diff=5671</id>
		<title>PCB Milling</title>
		<link rel="alternate" type="text/html" href="https://wiki.base48.cz/w/index.php?title=PCB_Milling&amp;diff=5671"/>
		<updated>2026-09-21T06:56:11Z</updated>

		<summary type="html">&lt;p&gt;Klubko: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Project&lt;br /&gt;
 |founder=[[user:rmarko]]&lt;br /&gt;
 |coops=[[User:Lubko|Lubko]]&lt;br /&gt;
 |status=operational&lt;br /&gt;
 |shortdesc=Milling and drilling PCB&#039;s on LinuxCNC&lt;br /&gt;
 |image=Millingatbase.jpg&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Tutorial for milling PCBs on the [[Small CNC]].&lt;br /&gt;
&lt;br /&gt;
== Prepare the GCode ==&lt;br /&gt;
This part is done on your computer. The objective is to get GCode files for milling, drilling and outline cut and copy them to the controlling machine.&lt;br /&gt;
&lt;br /&gt;
=== Export from KiCAD ===&lt;br /&gt;
Up to date versions of KiCAD provide a command line tool to conveniently export Gerber and drill files.&lt;br /&gt;
{{cmd|code=&lt;br /&gt;
kicad-cli pcb export gerbers --layers F.Cu,B.Cu,Edge.Cuts MyBoard.kicad_pcb&lt;br /&gt;
kicad-cli pcb export drill MyBoard.kicad_pcb&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Generate GCode ===&lt;br /&gt;
Use  [https://github.com/pcb2gcode/pcb2gcode pcb2gcode] to produce the GCode.&lt;br /&gt;
&lt;br /&gt;
Below is an example of a single-sided board drilled from the back side. It uses speeds, distances and feed rates that are known to work well with out machine and utilizes auto-leveling to compensate for deformation in clamping and the slight bent in Y-axis.&lt;br /&gt;
&lt;br /&gt;
Consult pcb2gcode manual to tune details or use utilize other features of the tool such as double-sided milling or tiling.&lt;br /&gt;
&lt;br /&gt;
One-sided board (called &amp;quot;MyBoard&amp;quot;) drilled from back:&lt;br /&gt;
{{cmd|code=&lt;br /&gt;
kicad-cli pcb export gerbers --layers F.Cu,B.Cu,Edge.Cuts MyBoard.kicad_pcb&lt;br /&gt;
kicad-cli pcb export drill MyBoard.kicad_pcb&lt;br /&gt;
&lt;br /&gt;
pcb2gcode \&lt;br /&gt;
  --back=MyBoard-B_Cu.gbl \&lt;br /&gt;
  --drill=MyBoard.drl \&lt;br /&gt;
  --outline=MyBoard-Edge_Cuts.gm1 \&lt;br /&gt;
  \&lt;br /&gt;
  --drill-output=MyBoard-drill.ngc \&lt;br /&gt;
  --front-output=MyBoard-front.ngc \&lt;br /&gt;
  --back-output=MyBoard-back.ngc \&lt;br /&gt;
  --outline-output=MyBoard-outline.ngc \&lt;br /&gt;
  \&lt;br /&gt;
  --software=linuxcnc \&lt;br /&gt;
  --metric=true \&lt;br /&gt;
  --metricoutput=true \&lt;br /&gt;
  --zero-start=true \&lt;br /&gt;
  \&lt;br /&gt;
  --al-probe-on=&#039;(MSG, Probe on)&#039; \&lt;br /&gt;
  --al-probe-off=&#039;(MSG, Probe off)&#039; \&lt;br /&gt;
  --al-back=true \&lt;br /&gt;
  --al-x=5 \&lt;br /&gt;
  --al-y=5 \&lt;br /&gt;
  --al-probefeed=50 \&lt;br /&gt;
  \&lt;br /&gt;
  --zchange=20.0000 \&lt;br /&gt;
  --zsafe=2.0000 \&lt;br /&gt;
  --extra-passes=3 \&lt;br /&gt;
  --mill-feed=450 \&lt;br /&gt;
  --mill-speed=24000 \&lt;br /&gt;
  --offset=0.1500 \&lt;br /&gt;
  --zwork=-0.1000 \&lt;br /&gt;
  --drill-feed=250 \&lt;br /&gt;
  --drill-side=back \&lt;br /&gt;
  --drill-speed=12000 \&lt;br /&gt;
  --zdrill=-3.0000 \&lt;br /&gt;
  --bridges=0.8000 \&lt;br /&gt;
  --bridgesnum=4 \&lt;br /&gt;
  --cut-feed=200 \&lt;br /&gt;
  --cut-infeed=1.0000 \&lt;br /&gt;
  --cut-side=back \&lt;br /&gt;
  --cut-speed=24000 \&lt;br /&gt;
  --cutter-diameter=3.1750 \&lt;br /&gt;
  --zbridges=-0.0500 \&lt;br /&gt;
  --zcut=-1.7000&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
If pcb2gcode prints warnings, look into the *.svg files generated in working directory. They will contain visual indication of what is the problem.&lt;br /&gt;
&lt;br /&gt;
=== File upload ===&lt;br /&gt;
Upload folder to LinuxCNC machine:&lt;br /&gt;
{{cmd|code=&lt;br /&gt;
scp -r project/ base@linuxcnc.base48.cz:&amp;lt;your_nick&amp;gt;/&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Machining ==&lt;br /&gt;
The following steps are done at the CNC milling machine.&lt;br /&gt;
&lt;br /&gt;
You will be operating machine a machine that spin things very fast, moves with a lot of power and doesn&#039;t stop for meat. Avoid complacency and double-check things.&lt;br /&gt;
&lt;br /&gt;
=== Safety essentials ===&lt;br /&gt;
* The &#039;&#039;&#039;big red button&#039;&#039;&#039; is an E-stop&lt;br /&gt;
* E-stop cuts power to motors when idle and in emergency&lt;br /&gt;
* F1 in LinuxCNC also acts as an E-stop&lt;br /&gt;
* Erroneous Z-axis movement or failed probe will break and eject the sharp tip of the tool&lt;br /&gt;
* &#039;&#039;&#039;Safety goggles are needed to protect eyes from flying debris&#039;&#039;&#039;&lt;br /&gt;
* Errors happen. Double-check commands and have an emergency plan!&lt;br /&gt;
&lt;br /&gt;
=== Clamping ===&lt;br /&gt;
[[File:Mill board clamped.jpg|thumb|Clamped board. Notice the red probe clamped on a bit of PCB protruding to the side.]]&lt;br /&gt;
Make sure to clamp PCB blank as good as possible as it&#039;s &#039;&#039;&#039;critical&#039;&#039;&#039; for the outcome of the leveling and milling.&lt;br /&gt;
&lt;br /&gt;
* Clamp PCB blank on top of piece of wood with at least 4 clamps&lt;br /&gt;
* Attach the RED probe crocodile clip is attached to the PCB&lt;br /&gt;
* Double-check the proble clip. &#039;&#039;&#039;The tool will break during probing if there&#039;s no contact!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Starting up ===&lt;br /&gt;
* &#039;&#039;&#039;Find the E-stop and make sure it&#039;s pressed&#039;&#039;&#039;&lt;br /&gt;
* Find a pair of safety goggles&lt;br /&gt;
* Power on the extension cord&lt;br /&gt;
* Make sure you hear the spindle cooling water pump operate&lt;br /&gt;
* Power on linuxcnc machine (the PC, reachable at linuxcnc.base48.cz)&lt;br /&gt;
* Power on machine controller&lt;br /&gt;
&lt;br /&gt;
=== Starting CNC control ===&lt;br /&gt;
* Start LinuxCNC by running base_mill shortcut on the desktop&lt;br /&gt;
* &#039;&#039;&#039;Put on the safety goggles&#039;&#039;&#039;&lt;br /&gt;
* Depress the E-stop&lt;br /&gt;
* Enable power (F2)&lt;br /&gt;
* Position the machine with arrow keys to a starting point (bottom left corner of your future PCB)&lt;br /&gt;
&lt;br /&gt;
=== Homing and preparing to mill ===&lt;br /&gt;
[[File:Mill mill bit installed.jpg|thumb|V-shaped mill bit installed]]&lt;br /&gt;
* Pick a V-shaped tool from the box and install it&lt;br /&gt;
* Home each axis of the machine, don&#039;t forget to home A axis as well&lt;br /&gt;
* Load mill file (e.g. &#039;&#039;MyBoard-back.ngc&#039;&#039;) &lt;br /&gt;
* Try moving machine around displayed job to make sure it can actually reach all sides of the job without collisions&lt;br /&gt;
* Switch to MDI tab (F5) (all the required commands in the following section should be present in the history)&lt;br /&gt;
** To get to the starting point run &#039;&#039;&#039;G0 X0 Y0&#039;&#039;&#039;&lt;br /&gt;
** To home Z-axis use &#039;&#039;&#039;G38.2 Z-100 F30&#039;&#039;&#039;&lt;br /&gt;
** Go back to manual tab and &#039;&#039;&#039;re-home Z axis&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Milling ===&lt;br /&gt;
* Make sure you&#039;re wearing eye protection&lt;br /&gt;
* Start job with blue arrow button&lt;br /&gt;
* Hope for the best, abort with F1 or E-stop if stuff goes wrong&lt;br /&gt;
* When asked to install or remove probe, just continue. Probing will run with the V-shaped milling tool&lt;br /&gt;
&lt;br /&gt;
=== Drilling ===&lt;br /&gt;
* [[File:Mill drill bit installed.jpg|thumb|Milling done, drill bit installed]]Load drill file (e.g. &#039;&#039;MyBoard-drill.ngc&#039;&#039;) &lt;br /&gt;
* Install correct drill bit&lt;br /&gt;
* To re-establish Z height again&lt;br /&gt;
** Go to Manual tab (F3) and position a head outside of the milled PCB near clamp with probing wire attached so probing is possible, then few millimeters on top of the spot but don&#039;t try to make contact&lt;br /&gt;
** Go to MDI tab (F5) and issue probing command &#039;&#039;&#039;G38.2 Z-100 F30&#039;&#039;&#039;&lt;br /&gt;
** Go back to manual tab and &#039;&#039;&#039;re-home Z axis&#039;&#039;&#039;&lt;br /&gt;
* Start drilling job&lt;br /&gt;
&lt;br /&gt;
=== Outline ===&lt;br /&gt;
* Load outline file (e.g. &#039;&#039;MyBoard-outline.ngc&#039;&#039;)&lt;br /&gt;
* Load 3.175mm endmill&lt;br /&gt;
* Go to manual tab a re-establish Z height again by positioning tool slightly over the board&lt;br /&gt;
* &#039;&#039;&#039;re-home Z axis&#039;&#039;&#039;&lt;br /&gt;
* Start job&lt;br /&gt;
[[File:Mill drilled cut vacuumed.jpg|thumb|Finished board, milled, drilled, cut and vacuumed.]]&lt;br /&gt;
&lt;br /&gt;
== After milling ==&lt;br /&gt;
* &#039;&#039;&#039;Find the E-stop and make sure it&#039;s pressed&#039;&#039;&#039;&lt;br /&gt;
* Shut off the controller, PC and extension cord&lt;br /&gt;
* Vacuum the debris&lt;br /&gt;
* Clean your board with sandpaper and alcohol&lt;br /&gt;
* Use flux spray&lt;br /&gt;
* Leave a board on a warm place for a while&lt;br /&gt;
* Take pictures&lt;br /&gt;
* Solder components&lt;br /&gt;
* Profit&lt;/div&gt;</summary>
		<author><name>Klubko</name></author>
	</entry>
	<entry>
		<id>https://wiki.base48.cz/w/index.php?title=File:Mill_drilled_cut_vacuumed.jpg&amp;diff=5670</id>
		<title>File:Mill drilled cut vacuumed.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.base48.cz/w/index.php?title=File:Mill_drilled_cut_vacuumed.jpg&amp;diff=5670"/>
		<updated>2026-09-21T06:55:13Z</updated>

		<summary type="html">&lt;p&gt;Klubko: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Finished board&lt;/div&gt;</summary>
		<author><name>Klubko</name></author>
	</entry>
	<entry>
		<id>https://wiki.base48.cz/w/index.php?title=File:Mill_drill_bit_installed.jpg&amp;diff=5669</id>
		<title>File:Mill drill bit installed.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.base48.cz/w/index.php?title=File:Mill_drill_bit_installed.jpg&amp;diff=5669"/>
		<updated>2026-09-21T06:53:33Z</updated>

		<summary type="html">&lt;p&gt;Klubko: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Milling done, drill bit installed&lt;/div&gt;</summary>
		<author><name>Klubko</name></author>
	</entry>
	<entry>
		<id>https://wiki.base48.cz/w/index.php?title=File:Mill_board_clamped.jpg&amp;diff=5668</id>
		<title>File:Mill board clamped.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.base48.cz/w/index.php?title=File:Mill_board_clamped.jpg&amp;diff=5668"/>
		<updated>2026-09-21T06:52:26Z</updated>

		<summary type="html">&lt;p&gt;Klubko: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Clamped PCB&lt;/div&gt;</summary>
		<author><name>Klubko</name></author>
	</entry>
	<entry>
		<id>https://wiki.base48.cz/w/index.php?title=PCB_Milling&amp;diff=5667</id>
		<title>PCB Milling</title>
		<link rel="alternate" type="text/html" href="https://wiki.base48.cz/w/index.php?title=PCB_Milling&amp;diff=5667"/>
		<updated>2026-09-21T06:51:19Z</updated>

		<summary type="html">&lt;p&gt;Klubko: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Project&lt;br /&gt;
 |founder=[[user:rmarko]]&lt;br /&gt;
 |coops=[[User:Lubko|Lubko]]&lt;br /&gt;
 |status=operational&lt;br /&gt;
 |shortdesc=Milling and drilling PCB&#039;s on LinuxCNC&lt;br /&gt;
 |image=Millingatbase.jpg&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Tutorial for milling PCBs on the [[Small CNC]].&lt;br /&gt;
&lt;br /&gt;
== Prepare the GCode ==&lt;br /&gt;
This part is done on your computer. The objective is to get GCode files for milling, drilling and outline cut and copy them to the controlling machine.&lt;br /&gt;
&lt;br /&gt;
=== Export from KiCAD ===&lt;br /&gt;
Up to date versions of KiCAD provide a command line tool to conveniently export Gerber and drill files.&lt;br /&gt;
{{cmd|code=&lt;br /&gt;
kicad-cli pcb export gerbers --layers F.Cu,B.Cu,Edge.Cuts MyBoard.kicad_pcb&lt;br /&gt;
kicad-cli pcb export drill MyBoard.kicad_pcb&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Generate GCode ===&lt;br /&gt;
Use  [https://github.com/pcb2gcode/pcb2gcode pcb2gcode] to produce the GCode.&lt;br /&gt;
&lt;br /&gt;
Below is an example of a single-sided board drilled from the back side. It uses speeds, distances and feed rates that are known to work well with out machine and utilizes auto-leveling to compensate for deformation in clamping and the slight bent in Y-axis.&lt;br /&gt;
&lt;br /&gt;
Consult pcb2gcode manual to tune details or use utilize other features of the tool such as double-sided milling or tiling.&lt;br /&gt;
&lt;br /&gt;
One-sided board (called &amp;quot;MyBoard&amp;quot;) drilled from back:&lt;br /&gt;
{{cmd|code=&lt;br /&gt;
kicad-cli pcb export gerbers --layers F.Cu,B.Cu,Edge.Cuts MyBoard.kicad_pcb&lt;br /&gt;
kicad-cli pcb export drill MyBoard.kicad_pcb&lt;br /&gt;
&lt;br /&gt;
pcb2gcode \&lt;br /&gt;
  --back=MyBoard-B_Cu.gbl \&lt;br /&gt;
  --drill=MyBoard.drl \&lt;br /&gt;
  --outline=MyBoard-Edge_Cuts.gm1 \&lt;br /&gt;
  \&lt;br /&gt;
  --drill-output=MyBoard-drill.ngc \&lt;br /&gt;
  --front-output=MyBoard-front.ngc \&lt;br /&gt;
  --back-output=MyBoard-back.ngc \&lt;br /&gt;
  --outline-output=MyBoard-outline.ngc \&lt;br /&gt;
  \&lt;br /&gt;
  --software=linuxcnc \&lt;br /&gt;
  --metric=true \&lt;br /&gt;
  --metricoutput=true \&lt;br /&gt;
  --zero-start=true \&lt;br /&gt;
  \&lt;br /&gt;
  --al-probe-on=&#039;(MSG, Probe on)&#039; \&lt;br /&gt;
  --al-probe-off=&#039;(MSG, Probe off)&#039; \&lt;br /&gt;
  --al-back=true \&lt;br /&gt;
  --al-x=5 \&lt;br /&gt;
  --al-y=5 \&lt;br /&gt;
  --al-probefeed=50 \&lt;br /&gt;
  \&lt;br /&gt;
  --zchange=20.0000 \&lt;br /&gt;
  --zsafe=2.0000 \&lt;br /&gt;
  --extra-passes=3 \&lt;br /&gt;
  --mill-feed=450 \&lt;br /&gt;
  --mill-speed=24000 \&lt;br /&gt;
  --offset=0.1500 \&lt;br /&gt;
  --zwork=-0.1000 \&lt;br /&gt;
  --drill-feed=250 \&lt;br /&gt;
  --drill-side=back \&lt;br /&gt;
  --drill-speed=12000 \&lt;br /&gt;
  --zdrill=-3.0000 \&lt;br /&gt;
  --bridges=0.8000 \&lt;br /&gt;
  --bridgesnum=4 \&lt;br /&gt;
  --cut-feed=200 \&lt;br /&gt;
  --cut-infeed=1.0000 \&lt;br /&gt;
  --cut-side=back \&lt;br /&gt;
  --cut-speed=24000 \&lt;br /&gt;
  --cutter-diameter=3.1750 \&lt;br /&gt;
  --zbridges=-0.0500 \&lt;br /&gt;
  --zcut=-1.7000&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
If pcb2gcode prints warnings, look into the *.svg files generated in working directory. They will contain visual indication of what is the problem.&lt;br /&gt;
&lt;br /&gt;
=== File upload ===&lt;br /&gt;
Upload folder to LinuxCNC machine:&lt;br /&gt;
{{cmd|code=&lt;br /&gt;
scp -r project/ base@linuxcnc.base48.cz:&amp;lt;your_nick&amp;gt;/&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Machining ==&lt;br /&gt;
The following steps are done at the CNC milling machine.&lt;br /&gt;
&lt;br /&gt;
You will be operating machine a machine that spin things very fast, moves with a lot of power and doesn&#039;t stop for meat. Avoid complacency and double-check things.&lt;br /&gt;
&lt;br /&gt;
=== Safety essentials ===&lt;br /&gt;
* The &#039;&#039;&#039;big red button&#039;&#039;&#039; is an E-stop&lt;br /&gt;
* E-stop cuts power to motors when idle and in emergency&lt;br /&gt;
* F1 in LinuxCNC also acts as an E-stop&lt;br /&gt;
* Erroneous Z-axis movement or failed probe will break and eject the sharp tip of the tool&lt;br /&gt;
* &#039;&#039;&#039;Safety goggles are needed to protect eyes from flying debris&#039;&#039;&#039;&lt;br /&gt;
* Errors happen. Double-check commands and have an emergency plan!&lt;br /&gt;
&lt;br /&gt;
=== Clamping ===&lt;br /&gt;
Make sure to clamp PCB blank as good as possible as it&#039;s &#039;&#039;&#039;critical&#039;&#039;&#039; for the outcome of the leveling and milling.&lt;br /&gt;
&lt;br /&gt;
* Clamp PCB blank on top of piece of wood with at least 4 clamps&lt;br /&gt;
* Attach the RED probe crocodile clip is attached to the PCB&lt;br /&gt;
* Double-check the proble clip. &#039;&#039;&#039;The tool will break during probing if there&#039;s no contact!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Starting up ===&lt;br /&gt;
* &#039;&#039;&#039;Find the E-stop and make sure it&#039;s pressed&#039;&#039;&#039;&lt;br /&gt;
* Find a pair of safety goggles&lt;br /&gt;
* Power on the extension cord&lt;br /&gt;
* Make sure you hear the spindle cooling water pump operate&lt;br /&gt;
* Power on linuxcnc machine (the PC, reachable at linuxcnc.base48.cz)&lt;br /&gt;
* Power on machine controller&lt;br /&gt;
&lt;br /&gt;
=== Starting CNC control ===&lt;br /&gt;
* Start LinuxCNC by running base_mill shortcut on the desktop&lt;br /&gt;
* &#039;&#039;&#039;Put on the safety goggles&#039;&#039;&#039;&lt;br /&gt;
* Depress the E-stop&lt;br /&gt;
* Enable power (F2)&lt;br /&gt;
* Position the machine with arrow keys to a starting point (bottom left corner of your future PCB)&lt;br /&gt;
&lt;br /&gt;
=== Homing and preparing to mill ===[[File:Mill mill bit installed.jpg|thumb|V-shaped mill bit installed]]&lt;br /&gt;
* Pick a V-shaped tool from the box and install it&lt;br /&gt;
* Home each axis of the machine, don&#039;t forget to home A axis as well&lt;br /&gt;
* Load mill file (e.g. &#039;&#039;MyBoard-back.ngc&#039;&#039;) &lt;br /&gt;
* Try moving machine around displayed job to make sure it can actually reach all sides of the job without collisions&lt;br /&gt;
* Switch to MDI tab (F5) (all the required commands in the following section should be present in the history)&lt;br /&gt;
** To get to the starting point run &#039;&#039;&#039;G0 X0 Y0&#039;&#039;&#039;&lt;br /&gt;
** To home Z-axis use &#039;&#039;&#039;G38.2 Z-100 F30&#039;&#039;&#039;&lt;br /&gt;
** Go back to manual tab and &#039;&#039;&#039;re-home Z axis&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Milling ===&lt;br /&gt;
* Make sure you&#039;re wearing eye protection&lt;br /&gt;
* Start job with blue arrow button&lt;br /&gt;
* Hope for the best, abort with F1 or E-stop if stuff goes wrong&lt;br /&gt;
* When asked to install or remove probe, just continue. Probing will run with the V-shaped milling tool&lt;br /&gt;
&lt;br /&gt;
=== Drilling ===&lt;br /&gt;
* Load drill file (e.g. &#039;&#039;MyBoard-drill.ngc&#039;&#039;) &lt;br /&gt;
* Install correct drill bit&lt;br /&gt;
* To re-establish Z height again&lt;br /&gt;
** Go to Manual tab (F3) and position a head outside of the milled PCB near clamp with probing wire attached so probing is possible, then few millimeters on top of the spot but don&#039;t try to make contact&lt;br /&gt;
** Go to MDI tab (F5) and issue probing command &#039;&#039;&#039;G38.2 Z-100 F30&#039;&#039;&#039;&lt;br /&gt;
** Go back to manual tab and &#039;&#039;&#039;re-home Z axis&#039;&#039;&#039;&lt;br /&gt;
* Start drilling job&lt;br /&gt;
&lt;br /&gt;
=== Outline ===&lt;br /&gt;
* Load outline file (e.g. &#039;&#039;MyBoard-outline.ngc&#039;&#039;)&lt;br /&gt;
* Load 3.175mm endmill&lt;br /&gt;
* Go to manual tab a re-establish Z height again by positioning tool slightly over the board&lt;br /&gt;
* &#039;&#039;&#039;re-home Z axis&#039;&#039;&#039;&lt;br /&gt;
* Start job&lt;br /&gt;
&lt;br /&gt;
== After milling ==&lt;br /&gt;
* &#039;&#039;&#039;Find the E-stop and make sure it&#039;s pressed&#039;&#039;&#039;&lt;br /&gt;
* Shut off the controller, PC and extension cord&lt;br /&gt;
* Vacuum the debris&lt;br /&gt;
* Clean your board with sandpaper and alcohol&lt;br /&gt;
* Use flux spray&lt;br /&gt;
* Leave a board on a warm place for a while&lt;br /&gt;
* Take pictures&lt;br /&gt;
* Solder components&lt;br /&gt;
* Profit&lt;/div&gt;</summary>
		<author><name>Klubko</name></author>
	</entry>
	<entry>
		<id>https://wiki.base48.cz/w/index.php?title=PCB_Milling&amp;diff=5666</id>
		<title>PCB Milling</title>
		<link rel="alternate" type="text/html" href="https://wiki.base48.cz/w/index.php?title=PCB_Milling&amp;diff=5666"/>
		<updated>2026-09-21T06:47:33Z</updated>

		<summary type="html">&lt;p&gt;Klubko: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Project&lt;br /&gt;
 |founder=[[user:rmarko]]&lt;br /&gt;
 |coops=[[User:Lubko|Lubko]]&lt;br /&gt;
 |status=operational&lt;br /&gt;
 |shortdesc=Milling and drilling PCB&#039;s on LinuxCNC&lt;br /&gt;
 |image=Millingatbase.jpg&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Tutorial for milling PCBs on the [[Small CNC]].&lt;br /&gt;
&lt;br /&gt;
== Prepare the GCode ==&lt;br /&gt;
This part is done on your computer. The objective is to get GCode files for milling, drilling and outline cut and copy them to the controlling machine.&lt;br /&gt;
&lt;br /&gt;
=== Export from KiCAD ===&lt;br /&gt;
Up to date versions of KiCAD provide a command line tool to conveniently export Gerber and drill files.&lt;br /&gt;
{{cmd|code=&lt;br /&gt;
kicad-cli pcb export gerbers --layers F.Cu,B.Cu,Edge.Cuts MyBoard.kicad_pcb&lt;br /&gt;
kicad-cli pcb export drill MyBoard.kicad_pcb&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Generate GCode ===&lt;br /&gt;
Use  [https://github.com/pcb2gcode/pcb2gcode pcb2gcode] to produce the GCode.&lt;br /&gt;
&lt;br /&gt;
Below is an example of a single-sided board drilled from the back side. It uses speeds, distances and feed rates that are known to work well with out machine and utilizes auto-leveling to compensate for deformation in clamping and the slight bent in Y-axis.&lt;br /&gt;
&lt;br /&gt;
Consult pcb2gcode manual to tune details or use utilize other features of the tool such as double-sided milling or tiling.&lt;br /&gt;
&lt;br /&gt;
One-sided board (called &amp;quot;MyBoard&amp;quot;) drilled from back:&lt;br /&gt;
{{cmd|code=&lt;br /&gt;
kicad-cli pcb export gerbers --layers F.Cu,B.Cu,Edge.Cuts MyBoard.kicad_pcb&lt;br /&gt;
kicad-cli pcb export drill MyBoard.kicad_pcb&lt;br /&gt;
&lt;br /&gt;
pcb2gcode \&lt;br /&gt;
  --back=MyBoard-B_Cu.gbl \&lt;br /&gt;
  --drill=MyBoard.drl \&lt;br /&gt;
  --outline=MyBoard-Edge_Cuts.gm1 \&lt;br /&gt;
  \&lt;br /&gt;
  --drill-output=MyBoard-drill.ngc \&lt;br /&gt;
  --front-output=MyBoard-front.ngc \&lt;br /&gt;
  --back-output=MyBoard-back.ngc \&lt;br /&gt;
  --outline-output=MyBoard-outline.ngc \&lt;br /&gt;
  \&lt;br /&gt;
  --software=linuxcnc \&lt;br /&gt;
  --metric=true \&lt;br /&gt;
  --metricoutput=true \&lt;br /&gt;
  --zero-start=true \&lt;br /&gt;
  \&lt;br /&gt;
  --al-probe-on=&#039;(MSG, Probe on)&#039; \&lt;br /&gt;
  --al-probe-off=&#039;(MSG, Probe off)&#039; \&lt;br /&gt;
  --al-back=true \&lt;br /&gt;
  --al-x=5 \&lt;br /&gt;
  --al-y=5 \&lt;br /&gt;
  --al-probefeed=50 \&lt;br /&gt;
  \&lt;br /&gt;
  --zchange=20.0000 \&lt;br /&gt;
  --zsafe=2.0000 \&lt;br /&gt;
  --extra-passes=3 \&lt;br /&gt;
  --mill-feed=450 \&lt;br /&gt;
  --mill-speed=24000 \&lt;br /&gt;
  --offset=0.1500 \&lt;br /&gt;
  --zwork=-0.1000 \&lt;br /&gt;
  --drill-feed=250 \&lt;br /&gt;
  --drill-side=back \&lt;br /&gt;
  --drill-speed=12000 \&lt;br /&gt;
  --zdrill=-3.0000 \&lt;br /&gt;
  --bridges=0.8000 \&lt;br /&gt;
  --bridgesnum=4 \&lt;br /&gt;
  --cut-feed=200 \&lt;br /&gt;
  --cut-infeed=1.0000 \&lt;br /&gt;
  --cut-side=back \&lt;br /&gt;
  --cut-speed=24000 \&lt;br /&gt;
  --cutter-diameter=3.1750 \&lt;br /&gt;
  --zbridges=-0.0500 \&lt;br /&gt;
  --zcut=-1.7000&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
If pcb2gcode prints warnings, look into the *.svg files generated in working directory. They will contain visual indication of what is the problem.&lt;br /&gt;
&lt;br /&gt;
=== File upload ===&lt;br /&gt;
Upload folder to LinuxCNC machine:&lt;br /&gt;
{{cmd|code=&lt;br /&gt;
scp -r project/ base@linuxcnc.base48.cz:&amp;lt;your_nick&amp;gt;/&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Machining ==&lt;br /&gt;
The following steps are done at the CNC milling machine.&lt;br /&gt;
&lt;br /&gt;
You will be operating machine a machine that spin things very fast, moves with a lot of power and doesn&#039;t stop for meat. Avoid complacency and double-check things.&lt;br /&gt;
&lt;br /&gt;
=== Safety essentials ===&lt;br /&gt;
* The &#039;&#039;&#039;big red button&#039;&#039;&#039; is an E-stop&lt;br /&gt;
* E-stop cuts power to motors when idle and in emergency&lt;br /&gt;
* F1 in LinuxCNC also acts as an E-stop&lt;br /&gt;
* Erroneous Z-axis movement or failed probe will break and eject the sharp tip of the tool&lt;br /&gt;
* &#039;&#039;&#039;Safety goggles are needed to protect eyes from flying debris&#039;&#039;&#039;&lt;br /&gt;
* Errors happen. Double-check commands and have an emergency plan!&lt;br /&gt;
&lt;br /&gt;
=== Clamping ===&lt;br /&gt;
Make sure to clamp PCB blank as good as possible as it&#039;s &#039;&#039;&#039;critical&#039;&#039;&#039; for the outcome of the leveling and milling.&lt;br /&gt;
&lt;br /&gt;
* Clamp PCB blank on top of piece of wood with at least 4 clamps&lt;br /&gt;
* Attach the RED probe crocodile clip is attached to the PCB&lt;br /&gt;
* Double-check the proble clip. &#039;&#039;&#039;The tool will break during probing if there&#039;s no contact!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Starting up ===&lt;br /&gt;
* &#039;&#039;&#039;Find the E-stop and make sure it&#039;s pressed&#039;&#039;&#039;&lt;br /&gt;
* Find a pair of safety goggles&lt;br /&gt;
* Power on the extension cord&lt;br /&gt;
* Make sure you hear the spindle cooling water pump operate&lt;br /&gt;
* Power on linuxcnc machine (the PC, reachable at linuxcnc.base48.cz)&lt;br /&gt;
* Power on machine controller&lt;br /&gt;
&lt;br /&gt;
=== Starting CNC control ===&lt;br /&gt;
* Start LinuxCNC by running base_mill shortcut on the desktop&lt;br /&gt;
* &#039;&#039;&#039;Put on the safety goggles&#039;&#039;&#039;&lt;br /&gt;
* Depress the E-stop&lt;br /&gt;
* Enable power (F2)&lt;br /&gt;
* Position the machine with arrow keys to a starting point (bottom left corner of your future PCB)&lt;br /&gt;
&lt;br /&gt;
=== Homing and preparing to mill ===&lt;br /&gt;
[[File:Mill mill bit installed.jpg|thumb|V-shaped mill bit installed]]&lt;br /&gt;
* Pick a V-shaped tool from the box and install it&lt;br /&gt;
* Home each axis of the machine, don&#039;t forget to home A axis as well&lt;br /&gt;
* Load mill file (e.g. &#039;&#039;MyBoard-back.ngc&#039;&#039;) &lt;br /&gt;
* Try moving machine around displayed job to make sure it can actually reach all sides of the job without collisions&lt;br /&gt;
* Switch to MDI tab (F5) (all the required commands in the following section should be present in the history)&lt;br /&gt;
** To get to the starting point run &#039;&#039;&#039;G0 X0 Y0&#039;&#039;&#039;&lt;br /&gt;
** To home Z-axis use &#039;&#039;&#039;G38.2 Z-100 F30&#039;&#039;&#039;&lt;br /&gt;
** Go back to manual tab and &#039;&#039;&#039;re-home Z axis&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Milling ===&lt;br /&gt;
* Make sure you&#039;re wearing eye protection&lt;br /&gt;
* Start job with blue arrow button&lt;br /&gt;
* Hope for the best, abort with F1 or E-stop if stuff goes wrong&lt;br /&gt;
* When asked to install or remove probe, just continue. Probing will run with the V-shaped milling tool&lt;br /&gt;
&lt;br /&gt;
=== Drilling ===&lt;br /&gt;
* Load drill file (e.g. &#039;&#039;MyBoard-drill.ngc&#039;&#039;) &lt;br /&gt;
* Install correct drill bit&lt;br /&gt;
* To re-establish Z height again&lt;br /&gt;
** Go to Manual tab (F3) and position a head outside of the milled PCB near clamp with probing wire attached so probing is possible, then few millimeters on top of the spot but don&#039;t try to make contact&lt;br /&gt;
** Go to MDI tab (F5) and issue probing command &#039;&#039;&#039;G38.2 Z-100 F30&#039;&#039;&#039;&lt;br /&gt;
** Go back to manual tab and &#039;&#039;&#039;re-home Z axis&#039;&#039;&#039;&lt;br /&gt;
* Start drilling job&lt;br /&gt;
&lt;br /&gt;
=== Outline ===&lt;br /&gt;
* Load outline file (e.g. &#039;&#039;MyBoard-outline.ngc&#039;&#039;)&lt;br /&gt;
* Load 3.175mm endmill&lt;br /&gt;
* Go to manual tab a re-establish Z height again by positioning tool slightly over the board&lt;br /&gt;
* &#039;&#039;&#039;re-home Z axis&#039;&#039;&#039;&lt;br /&gt;
* Start job&lt;br /&gt;
&lt;br /&gt;
== After milling ==&lt;br /&gt;
* &#039;&#039;&#039;Find the E-stop and make sure it&#039;s pressed&#039;&#039;&#039;&lt;br /&gt;
* Shut off the controller, PC and extension cord&lt;br /&gt;
* Vacuum the debris&lt;br /&gt;
* Clean your board with sandpaper and alcohol&lt;br /&gt;
* Use flux spray&lt;br /&gt;
* Leave a board on a warm place for a while&lt;br /&gt;
* Take pictures&lt;br /&gt;
* Solder components&lt;br /&gt;
* Profit&lt;/div&gt;</summary>
		<author><name>Klubko</name></author>
	</entry>
	<entry>
		<id>https://wiki.base48.cz/w/index.php?title=File:Mill_mill_bit_installed.jpg&amp;diff=5665</id>
		<title>File:Mill mill bit installed.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.base48.cz/w/index.php?title=File:Mill_mill_bit_installed.jpg&amp;diff=5665"/>
		<updated>2026-09-21T06:44:51Z</updated>

		<summary type="html">&lt;p&gt;Klubko: Klubko uploaded a new version of File:Mill mill bit installed.jpg&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Milling bit installed&lt;/div&gt;</summary>
		<author><name>Klubko</name></author>
	</entry>
	<entry>
		<id>https://wiki.base48.cz/w/index.php?title=File:Mill_mill_bit_installed.jpg&amp;diff=5664</id>
		<title>File:Mill mill bit installed.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.base48.cz/w/index.php?title=File:Mill_mill_bit_installed.jpg&amp;diff=5664"/>
		<updated>2026-09-21T06:40:21Z</updated>

		<summary type="html">&lt;p&gt;Klubko: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Milling bit installed&lt;/div&gt;</summary>
		<author><name>Klubko</name></author>
	</entry>
	<entry>
		<id>https://wiki.base48.cz/w/index.php?title=Small_CNC&amp;diff=5663</id>
		<title>Small CNC</title>
		<link rel="alternate" type="text/html" href="https://wiki.base48.cz/w/index.php?title=Small_CNC&amp;diff=5663"/>
		<updated>2026-09-21T06:36:39Z</updated>

		<summary type="html">&lt;p&gt;Klubko: /* Safety */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Project&lt;br /&gt;
 |name=Small CNC&lt;br /&gt;
 |shortdesc=Small CNC machine&lt;br /&gt;
 |image=Small-CNC.jpeg&lt;br /&gt;
 |founder=base48&lt;br /&gt;
 |coops=[[User:Lubko|Lubko]]&lt;br /&gt;
 |status=active&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Safety ==&lt;br /&gt;
[[File:Cnc e-stop.jpg|thumb|400x400px|Emergency stop|none]]&lt;br /&gt;
&lt;br /&gt;
* Emergency stop (E-stop) cuts power to motors, should be released only when milling is in progress&lt;br /&gt;
&lt;br /&gt;
* Debris and broken tool parts my go flying from the spindle. Wear eye protection when E-stop is released!&lt;br /&gt;
&lt;br /&gt;
== Operation ==&lt;br /&gt;
&lt;br /&gt;
=== Milling machine ===&lt;br /&gt;
[[File:Cnc mill.jpg|thumb|200x200px|Milling machine|right]]Small three axis CNC machine, controlled by PC with LinuxCNC.&lt;br /&gt;
&lt;br /&gt;
Good for [[PCB Milling]]!&lt;br /&gt;
&lt;br /&gt;
=== Motor driver and spindle controller ===&lt;br /&gt;
[[File:Cnc driver.jpg|thumb|200x200px|Motor drivers, spindle control|right]]Normally set to be controlled by PC, but provides manual spindle control.&lt;br /&gt;
&lt;br /&gt;
Also contains the emergency stop.&lt;br /&gt;
&lt;br /&gt;
=== LinuxCNC controller ===&lt;br /&gt;
[[File:Cnc linuxcnc.jpg|thumb|200x200px|LinuxCNC controller|right]]PC running LinuxCNC atop RTAI kernel. Provides manual movement control and runs GCode programs.&lt;br /&gt;
&lt;br /&gt;
=== Spindle cooling ===&lt;br /&gt;
[[File:Cnc cooling pump.jpg|thumb|200x200px|Spindle cooling pump|right]]Water needs to flow when spindle is running. Turned on/off via extension plug along with mill and controllers.&lt;br /&gt;
&lt;br /&gt;
=== Tools, bits, drills ===&lt;br /&gt;
[[File:Cnc tool box.jpg|thumb|200x200px|Tool box|right]]There&#039;s a box with a lot of various tools. Few are going to be useful for PCB milling: a sharp cutting tool, a 0.6 mm or 0.8 mm drill and the 3.175 mm sideways drill.&lt;br /&gt;
&lt;br /&gt;
Use 13 mm and 17 mm wrenches to unscrew the tool holder and replace the tool.&lt;br /&gt;
&lt;br /&gt;
=== Workpiece probing ===&lt;br /&gt;
[[File:Cnc probe.jpg|thumb|200x200px|Probe attachment|right]]Probe triggers when there&#039;s a conductive path from it to tool/chasis ground. To use it, the workpiece needs to be isolated from tool/chasis ground and have the proble clamped to it.&lt;br /&gt;
&lt;br /&gt;
== Tips &amp;amp; Tricks ==&lt;br /&gt;
&lt;br /&gt;
=== GCode simulation/preview ===&lt;br /&gt;
You can verify if everything is correct by importing all files to [https://camotics.org/ Camotics] G-code simulator.&lt;br /&gt;
&lt;br /&gt;
Ideally your board should start at positive X, Y coordinates with lower left corner near X0/Y0.&lt;br /&gt;
&lt;br /&gt;
=== Useful GCodes ===&lt;br /&gt;
* &#039;&#039;&#039;G0 X0 Y0 F100&#039;&#039;&#039; -- Non-cutting move to X0 Y0 at 100mm/min, Z coordinate stays&lt;br /&gt;
* &#039;&#039;&#039;G38.2 Z-5 F30&#039;&#039;&#039; -- Move Z up to -5mm at 30mm/min (slowly) until probe trips&lt;br /&gt;
&lt;br /&gt;
== Pictures ==&lt;br /&gt;
Feel free to upload pictures of your finished PCBs and add link(s) to following gallery:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;100&amp;quot; mode=&amp;quot;nolines&amp;quot;&amp;gt;&lt;br /&gt;
File:Milled-pcb-esp8266.jpg&lt;br /&gt;
File:Milled-pcb-phsensor.jpg&lt;br /&gt;
File:Milling pcb2 stm32f042.jpg&lt;br /&gt;
File:Oven.jpg&lt;br /&gt;
File:3020pcb.jpg&lt;br /&gt;
File:Hc pcb.jpg&lt;br /&gt;
File:Synth pcb.jpg&lt;br /&gt;
File:Millingatbase.jpg&lt;br /&gt;
File:Audiothing0.jpeg&lt;br /&gt;
File:Audiothing1.jpeg&lt;br /&gt;
File:Audiothing2.jpg&lt;br /&gt;
File:Mag brk.jpeg&lt;br /&gt;
File:RN2348PCB.JPG&lt;br /&gt;
File:Cpld brk.jpg&lt;br /&gt;
File:Amp2.jpg&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;/div&gt;</summary>
		<author><name>Klubko</name></author>
	</entry>
	<entry>
		<id>https://wiki.base48.cz/w/index.php?title=Small_CNC&amp;diff=5662</id>
		<title>Small CNC</title>
		<link rel="alternate" type="text/html" href="https://wiki.base48.cz/w/index.php?title=Small_CNC&amp;diff=5662"/>
		<updated>2026-09-21T06:35:56Z</updated>

		<summary type="html">&lt;p&gt;Klubko: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Project&lt;br /&gt;
 |name=Small CNC&lt;br /&gt;
 |shortdesc=Small CNC machine&lt;br /&gt;
 |image=Small-CNC.jpeg&lt;br /&gt;
 |founder=base48&lt;br /&gt;
 |coops=[[User:Lubko|Lubko]]&lt;br /&gt;
 |status=active&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Safety ==&lt;br /&gt;
[[File:Cnc e-stop.jpg|thumb|200x200px|Emergency stop|none]]&lt;br /&gt;
&lt;br /&gt;
* Emergency stop (E-stop) cuts power to motors, should be released only when milling is in progress&lt;br /&gt;
&lt;br /&gt;
* Debris and broken tool parts my go flying from the spindle. Wear eye protection when E-stop is released!&lt;br /&gt;
&lt;br /&gt;
== Operation ==&lt;br /&gt;
&lt;br /&gt;
=== Milling machine ===&lt;br /&gt;
[[File:Cnc mill.jpg|thumb|200x200px|Milling machine|right]]Small three axis CNC machine, controlled by PC with LinuxCNC.&lt;br /&gt;
&lt;br /&gt;
Good for [[PCB Milling]]!&lt;br /&gt;
&lt;br /&gt;
=== Motor driver and spindle controller ===&lt;br /&gt;
[[File:Cnc driver.jpg|thumb|200x200px|Motor drivers, spindle control|right]]Normally set to be controlled by PC, but provides manual spindle control.&lt;br /&gt;
&lt;br /&gt;
Also contains the emergency stop.&lt;br /&gt;
&lt;br /&gt;
=== LinuxCNC controller ===&lt;br /&gt;
[[File:Cnc linuxcnc.jpg|thumb|200x200px|LinuxCNC controller|right]]PC running LinuxCNC atop RTAI kernel. Provides manual movement control and runs GCode programs.&lt;br /&gt;
&lt;br /&gt;
=== Spindle cooling ===&lt;br /&gt;
[[File:Cnc cooling pump.jpg|thumb|200x200px|Spindle cooling pump|right]]Water needs to flow when spindle is running. Turned on/off via extension plug along with mill and controllers.&lt;br /&gt;
&lt;br /&gt;
=== Tools, bits, drills ===&lt;br /&gt;
[[File:Cnc tool box.jpg|thumb|200x200px|Tool box|right]]There&#039;s a box with a lot of various tools. Few are going to be useful for PCB milling: a sharp cutting tool, a 0.6 mm or 0.8 mm drill and the 3.175 mm sideways drill.&lt;br /&gt;
&lt;br /&gt;
Use 13 mm and 17 mm wrenches to unscrew the tool holder and replace the tool.&lt;br /&gt;
&lt;br /&gt;
=== Workpiece probing ===&lt;br /&gt;
[[File:Cnc probe.jpg|thumb|200x200px|Probe attachment|right]]Probe triggers when there&#039;s a conductive path from it to tool/chasis ground. To use it, the workpiece needs to be isolated from tool/chasis ground and have the proble clamped to it.&lt;br /&gt;
&lt;br /&gt;
== Tips &amp;amp; Tricks ==&lt;br /&gt;
&lt;br /&gt;
=== GCode simulation/preview ===&lt;br /&gt;
You can verify if everything is correct by importing all files to [https://camotics.org/ Camotics] G-code simulator.&lt;br /&gt;
&lt;br /&gt;
Ideally your board should start at positive X, Y coordinates with lower left corner near X0/Y0.&lt;br /&gt;
&lt;br /&gt;
=== Useful GCodes ===&lt;br /&gt;
* &#039;&#039;&#039;G0 X0 Y0 F100&#039;&#039;&#039; -- Non-cutting move to X0 Y0 at 100mm/min, Z coordinate stays&lt;br /&gt;
* &#039;&#039;&#039;G38.2 Z-5 F30&#039;&#039;&#039; -- Move Z up to -5mm at 30mm/min (slowly) until probe trips&lt;br /&gt;
&lt;br /&gt;
== Pictures ==&lt;br /&gt;
Feel free to upload pictures of your finished PCBs and add link(s) to following gallery:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;100&amp;quot; mode=&amp;quot;nolines&amp;quot;&amp;gt;&lt;br /&gt;
File:Milled-pcb-esp8266.jpg&lt;br /&gt;
File:Milled-pcb-phsensor.jpg&lt;br /&gt;
File:Milling pcb2 stm32f042.jpg&lt;br /&gt;
File:Oven.jpg&lt;br /&gt;
File:3020pcb.jpg&lt;br /&gt;
File:Hc pcb.jpg&lt;br /&gt;
File:Synth pcb.jpg&lt;br /&gt;
File:Millingatbase.jpg&lt;br /&gt;
File:Audiothing0.jpeg&lt;br /&gt;
File:Audiothing1.jpeg&lt;br /&gt;
File:Audiothing2.jpg&lt;br /&gt;
File:Mag brk.jpeg&lt;br /&gt;
File:RN2348PCB.JPG&lt;br /&gt;
File:Cpld brk.jpg&lt;br /&gt;
File:Amp2.jpg&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;/div&gt;</summary>
		<author><name>Klubko</name></author>
	</entry>
	<entry>
		<id>https://wiki.base48.cz/w/index.php?title=Small_CNC&amp;diff=5661</id>
		<title>Small CNC</title>
		<link rel="alternate" type="text/html" href="https://wiki.base48.cz/w/index.php?title=Small_CNC&amp;diff=5661"/>
		<updated>2026-09-21T06:35:07Z</updated>

		<summary type="html">&lt;p&gt;Klubko: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Project&lt;br /&gt;
 |name=Small CNC&lt;br /&gt;
 |shortdesc=Small CNC machine&lt;br /&gt;
 |image=Small-CNC.jpeg&lt;br /&gt;
 |founder=base48&lt;br /&gt;
 |coops=[[User:Lubko|Lubko]]&lt;br /&gt;
 |status=active&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Safety ==&lt;br /&gt;
[[File:Cnc e-stop.jpg|thumb|200x200px|Emergency stop|none]]* Emergency stop (E-stop) cuts power to motors, should be released only when milling is in progress&lt;br /&gt;
* Debris and broken tool parts my go flying from the spindle. Wear eye protection when E-stop is released!&lt;br /&gt;
&lt;br /&gt;
== Operation ==&lt;br /&gt;
&lt;br /&gt;
=== Milling machine ===&lt;br /&gt;
[[File:Cnc mill.jpg|thumb|200x200px|Milling machine|right]]Small three axis CNC machine, controlled by PC with LinuxCNC.&lt;br /&gt;
&lt;br /&gt;
Good for [[PCB Milling]]!&lt;br /&gt;
&lt;br /&gt;
=== Motor driver and spindle controller ===&lt;br /&gt;
[[File:Cnc driver.jpg|thumb|200x200px|Motor drivers, spindle control|right]]Normally set to be controlled by PC, but provides manual spindle control.&lt;br /&gt;
&lt;br /&gt;
Also contains the emergency stop.&lt;br /&gt;
&lt;br /&gt;
=== LinuxCNC controller ===&lt;br /&gt;
[[File:Cnc linuxcnc.jpg|thumb|200x200px|LinuxCNC controller|right]]PC running LinuxCNC atop RTAI kernel. Provides manual movement control and runs GCode programs.&lt;br /&gt;
&lt;br /&gt;
=== Spindle cooling ===&lt;br /&gt;
[[File:Cnc cooling pump.jpg|thumb|200x200px|Spindle cooling pump|right]]Water needs to flow when spindle is running. Turned on/off via extension plug along with mill and controllers.&lt;br /&gt;
&lt;br /&gt;
=== Tools, bits, drills ===&lt;br /&gt;
[[File:Cnc tool box.jpg|thumb|200x200px|Tool box|right]]There&#039;s a box with a lot of various tools. Few are going to be useful for PCB milling: a sharp cutting tool, a 0.6 mm or 0.8 mm drill and the 3.175 mm sideways drill.&lt;br /&gt;
&lt;br /&gt;
Use 13 mm and 17 mm wrenches to unscrew the tool holder and replace the tool.&lt;br /&gt;
&lt;br /&gt;
=== Workpiece probing ===&lt;br /&gt;
[[File:Cnc probe.jpg|thumb|200x200px|Probe attachment|right]]Probe triggers when there&#039;s a conductive path from it to tool/chasis ground. To use it, the workpiece needs to be isolated from tool/chasis ground and have the proble clamped to it.&lt;br /&gt;
&lt;br /&gt;
== Tips &amp;amp; Tricks ==&lt;br /&gt;
&lt;br /&gt;
=== GCode simulation/preview ===&lt;br /&gt;
You can verify if everything is correct by importing all files to [https://camotics.org/ Camotics] G-code simulator.&lt;br /&gt;
&lt;br /&gt;
Ideally your board should start at positive X, Y coordinates with lower left corner near X0/Y0.&lt;br /&gt;
&lt;br /&gt;
=== Useful GCodes ===&lt;br /&gt;
* &#039;&#039;&#039;G0 X0 Y0 F100&#039;&#039;&#039; -- Non-cutting move to X0 Y0 at 100mm/min, Z coordinate stays&lt;br /&gt;
* &#039;&#039;&#039;G38.2 Z-5 F30&#039;&#039;&#039; -- Move Z up to -5mm at 30mm/min (slowly) until probe trips&lt;br /&gt;
&lt;br /&gt;
== Pictures ==&lt;br /&gt;
Feel free to upload pictures of your finished PCBs and add link(s) to following gallery:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;100&amp;quot; mode=&amp;quot;nolines&amp;quot;&amp;gt;&lt;br /&gt;
File:Milled-pcb-esp8266.jpg&lt;br /&gt;
File:Milled-pcb-phsensor.jpg&lt;br /&gt;
File:Milling pcb2 stm32f042.jpg&lt;br /&gt;
File:Oven.jpg&lt;br /&gt;
File:3020pcb.jpg&lt;br /&gt;
File:Hc pcb.jpg&lt;br /&gt;
File:Synth pcb.jpg&lt;br /&gt;
File:Millingatbase.jpg&lt;br /&gt;
File:Audiothing0.jpeg&lt;br /&gt;
File:Audiothing1.jpeg&lt;br /&gt;
File:Audiothing2.jpg&lt;br /&gt;
File:Mag brk.jpeg&lt;br /&gt;
File:RN2348PCB.JPG&lt;br /&gt;
File:Cpld brk.jpg&lt;br /&gt;
File:Amp2.jpg&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;/div&gt;</summary>
		<author><name>Klubko</name></author>
	</entry>
	<entry>
		<id>https://wiki.base48.cz/w/index.php?title=File:Cnc_tool_box.jpg&amp;diff=5660</id>
		<title>File:Cnc tool box.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.base48.cz/w/index.php?title=File:Cnc_tool_box.jpg&amp;diff=5660"/>
		<updated>2026-09-21T05:58:29Z</updated>

		<summary type="html">&lt;p&gt;Klubko: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Box with CNC bits, drills.&lt;/div&gt;</summary>
		<author><name>Klubko</name></author>
	</entry>
	<entry>
		<id>https://wiki.base48.cz/w/index.php?title=File:Cnc_probe.jpg&amp;diff=5659</id>
		<title>File:Cnc probe.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.base48.cz/w/index.php?title=File:Cnc_probe.jpg&amp;diff=5659"/>
		<updated>2026-09-21T05:57:42Z</updated>

		<summary type="html">&lt;p&gt;Klubko: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Material probe&lt;/div&gt;</summary>
		<author><name>Klubko</name></author>
	</entry>
	<entry>
		<id>https://wiki.base48.cz/w/index.php?title=File:Cnc_linuxcnc.jpg&amp;diff=5658</id>
		<title>File:Cnc linuxcnc.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.base48.cz/w/index.php?title=File:Cnc_linuxcnc.jpg&amp;diff=5658"/>
		<updated>2026-09-21T05:56:54Z</updated>

		<summary type="html">&lt;p&gt;Klubko: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;LinuxCNC PC&lt;/div&gt;</summary>
		<author><name>Klubko</name></author>
	</entry>
	<entry>
		<id>https://wiki.base48.cz/w/index.php?title=File:Cnc_e-stop.jpg&amp;diff=5657</id>
		<title>File:Cnc e-stop.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.base48.cz/w/index.php?title=File:Cnc_e-stop.jpg&amp;diff=5657"/>
		<updated>2026-09-21T05:56:05Z</updated>

		<summary type="html">&lt;p&gt;Klubko: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Emergency stop&lt;/div&gt;</summary>
		<author><name>Klubko</name></author>
	</entry>
	<entry>
		<id>https://wiki.base48.cz/w/index.php?title=File:Cnc_cooling_pump.jpg&amp;diff=5656</id>
		<title>File:Cnc cooling pump.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.base48.cz/w/index.php?title=File:Cnc_cooling_pump.jpg&amp;diff=5656"/>
		<updated>2026-09-21T05:51:19Z</updated>

		<summary type="html">&lt;p&gt;Klubko: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Water pump for spindle cooling&lt;/div&gt;</summary>
		<author><name>Klubko</name></author>
	</entry>
	<entry>
		<id>https://wiki.base48.cz/w/index.php?title=File:Cnc_driver.jpg&amp;diff=5655</id>
		<title>File:Cnc driver.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.base48.cz/w/index.php?title=File:Cnc_driver.jpg&amp;diff=5655"/>
		<updated>2026-09-21T05:48:59Z</updated>

		<summary type="html">&lt;p&gt;Klubko: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Small CNC motor driver&lt;/div&gt;</summary>
		<author><name>Klubko</name></author>
	</entry>
	<entry>
		<id>https://wiki.base48.cz/w/index.php?title=File:Cnc_mill.jpg&amp;diff=5654</id>
		<title>File:Cnc mill.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.base48.cz/w/index.php?title=File:Cnc_mill.jpg&amp;diff=5654"/>
		<updated>2026-09-21T05:47:18Z</updated>

		<summary type="html">&lt;p&gt;Klubko: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Small CNC mill&lt;/div&gt;</summary>
		<author><name>Klubko</name></author>
	</entry>
	<entry>
		<id>https://wiki.base48.cz/w/index.php?title=PCB_Milling&amp;diff=5653</id>
		<title>PCB Milling</title>
		<link rel="alternate" type="text/html" href="https://wiki.base48.cz/w/index.php?title=PCB_Milling&amp;diff=5653"/>
		<updated>2026-09-17T14:43:29Z</updated>

		<summary type="html">&lt;p&gt;Klubko: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Project&lt;br /&gt;
 |founder=[[user:rmarko]]&lt;br /&gt;
 |coops=[[User:Lubko|Lubko]]&lt;br /&gt;
 |status=operational&lt;br /&gt;
 |shortdesc=Milling and drilling PCB&#039;s on LinuxCNC&lt;br /&gt;
 |image=Millingatbase.jpg&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Tutorial for milling PCBs on the [[Small CNC]].&lt;br /&gt;
&lt;br /&gt;
== Prepare the GCode ==&lt;br /&gt;
This part is done on your computer. The objective is to get GCode files for milling, drilling and outline cut and copy them to the controlling machine.&lt;br /&gt;
&lt;br /&gt;
=== Export from KiCAD ===&lt;br /&gt;
Up to date versions of KiCAD provide a command line tool to conveniently export Gerber and drill files.&lt;br /&gt;
{{cmd|code=&lt;br /&gt;
kicad-cli pcb export gerbers --layers F.Cu,B.Cu,Edge.Cuts MyBoard.kicad_pcb&lt;br /&gt;
kicad-cli pcb export drill MyBoard.kicad_pcb&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Generate GCode ===&lt;br /&gt;
Use  [https://github.com/pcb2gcode/pcb2gcode pcb2gcode] to produce the GCode.&lt;br /&gt;
&lt;br /&gt;
Below is an example of a single-sided board drilled from the back side. It uses speeds, distances and feed rates that are known to work well with out machine and utilizes auto-leveling to compensate for deformation in clamping and the slight bent in Y-axis.&lt;br /&gt;
&lt;br /&gt;
Consult pcb2gcode manual to tune details or use utilize other features of the tool such as double-sided milling or tiling.&lt;br /&gt;
&lt;br /&gt;
One-sided board (called &amp;quot;MyBoard&amp;quot;) drilled from back:&lt;br /&gt;
{{cmd|code=&lt;br /&gt;
kicad-cli pcb export gerbers --layers F.Cu,B.Cu,Edge.Cuts MyBoard.kicad_pcb&lt;br /&gt;
kicad-cli pcb export drill MyBoard.kicad_pcb&lt;br /&gt;
&lt;br /&gt;
pcb2gcode \&lt;br /&gt;
  --back=MyBoard-B_Cu.gbl \&lt;br /&gt;
  --drill=MyBoard.drl \&lt;br /&gt;
  --outline=MyBoard-Edge_Cuts.gm1 \&lt;br /&gt;
  \&lt;br /&gt;
  --drill-output=MyBoard-drill.ngc \&lt;br /&gt;
  --front-output=MyBoard-front.ngc \&lt;br /&gt;
  --back-output=MyBoard-back.ngc \&lt;br /&gt;
  --outline-output=MyBoard-outline.ngc \&lt;br /&gt;
  \&lt;br /&gt;
  --software=linuxcnc \&lt;br /&gt;
  --metric=true \&lt;br /&gt;
  --metricoutput=true \&lt;br /&gt;
  --zero-start=true \&lt;br /&gt;
  \&lt;br /&gt;
  --al-probe-on=&#039;(MSG, Probe on)&#039; \&lt;br /&gt;
  --al-probe-off=&#039;(MSG, Probe off)&#039; \&lt;br /&gt;
  --al-back=true \&lt;br /&gt;
  --al-x=5 \&lt;br /&gt;
  --al-y=5 \&lt;br /&gt;
  --al-probefeed=50 \&lt;br /&gt;
  \&lt;br /&gt;
  --zchange=20.0000 \&lt;br /&gt;
  --zsafe=2.0000 \&lt;br /&gt;
  --extra-passes=3 \&lt;br /&gt;
  --mill-feed=450 \&lt;br /&gt;
  --mill-speed=24000 \&lt;br /&gt;
  --offset=0.1500 \&lt;br /&gt;
  --zwork=-0.1000 \&lt;br /&gt;
  --drill-feed=250 \&lt;br /&gt;
  --drill-side=back \&lt;br /&gt;
  --drill-speed=12000 \&lt;br /&gt;
  --zdrill=-3.0000 \&lt;br /&gt;
  --bridges=0.8000 \&lt;br /&gt;
  --bridgesnum=4 \&lt;br /&gt;
  --cut-feed=200 \&lt;br /&gt;
  --cut-infeed=1.0000 \&lt;br /&gt;
  --cut-side=back \&lt;br /&gt;
  --cut-speed=24000 \&lt;br /&gt;
  --cutter-diameter=3.1750 \&lt;br /&gt;
  --zbridges=-0.0500 \&lt;br /&gt;
  --zcut=-1.7000&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
If pcb2gcode prints warnings, look into the *.svg files generated in working directory. They will contain visual indication of what is the problem.&lt;br /&gt;
&lt;br /&gt;
=== File upload ===&lt;br /&gt;
Upload folder to LinuxCNC machine:&lt;br /&gt;
{{cmd|code=&lt;br /&gt;
scp -r project/ base@linuxcnc.base48.cz:&amp;lt;your_nick&amp;gt;/&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Machining ==&lt;br /&gt;
The following steps are done at the CNC milling machine.&lt;br /&gt;
&lt;br /&gt;
You will be operating machine a machine that spin things very fast, moves with a lot of power and doesn&#039;t stop for meat. Avoid complacency and double-check things.&lt;br /&gt;
&lt;br /&gt;
=== Safety essentials ===&lt;br /&gt;
* The &#039;&#039;&#039;big red button&#039;&#039;&#039; is an E-stop&lt;br /&gt;
* E-stop cuts power to motors when idle and in emergency&lt;br /&gt;
* F1 in LinuxCNC also acts as an E-stop&lt;br /&gt;
* Erroneous Z-axis movement or failed probe will break and eject the sharp tip of the tool&lt;br /&gt;
* &#039;&#039;&#039;Safety goggles are needed to protect eyes from flying debris&#039;&#039;&#039;&lt;br /&gt;
* Errors happen. Double-check commands and have an emergency plan!&lt;br /&gt;
&lt;br /&gt;
=== Clamping ===&lt;br /&gt;
Make sure to clamp PCB blank as good as possible as it&#039;s &#039;&#039;&#039;critical&#039;&#039;&#039; for the outcome of the leveling and milling.&lt;br /&gt;
&lt;br /&gt;
* Clamp PCB blank on top of piece of wood with at least 4 clamps&lt;br /&gt;
* Attach the RED probe crocodile clip is attached to the PCB&lt;br /&gt;
* Double-check the proble clip. &#039;&#039;&#039;The tool will break during probing if there&#039;s no contact!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Starting up ===&lt;br /&gt;
* &#039;&#039;&#039;Find the E-stop and make sure it&#039;s pressed&#039;&#039;&#039;&lt;br /&gt;
* Find a pair of safety goggles&lt;br /&gt;
* Power on the extension cord&lt;br /&gt;
* Make sure you hear the spindle cooling water pump operate&lt;br /&gt;
* Power on linuxcnc machine (the PC, reachable at linuxcnc.base48.cz)&lt;br /&gt;
* Power on machine controller&lt;br /&gt;
&lt;br /&gt;
=== Starting CNC control ===&lt;br /&gt;
* Start LinuxCNC by running base_mill shortcut on the desktop&lt;br /&gt;
* &#039;&#039;&#039;Put on the safety goggles&#039;&#039;&#039;&lt;br /&gt;
* Depress the E-stop&lt;br /&gt;
* Enable power (F2)&lt;br /&gt;
* Position the machine with arrow keys to a starting point (bottom left corner of your future PCB)&lt;br /&gt;
&lt;br /&gt;
=== Homing and preparing to mill ===&lt;br /&gt;
* Pick a V-shaped tool from the box and install it&lt;br /&gt;
* Home each axis of the machine, don&#039;t forget to home A axis as well&lt;br /&gt;
* Load mill file (e.g. &#039;&#039;MyBoard-back.ngc&#039;&#039;) &lt;br /&gt;
* Try moving machine around displayed job to make sure it can actually reach all sides of the job without collisions&lt;br /&gt;
* Switch to MDI tab (F5) (all the required commands in the following section should be present in the history)&lt;br /&gt;
** To get to the starting point run &#039;&#039;&#039;G0 X0 Y0&#039;&#039;&#039;&lt;br /&gt;
** To home Z-axis use &#039;&#039;&#039;G38.2 Z-100 F30&#039;&#039;&#039;&lt;br /&gt;
** Go back to manual tab and &#039;&#039;&#039;re-home Z axis&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Milling ===&lt;br /&gt;
* Make sure you&#039;re wearing eye protection&lt;br /&gt;
* Start job with blue arrow button&lt;br /&gt;
* Hope for the best, abort with F1 or E-stop if stuff goes wrong&lt;br /&gt;
* When asked to install or remove probe, just continue. Probing will run with the V-shaped milling tool&lt;br /&gt;
&lt;br /&gt;
=== Drilling ===&lt;br /&gt;
* Load drill file (e.g. &#039;&#039;MyBoard-drill.ngc&#039;&#039;) &lt;br /&gt;
* Install correct drill bit&lt;br /&gt;
* To re-establish Z height again&lt;br /&gt;
** Go to Manual tab (F3) and position a head outside of the milled PCB near clamp with probing wire attached so probing is possible, then few millimeters on top of the spot but don&#039;t try to make contact&lt;br /&gt;
** Go to MDI tab (F5) and issue probing command &#039;&#039;&#039;G38.2 Z-100 F30&#039;&#039;&#039;&lt;br /&gt;
** Go back to manual tab and &#039;&#039;&#039;re-home Z axis&#039;&#039;&#039;&lt;br /&gt;
* Start drilling job&lt;br /&gt;
&lt;br /&gt;
=== Outline ===&lt;br /&gt;
* Load outline file (e.g. &#039;&#039;MyBoard-outline.ngc&#039;&#039;)&lt;br /&gt;
* Load 3.175mm endmill&lt;br /&gt;
* Go to manual tab a re-establish Z height again by positioning tool slightly over the board&lt;br /&gt;
* &#039;&#039;&#039;re-home Z axis&#039;&#039;&#039;&lt;br /&gt;
* Start job&lt;br /&gt;
&lt;br /&gt;
== After milling ==&lt;br /&gt;
* &#039;&#039;&#039;Find the E-stop and make sure it&#039;s pressed&#039;&#039;&#039;&lt;br /&gt;
* Shut off the controller, PC and extension cord&lt;br /&gt;
* Vacuum the debris&lt;br /&gt;
* Clean your board with sandpaper and alcohol&lt;br /&gt;
* Use flux spray&lt;br /&gt;
* Leave a board on a warm place for a while&lt;br /&gt;
* Take pictures&lt;br /&gt;
* Solder components&lt;br /&gt;
* Profit&lt;/div&gt;</summary>
		<author><name>Klubko</name></author>
	</entry>
	<entry>
		<id>https://wiki.base48.cz/w/index.php?title=Small_CNC&amp;diff=5652</id>
		<title>Small CNC</title>
		<link rel="alternate" type="text/html" href="https://wiki.base48.cz/w/index.php?title=Small_CNC&amp;diff=5652"/>
		<updated>2026-09-15T14:07:53Z</updated>

		<summary type="html">&lt;p&gt;Klubko: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Project&lt;br /&gt;
 |name=Small CNC&lt;br /&gt;
 |shortdesc=Small CNC machine&lt;br /&gt;
 |image=Small-CNC.jpeg&lt;br /&gt;
 |founder=base48&lt;br /&gt;
 |coops=[[User:Lubko|Lubko]]&lt;br /&gt;
 |status=active&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Small CNC machine, good for [[PCB Milling]].&lt;br /&gt;
&lt;br /&gt;
== Safety ==&lt;br /&gt;
&lt;br /&gt;
* Emergency stop (E-stop) cuts power to motors, should be released only when milling is in progress&lt;br /&gt;
* Debris and broken tool parts my go flying from the spindle. Wear eye protection when E-stop is released!&lt;br /&gt;
&lt;br /&gt;
== Parameters and Operation ==&lt;br /&gt;
&lt;br /&gt;
* Three axes&lt;br /&gt;
* Controlled by PC with LinuxCNC&lt;br /&gt;
* Water cooled spindle&lt;br /&gt;
&lt;br /&gt;
== Tips &amp;amp; Tricks ==&lt;br /&gt;
&lt;br /&gt;
=== GCode simulation/preview ===&lt;br /&gt;
You can verify if everything is correct by importing all files to [https://camotics.org/ Camotics] G-code simulator.&lt;br /&gt;
&lt;br /&gt;
Ideally your board should start at positive X, Y coordinates with lower left corner near X0/Y0.&lt;br /&gt;
&lt;br /&gt;
=== Useful GCodes ===&lt;br /&gt;
* &#039;&#039;&#039;G0 X0 Y0 F100&#039;&#039;&#039; -- Non-cutting move to X0 Y0 at 100mm/min, Z coordinate stays&lt;br /&gt;
* &#039;&#039;&#039;G38.2 Z-5 F30&#039;&#039;&#039; -- Move Z up to -5mm at 30mm/min (slowly) until probe trips&lt;br /&gt;
&lt;br /&gt;
== Pictures ==&lt;br /&gt;
Feel free to upload pictures of your finished PCBs and add link(s) to following gallery:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=200&amp;gt;&lt;br /&gt;
File:Milled-pcb-esp8266.jpg&lt;br /&gt;
File:Milled-pcb-phsensor.jpg&lt;br /&gt;
File:Milling_pcb2_stm32f042.jpg&lt;br /&gt;
File:Oven.jpg &lt;br /&gt;
File:3020pcb.jpg &lt;br /&gt;
File:Hc pcb.jpg&lt;br /&gt;
File:Synth pcb.jpg&lt;br /&gt;
File:Millingatbase.jpg&lt;br /&gt;
File:Audiothing0.jpeg&lt;br /&gt;
File:Audiothing1.jpeg&lt;br /&gt;
File:Audiothing2.jpg&lt;br /&gt;
File:Mag brk.jpeg &lt;br /&gt;
File:RN2348PCB.JPG&lt;br /&gt;
File:Cpld brk.jpg&lt;br /&gt;
File:Amp2.jpg&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;/div&gt;</summary>
		<author><name>Klubko</name></author>
	</entry>
	<entry>
		<id>https://wiki.base48.cz/w/index.php?title=PCB_Milling&amp;diff=5651</id>
		<title>PCB Milling</title>
		<link rel="alternate" type="text/html" href="https://wiki.base48.cz/w/index.php?title=PCB_Milling&amp;diff=5651"/>
		<updated>2026-09-15T14:00:53Z</updated>

		<summary type="html">&lt;p&gt;Klubko: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Project&lt;br /&gt;
 |founder=[[user:rmarko]]&lt;br /&gt;
 |coops=[[User:Lubko|Lubko]]&lt;br /&gt;
 |status=operational&lt;br /&gt;
 |shortdesc=Milling and drilling PCB&#039;s on LinuxCNC&lt;br /&gt;
 |image=Millingatbase.jpg&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Tutorial for milling PCBs on the [[Small CNC]].&lt;br /&gt;
&lt;br /&gt;
== Prepare the GCode ==&lt;br /&gt;
This part is done on your computer. The objective is to get GCode files for milling, drilling and outline cut and copy them to the controlling machine.&lt;br /&gt;
&lt;br /&gt;
=== Export from KiCAD ===&lt;br /&gt;
Up to date versions of KiCAD provide a command line tool to conveniently export Gerber and drill files.&lt;br /&gt;
{{cmd|code=&lt;br /&gt;
kicad-cli pcb export gerbers --layers F.Cu,B.Cu,Edge.Cuts MyBoard.kicad_pcb&lt;br /&gt;
kicad-cli pcb export drill MyBoard.kicad_pcb&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Generate GCode ===&lt;br /&gt;
Use  [https://github.com/pcb2gcode/pcb2gcode pcb2gcode] to produce the GCode.&lt;br /&gt;
&lt;br /&gt;
Below is an example of a single-sided board drilled from the back side. It uses speeds, distances and feed rates that are known to work well with out machine and utilizes auto-leveling to compensate for deformation in clamping and the slight bent in Y-axis.&lt;br /&gt;
&lt;br /&gt;
Consult pcb2gcode manual to tune details or use utilize other features of the tool such as double-sided milling or tiling.&lt;br /&gt;
&lt;br /&gt;
One-sided board (called &amp;quot;MyBoard&amp;quot;) drilled from back:&lt;br /&gt;
{{cmd|code=&lt;br /&gt;
pcb2gcode \&lt;br /&gt;
  --back=MyBoard-B_Cu.gbl \&lt;br /&gt;
  --drill=MyBoard.drl \&lt;br /&gt;
  --outline=MyBoard-Edge_Cuts.gm1 \&lt;br /&gt;
  \&lt;br /&gt;
  --drill-output=MyBoard-drill.ngc \&lt;br /&gt;
  --front-output=MyBoard-front.ngc \&lt;br /&gt;
  --back-output=MyBoard-back.ngc \&lt;br /&gt;
  --outline-output=MyBoard-outline.ngc \&lt;br /&gt;
  \&lt;br /&gt;
  --software=linuxcnc \&lt;br /&gt;
  --metric=true \&lt;br /&gt;
  --metricoutput=true \&lt;br /&gt;
  \&lt;br /&gt;
  --al-back=true \&lt;br /&gt;
  --al-x=5 \&lt;br /&gt;
  --al-y=5 \&lt;br /&gt;
  --al-probefeed=50 \&lt;br /&gt;
  \&lt;br /&gt;
  --zchange=20.0000 \&lt;br /&gt;
  --zsafe=2.0000 \&lt;br /&gt;
  --extra-passes=3 \&lt;br /&gt;
  --mill-feed=450 \&lt;br /&gt;
  --mill-speed=24000 \&lt;br /&gt;
  --offset=0.1500 \&lt;br /&gt;
  --zwork=-0.0900 \&lt;br /&gt;
  --drill-feed=250 \&lt;br /&gt;
  --drill-side=back \&lt;br /&gt;
  --drill-speed=12000 \&lt;br /&gt;
  --zdrill=-3.0000 \&lt;br /&gt;
  --bridges=0.8000 \&lt;br /&gt;
  --bridgesnum=4 \&lt;br /&gt;
  --cut-feed=200 \&lt;br /&gt;
  --cut-infeed=1.0000 \&lt;br /&gt;
  --cut-side=back \&lt;br /&gt;
  --cut-speed=24000 \&lt;br /&gt;
  --cutter-diameter=3.1750 \&lt;br /&gt;
  --zbridges=-0.0500 \&lt;br /&gt;
  --zcut=-1.7000&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
If pcb2gcode prints warnings, look into the *.svg files generated in working directory. They will contain visual indication of what is the problem.&lt;br /&gt;
&lt;br /&gt;
=== File upload ===&lt;br /&gt;
Upload folder to LinuxCNC machine:&lt;br /&gt;
{{cmd|code=&lt;br /&gt;
scp -r project/ base@linuxcnc.base48.cz:&amp;lt;your_nick&amp;gt;/&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Machining ==&lt;br /&gt;
The following steps are done at the CNC milling machine.&lt;br /&gt;
&lt;br /&gt;
You will be operating machine a machine that spin things very fast, moves with a lot of power and doesn&#039;t stop for meat. Avoid complacency and double-check things.&lt;br /&gt;
&lt;br /&gt;
=== Safety essentials ===&lt;br /&gt;
* The &#039;&#039;&#039;big red button&#039;&#039;&#039; is an E-stop&lt;br /&gt;
* E-stop cuts power to motors when idle and in emergency&lt;br /&gt;
* F1 in LinuxCNC also acts as an E-stop&lt;br /&gt;
* Erroneous Z-axis movement or failed probe will break and eject the sharp tip of the tool&lt;br /&gt;
* &#039;&#039;&#039;Safety goggles are needed to protect eyes from flying debris&#039;&#039;&#039;&lt;br /&gt;
* Errors happen. Double-check commands and have an emergency plan!&lt;br /&gt;
&lt;br /&gt;
=== Clamping ===&lt;br /&gt;
Make sure to clamp PCB blank as good as possible as it&#039;s &#039;&#039;&#039;critical&#039;&#039;&#039; for the outcome of the leveling and milling.&lt;br /&gt;
&lt;br /&gt;
* Clamp PCB blank on top of piece of wood with at least 4 clamps&lt;br /&gt;
* Attach the RED probe crocodile clip is attached to the PCB&lt;br /&gt;
* Double-check the proble clip. &#039;&#039;&#039;The tool will break during probing if there&#039;s no contact!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Starting up ===&lt;br /&gt;
* &#039;&#039;&#039;Find the E-stop and make sure it&#039;s pressed&#039;&#039;&#039;&lt;br /&gt;
* Find a pair of safety goggles&lt;br /&gt;
* Power on the extension cord&lt;br /&gt;
* Make sure you hear the spindle cooling water pump operate&lt;br /&gt;
* Power on linuxcnc machine (the PC, reachable at linuxcnc.base48.cz)&lt;br /&gt;
* Power on machine controller&lt;br /&gt;
&lt;br /&gt;
=== Starting CNC control ===&lt;br /&gt;
* Start LinuxCNC by running base_mill shortcut on the desktop&lt;br /&gt;
* &#039;&#039;&#039;Put on the safety goggles&#039;&#039;&#039;&lt;br /&gt;
* Depress the E-stop&lt;br /&gt;
* Enable power (F2)&lt;br /&gt;
* Position the machine with arrow keys to a starting point (bottom left corner of your future PCB)&lt;br /&gt;
&lt;br /&gt;
=== Homing and preparing to mill ===&lt;br /&gt;
* Pick a V-shaped tool from the box and install it&lt;br /&gt;
* Home each axis of the machine, don&#039;t forget to home A axis as well&lt;br /&gt;
* Load mill file (e.g. &#039;&#039;MyBoard-back.ngc&#039;&#039;) &lt;br /&gt;
* Try moving machine around displayed job to make sure it can actually reach all sides of the job without collisions&lt;br /&gt;
* Switch to MDI tab (F5) (all the required commands in the following section should be present in the history)&lt;br /&gt;
** To get to the starting point run &#039;&#039;&#039;G0 X0 Y0&#039;&#039;&#039;&lt;br /&gt;
** To home Z-axis use &#039;&#039;&#039;G38.2 Z-100 F30&#039;&#039;&#039;&lt;br /&gt;
** Go back to manual tab and &#039;&#039;&#039;re-home Z axis&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Milling ===&lt;br /&gt;
* Make sure you&#039;re wearing eye protection&lt;br /&gt;
* Start job with blue arrow button&lt;br /&gt;
* Hope for the best, abort with F1 or E-stop if stuff goes wrong&lt;br /&gt;
* When asked to install or remove probe, just continue. Probing will run with the V-shaped milling tool&lt;br /&gt;
&lt;br /&gt;
=== Drilling ===&lt;br /&gt;
* Load drill file (e.g. &#039;&#039;MyBoard-drill.ngc&#039;&#039;) &lt;br /&gt;
* Install correct drill bit&lt;br /&gt;
* To re-establish Z height again&lt;br /&gt;
** Go to Manual tab (F3) and position a head outside of the milled PCB near clamp with probing wire attached so probing is possible, then few millimeters on top of the spot but don&#039;t try to make contact&lt;br /&gt;
** Go to MDI tab (F5) and issue probing command &#039;&#039;&#039;G38.2 Z-100 F30&#039;&#039;&#039;&lt;br /&gt;
** Go back to manual tab and &#039;&#039;&#039;re-home Z axis&#039;&#039;&#039;&lt;br /&gt;
* Start drilling job&lt;br /&gt;
&lt;br /&gt;
=== Outline ===&lt;br /&gt;
* Load outline file (e.g. &#039;&#039;MyBoard-outline.ngc&#039;&#039;)&lt;br /&gt;
* Load 3.175mm endmill&lt;br /&gt;
* Go to manual tab a re-establish Z height again by positioning tool slightly over the board&lt;br /&gt;
* &#039;&#039;&#039;re-home Z axis&#039;&#039;&#039;&lt;br /&gt;
* Start job&lt;br /&gt;
&lt;br /&gt;
== After milling ==&lt;br /&gt;
* &#039;&#039;&#039;Find the E-stop and make sure it&#039;s pressed&#039;&#039;&#039;&lt;br /&gt;
* Shut off the controller, PC and extension cord&lt;br /&gt;
* Vacuum the debris&lt;br /&gt;
* Clean your board with sandpaper and alcohol&lt;br /&gt;
* Use flux spray&lt;br /&gt;
* Leave a board on a warm place for a while&lt;br /&gt;
* Take pictures&lt;br /&gt;
* Solder components&lt;br /&gt;
* Profit&lt;/div&gt;</summary>
		<author><name>Klubko</name></author>
	</entry>
	<entry>
		<id>https://wiki.base48.cz/w/index.php?title=PCB_Milling&amp;diff=5650</id>
		<title>PCB Milling</title>
		<link rel="alternate" type="text/html" href="https://wiki.base48.cz/w/index.php?title=PCB_Milling&amp;diff=5650"/>
		<updated>2026-09-15T13:58:50Z</updated>

		<summary type="html">&lt;p&gt;Klubko: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Project&lt;br /&gt;
 |founder=[[user:rmarko]]&lt;br /&gt;
 |coops=[[User:Lubko|Lubko]]&lt;br /&gt;
 |status=operational&lt;br /&gt;
 |shortdesc=Milling and drilling PCB&#039;s on LinuxCNC&lt;br /&gt;
 |image=Millingatbase.jpg&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Tutorial for milling PCBs on the [[Small CNC]].&lt;br /&gt;
&lt;br /&gt;
== Prepare the GCode ==&lt;br /&gt;
This part is done on your computer. The objective is to get GCode files for milling, drilling and outline cut and copy them to the controlling machine.&lt;br /&gt;
&lt;br /&gt;
=== Export from KiCAD ===&lt;br /&gt;
Up to date versions of KiCAD provide a command line tool to conveniently export Gerber and drill files.&lt;br /&gt;
{{cmd|code=&lt;br /&gt;
kicad-cli pcb export gerbers --layers F.Cu,B.Cu,Edge.Cuts MyBoard.kicad_pcb&lt;br /&gt;
kicad-cli pcb export drill MyBoard.kicad_pcb&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Generate GCode ===&lt;br /&gt;
Use  [https://github.com/pcb2gcode/pcb2gcode pcb2gcode] to produce the GCode.&lt;br /&gt;
&lt;br /&gt;
Below is an example of a single-sided board drilled from the back side. It uses speeds, distances and feed rates that are known to work well with out machine and utilizes auto-leveling to compensate for deformation in clamping and the slight bent in Y-axis.&lt;br /&gt;
&lt;br /&gt;
Consult pcb2gcode manual to tune details or use utilize other features of the tool such as double-sided milling or tiling.&lt;br /&gt;
&lt;br /&gt;
One-sided board (called &amp;quot;MyBoard&amp;quot;) drilled from back:&lt;br /&gt;
{{cmd|code=&lt;br /&gt;
pcb2gcode \&lt;br /&gt;
  --back=MyBoard-B_Cu.gbl \&lt;br /&gt;
  --drill=MyBoard.drl \&lt;br /&gt;
  --outline=MyBoard-Edge_Cuts.gm1 \&lt;br /&gt;
  \&lt;br /&gt;
  --drill-output=MyBoard-drill.ngc \&lt;br /&gt;
  --front-output=MyBoard-front.ngc \&lt;br /&gt;
  --back-output=MyBoard-back.ngc \&lt;br /&gt;
  --outline-output=MyBoard-outline.ngc \&lt;br /&gt;
  \&lt;br /&gt;
  --software=linuxcnc \&lt;br /&gt;
  --metric=true \&lt;br /&gt;
  --metricoutput=true \&lt;br /&gt;
  \&lt;br /&gt;
  --al-back=true \&lt;br /&gt;
  --al-x=5 \&lt;br /&gt;
  --al-y=5 \&lt;br /&gt;
  --al-probefeed=50 \&lt;br /&gt;
  \&lt;br /&gt;
  --zchange=20.0000 \&lt;br /&gt;
  --zsafe=2.0000 \&lt;br /&gt;
  --extra-passes=3 \&lt;br /&gt;
  --mill-feed=450 \&lt;br /&gt;
  --mill-speed=24000 \&lt;br /&gt;
  --offset=0.1500 \&lt;br /&gt;
  --zwork=-0.0900 \&lt;br /&gt;
  --drill-feed=250 \&lt;br /&gt;
  --drill-side=back \&lt;br /&gt;
  --drill-speed=12000 \&lt;br /&gt;
  --zdrill=-3.0000 \&lt;br /&gt;
  --bridges=0.8000 \&lt;br /&gt;
  --bridgesnum=4 \&lt;br /&gt;
  --cut-feed=200 \&lt;br /&gt;
  --cut-infeed=1.0000 \&lt;br /&gt;
  --cut-side=back \&lt;br /&gt;
  --cut-speed=24000 \&lt;br /&gt;
  --cutter-diameter=3.1750 \&lt;br /&gt;
  --zbridges=-0.0500 \&lt;br /&gt;
  --zcut=-1.7000&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
If pcb2gcode prints warnings, look into the *.svg files generated in working directory. They will contain visual indication of what is the problem.&lt;br /&gt;
&lt;br /&gt;
=== File upload ===&lt;br /&gt;
Upload folder to LinuxCNC machine:&lt;br /&gt;
{{cmd|code=&lt;br /&gt;
scp -r project/ base@linuxcnc.base48.cz:&amp;lt;your_nick&amp;gt;/&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Machining ==&lt;br /&gt;
The following steps are done at the CNC milling machine.&lt;br /&gt;
&lt;br /&gt;
You will be operating machine a machine that spin things very fast, moves with a lot of power and doesn&#039;t stop for meat. Avoid complacency and double-check things.&lt;br /&gt;
&lt;br /&gt;
=== Safety essentials ===&lt;br /&gt;
* The &#039;&#039;&#039;big red button&#039;&#039;&#039; is an E-stop&lt;br /&gt;
* E-stop cuts power to motors when idle and in emergency&lt;br /&gt;
* F1 in LinuxCNC also acts as an E-stop&lt;br /&gt;
* Erroneous Z-axis movement or failed probe will break and eject the sharp tip of the tool&lt;br /&gt;
* &#039;&#039;&#039;Safety goggles are needed to protect eyes from flying debris&#039;&#039;&#039;&lt;br /&gt;
* Errors happen. Double-check commands and have an emergency plan!&lt;br /&gt;
&lt;br /&gt;
=== Clamping ===&lt;br /&gt;
Make sure to clamp PCB blank as good as possible as it&#039;s &#039;&#039;&#039;critical&#039;&#039;&#039; for the outcome of the leveling and milling.&lt;br /&gt;
&lt;br /&gt;
* Clamp PCB blank on top of piece of wood with at least 4 clamps&lt;br /&gt;
* Attach the RED probe crocodile clip is attached to the PCB&lt;br /&gt;
* Double-check the proble clip. &#039;&#039;&#039;The tool will break during probing if there&#039;s no contact!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Starting up ===&lt;br /&gt;
* &#039;&#039;&#039;Find the E-stop and make sure it&#039;s pressed&#039;&#039;&#039;&lt;br /&gt;
* Find a pair of safety goggles&lt;br /&gt;
* Power on the extension cord&lt;br /&gt;
* Make sure you hear the spindle cooling water pump operate&lt;br /&gt;
* Power on linuxcnc machine (the PC, reachable at linuxcnc.base48.cz)&lt;br /&gt;
* Power on machine controller&lt;br /&gt;
&lt;br /&gt;
=== Starting CNC control ===&lt;br /&gt;
* Start LinuxCNC by running base_mill shortcut on the desktop&lt;br /&gt;
* &#039;&#039;&#039;Put on the safety goggles&#039;&#039;&#039;&lt;br /&gt;
* Depress the E-stop&lt;br /&gt;
* Enable power (F2)&lt;br /&gt;
* Position the machine with arrow keys to a starting point (bottom left corner of your future PCB)&lt;br /&gt;
&lt;br /&gt;
=== Homing and preparing to mill ===&lt;br /&gt;
* Pick a V-shaped tool from the box and install it&lt;br /&gt;
* Home each axis of the machine, don&#039;t forget to home A axis as well&lt;br /&gt;
* Load F.Cu or B.Cu G-code file&lt;br /&gt;
* Try moving machine around displayed job to make sure it can actually reach all sides of the job without collisions&lt;br /&gt;
* Switch to MDI tab (F5) (all the required commands in the following section should be present in the history)&lt;br /&gt;
** To get to the starting point run &#039;&#039;&#039;G0 X0 Y0&#039;&#039;&#039;&lt;br /&gt;
** To home Z-axis use &#039;&#039;&#039;G38.2 Z-100 F30&#039;&#039;&#039;&lt;br /&gt;
** Go back to manual tab and &#039;&#039;&#039;re-home Z axis&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Milling ===&lt;br /&gt;
* Make sure you&#039;re wearing eye protection&lt;br /&gt;
* Start job with blue arrow button&lt;br /&gt;
* Hope for the best, abort with F1 or E-stop if stuff goes wrong&lt;br /&gt;
* When asked to install or remove probe, just continue. Probing will run with the V-shaped milling tool&lt;br /&gt;
&lt;br /&gt;
=== Drilling ===&lt;br /&gt;
* Load drill file (e.g. &#039;&#039;drill_post.ngc&#039;&#039;) &lt;br /&gt;
* Install correct drill bit&lt;br /&gt;
* To re-establish Z height again&lt;br /&gt;
** Go to Manual tab (F3) and position a head outside of the milled PCB near clamp with probing wire attached so probing is possible, then few millimeters on top of the spot but don&#039;t try to make contact&lt;br /&gt;
** Go to MDI tab (F5) and issue probing command &#039;&#039;&#039;G38.2 Z-100 F30&#039;&#039;&#039;&lt;br /&gt;
** Go back to manual tab and &#039;&#039;&#039;re-home Z axis&#039;&#039;&#039;&lt;br /&gt;
* Start drilling job&lt;br /&gt;
&lt;br /&gt;
=== Outline ===&lt;br /&gt;
* Load outline file (e.g. &#039;&#039;outline_post.ngc&#039;&#039;)&lt;br /&gt;
* Load 3.175mm endmill&lt;br /&gt;
* Go to manual tab a re-establish Z height again by positioning tool slightly over the board&lt;br /&gt;
* &#039;&#039;&#039;re-home Z axis&#039;&#039;&#039;&lt;br /&gt;
* Start job&lt;br /&gt;
&lt;br /&gt;
== After milling ==&lt;br /&gt;
* &#039;&#039;&#039;Find the E-stop and make sure it&#039;s pressed&#039;&#039;&#039;&lt;br /&gt;
* Shut off the controller, PC and extension cord&lt;br /&gt;
* Vacuum the debris&lt;br /&gt;
* Clean your board with sandpaper and alcohol&lt;br /&gt;
* Use flux spray&lt;br /&gt;
* Leave a board on a warm place for a while&lt;br /&gt;
* Take pictures&lt;br /&gt;
* Solder components&lt;br /&gt;
* Profit&lt;/div&gt;</summary>
		<author><name>Klubko</name></author>
	</entry>
	<entry>
		<id>https://wiki.base48.cz/w/index.php?title=Small_CNC&amp;diff=5649</id>
		<title>Small CNC</title>
		<link rel="alternate" type="text/html" href="https://wiki.base48.cz/w/index.php?title=Small_CNC&amp;diff=5649"/>
		<updated>2026-09-15T13:57:55Z</updated>

		<summary type="html">&lt;p&gt;Klubko: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Project&lt;br /&gt;
 |name=Small CNC&lt;br /&gt;
 |shortdesc=Small CNC machine&lt;br /&gt;
 |image=Small-CNC.jpeg&lt;br /&gt;
 |founder=base48&lt;br /&gt;
 |coops=[[User:Lubko|Lubko]]&lt;br /&gt;
 |status=active&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Small CNC machine, good for [[PCB Milling]].&lt;br /&gt;
&lt;br /&gt;
== Safety ==&lt;br /&gt;
&lt;br /&gt;
* Emergency stop (E-stop) cuts power to motors, should be released only when milling is in progress&lt;br /&gt;
* Debris and broken tool parts my go flying from the spindle. Wear eye protection when E-stop is released!&lt;br /&gt;
&lt;br /&gt;
== Parameters and Operation ==&lt;br /&gt;
&lt;br /&gt;
* Three axis&lt;br /&gt;
* Controlled by PC with LinuxCNC&lt;br /&gt;
* Water cooled spindle&lt;br /&gt;
&lt;br /&gt;
== Useful GCodes ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;G0 X0 Y0 F100&#039;&#039;&#039; -- Non-cutting move to X0 Y0 at 100mm/min, Z coordinate stays&lt;br /&gt;
* &#039;&#039;&#039;G38.2 Z-5 F30&#039;&#039;&#039; -- Move Z up to -5mm at 30mm/min (slowly) until probe trips&lt;br /&gt;
&lt;br /&gt;
== Pictures ==&lt;br /&gt;
Feel free to upload pictures of your finished PCBs and add link(s) to following gallery:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=200&amp;gt;&lt;br /&gt;
File:Milled-pcb-esp8266.jpg&lt;br /&gt;
File:Milled-pcb-phsensor.jpg&lt;br /&gt;
File:Milling_pcb2_stm32f042.jpg&lt;br /&gt;
File:Oven.jpg &lt;br /&gt;
File:3020pcb.jpg &lt;br /&gt;
File:Hc pcb.jpg&lt;br /&gt;
File:Synth pcb.jpg&lt;br /&gt;
File:Millingatbase.jpg&lt;br /&gt;
File:Audiothing0.jpeg&lt;br /&gt;
File:Audiothing1.jpeg&lt;br /&gt;
File:Audiothing2.jpg&lt;br /&gt;
File:Mag brk.jpeg &lt;br /&gt;
File:RN2348PCB.JPG&lt;br /&gt;
File:Cpld brk.jpg&lt;br /&gt;
File:Amp2.jpg&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;/div&gt;</summary>
		<author><name>Klubko</name></author>
	</entry>
	<entry>
		<id>https://wiki.base48.cz/w/index.php?title=PCB_Milling&amp;diff=5648</id>
		<title>PCB Milling</title>
		<link rel="alternate" type="text/html" href="https://wiki.base48.cz/w/index.php?title=PCB_Milling&amp;diff=5648"/>
		<updated>2026-09-15T13:50:20Z</updated>

		<summary type="html">&lt;p&gt;Klubko: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Project&lt;br /&gt;
 |founder=[[user:rmarko]]&lt;br /&gt;
 |coops=[[User:Lubko|Lubko]]&lt;br /&gt;
 |status=operational&lt;br /&gt;
 |shortdesc=Milling and drilling PCB&#039;s on LinuxCNC&lt;br /&gt;
 |image=Millingatbase.jpg&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Tutorial for milling PCBs on the [[Small CNC]].&lt;br /&gt;
&lt;br /&gt;
== Prepare the GCode ==&lt;br /&gt;
This part is done on your computer. The objective is to get GCode files for milling, drilling and outline cut and copy them to the controlling machine.&lt;br /&gt;
&lt;br /&gt;
=== Export from KiCAD ===&lt;br /&gt;
Up to date versions of KiCAD provide a command line tool to conveniently export Gerber and drill files.&lt;br /&gt;
&lt;br /&gt;
{{cmd|code=&lt;br /&gt;
kicad-cli pcb export gerbers --layers F.Cu,B.Cu,Edge.Cuts MyBoard.kicad_pcb&lt;br /&gt;
kicad-cli pcb export drill MyBoard.kicad_pcb&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Generate GCode ===&lt;br /&gt;
Use  [https://github.com/pcb2gcode/pcb2gcode pcb2gcode] to produce the GCode.&lt;br /&gt;
&lt;br /&gt;
Below is an example of a single-sided board drilled from the back side. It uses speeds, distances and feed rates that are known to work well with out machine and utilizes auto-leveling to compensate for deformation in clamping and the slight bent in Y-axis.&lt;br /&gt;
&lt;br /&gt;
Consult pcb2gcode manual to tune details or use utilize other features of the tool such as double-sided milling or tiling.&lt;br /&gt;
&lt;br /&gt;
{{cmd|code=&lt;br /&gt;
pcb2gcode \&lt;br /&gt;
  --back=MyBoard-B_Cu.gbl \&lt;br /&gt;
  --drill=MyBoard.drl \&lt;br /&gt;
  --outline=MyBoard-Edge_Cuts.gm1 \&lt;br /&gt;
  \&lt;br /&gt;
  --drill-output=MyBoard-drill.ngc \&lt;br /&gt;
  --front-output=MyBoard-front.ngc \&lt;br /&gt;
  --back-output=MyBoard-back.ngc \&lt;br /&gt;
  --outline-output=MyBoard-outline.ngc \&lt;br /&gt;
  \&lt;br /&gt;
  --software=linuxcnc \&lt;br /&gt;
  --metric=true \&lt;br /&gt;
  --metricoutput=true \&lt;br /&gt;
  \&lt;br /&gt;
  --al-back=true \&lt;br /&gt;
  --al-x=5 \&lt;br /&gt;
  --al-y=5 \&lt;br /&gt;
  --al-probefeed=50 \&lt;br /&gt;
  \&lt;br /&gt;
  --zchange=20.0000 \&lt;br /&gt;
  --zsafe=2.0000 \&lt;br /&gt;
  --extra-passes=3 \&lt;br /&gt;
  --mill-feed=450 \&lt;br /&gt;
  --mill-speed=24000 \&lt;br /&gt;
  --offset=0.1500 \&lt;br /&gt;
  --zwork=-0.0900 \&lt;br /&gt;
  --drill-feed=250 \&lt;br /&gt;
  --drill-side=back \&lt;br /&gt;
  --drill-speed=12000 \&lt;br /&gt;
  --zdrill=-3.0000 \&lt;br /&gt;
  --bridges=0.8000 \&lt;br /&gt;
  --bridgesnum=4 \&lt;br /&gt;
  --cut-feed=200 \&lt;br /&gt;
  --cut-infeed=1.0000 \&lt;br /&gt;
  --cut-side=back \&lt;br /&gt;
  --cut-speed=24000 \&lt;br /&gt;
  --cutter-diameter=3.1750 \&lt;br /&gt;
  --zbridges=-0.0500 \&lt;br /&gt;
  --zcut=-1.7000&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
If pcb2gcode prints warnings, look into the *.svg files generated in working directory. They will contain visual indication of what is the problem.&lt;br /&gt;
&lt;br /&gt;
=== File upload ===&lt;br /&gt;
Upload folder to LinuxCNC machine:&lt;br /&gt;
{{cmd|code=&lt;br /&gt;
scp -r project/ base@linuxcnc.base48.cz:&amp;lt;your_nick&amp;gt;/&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Machining ==&lt;br /&gt;
The following steps are done at the CNC milling machine.&lt;br /&gt;
&lt;br /&gt;
You will be operating machine a machine that spin things very fast, moves with a lot of power and doesn&#039;t stop for meat. Avoid complacency and double-check things.&lt;br /&gt;
&lt;br /&gt;
=== Safety essentials ===&lt;br /&gt;
* The &#039;&#039;&#039;big red button&#039;&#039;&#039; is an E-stop&lt;br /&gt;
* E-stop cuts power to motors when idle and in emergency&lt;br /&gt;
* F1 in LinuxCNC also acts as an E-stop&lt;br /&gt;
* Erroneous Z-axis movement or failed probe will break and eject the sharp tip of the tool&lt;br /&gt;
* &#039;&#039;&#039;Safety goggles are needed to protect eyes from flying debris&#039;&#039;&#039;&lt;br /&gt;
* Errors happen. Double-check commands and have an emergency plan!&lt;br /&gt;
&lt;br /&gt;
=== Clamping ===&lt;br /&gt;
Make sure to clamp PCB blank as good as possible as it&#039;s &#039;&#039;&#039;critical&#039;&#039;&#039; for the outcome of the leveling and milling.&lt;br /&gt;
&lt;br /&gt;
* Clamp PCB blank on top of piece of wood with at least 4 clamps&lt;br /&gt;
* Attach the RED probe crocodile clip is attached to the PCB&lt;br /&gt;
* Double-check the proble clip. &#039;&#039;&#039;The tool will break during probing if there&#039;s no contact!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Starting up ===&lt;br /&gt;
* &#039;&#039;&#039;Find the E-stop and make sure it&#039;s pressed&#039;&#039;&#039;&lt;br /&gt;
* Find a pair of safety goggles&lt;br /&gt;
* Power on the extension cord&lt;br /&gt;
* Make sure you hear the spindle cooling water pump operate&lt;br /&gt;
* Power on linuxcnc machine (the PC, reachable at linuxcnc.base48.cz)&lt;br /&gt;
* Power on machine controller&lt;br /&gt;
&lt;br /&gt;
=== Starting CNC control ===&lt;br /&gt;
* Start LinuxCNC by running base_mill shortcut on the desktop&lt;br /&gt;
* &#039;&#039;&#039;Put on the safety goggles&#039;&#039;&#039;&lt;br /&gt;
* Depress the E-stop&lt;br /&gt;
* Enable power (F2)&lt;br /&gt;
* Position the machine with arrow keys to a starting point (bottom left corner of your future PCB)&lt;br /&gt;
&lt;br /&gt;
=== Homing and preparing to mill ===&lt;br /&gt;
* Pick a V-shaped tool from the box and install it&lt;br /&gt;
* Home each axis of the machine, don&#039;t forget to home A axis as well&lt;br /&gt;
* Load F.Cu or B.Cu G-code file&lt;br /&gt;
* Try moving machine around displayed job to make sure it can actually reach all sides of the job without collisions&lt;br /&gt;
* Switch to MDI tab (F5) (all the required commands in the following section should be present in the history)&lt;br /&gt;
** To get to the starting point run &#039;&#039;&#039;G0 X0 Y0&#039;&#039;&#039;&lt;br /&gt;
** To home Z-axis use &#039;&#039;&#039;G38.2 Z-100 F30&#039;&#039;&#039;&lt;br /&gt;
** Go back to manual tab and &#039;&#039;&#039;re-home Z axis&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Milling ===&lt;br /&gt;
* Make sure you&#039;re wearing eye protection&lt;br /&gt;
* Start job with blue arrow button&lt;br /&gt;
* Hope for the best, abort with F1 or E-stop if stuff goes wrong&lt;br /&gt;
* When asked to install or remove probe, just continue. Probing will run with the V-shaped milling tool&lt;br /&gt;
&lt;br /&gt;
=== Drilling ===&lt;br /&gt;
* Load drill file (e.g. &#039;&#039;drill_post.ngc&#039;&#039;) &lt;br /&gt;
* Install correct drill bit&lt;br /&gt;
* To re-establish Z height again&lt;br /&gt;
** Go to Manual tab (F3) and position a head outside of the milled PCB near clamp with probing wire attached so probing is possible, then few millimeters on top of the spot but don&#039;t try to make contact&lt;br /&gt;
** Go to MDI tab (F5) and issue probing command &#039;&#039;&#039;G38.2 Z-100 F30&#039;&#039;&#039;&lt;br /&gt;
** Go back to manual tab and &#039;&#039;&#039;re-home Z axis&#039;&#039;&#039;&lt;br /&gt;
* Start drilling job&lt;br /&gt;
&lt;br /&gt;
=== Outline ===&lt;br /&gt;
* Load outline file (e.g. &#039;&#039;outline_post.ngc&#039;&#039;)&lt;br /&gt;
* Load 3.175mm endmill&lt;br /&gt;
* Go to manual tab a re-establish Z height again by positioning tool slightly over the board&lt;br /&gt;
* &#039;&#039;&#039;re-home Z axis&#039;&#039;&#039;&lt;br /&gt;
* Start job&lt;br /&gt;
&lt;br /&gt;
== After milling ==&lt;br /&gt;
* &#039;&#039;&#039;Find the E-stop and make sure it&#039;s pressed&#039;&#039;&#039;&lt;br /&gt;
* Shut off the controller, PC and extension cord&lt;br /&gt;
* Vacuum the debris&lt;br /&gt;
* Clean your board with sandpaper and alcohol&lt;br /&gt;
* Use flux spray&lt;br /&gt;
* Leave a board on a warm place for a while&lt;br /&gt;
* Take pictures&lt;br /&gt;
* Solder components&lt;br /&gt;
* Profit&lt;/div&gt;</summary>
		<author><name>Klubko</name></author>
	</entry>
	<entry>
		<id>https://wiki.base48.cz/w/index.php?title=PCB_Milling&amp;diff=5647</id>
		<title>PCB Milling</title>
		<link rel="alternate" type="text/html" href="https://wiki.base48.cz/w/index.php?title=PCB_Milling&amp;diff=5647"/>
		<updated>2026-09-15T13:48:03Z</updated>

		<summary type="html">&lt;p&gt;Klubko: Update, auto-leveling&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Project&lt;br /&gt;
 |founder=[[user:rmarko]]&lt;br /&gt;
 |coops=[[User:Lubko|Lubko]]&lt;br /&gt;
 |status=operational&lt;br /&gt;
 |shortdesc=Milling and drilling PCB&#039;s on LinuxCNC&lt;br /&gt;
 |image=Millingatbase.jpg&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Prepare the GCode ==&lt;br /&gt;
This part is done on your computer. The objective is to get GCode files for milling, drilling and outline cut and copy them to the controlling machine.&lt;br /&gt;
&lt;br /&gt;
=== Export from KiCAD ===&lt;br /&gt;
Up to date versions of KiCAD provide a command line tool to conveniently export Gerber and drill files.&lt;br /&gt;
&lt;br /&gt;
{{cmd|code=&lt;br /&gt;
kicad-cli pcb export gerbers --layers F.Cu,B.Cu,Edge.Cuts MyBoard.kicad_pcb&lt;br /&gt;
kicad-cli pcb export drill MyBoard.kicad_pcb&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Generate GCode ===&lt;br /&gt;
Use  [https://github.com/pcb2gcode/pcb2gcode pcb2gcode] to produce the GCode.&lt;br /&gt;
&lt;br /&gt;
Below is an example of a single-sided board drilled from the back side. It uses speeds, distances and feed rates that are known to work well with out machine and utilizes auto-leveling to compensate for deformation in clamping and the slight bent in Y-axis.&lt;br /&gt;
&lt;br /&gt;
Consult pcb2gcode manual to tune details or use utilize other features of the tool such as double-sided milling or tiling.&lt;br /&gt;
&lt;br /&gt;
{{cmd|code=&lt;br /&gt;
pcb2gcode \&lt;br /&gt;
  --back=MyBoard-B_Cu.gbl \&lt;br /&gt;
  --drill=MyBoard.drl \&lt;br /&gt;
  --outline=MyBoard-Edge_Cuts.gm1 \&lt;br /&gt;
  \&lt;br /&gt;
  --drill-output=MyBoard-drill.ngc \&lt;br /&gt;
  --front-output=MyBoard-front.ngc \&lt;br /&gt;
  --back-output=MyBoard-back.ngc \&lt;br /&gt;
  --outline-output=MyBoard-outline.ngc \&lt;br /&gt;
  \&lt;br /&gt;
  --software=linuxcnc \&lt;br /&gt;
  --metric=true \&lt;br /&gt;
  --metricoutput=true \&lt;br /&gt;
  \&lt;br /&gt;
  --al-back=true \&lt;br /&gt;
  --al-x=5 \&lt;br /&gt;
  --al-y=5 \&lt;br /&gt;
  --al-probefeed=50 \&lt;br /&gt;
  \&lt;br /&gt;
  --zchange=20.0000 \&lt;br /&gt;
  --zsafe=2.0000 \&lt;br /&gt;
  --extra-passes=3 \&lt;br /&gt;
  --mill-feed=450 \&lt;br /&gt;
  --mill-speed=24000 \&lt;br /&gt;
  --offset=0.1500 \&lt;br /&gt;
  --zwork=-0.0900 \&lt;br /&gt;
  --drill-feed=250 \&lt;br /&gt;
  --drill-side=back \&lt;br /&gt;
  --drill-speed=12000 \&lt;br /&gt;
  --zdrill=-3.0000 \&lt;br /&gt;
  --bridges=0.8000 \&lt;br /&gt;
  --bridgesnum=4 \&lt;br /&gt;
  --cut-feed=200 \&lt;br /&gt;
  --cut-infeed=1.0000 \&lt;br /&gt;
  --cut-side=back \&lt;br /&gt;
  --cut-speed=24000 \&lt;br /&gt;
  --cutter-diameter=3.1750 \&lt;br /&gt;
  --zbridges=-0.0500 \&lt;br /&gt;
  --zcut=-1.7000&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
If pcb2gcode prints warnings, look into the *.svg files generated in working directory. They will contain visual indication of what is the problem.&lt;br /&gt;
&lt;br /&gt;
=== File upload ===&lt;br /&gt;
Upload folder to LinuxCNC machine:&lt;br /&gt;
{{cmd|code=&lt;br /&gt;
scp -r project/ base@linuxcnc.base48.cz:&amp;lt;your_nick&amp;gt;/&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Machining ==&lt;br /&gt;
The following steps are done at the CNC milling machine.&lt;br /&gt;
&lt;br /&gt;
You will be operating machine a machine that spin things very fast, moves with a lot of power and doesn&#039;t stop for meat. Avoid complacency and double-check things.&lt;br /&gt;
&lt;br /&gt;
=== Safety essentials ===&lt;br /&gt;
* The &#039;&#039;&#039;big red button&#039;&#039;&#039; is an E-stop&lt;br /&gt;
* E-stop cuts power to motors when idle and in emergency&lt;br /&gt;
* F1 in LinuxCNC also acts as an E-stop&lt;br /&gt;
* Erroneous Z-axis movement or failed probe will break and eject the sharp tip of the tool&lt;br /&gt;
* &#039;&#039;&#039;Safety goggles are needed to protect eyes from flying debris&#039;&#039;&#039;&lt;br /&gt;
* Errors happen. Double-check commands and have an emergency plan!&lt;br /&gt;
&lt;br /&gt;
=== Clamping ===&lt;br /&gt;
Make sure to clamp PCB blank as good as possible as it&#039;s &#039;&#039;&#039;critical&#039;&#039;&#039; for the outcome of the leveling and milling.&lt;br /&gt;
&lt;br /&gt;
* Clamp PCB blank on top of piece of wood with at least 4 clamps&lt;br /&gt;
* Attach the RED probe crocodile clip is attached to the PCB&lt;br /&gt;
* Double-check the proble clip. &#039;&#039;&#039;The tool will break during probing if there&#039;s no contact!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Starting up ===&lt;br /&gt;
* &#039;&#039;&#039;Find the E-stop and make sure it&#039;s pressed&#039;&#039;&#039;&lt;br /&gt;
* Find a pair of safety goggles&lt;br /&gt;
* Power on the extension cord&lt;br /&gt;
* Make sure you hear the spindle cooling water pump operate&lt;br /&gt;
* Power on linuxcnc machine (the PC, reachable at linuxcnc.base48.cz)&lt;br /&gt;
* Power on machine controller&lt;br /&gt;
&lt;br /&gt;
=== Starting CNC control ===&lt;br /&gt;
* Start LinuxCNC by running base_mill shortcut on the desktop&lt;br /&gt;
* &#039;&#039;&#039;Put on the safety goggles&#039;&#039;&#039;&lt;br /&gt;
* Depress the E-stop&lt;br /&gt;
* Enable power (F2)&lt;br /&gt;
* Position the machine with arrow keys to a starting point (bottom left corner of your future PCB)&lt;br /&gt;
&lt;br /&gt;
=== Homing and preparing to mill ===&lt;br /&gt;
* Pick a V-shaped tool from the box and install it&lt;br /&gt;
* Home each axis of the machine, don&#039;t forget to home A axis as well&lt;br /&gt;
* Load F.Cu or B.Cu G-code file&lt;br /&gt;
* Try moving machine around displayed job to make sure it can actually reach all sides of the job without collisions&lt;br /&gt;
* Switch to MDI tab (F5) (all the required commands in the following section should be present in the history)&lt;br /&gt;
** To get to the starting point run &#039;&#039;&#039;G0 X0 Y0&#039;&#039;&#039;&lt;br /&gt;
** To home Z-axis use &#039;&#039;&#039;G38.2 Z-100 F30&#039;&#039;&#039;&lt;br /&gt;
** Go back to manual tab and &#039;&#039;&#039;re-home Z axis&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Milling ===&lt;br /&gt;
* Make sure you&#039;re wearing eye protection&lt;br /&gt;
* Start job with blue arrow button&lt;br /&gt;
* Hope for the best, abort with F1 or E-stop if stuff goes wrong&lt;br /&gt;
* When asked to install or remove probe, just continue. Probing will run with the V-shaped milling tool&lt;br /&gt;
&lt;br /&gt;
=== Drilling ===&lt;br /&gt;
* Load drill file (e.g. &#039;&#039;drill_post.ngc&#039;&#039;) &lt;br /&gt;
* Install correct drill bit&lt;br /&gt;
* To re-establish Z height again&lt;br /&gt;
** Go to Manual tab (F3) and position a head outside of the milled PCB near clamp with probing wire attached so probing is possible, then few millimeters on top of the spot but don&#039;t try to make contact&lt;br /&gt;
** Go to MDI tab (F5) and issue probing command &#039;&#039;&#039;G38.2 Z-100 F30&#039;&#039;&#039;&lt;br /&gt;
** Go back to manual tab and &#039;&#039;&#039;re-home Z axis&#039;&#039;&#039;&lt;br /&gt;
* Start drilling job&lt;br /&gt;
&lt;br /&gt;
=== Outline ===&lt;br /&gt;
* Load outline file (e.g. &#039;&#039;outline_post.ngc&#039;&#039;)&lt;br /&gt;
* Load 3.175mm endmill&lt;br /&gt;
* Go to manual tab a re-establish Z height again by positioning tool slightly over the board&lt;br /&gt;
* &#039;&#039;&#039;re-home Z axis&#039;&#039;&#039;&lt;br /&gt;
* Start job&lt;br /&gt;
&lt;br /&gt;
== After milling ==&lt;br /&gt;
* &#039;&#039;&#039;Find the E-stop and make sure it&#039;s pressed&#039;&#039;&#039;&lt;br /&gt;
* Shut off the controller, PC and extension cord&lt;br /&gt;
* Vacuum the debris&lt;br /&gt;
* Clean your board with sandpaper and alcohol&lt;br /&gt;
* Use flux spray&lt;br /&gt;
* Leave a board on a warm place for a while&lt;br /&gt;
* Take pictures&lt;br /&gt;
* Solder components&lt;br /&gt;
* Profit&lt;/div&gt;</summary>
		<author><name>Klubko</name></author>
	</entry>
	<entry>
		<id>https://wiki.base48.cz/w/index.php?title=Small_CNC&amp;diff=5646</id>
		<title>Small CNC</title>
		<link rel="alternate" type="text/html" href="https://wiki.base48.cz/w/index.php?title=Small_CNC&amp;diff=5646"/>
		<updated>2026-09-15T13:03:06Z</updated>

		<summary type="html">&lt;p&gt;Klubko: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Project&lt;br /&gt;
 |name=Small CNC&lt;br /&gt;
 |shortdesc=Small CNC machine&lt;br /&gt;
 |image=Small-CNC.jpeg&lt;br /&gt;
 |founder=base48&lt;br /&gt;
 |coops=[[User:Lubko|Lubko]]&lt;br /&gt;
 |status=being resurrected&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Small CNC machine, good for [[PCB Milling]].&lt;br /&gt;
&lt;br /&gt;
= Safety =&lt;br /&gt;
&lt;br /&gt;
= Operation =&lt;br /&gt;
&lt;br /&gt;
= Pictures =&lt;br /&gt;
&lt;br /&gt;
Feel free to upload pictures of your finished PCBs and add link(s) to following gallery:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=200&amp;gt;&lt;br /&gt;
File:Milled-pcb-esp8266.jpg&lt;br /&gt;
File:Milled-pcb-phsensor.jpg&lt;br /&gt;
File:Milling_pcb2_stm32f042.jpg&lt;br /&gt;
File:Oven.jpg &lt;br /&gt;
File:3020pcb.jpg &lt;br /&gt;
File:Hc pcb.jpg&lt;br /&gt;
File:Synth pcb.jpg&lt;br /&gt;
File:Millingatbase.jpg&lt;br /&gt;
File:Audiothing0.jpeg&lt;br /&gt;
File:Audiothing1.jpeg&lt;br /&gt;
File:Audiothing2.jpg&lt;br /&gt;
File:Mag brk.jpeg &lt;br /&gt;
File:RN2348PCB.JPG&lt;br /&gt;
File:Cpld brk.jpg&lt;br /&gt;
File:Amp2.jpg&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;/div&gt;</summary>
		<author><name>Klubko</name></author>
	</entry>
	<entry>
		<id>https://wiki.base48.cz/w/index.php?title=Large_CNC&amp;diff=5645</id>
		<title>Large CNC</title>
		<link rel="alternate" type="text/html" href="https://wiki.base48.cz/w/index.php?title=Large_CNC&amp;diff=5645"/>
		<updated>2026-08-30T13:50:02Z</updated>

		<summary type="html">&lt;p&gt;Klubko: Freecad&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Project&lt;br /&gt;
 |name=Base48 CNC&lt;br /&gt;
 |image=641378466 1341178588052502 3684234166280655407 n.jpg&lt;br /&gt;
 |founder=Skirit&lt;br /&gt;
 |coops=skirit, krey&lt;br /&gt;
 |status=active&lt;br /&gt;
 |tags=hw&lt;br /&gt;
 |shortdesc=&lt;br /&gt;
 |created=2022&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
Repository: https://github.com/hackerspace/cnc-ng&lt;br /&gt;
&lt;br /&gt;
=== Renders ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:Large CNC Assembly.png|CNC assembly&lt;br /&gt;
File:Large CNC Head.png|Head detail&lt;br /&gt;
File:Large CNC Z Drive.png|Z drive&lt;br /&gt;
File:Large CNC Z Drive 2.png|Z drive&lt;br /&gt;
File:Large CNC Z Portal.png|Portal detail&lt;br /&gt;
File:Large CNC Z Portal Side.png|Other end&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Pictures ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:641378466 1341178588052502 3684234166280655407 n.jpg&lt;br /&gt;
File:643780689 1341178651385829 2896998308626909146 n.jpg&lt;br /&gt;
File:640817616 1341178701385824 4027835777262540953 n.jpg&lt;br /&gt;
File:641267395 1341178764719151 308047410247638726 n.jpg&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;/div&gt;</summary>
		<author><name>Klubko</name></author>
	</entry>
	<entry>
		<id>https://wiki.base48.cz/w/index.php?title=File:Large_CNC_Z_Portal_Side.png&amp;diff=5644</id>
		<title>File:Large CNC Z Portal Side.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.base48.cz/w/index.php?title=File:Large_CNC_Z_Portal_Side.png&amp;diff=5644"/>
		<updated>2026-08-30T13:49:40Z</updated>

		<summary type="html">&lt;p&gt;Klubko: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Klubko</name></author>
	</entry>
	<entry>
		<id>https://wiki.base48.cz/w/index.php?title=File:Large_CNC_Z_Portal.png&amp;diff=5643</id>
		<title>File:Large CNC Z Portal.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.base48.cz/w/index.php?title=File:Large_CNC_Z_Portal.png&amp;diff=5643"/>
		<updated>2026-08-30T13:49:28Z</updated>

		<summary type="html">&lt;p&gt;Klubko: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Klubko</name></author>
	</entry>
	<entry>
		<id>https://wiki.base48.cz/w/index.php?title=File:Large_CNC_Assembly.png&amp;diff=5642</id>
		<title>File:Large CNC Assembly.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.base48.cz/w/index.php?title=File:Large_CNC_Assembly.png&amp;diff=5642"/>
		<updated>2026-08-30T13:49:01Z</updated>

		<summary type="html">&lt;p&gt;Klubko: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Klubko</name></author>
	</entry>
	<entry>
		<id>https://wiki.base48.cz/w/index.php?title=File:Large_CNC_Z_Drive_2.png&amp;diff=5641</id>
		<title>File:Large CNC Z Drive 2.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.base48.cz/w/index.php?title=File:Large_CNC_Z_Drive_2.png&amp;diff=5641"/>
		<updated>2026-08-30T13:47:22Z</updated>

		<summary type="html">&lt;p&gt;Klubko: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Klubko</name></author>
	</entry>
	<entry>
		<id>https://wiki.base48.cz/w/index.php?title=File:Large_CNC_Z_Drive.png&amp;diff=5640</id>
		<title>File:Large CNC Z Drive.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.base48.cz/w/index.php?title=File:Large_CNC_Z_Drive.png&amp;diff=5640"/>
		<updated>2026-08-30T13:47:00Z</updated>

		<summary type="html">&lt;p&gt;Klubko: Klubko uploaded a new version of File:Large CNC Z Drive.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Klubko</name></author>
	</entry>
	<entry>
		<id>https://wiki.base48.cz/w/index.php?title=File:Large_CNC_Z_Drive.png&amp;diff=5639</id>
		<title>File:Large CNC Z Drive.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.base48.cz/w/index.php?title=File:Large_CNC_Z_Drive.png&amp;diff=5639"/>
		<updated>2026-08-30T13:46:26Z</updated>

		<summary type="html">&lt;p&gt;Klubko: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Klubko</name></author>
	</entry>
	<entry>
		<id>https://wiki.base48.cz/w/index.php?title=File:Large_CNC_Head.png&amp;diff=5638</id>
		<title>File:Large CNC Head.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.base48.cz/w/index.php?title=File:Large_CNC_Head.png&amp;diff=5638"/>
		<updated>2026-08-30T13:43:22Z</updated>

		<summary type="html">&lt;p&gt;Klubko: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Detail of CNC head&lt;/div&gt;</summary>
		<author><name>Klubko</name></author>
	</entry>
	<entry>
		<id>https://wiki.base48.cz/w/index.php?title=Large_CNC&amp;diff=5637</id>
		<title>Large CNC</title>
		<link rel="alternate" type="text/html" href="https://wiki.base48.cz/w/index.php?title=Large_CNC&amp;diff=5637"/>
		<updated>2026-08-29T00:36:37Z</updated>

		<summary type="html">&lt;p&gt;Klubko: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Project&lt;br /&gt;
 |name=Base48 CNC&lt;br /&gt;
 |image=641378466 1341178588052502 3684234166280655407 n.jpg&lt;br /&gt;
 |founder=Skirit&lt;br /&gt;
 |coops=skirit, krey&lt;br /&gt;
 |status=active&lt;br /&gt;
 |tags=hw&lt;br /&gt;
 |shortdesc=&lt;br /&gt;
 |created=2022&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
Repository: https://github.com/hackerspace/cnc-ng&lt;br /&gt;
&lt;br /&gt;
== Pictures ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:641378466 1341178588052502 3684234166280655407 n.jpg&lt;br /&gt;
File:643780689 1341178651385829 2896998308626909146 n.jpg&lt;br /&gt;
File:640817616 1341178701385824 4027835777262540953 n.jpg&lt;br /&gt;
File:641267395 1341178764719151 308047410247638726 n.jpg&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;/div&gt;</summary>
		<author><name>Klubko</name></author>
	</entry>
	<entry>
		<id>https://wiki.base48.cz/w/index.php?title=Metal_workshop&amp;diff=5636</id>
		<title>Metal workshop</title>
		<link rel="alternate" type="text/html" href="https://wiki.base48.cz/w/index.php?title=Metal_workshop&amp;diff=5636"/>
		<updated>2026-08-29T00:06:18Z</updated>

		<summary type="html">&lt;p&gt;Klubko: /* Mechlab */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Equipment]]&lt;br /&gt;
{{Project&lt;br /&gt;
 |name=Metal workshop&lt;br /&gt;
 |image=20240302_155942.jpg&lt;br /&gt;
 |founder=&lt;br /&gt;
 |coops=&lt;br /&gt;
 |status=active&lt;br /&gt;
 |tags=hw&lt;br /&gt;
 |shortdesc=Area equipped for metal work&lt;br /&gt;
 |created=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[https://www.youtube.com/results?search_query=metal Metal]&lt;br /&gt;
&lt;br /&gt;
== Mechlab ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Item&lt;br /&gt;
!State&lt;br /&gt;
!Ownership&lt;br /&gt;
|-&lt;br /&gt;
|[[Large CNC]]&lt;br /&gt;
|&#039;&#039;&#039;in development&#039;&#039;&#039;&lt;br /&gt;
|needs volunteers&lt;br /&gt;
|-&lt;br /&gt;
|[[Small CNC]]&lt;br /&gt;
|being resurrected&lt;br /&gt;
|needs volunteers&lt;br /&gt;
|-&lt;br /&gt;
|CNC FC16&lt;br /&gt;
|available after agreement&lt;br /&gt;
|Milan&lt;br /&gt;
|-&lt;br /&gt;
|lathe&lt;br /&gt;
|?&lt;br /&gt;
|Milan&lt;br /&gt;
|-&lt;br /&gt;
|PCB drill&lt;br /&gt;
|?&lt;br /&gt;
|base 48&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Metal workshop ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Item&lt;br /&gt;
!Make&lt;br /&gt;
!Ownership&lt;br /&gt;
|-&lt;br /&gt;
|[https://wiki.base48.cz/w/images/e/ef/20240302_155942.jpg metal workshop]&lt;br /&gt;
|&lt;br /&gt;
|skirit/base48&lt;br /&gt;
|-&lt;br /&gt;
|Shielded Metal Arc Welding&lt;br /&gt;
|&lt;br /&gt;
|skirit&lt;br /&gt;
|-&lt;br /&gt;
|Welding invertor MIG / MMA&lt;br /&gt;
|Laston&lt;br /&gt;
|Adam&lt;br /&gt;
|-&lt;br /&gt;
|Welding trolley + CO2 gas tank&lt;br /&gt;
| -&lt;br /&gt;
|Adam&lt;br /&gt;
|-&lt;br /&gt;
|Welding mask&lt;br /&gt;
| -&lt;br /&gt;
|martian742&lt;br /&gt;
|-&lt;br /&gt;
|Welding mask&lt;br /&gt;
| -&lt;br /&gt;
|Adam&lt;br /&gt;
|-&lt;br /&gt;
|Angle grinder&lt;br /&gt;
|Bosch&lt;br /&gt;
|Adam&lt;br /&gt;
|-&lt;br /&gt;
|Angle grinder&lt;br /&gt;
|Bosch&lt;br /&gt;
|Adam&lt;br /&gt;
|-&lt;br /&gt;
|Cordless Angle grinder&lt;br /&gt;
|Bosch&lt;br /&gt;
|Adam&lt;br /&gt;
|-&lt;br /&gt;
|Angle grinder&lt;br /&gt;
|Parkside&lt;br /&gt;
|Krey&lt;br /&gt;
|-&lt;br /&gt;
|Cordless Angle grinder&lt;br /&gt;
|Parkside&lt;br /&gt;
|Krey&lt;br /&gt;
|-&lt;br /&gt;
|Bench grinder with belt sander (Combined Sharpener)&lt;br /&gt;
|Parkside&lt;br /&gt;
|base 48&lt;br /&gt;
|-&lt;br /&gt;
|Bench grinder&lt;br /&gt;
|Scheppach&lt;br /&gt;
|base 48&lt;br /&gt;
|-&lt;br /&gt;
|Corded Power drill&lt;br /&gt;
|Black&amp;amp;Decker&lt;br /&gt;
|base 48&lt;br /&gt;
|-&lt;br /&gt;
|Corded Power drill&lt;br /&gt;
|Offbrand&lt;br /&gt;
|base 48&lt;br /&gt;
|-&lt;br /&gt;
|Plasma cutter&lt;br /&gt;
|Plasmatech / shark&lt;br /&gt;
|base 48&lt;br /&gt;
|-&lt;br /&gt;
|Dremel grinder&lt;br /&gt;
|Dremel&lt;br /&gt;
|base 48&lt;br /&gt;
|-&lt;br /&gt;
|Stationary drill&lt;br /&gt;
|TOS Kuřim&lt;br /&gt;
|base 48&lt;br /&gt;
|-&lt;br /&gt;
|Metal Cut-off Saw&lt;br /&gt;
|Bosch&lt;br /&gt;
|Adam&lt;br /&gt;
|-&lt;br /&gt;
|Vise&lt;br /&gt;
| -&lt;br /&gt;
|base 48&lt;br /&gt;
|-&lt;br /&gt;
|Grinding accessories ( grinding discs, cutting disks, sandpaper discs, metal brushes, ...)&lt;br /&gt;
| -&lt;br /&gt;
|base 48&lt;br /&gt;
|-&lt;br /&gt;
|Welding accessories (gloves, apron, electrodes, anti-stick spray, soapstone, pliers, metal brushes, clamps, 90-degree clamps, magnetic speed-squares, ...)&lt;br /&gt;
| -&lt;br /&gt;
|&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Klubko</name></author>
	</entry>
	<entry>
		<id>https://wiki.base48.cz/w/index.php?title=File:Small-CNC.jpeg&amp;diff=5635</id>
		<title>File:Small-CNC.jpeg</title>
		<link rel="alternate" type="text/html" href="https://wiki.base48.cz/w/index.php?title=File:Small-CNC.jpeg&amp;diff=5635"/>
		<updated>2026-08-28T23:58:44Z</updated>

		<summary type="html">&lt;p&gt;Klubko: Rack with CNC mill setup.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
Rack with CNC mill setup.&lt;/div&gt;</summary>
		<author><name>Klubko</name></author>
	</entry>
	<entry>
		<id>https://wiki.base48.cz/w/index.php?title=Small_CNC&amp;diff=5634</id>
		<title>Small CNC</title>
		<link rel="alternate" type="text/html" href="https://wiki.base48.cz/w/index.php?title=Small_CNC&amp;diff=5634"/>
		<updated>2026-08-28T23:47:54Z</updated>

		<summary type="html">&lt;p&gt;Klubko: Created page with &amp;quot;{{Project  |name=Small CNC  |shortdesc=Small CNC machine  |image=Small-CNC.jpeg  |founder=base48  |coops=Lubko  |status=being resurrected }}  Small CNC machine, good for PCB Milling.&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Project&lt;br /&gt;
 |name=Small CNC&lt;br /&gt;
 |shortdesc=Small CNC machine&lt;br /&gt;
 |image=Small-CNC.jpeg&lt;br /&gt;
 |founder=base48&lt;br /&gt;
 |coops=[[User:Lubko|Lubko]]&lt;br /&gt;
 |status=being resurrected&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Small CNC machine, good for [[PCB Milling]].&lt;/div&gt;</summary>
		<author><name>Klubko</name></author>
	</entry>
	<entry>
		<id>https://wiki.base48.cz/w/index.php?title=PCB_Milling&amp;diff=5633</id>
		<title>PCB Milling</title>
		<link rel="alternate" type="text/html" href="https://wiki.base48.cz/w/index.php?title=PCB_Milling&amp;diff=5633"/>
		<updated>2026-08-28T23:43:04Z</updated>

		<summary type="html">&lt;p&gt;Klubko: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Project&lt;br /&gt;
 |founder=[[user:rmarko]]&lt;br /&gt;
 |coops=[[User:Lubko|Lubko]]&lt;br /&gt;
 |status=being resurrected&lt;br /&gt;
 |shortdesc=Milling and drilling PCB&#039;s on LinuxCNC&lt;br /&gt;
 |image=Millingatbase.jpg&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Step-by step PCB milling tutorial.&lt;br /&gt;
&lt;br /&gt;
= Board preparation =&lt;br /&gt;
&lt;br /&gt;
== Required software ==&lt;br /&gt;
&lt;br /&gt;
Make sure you have following tools installed:&lt;br /&gt;
&lt;br /&gt;
* Kicad or Eagle&lt;br /&gt;
* pcb2gcode - conversion of Gerber files to G-code&lt;br /&gt;
* pcb2gcodeGUI - GUI for pcb2gcode&lt;br /&gt;
* Camotics - G-code simulator for verification (optional)&lt;br /&gt;
* hacked_cnc - control, visualization and G-code leveling (optional, installed on linuxcnc host)&lt;br /&gt;
&lt;br /&gt;
On Fedora pcb2gcode(GUI) can be installed from packages:&lt;br /&gt;
{{cmd|code=&lt;br /&gt;
dnf install pcb2gcode pcb2gcodeGUI&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Kicad export ==&lt;br /&gt;
&lt;br /&gt;
Note: it&#039;s better to export gerbers and gcode to separate folder, sometimes you need&lt;br /&gt;
to re-export stuff to correct for errors and you don&#039;t want to mix files between revisions.&lt;br /&gt;
&lt;br /&gt;
To export Gerber files from Kicad&lt;br /&gt;
* choose File -&amp;gt; Plot&lt;br /&gt;
* set &#039;&#039;Plot&#039;&#039; format to &#039;&#039;Gerber&#039;&#039; (default)&lt;br /&gt;
* set &#039;&#039;Exclude PCB edge from other layer&#039;&#039;&lt;br /&gt;
* select layers to export - depending on your design this is either F.Cu or B.Cu and Edge.Cuts layers&lt;br /&gt;
* click &#039;&#039;Plot&#039;&#039; on the bottom of the window&lt;br /&gt;
* click &#039;&#039;Generate Drill file&#039;&#039; next to &#039;&#039;Plot&#039;&#039;&lt;br /&gt;
* set &#039;&#039;Drill Units&#039;&#039; to &#039;&#039;Millimeters&#039;&#039;&lt;br /&gt;
* set &#039;&#039;Drill Origin&#039;&#039; to &#039;&#039;Absolute&#039;&#039;&lt;br /&gt;
* click &#039;&#039;Drill File&#039;&#039; button on the right side of the window&lt;br /&gt;
&lt;br /&gt;
== G-Code conversion ==&lt;br /&gt;
&lt;br /&gt;
To convert Gerbers to G-code use either pcb2gcode from command line&lt;br /&gt;
or pcb2gcodeGUI.&lt;br /&gt;
&lt;br /&gt;
Make sure to &#039;&#039;&#039;set correct drill side&#039;&#039;&#039;, if your design is on F.Cu you want to drill from the front side (--dril-side=front) and vice versa.&lt;br /&gt;
&lt;br /&gt;
If you don&#039;t want to switch tools for drilling choose One drill option (--onedrill=true) which merges all drill operations to one&lt;br /&gt;
file (bit size).&lt;br /&gt;
&lt;br /&gt;
== Simulation / preview ==&lt;br /&gt;
&lt;br /&gt;
You can verify if everything is correct by importing all files to Camotics G-code simulator.&lt;br /&gt;
&lt;br /&gt;
Ideally your board should start at positive X, Y coordinates with lower left corner near X0/Y0.&lt;br /&gt;
&lt;br /&gt;
== File upload ==&lt;br /&gt;
&lt;br /&gt;
Upload folder to LinuxCNC machine:&lt;br /&gt;
{{cmd|code=&lt;br /&gt;
scp -r project/ base@linuxcnc.base48.cz:&amp;lt;your_nick&amp;gt;/&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
= Machining =&lt;br /&gt;
&lt;br /&gt;
== Machine preparation ==&lt;br /&gt;
&lt;br /&gt;
* Start linuxcnc machine (reachable at linuxcnc.base48.cz)&lt;br /&gt;
* Start machine controller&lt;br /&gt;
* Start cooling pump&lt;br /&gt;
* Pick a V-shaped tool from the box and install it&lt;br /&gt;
&lt;br /&gt;
== Clamping ==&lt;br /&gt;
&lt;br /&gt;
Make sure to clamp PCB blank as good as possible as it&#039;s critical for the outcome of the leveling and milling.&lt;br /&gt;
&lt;br /&gt;
* Clamp PCB blank on top of piece of wood with at least 4 clamps&lt;br /&gt;
* Make sure RED wire is touching the PCB, it has to be put under one of the clamps so it won&#039;t come loose&lt;br /&gt;
&lt;br /&gt;
== LinuxCNC ==&lt;br /&gt;
&lt;br /&gt;
* Start LinuxCNC by running base_mill shortcut on the desktop&lt;br /&gt;
* Enable machine control by disabling emergency stop (F1) and enabling power (F2)&lt;br /&gt;
* Position the machine with arrow keys to a starting point (bottom left corner of your future pcb)&lt;br /&gt;
* Home each axis of the machine, don&#039;t forget to home A axis as well&lt;br /&gt;
* Load F.Cu or B.Cu G-code file&lt;br /&gt;
* Try moving machine around displayed job to make sure it can actually reach all sides of the job without collisions&lt;br /&gt;
* Switch to MDI tab (F5) (all the required commands in the following section should be present in the history)&lt;br /&gt;
** To get to the starting point run &#039;&#039;&#039;G0 X0 Y0&#039;&#039;&#039;&lt;br /&gt;
** To home Z-axis use &#039;&#039;&#039;G38.2 Z-100 F30&#039;&#039;&#039;&lt;br /&gt;
** Go back to manual tab and &#039;&#039;&#039;re-home Z axis&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Leveling ==&lt;br /&gt;
&lt;br /&gt;
* Switch to workspace 3, open terminal and find a directory with your jobs G-code files&lt;br /&gt;
* Run pcb2gcode_postproc.py in that folder&lt;br /&gt;
* Switch to workspace 4, find terminals with hacked_cnc directories&lt;br /&gt;
* In the first terminal (&#039;&#039;~/hacked_cnc&#039;&#039;) run&lt;br /&gt;
{{cmd|code=&lt;br /&gt;
./hcc server --linuxcnc&lt;br /&gt;
}}&lt;br /&gt;
* In the second terminal (&#039;&#039;~/hacked_cnc/hc/ui/probe/&#039;&#039;) run&lt;br /&gt;
{{cmd|code=&lt;br /&gt;
./probe.py&lt;br /&gt;
}}&lt;br /&gt;
* Open postprocessed file in probe GUI e.g. &#039;&#039;proj_front_post.ngc&#039;&#039;&lt;br /&gt;
* Check if there are enough probe points for the size of your board and andjust if not&lt;br /&gt;
* Probing first goes to &#039;&#039;&#039;-margin&#039;&#039;&#039; which means it will start at &#039;&#039;&#039;X-3&#039;&#039;&#039; (default margin of 3mm) if your board stars at &#039;&#039;&#039;X0&#039;&#039;&#039;, make sure there&#039;s enough free space for this move if you&#039;re tight on the space of the blank PCB - the margin has to be at least 1mm for leveling to work&lt;br /&gt;
* Run &#039;&#039;&#039;Run Probe&#039;&#039;&#039;&lt;br /&gt;
* When probing is done run &#039;&#039;&#039;Process&#039;&#039;&#039;&lt;br /&gt;
* File is automatically saved with &#039;&#039;lvl_&#039;&#039; prefix when processing is done&lt;br /&gt;
* Now switch back to LinuxCNC window and load suffixed file&lt;br /&gt;
&lt;br /&gt;
== Milling ==&lt;br /&gt;
&lt;br /&gt;
* Start job with blue arrow button&lt;br /&gt;
* Hope for the best, abort with F1 if stuff goes wrong&lt;br /&gt;
&lt;br /&gt;
== Adjusting milling depth ==&lt;br /&gt;
&lt;br /&gt;
If your board is not milled deep enough&lt;br /&gt;
* Stop job with F1&lt;br /&gt;
* Disable safety stop by pressing F1 again&lt;br /&gt;
* In MDI tab&lt;br /&gt;
** Move machine to Z1 with &#039;&#039;&#039;G0 Z1&#039;&#039;&#039;&lt;br /&gt;
** Set machine position to e.g. Z1.1 to add 0.1mm with &#039;&#039;&#039;G92 Z1.1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Drilling ==&lt;br /&gt;
&lt;br /&gt;
* Load drill file (e.g. &#039;&#039;drill_post.ngc&#039;&#039;) &lt;br /&gt;
* Install correct drill bit&lt;br /&gt;
* To re-establish Z height again&lt;br /&gt;
** Go to Manual tab (F3) and position a head outside of the milled PCB near clamp with probing wire attached so probing is possible, then few millimeters on top of the spot but don&#039;t try to make contact&lt;br /&gt;
** Go to MDI tab (F5) and issue probing command &#039;&#039;&#039;G38.2 Z-100 F30&#039;&#039;&#039;&lt;br /&gt;
** Go back to manual tab and &#039;&#039;&#039;re-home Z axis&#039;&#039;&#039;&lt;br /&gt;
* Start drilling job&lt;br /&gt;
&lt;br /&gt;
== Outline ==&lt;br /&gt;
&lt;br /&gt;
* Load outline file (e.g. &#039;&#039;outline_post.ngc&#039;&#039;)&lt;br /&gt;
* Load 3.175mm endmill&lt;br /&gt;
* Go to manual tab a re-establish Z height again by positioning tool slightly over the board&lt;br /&gt;
* &#039;&#039;&#039;re-home Z axis&#039;&#039;&#039;&lt;br /&gt;
* Start job&lt;br /&gt;
&lt;br /&gt;
= Post-processing =&lt;br /&gt;
&lt;br /&gt;
* Clean your board with sandpaper and alcohol&lt;br /&gt;
* Use flux spray&lt;br /&gt;
* Leave a board on a warm place for a while&lt;br /&gt;
* Clean-up and power down the machine meanwhile, remove tool from tool holder&lt;br /&gt;
* Take pictures&lt;br /&gt;
* Solder components&lt;br /&gt;
* Profit&lt;br /&gt;
&lt;br /&gt;
= Gallery =&lt;br /&gt;
&lt;br /&gt;
Feel free to upload pictures of your finished PCBs and add link(s) to following gallery:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=200&amp;gt;&lt;br /&gt;
File:Milled-pcb-esp8266.jpg&lt;br /&gt;
File:Milled-pcb-phsensor.jpg&lt;br /&gt;
File:Milling_pcb2_stm32f042.jpg&lt;br /&gt;
File:Oven.jpg&lt;br /&gt;
File:3020pcb.jpg&lt;br /&gt;
File:Hc pcb.jpg&lt;br /&gt;
File:Synth pcb.jpg&lt;br /&gt;
File:Millingatbase.jpg&lt;br /&gt;
File:Audiothing0.jpeg&lt;br /&gt;
File:Audiothing1.jpeg&lt;br /&gt;
File:Audiothing2.jpg&lt;br /&gt;
File:Mag brk.jpeg&lt;br /&gt;
File:RN2348PCB.JPG&lt;br /&gt;
File:Cpld brk.jpg&lt;br /&gt;
File:Amp2.jpg&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Oldstuff mov to git ====&lt;br /&gt;
&lt;br /&gt;
=== pcb2gcode ===&lt;br /&gt;
  git clone https://github.com/pcb2gcode/pcb2gcode&lt;br /&gt;
sample make_gcode script&lt;br /&gt;
{{cmd|code=&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
pcb2gcode \&lt;br /&gt;
--front=front-gerber-F.Cu.gtl \&lt;br /&gt;
--back=back-gerber-B.Cu.gbl \&lt;br /&gt;
--drill=drill.drl \&lt;br /&gt;
--outline=Edge.Cuts.gm1 \&lt;br /&gt;
--output-dir=gcode \&lt;br /&gt;
--dpi=1000 \&lt;br /&gt;
--metric=true \&lt;br /&gt;
--metricoutput=true \&lt;br /&gt;
--mirror-absolute=false \&lt;br /&gt;
--optimise=true \&lt;br /&gt;
--tile-x=1 --tile-y=1 \&lt;br /&gt;
--vectorial=false \&lt;br /&gt;
--zchange=20.0000 \&lt;br /&gt;
--zero-start=true \&lt;br /&gt;
--zsafe=2.0000 \&lt;br /&gt;
--extra-passes=3 \&lt;br /&gt;
--mill-feed=450 \&lt;br /&gt;
--mill-speed=24000 \&lt;br /&gt;
--offset=0.1500 \&lt;br /&gt;
--zwork=-0.0500 \&lt;br /&gt;
--drill-feed=250 \&lt;br /&gt;
--drill-side=back \&lt;br /&gt;
--drill-speed=12000 \&lt;br /&gt;
--milldrill=false \&lt;br /&gt;
--nog81=false \&lt;br /&gt;
--onedrill=false \&lt;br /&gt;
--zdrill=-3.0000 \&lt;br /&gt;
--bridges=0.8000 \&lt;br /&gt;
--bridgesnum=4 \&lt;br /&gt;
--cut-feed=200 \&lt;br /&gt;
--cut-infeed=1.0000 \&lt;br /&gt;
--cut-side=back \&lt;br /&gt;
--cut-speed=24000 \&lt;br /&gt;
--cutter-diameter=3.1750 \&lt;br /&gt;
--fill-outline=true \&lt;br /&gt;
--outline-width=0.2000 \&lt;br /&gt;
--zbridges=-0.0500 \&lt;br /&gt;
--zcut=-1.7000&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Klubko</name></author>
	</entry>
	<entry>
		<id>https://wiki.base48.cz/w/index.php?title=PlotBot&amp;diff=5632</id>
		<title>PlotBot</title>
		<link rel="alternate" type="text/html" href="https://wiki.base48.cz/w/index.php?title=PlotBot&amp;diff=5632"/>
		<updated>2026-08-28T23:42:49Z</updated>

		<summary type="html">&lt;p&gt;Klubko: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Project&lt;br /&gt;
 |name=Base48 PlotBot&lt;br /&gt;
 |image=Turtle-bots.jpg&lt;br /&gt;
 |founder=niklasroy.com/robotfactory&lt;br /&gt;
 |coops=[[User:Lubko|Lubko]], vanicka&lt;br /&gt;
 |status=active&lt;br /&gt;
 |tags=hw&lt;br /&gt;
 |shortdesc=Whiteboard drawing bot&lt;br /&gt;
 |created=2025-25-09&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== What is this ==&lt;br /&gt;
A whiteboard drawing bot project. We didn&#039;t design the thing, but we built a couple of robots. Along the way, we made modifications and learned a lot.&lt;br /&gt;
&lt;br /&gt;
Among things we learned is that it&#039;s a perfect project to get start with robotics.&lt;br /&gt;
&lt;br /&gt;
Here&#039;s where it comes from:&lt;br /&gt;
&lt;br /&gt;
https://hackaday.com/2025/09/02/this-plotter-knows-no-boundaries/&lt;br /&gt;
&lt;br /&gt;
https://www.niklasroy.com/robotfactory/&lt;br /&gt;
&lt;br /&gt;
The above link actually contains everything needed to get the bot going. Below are adjustments for parts we had.&lt;br /&gt;
&lt;br /&gt;
== Our modifications ==&lt;br /&gt;
Our FreeCAD model is here: [https://codeberg.org/lubko/turtle-robot/src/branch/main/tiny_turtle_plotter_CAD.FCStd tiny_turtle_plotter_CAD.FCStd]&lt;br /&gt;
&lt;br /&gt;
Modified parts typically have &amp;quot;new&amp;quot; in their name. Sorry if it&#039;s messy. First time FreeCAD.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:555688595 1215584740611888 2776984424721907890 n.jpg|3D-printed parts for original build&lt;br /&gt;
File:Turtle-endstop.jpg|Different endstop microswitch&lt;br /&gt;
File:Turtle-switch-ball.jpg|Different size roller and endstop&lt;br /&gt;
File:Turtle-ball.jpg|Roller ball&lt;br /&gt;
File:Drawbot-ball2.jpg|Roller ball&lt;br /&gt;
File:Turtle-wheels.jpg|Wheels and tyres&lt;br /&gt;
File:Turtle-wheels1.jpg|Wheels&lt;br /&gt;
File:Turtle-carriage.jpg|Wheel carriage&lt;br /&gt;
File:Turtle-steppers.jpg|Stepper motors&lt;br /&gt;
File:Turtle-pen-lifter.jpg|Hacked pen lifter&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Endstops ===&lt;br /&gt;
The microswitches come in different shapes and forms. We added extra prongs to the bumper ring to engage with wider range of microswitches.&lt;br /&gt;
&lt;br /&gt;
=== Roller ball ===&lt;br /&gt;
We used a larger furniture ball, which in turn means we had to make room in the parts in two lowest layer and make the wheels larger.&lt;br /&gt;
&lt;br /&gt;
=== Wheels ===&lt;br /&gt;
The wheels were too small, possibly because our roller ball was bigger. They were also rubbing against layers 1 and 2, and appeared to be made for 5mm shaft in the stepper (our had 6mm). This has, of course, thrown off the geometry. a little.&lt;br /&gt;
&lt;br /&gt;
We also had different size tyres.&lt;br /&gt;
&lt;br /&gt;
=== Power banks ===&lt;br /&gt;
Ones we had didn&#039;t fit. We adjusted the layers 1 and made different versions of the upper ring to hold them in place.&lt;br /&gt;
&lt;br /&gt;
=== Pen lifter ===&lt;br /&gt;
One robot is equipped with a more precise pen lifter that utilizes linear motion bearings (LM8) on 8mm rods.&lt;br /&gt;
&lt;br /&gt;
== Control Board ==&lt;br /&gt;
[[File:Turtle-bot-v3-pcb-back-etch.png|thumb|Traces can be drawn on copper laminate (cuprexit) with toner transfer technique and chemically etched. Negative printout for PCB etching: [https://codeberg.org/lubko/turtle-robot/src/branch/main/artifacts/turtle-bot-v3-pcb-back-etch.pdf turtle-bot-v3-pcb-back-etch.pdf]]]&lt;br /&gt;
We&#039;ve drawn a PCB that can be sent to a manufacturing house, but is also optimized for chemical or CNC etching!&lt;br /&gt;
&lt;br /&gt;
Schematic: [https://codeberg.org/lubko/turtle-robot/src/branch/main/artifacts/turtle-bot-v3-schematic.pdf turtle-bot-v3-schematic.pdf]&lt;br /&gt;
&lt;br /&gt;
Fabrication notes: [https://codeberg.org/lubko/turtle-robot/src/branch/main/artifacts/turtle-bot-v3-pcb-fab-notes.pdf turtle-bot-v3-pcb-fab-notes.pdf]&lt;br /&gt;
&lt;br /&gt;
Negative printout for PCB etching: [https://codeberg.org/lubko/turtle-robot/src/branch/main/artifacts/turtle-bot-v3-pcb-back-etch.pdf turtle-bot-v3-pcb-back-etch.pdf]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:630198759 1327012059469155 4819732943989781073 n.jpg|Cutting copper boards&lt;br /&gt;
File:631316442 1327012126135815 8139523202493073450 n.jpg|Chilling in a pool after toner transfer&lt;br /&gt;
File:640173458 1339273461576348 8523389435759424901 n.jpg|Toner transfer done, paper peeled off&lt;br /&gt;
File:633395964 1327012302802464 3349586654434092500 n.jpg|Copper etching&lt;br /&gt;
File:640446084 1339273764909651 2435820910506464661 n.jpg|Board fully etched&lt;br /&gt;
File:640928983 1339273704909657 7028863716144500154 n.jpg|Posing for a picture&lt;br /&gt;
File:Turtle-front.jpg|Perfboards are a no-hassle option&lt;br /&gt;
File:Turtle-pcb1.jpg|Back side of a perfboard&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Software ==&lt;br /&gt;
Arduino code: https://github.com/vranicka/PlotBot&lt;br /&gt;
&lt;br /&gt;
== Shopping list ==&lt;br /&gt;
&lt;br /&gt;
=== CY-8H roller ball ===&lt;br /&gt;
&lt;br /&gt;
* https://www.aliexpress.com/w/wholesale-CY%2525252d8H-10-pcs.html?spm=a2g0o.detail.search.0&lt;br /&gt;
&lt;br /&gt;
=== Threaded rod ===&lt;br /&gt;
&lt;br /&gt;
* https://www.hornbach.cz/p/zavitova-tyc-a2-m4-1m-nerez/12178521/&lt;br /&gt;
&lt;br /&gt;
=== M4 nuts ===&lt;br /&gt;
&lt;br /&gt;
* https://www.hornbach.cz/p/matice-presna-m4-sestihranna-nerez-a2-30ks/8718280/&lt;br /&gt;
&lt;br /&gt;
=== Stepper ===&lt;br /&gt;
&lt;br /&gt;
* https://www.gme.cz/v/1500758/md775047-dc-motor-krokovy-5v&lt;br /&gt;
* https://www.aliexpress.com/w/wholesale-stepper-5v.html?spm=a2g0o.detail.search.0&lt;br /&gt;
&lt;br /&gt;
=== Arduino Nano ===&lt;br /&gt;
&lt;br /&gt;
* https://www.aliexpress.com/w/wholesale-arduino-nano.html?spm=a2g0o.productlist.search.0&lt;br /&gt;
* https://www.gme.cz/v/1514835/usb-c-klon-arduino-nano&lt;br /&gt;
&lt;br /&gt;
=== OD23xCS2.5 Rubber O-Ring ===&lt;br /&gt;
&lt;br /&gt;
* https://www.aliexpress.com/w/wholesale-OD-23-CS-2.5-rubber-o%2525252dring.html?spm=a2g0o.productlist.search.0&lt;br /&gt;
&lt;br /&gt;
=== Micro switch with 20mm-35mm lever ===&lt;br /&gt;
&lt;br /&gt;
* https://www.gme.cz/v/1496684/zippy-sm-05s-07a0-z-mikrospinac&lt;br /&gt;
* https://www.aliexpress.com/w/wholesale-limit-micro-switch.html?spm=a2g0o.productlist.search.0&lt;br /&gt;
&lt;br /&gt;
=== ULN2803 motor driver ===&lt;br /&gt;
&lt;br /&gt;
* https://www.gme.cz/v/1519030/taejin-htc-korea-uln2803an-darlingtonuv-proudovy-budic&lt;br /&gt;
* https://www.aliexpress.com/w/wholesale-uln2803-dip.html?spm=a2g0o.home.search.0&lt;br /&gt;
&lt;br /&gt;
== More pictures ==&lt;br /&gt;
omg somebody please take a picture of it drawing and writing&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:20260119 145224.jpg|Robot coming alive&lt;br /&gt;
File:555534763 1215584797278549 3519708831245411009 n.jpg|Robot skeleton&lt;br /&gt;
File:PlotBot.jpg|In action&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;/div&gt;</summary>
		<author><name>Klubko</name></author>
	</entry>
	<entry>
		<id>https://wiki.base48.cz/w/index.php?title=PCB_Milling&amp;diff=5631</id>
		<title>PCB Milling</title>
		<link rel="alternate" type="text/html" href="https://wiki.base48.cz/w/index.php?title=PCB_Milling&amp;diff=5631"/>
		<updated>2026-08-28T23:42:43Z</updated>

		<summary type="html">&lt;p&gt;Klubko: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Project&lt;br /&gt;
 |founder=[[user:rmarko]]&lt;br /&gt;
 |coops=[[User:Lubko|Lubko]]&lt;br /&gt;
 |status=being resurrected&lt;br /&gt;
 |shortdesc=Milling and drilling PCB&#039;s on LinuxCNC&lt;br /&gt;
 |image=Millingatbase.jpg&lt;br /&gt;
}}&lt;br /&gt;
{{Project&lt;br /&gt;
&lt;br /&gt;
Step-by step PCB milling tutorial.&lt;br /&gt;
&lt;br /&gt;
= Board preparation =&lt;br /&gt;
&lt;br /&gt;
== Required software ==&lt;br /&gt;
&lt;br /&gt;
Make sure you have following tools installed:&lt;br /&gt;
&lt;br /&gt;
* Kicad or Eagle&lt;br /&gt;
* pcb2gcode - conversion of Gerber files to G-code&lt;br /&gt;
* pcb2gcodeGUI - GUI for pcb2gcode&lt;br /&gt;
* Camotics - G-code simulator for verification (optional)&lt;br /&gt;
* hacked_cnc - control, visualization and G-code leveling (optional, installed on linuxcnc host)&lt;br /&gt;
&lt;br /&gt;
On Fedora pcb2gcode(GUI) can be installed from packages:&lt;br /&gt;
{{cmd|code=&lt;br /&gt;
dnf install pcb2gcode pcb2gcodeGUI&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Kicad export ==&lt;br /&gt;
&lt;br /&gt;
Note: it&#039;s better to export gerbers and gcode to separate folder, sometimes you need&lt;br /&gt;
to re-export stuff to correct for errors and you don&#039;t want to mix files between revisions.&lt;br /&gt;
&lt;br /&gt;
To export Gerber files from Kicad&lt;br /&gt;
* choose File -&amp;gt; Plot&lt;br /&gt;
* set &#039;&#039;Plot&#039;&#039; format to &#039;&#039;Gerber&#039;&#039; (default)&lt;br /&gt;
* set &#039;&#039;Exclude PCB edge from other layer&#039;&#039;&lt;br /&gt;
* select layers to export - depending on your design this is either F.Cu or B.Cu and Edge.Cuts layers&lt;br /&gt;
* click &#039;&#039;Plot&#039;&#039; on the bottom of the window&lt;br /&gt;
* click &#039;&#039;Generate Drill file&#039;&#039; next to &#039;&#039;Plot&#039;&#039;&lt;br /&gt;
* set &#039;&#039;Drill Units&#039;&#039; to &#039;&#039;Millimeters&#039;&#039;&lt;br /&gt;
* set &#039;&#039;Drill Origin&#039;&#039; to &#039;&#039;Absolute&#039;&#039;&lt;br /&gt;
* click &#039;&#039;Drill File&#039;&#039; button on the right side of the window&lt;br /&gt;
&lt;br /&gt;
== G-Code conversion ==&lt;br /&gt;
&lt;br /&gt;
To convert Gerbers to G-code use either pcb2gcode from command line&lt;br /&gt;
or pcb2gcodeGUI.&lt;br /&gt;
&lt;br /&gt;
Make sure to &#039;&#039;&#039;set correct drill side&#039;&#039;&#039;, if your design is on F.Cu you want to drill from the front side (--dril-side=front) and vice versa.&lt;br /&gt;
&lt;br /&gt;
If you don&#039;t want to switch tools for drilling choose One drill option (--onedrill=true) which merges all drill operations to one&lt;br /&gt;
file (bit size).&lt;br /&gt;
&lt;br /&gt;
== Simulation / preview ==&lt;br /&gt;
&lt;br /&gt;
You can verify if everything is correct by importing all files to Camotics G-code simulator.&lt;br /&gt;
&lt;br /&gt;
Ideally your board should start at positive X, Y coordinates with lower left corner near X0/Y0.&lt;br /&gt;
&lt;br /&gt;
== File upload ==&lt;br /&gt;
&lt;br /&gt;
Upload folder to LinuxCNC machine:&lt;br /&gt;
{{cmd|code=&lt;br /&gt;
scp -r project/ base@linuxcnc.base48.cz:&amp;lt;your_nick&amp;gt;/&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
= Machining =&lt;br /&gt;
&lt;br /&gt;
== Machine preparation ==&lt;br /&gt;
&lt;br /&gt;
* Start linuxcnc machine (reachable at linuxcnc.base48.cz)&lt;br /&gt;
* Start machine controller&lt;br /&gt;
* Start cooling pump&lt;br /&gt;
* Pick a V-shaped tool from the box and install it&lt;br /&gt;
&lt;br /&gt;
== Clamping ==&lt;br /&gt;
&lt;br /&gt;
Make sure to clamp PCB blank as good as possible as it&#039;s critical for the outcome of the leveling and milling.&lt;br /&gt;
&lt;br /&gt;
* Clamp PCB blank on top of piece of wood with at least 4 clamps&lt;br /&gt;
* Make sure RED wire is touching the PCB, it has to be put under one of the clamps so it won&#039;t come loose&lt;br /&gt;
&lt;br /&gt;
== LinuxCNC ==&lt;br /&gt;
&lt;br /&gt;
* Start LinuxCNC by running base_mill shortcut on the desktop&lt;br /&gt;
* Enable machine control by disabling emergency stop (F1) and enabling power (F2)&lt;br /&gt;
* Position the machine with arrow keys to a starting point (bottom left corner of your future pcb)&lt;br /&gt;
* Home each axis of the machine, don&#039;t forget to home A axis as well&lt;br /&gt;
* Load F.Cu or B.Cu G-code file&lt;br /&gt;
* Try moving machine around displayed job to make sure it can actually reach all sides of the job without collisions&lt;br /&gt;
* Switch to MDI tab (F5) (all the required commands in the following section should be present in the history)&lt;br /&gt;
** To get to the starting point run &#039;&#039;&#039;G0 X0 Y0&#039;&#039;&#039;&lt;br /&gt;
** To home Z-axis use &#039;&#039;&#039;G38.2 Z-100 F30&#039;&#039;&#039;&lt;br /&gt;
** Go back to manual tab and &#039;&#039;&#039;re-home Z axis&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Leveling ==&lt;br /&gt;
&lt;br /&gt;
* Switch to workspace 3, open terminal and find a directory with your jobs G-code files&lt;br /&gt;
* Run pcb2gcode_postproc.py in that folder&lt;br /&gt;
* Switch to workspace 4, find terminals with hacked_cnc directories&lt;br /&gt;
* In the first terminal (&#039;&#039;~/hacked_cnc&#039;&#039;) run&lt;br /&gt;
{{cmd|code=&lt;br /&gt;
./hcc server --linuxcnc&lt;br /&gt;
}}&lt;br /&gt;
* In the second terminal (&#039;&#039;~/hacked_cnc/hc/ui/probe/&#039;&#039;) run&lt;br /&gt;
{{cmd|code=&lt;br /&gt;
./probe.py&lt;br /&gt;
}}&lt;br /&gt;
* Open postprocessed file in probe GUI e.g. &#039;&#039;proj_front_post.ngc&#039;&#039;&lt;br /&gt;
* Check if there are enough probe points for the size of your board and andjust if not&lt;br /&gt;
* Probing first goes to &#039;&#039;&#039;-margin&#039;&#039;&#039; which means it will start at &#039;&#039;&#039;X-3&#039;&#039;&#039; (default margin of 3mm) if your board stars at &#039;&#039;&#039;X0&#039;&#039;&#039;, make sure there&#039;s enough free space for this move if you&#039;re tight on the space of the blank PCB - the margin has to be at least 1mm for leveling to work&lt;br /&gt;
* Run &#039;&#039;&#039;Run Probe&#039;&#039;&#039;&lt;br /&gt;
* When probing is done run &#039;&#039;&#039;Process&#039;&#039;&#039;&lt;br /&gt;
* File is automatically saved with &#039;&#039;lvl_&#039;&#039; prefix when processing is done&lt;br /&gt;
* Now switch back to LinuxCNC window and load suffixed file&lt;br /&gt;
&lt;br /&gt;
== Milling ==&lt;br /&gt;
&lt;br /&gt;
* Start job with blue arrow button&lt;br /&gt;
* Hope for the best, abort with F1 if stuff goes wrong&lt;br /&gt;
&lt;br /&gt;
== Adjusting milling depth ==&lt;br /&gt;
&lt;br /&gt;
If your board is not milled deep enough&lt;br /&gt;
* Stop job with F1&lt;br /&gt;
* Disable safety stop by pressing F1 again&lt;br /&gt;
* In MDI tab&lt;br /&gt;
** Move machine to Z1 with &#039;&#039;&#039;G0 Z1&#039;&#039;&#039;&lt;br /&gt;
** Set machine position to e.g. Z1.1 to add 0.1mm with &#039;&#039;&#039;G92 Z1.1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Drilling ==&lt;br /&gt;
&lt;br /&gt;
* Load drill file (e.g. &#039;&#039;drill_post.ngc&#039;&#039;) &lt;br /&gt;
* Install correct drill bit&lt;br /&gt;
* To re-establish Z height again&lt;br /&gt;
** Go to Manual tab (F3) and position a head outside of the milled PCB near clamp with probing wire attached so probing is possible, then few millimeters on top of the spot but don&#039;t try to make contact&lt;br /&gt;
** Go to MDI tab (F5) and issue probing command &#039;&#039;&#039;G38.2 Z-100 F30&#039;&#039;&#039;&lt;br /&gt;
** Go back to manual tab and &#039;&#039;&#039;re-home Z axis&#039;&#039;&#039;&lt;br /&gt;
* Start drilling job&lt;br /&gt;
&lt;br /&gt;
== Outline ==&lt;br /&gt;
&lt;br /&gt;
* Load outline file (e.g. &#039;&#039;outline_post.ngc&#039;&#039;)&lt;br /&gt;
* Load 3.175mm endmill&lt;br /&gt;
* Go to manual tab a re-establish Z height again by positioning tool slightly over the board&lt;br /&gt;
* &#039;&#039;&#039;re-home Z axis&#039;&#039;&#039;&lt;br /&gt;
* Start job&lt;br /&gt;
&lt;br /&gt;
= Post-processing =&lt;br /&gt;
&lt;br /&gt;
* Clean your board with sandpaper and alcohol&lt;br /&gt;
* Use flux spray&lt;br /&gt;
* Leave a board on a warm place for a while&lt;br /&gt;
* Clean-up and power down the machine meanwhile, remove tool from tool holder&lt;br /&gt;
* Take pictures&lt;br /&gt;
* Solder components&lt;br /&gt;
* Profit&lt;br /&gt;
&lt;br /&gt;
= Gallery =&lt;br /&gt;
&lt;br /&gt;
Feel free to upload pictures of your finished PCBs and add link(s) to following gallery:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=200&amp;gt;&lt;br /&gt;
File:Milled-pcb-esp8266.jpg&lt;br /&gt;
File:Milled-pcb-phsensor.jpg&lt;br /&gt;
File:Milling_pcb2_stm32f042.jpg&lt;br /&gt;
File:Oven.jpg&lt;br /&gt;
File:3020pcb.jpg&lt;br /&gt;
File:Hc pcb.jpg&lt;br /&gt;
File:Synth pcb.jpg&lt;br /&gt;
File:Millingatbase.jpg&lt;br /&gt;
File:Audiothing0.jpeg&lt;br /&gt;
File:Audiothing1.jpeg&lt;br /&gt;
File:Audiothing2.jpg&lt;br /&gt;
File:Mag brk.jpeg&lt;br /&gt;
File:RN2348PCB.JPG&lt;br /&gt;
File:Cpld brk.jpg&lt;br /&gt;
File:Amp2.jpg&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Oldstuff mov to git ====&lt;br /&gt;
&lt;br /&gt;
=== pcb2gcode ===&lt;br /&gt;
  git clone https://github.com/pcb2gcode/pcb2gcode&lt;br /&gt;
sample make_gcode script&lt;br /&gt;
{{cmd|code=&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
pcb2gcode \&lt;br /&gt;
--front=front-gerber-F.Cu.gtl \&lt;br /&gt;
--back=back-gerber-B.Cu.gbl \&lt;br /&gt;
--drill=drill.drl \&lt;br /&gt;
--outline=Edge.Cuts.gm1 \&lt;br /&gt;
--output-dir=gcode \&lt;br /&gt;
--dpi=1000 \&lt;br /&gt;
--metric=true \&lt;br /&gt;
--metricoutput=true \&lt;br /&gt;
--mirror-absolute=false \&lt;br /&gt;
--optimise=true \&lt;br /&gt;
--tile-x=1 --tile-y=1 \&lt;br /&gt;
--vectorial=false \&lt;br /&gt;
--zchange=20.0000 \&lt;br /&gt;
--zero-start=true \&lt;br /&gt;
--zsafe=2.0000 \&lt;br /&gt;
--extra-passes=3 \&lt;br /&gt;
--mill-feed=450 \&lt;br /&gt;
--mill-speed=24000 \&lt;br /&gt;
--offset=0.1500 \&lt;br /&gt;
--zwork=-0.0500 \&lt;br /&gt;
--drill-feed=250 \&lt;br /&gt;
--drill-side=back \&lt;br /&gt;
--drill-speed=12000 \&lt;br /&gt;
--milldrill=false \&lt;br /&gt;
--nog81=false \&lt;br /&gt;
--onedrill=false \&lt;br /&gt;
--zdrill=-3.0000 \&lt;br /&gt;
--bridges=0.8000 \&lt;br /&gt;
--bridgesnum=4 \&lt;br /&gt;
--cut-feed=200 \&lt;br /&gt;
--cut-infeed=1.0000 \&lt;br /&gt;
--cut-side=back \&lt;br /&gt;
--cut-speed=24000 \&lt;br /&gt;
--cutter-diameter=3.1750 \&lt;br /&gt;
--fill-outline=true \&lt;br /&gt;
--outline-width=0.2000 \&lt;br /&gt;
--zbridges=-0.0500 \&lt;br /&gt;
--zcut=-1.7000&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Klubko</name></author>
	</entry>
	<entry>
		<id>https://wiki.base48.cz/w/index.php?title=PCBMilling&amp;diff=5630</id>
		<title>PCBMilling</title>
		<link rel="alternate" type="text/html" href="https://wiki.base48.cz/w/index.php?title=PCBMilling&amp;diff=5630"/>
		<updated>2026-08-28T23:37:09Z</updated>

		<summary type="html">&lt;p&gt;Klubko: Klubko moved page PCBMilling to PCB Milling&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[PCB Milling]]&lt;/div&gt;</summary>
		<author><name>Klubko</name></author>
	</entry>
	<entry>
		<id>https://wiki.base48.cz/w/index.php?title=PCB_Milling&amp;diff=5629</id>
		<title>PCB Milling</title>
		<link rel="alternate" type="text/html" href="https://wiki.base48.cz/w/index.php?title=PCB_Milling&amp;diff=5629"/>
		<updated>2026-08-28T23:37:09Z</updated>

		<summary type="html">&lt;p&gt;Klubko: Klubko moved page PCBMilling to PCB Milling&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Project&lt;br /&gt;
 |founder=[[user:rmarko]]&lt;br /&gt;
 |status=active&lt;br /&gt;
 |shortdesc=Milling and drilling PCB&#039;s on LinuxCNC&lt;br /&gt;
 |image=Millingatbase.jpg&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Step-by step PCB milling tutorial.&lt;br /&gt;
&lt;br /&gt;
= Board preparation =&lt;br /&gt;
&lt;br /&gt;
== Required software ==&lt;br /&gt;
&lt;br /&gt;
Make sure you have following tools installed:&lt;br /&gt;
&lt;br /&gt;
* Kicad or Eagle&lt;br /&gt;
* pcb2gcode - conversion of Gerber files to G-code&lt;br /&gt;
* pcb2gcodeGUI - GUI for pcb2gcode&lt;br /&gt;
* Camotics - G-code simulator for verification (optional)&lt;br /&gt;
* hacked_cnc - control, visualization and G-code leveling (optional, installed on linuxcnc host)&lt;br /&gt;
&lt;br /&gt;
On Fedora pcb2gcode(GUI) can be installed from packages:&lt;br /&gt;
{{cmd|code=&lt;br /&gt;
dnf install pcb2gcode pcb2gcodeGUI&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Kicad export ==&lt;br /&gt;
&lt;br /&gt;
Note: it&#039;s better to export gerbers and gcode to separate folder, sometimes you need&lt;br /&gt;
to re-export stuff to correct for errors and you don&#039;t want to mix files between revisions.&lt;br /&gt;
&lt;br /&gt;
To export Gerber files from Kicad&lt;br /&gt;
* choose File -&amp;gt; Plot&lt;br /&gt;
* set &#039;&#039;Plot&#039;&#039; format to &#039;&#039;Gerber&#039;&#039; (default)&lt;br /&gt;
* set &#039;&#039;Exclude PCB edge from other layer&#039;&#039;&lt;br /&gt;
* select layers to export - depending on your design this is either F.Cu or B.Cu and Edge.Cuts layers&lt;br /&gt;
* click &#039;&#039;Plot&#039;&#039; on the bottom of the window&lt;br /&gt;
* click &#039;&#039;Generate Drill file&#039;&#039; next to &#039;&#039;Plot&#039;&#039;&lt;br /&gt;
* set &#039;&#039;Drill Units&#039;&#039; to &#039;&#039;Millimeters&#039;&#039;&lt;br /&gt;
* set &#039;&#039;Drill Origin&#039;&#039; to &#039;&#039;Absolute&#039;&#039;&lt;br /&gt;
* click &#039;&#039;Drill File&#039;&#039; button on the right side of the window&lt;br /&gt;
&lt;br /&gt;
== G-Code conversion ==&lt;br /&gt;
&lt;br /&gt;
To convert Gerbers to G-code use either pcb2gcode from command line&lt;br /&gt;
or pcb2gcodeGUI.&lt;br /&gt;
&lt;br /&gt;
Make sure to &#039;&#039;&#039;set correct drill side&#039;&#039;&#039;, if your design is on F.Cu you want to drill from the front side (--dril-side=front) and vice versa.&lt;br /&gt;
&lt;br /&gt;
If you don&#039;t want to switch tools for drilling choose One drill option (--onedrill=true) which merges all drill operations to one&lt;br /&gt;
file (bit size).&lt;br /&gt;
&lt;br /&gt;
== Simulation / preview ==&lt;br /&gt;
&lt;br /&gt;
You can verify if everything is correct by importing all files to Camotics G-code simulator.&lt;br /&gt;
&lt;br /&gt;
Ideally your board should start at positive X, Y coordinates with lower left corner near X0/Y0.&lt;br /&gt;
&lt;br /&gt;
== File upload ==&lt;br /&gt;
&lt;br /&gt;
Upload folder to LinuxCNC machine:&lt;br /&gt;
{{cmd|code=&lt;br /&gt;
scp -r project/ base@linuxcnc.base48.cz:&amp;lt;your_nick&amp;gt;/&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
= Machining =&lt;br /&gt;
&lt;br /&gt;
== Machine preparation ==&lt;br /&gt;
&lt;br /&gt;
* Start linuxcnc machine (reachable at linuxcnc.base48.cz)&lt;br /&gt;
* Start machine controller&lt;br /&gt;
* Start cooling pump&lt;br /&gt;
* Pick a V-shaped tool from the box and install it&lt;br /&gt;
&lt;br /&gt;
== Clamping ==&lt;br /&gt;
&lt;br /&gt;
Make sure to clamp PCB blank as good as possible as it&#039;s critical for the outcome of the leveling and milling.&lt;br /&gt;
&lt;br /&gt;
* Clamp PCB blank on top of piece of wood with at least 4 clamps&lt;br /&gt;
* Make sure RED wire is touching the PCB, it has to be put under one of the clamps so it won&#039;t come loose&lt;br /&gt;
&lt;br /&gt;
== LinuxCNC ==&lt;br /&gt;
&lt;br /&gt;
* Start LinuxCNC by running base_mill shortcut on the desktop&lt;br /&gt;
* Enable machine control by disabling emergency stop (F1) and enabling power (F2)&lt;br /&gt;
* Position the machine with arrow keys to a starting point (bottom left corner of your future pcb)&lt;br /&gt;
* Home each axis of the machine, don&#039;t forget to home A axis as well&lt;br /&gt;
* Load F.Cu or B.Cu G-code file&lt;br /&gt;
* Try moving machine around displayed job to make sure it can actually reach all sides of the job without collisions&lt;br /&gt;
* Switch to MDI tab (F5) (all the required commands in the following section should be present in the history)&lt;br /&gt;
** To get to the starting point run &#039;&#039;&#039;G0 X0 Y0&#039;&#039;&#039;&lt;br /&gt;
** To home Z-axis use &#039;&#039;&#039;G38.2 Z-100 F30&#039;&#039;&#039;&lt;br /&gt;
** Go back to manual tab and &#039;&#039;&#039;re-home Z axis&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Leveling ==&lt;br /&gt;
&lt;br /&gt;
* Switch to workspace 3, open terminal and find a directory with your jobs G-code files&lt;br /&gt;
* Run pcb2gcode_postproc.py in that folder&lt;br /&gt;
* Switch to workspace 4, find terminals with hacked_cnc directories&lt;br /&gt;
* In the first terminal (&#039;&#039;~/hacked_cnc&#039;&#039;) run&lt;br /&gt;
{{cmd|code=&lt;br /&gt;
./hcc server --linuxcnc&lt;br /&gt;
}}&lt;br /&gt;
* In the second terminal (&#039;&#039;~/hacked_cnc/hc/ui/probe/&#039;&#039;) run&lt;br /&gt;
{{cmd|code=&lt;br /&gt;
./probe.py&lt;br /&gt;
}}&lt;br /&gt;
* Open postprocessed file in probe GUI e.g. &#039;&#039;proj_front_post.ngc&#039;&#039;&lt;br /&gt;
* Check if there are enough probe points for the size of your board and andjust if not&lt;br /&gt;
* Probing first goes to &#039;&#039;&#039;-margin&#039;&#039;&#039; which means it will start at &#039;&#039;&#039;X-3&#039;&#039;&#039; (default margin of 3mm) if your board stars at &#039;&#039;&#039;X0&#039;&#039;&#039;, make sure there&#039;s enough free space for this move if you&#039;re tight on the space of the blank PCB - the margin has to be at least 1mm for leveling to work&lt;br /&gt;
* Run &#039;&#039;&#039;Run Probe&#039;&#039;&#039;&lt;br /&gt;
* When probing is done run &#039;&#039;&#039;Process&#039;&#039;&#039;&lt;br /&gt;
* File is automatically saved with &#039;&#039;lvl_&#039;&#039; prefix when processing is done&lt;br /&gt;
* Now switch back to LinuxCNC window and load suffixed file&lt;br /&gt;
&lt;br /&gt;
== Milling ==&lt;br /&gt;
&lt;br /&gt;
* Start job with blue arrow button&lt;br /&gt;
* Hope for the best, abort with F1 if stuff goes wrong&lt;br /&gt;
&lt;br /&gt;
== Adjusting milling depth ==&lt;br /&gt;
&lt;br /&gt;
If your board is not milled deep enough&lt;br /&gt;
* Stop job with F1&lt;br /&gt;
* Disable safety stop by pressing F1 again&lt;br /&gt;
* In MDI tab&lt;br /&gt;
** Move machine to Z1 with &#039;&#039;&#039;G0 Z1&#039;&#039;&#039;&lt;br /&gt;
** Set machine position to e.g. Z1.1 to add 0.1mm with &#039;&#039;&#039;G92 Z1.1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Drilling ==&lt;br /&gt;
&lt;br /&gt;
* Load drill file (e.g. &#039;&#039;drill_post.ngc&#039;&#039;) &lt;br /&gt;
* Install correct drill bit&lt;br /&gt;
* To re-establish Z height again&lt;br /&gt;
** Go to Manual tab (F3) and position a head outside of the milled PCB near clamp with probing wire attached so probing is possible, then few millimeters on top of the spot but don&#039;t try to make contact&lt;br /&gt;
** Go to MDI tab (F5) and issue probing command &#039;&#039;&#039;G38.2 Z-100 F30&#039;&#039;&#039;&lt;br /&gt;
** Go back to manual tab and &#039;&#039;&#039;re-home Z axis&#039;&#039;&#039;&lt;br /&gt;
* Start drilling job&lt;br /&gt;
&lt;br /&gt;
== Outline ==&lt;br /&gt;
&lt;br /&gt;
* Load outline file (e.g. &#039;&#039;outline_post.ngc&#039;&#039;)&lt;br /&gt;
* Load 3.175mm endmill&lt;br /&gt;
* Go to manual tab a re-establish Z height again by positioning tool slightly over the board&lt;br /&gt;
* &#039;&#039;&#039;re-home Z axis&#039;&#039;&#039;&lt;br /&gt;
* Start job&lt;br /&gt;
&lt;br /&gt;
= Post-processing =&lt;br /&gt;
&lt;br /&gt;
* Clean your board with sandpaper and alcohol&lt;br /&gt;
* Use flux spray&lt;br /&gt;
* Leave a board on a warm place for a while&lt;br /&gt;
* Clean-up and power down the machine meanwhile, remove tool from tool holder&lt;br /&gt;
* Take pictures&lt;br /&gt;
* Solder components&lt;br /&gt;
* Profit&lt;br /&gt;
&lt;br /&gt;
= Gallery =&lt;br /&gt;
&lt;br /&gt;
Feel free to upload pictures of your finished PCBs and add link(s) to following gallery:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=200&amp;gt;&lt;br /&gt;
File:Milled-pcb-esp8266.jpg&lt;br /&gt;
File:Milled-pcb-phsensor.jpg&lt;br /&gt;
File:Milling_pcb2_stm32f042.jpg&lt;br /&gt;
File:Oven.jpg&lt;br /&gt;
File:3020pcb.jpg&lt;br /&gt;
File:Hc pcb.jpg&lt;br /&gt;
File:Synth pcb.jpg&lt;br /&gt;
File:Millingatbase.jpg&lt;br /&gt;
File:Audiothing0.jpeg&lt;br /&gt;
File:Audiothing1.jpeg&lt;br /&gt;
File:Audiothing2.jpg&lt;br /&gt;
File:Mag brk.jpeg&lt;br /&gt;
File:RN2348PCB.JPG&lt;br /&gt;
File:Cpld brk.jpg&lt;br /&gt;
File:Amp2.jpg&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Oldstuff mov to git ====&lt;br /&gt;
&lt;br /&gt;
=== pcb2gcode ===&lt;br /&gt;
  git clone https://github.com/pcb2gcode/pcb2gcode&lt;br /&gt;
sample make_gcode script&lt;br /&gt;
{{cmd|code=&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
pcb2gcode \&lt;br /&gt;
--front=front-gerber-F.Cu.gtl \&lt;br /&gt;
--back=back-gerber-B.Cu.gbl \&lt;br /&gt;
--drill=drill.drl \&lt;br /&gt;
--outline=Edge.Cuts.gm1 \&lt;br /&gt;
--output-dir=gcode \&lt;br /&gt;
--dpi=1000 \&lt;br /&gt;
--metric=true \&lt;br /&gt;
--metricoutput=true \&lt;br /&gt;
--mirror-absolute=false \&lt;br /&gt;
--optimise=true \&lt;br /&gt;
--tile-x=1 --tile-y=1 \&lt;br /&gt;
--vectorial=false \&lt;br /&gt;
--zchange=20.0000 \&lt;br /&gt;
--zero-start=true \&lt;br /&gt;
--zsafe=2.0000 \&lt;br /&gt;
--extra-passes=3 \&lt;br /&gt;
--mill-feed=450 \&lt;br /&gt;
--mill-speed=24000 \&lt;br /&gt;
--offset=0.1500 \&lt;br /&gt;
--zwork=-0.0500 \&lt;br /&gt;
--drill-feed=250 \&lt;br /&gt;
--drill-side=back \&lt;br /&gt;
--drill-speed=12000 \&lt;br /&gt;
--milldrill=false \&lt;br /&gt;
--nog81=false \&lt;br /&gt;
--onedrill=false \&lt;br /&gt;
--zdrill=-3.0000 \&lt;br /&gt;
--bridges=0.8000 \&lt;br /&gt;
--bridgesnum=4 \&lt;br /&gt;
--cut-feed=200 \&lt;br /&gt;
--cut-infeed=1.0000 \&lt;br /&gt;
--cut-side=back \&lt;br /&gt;
--cut-speed=24000 \&lt;br /&gt;
--cutter-diameter=3.1750 \&lt;br /&gt;
--fill-outline=true \&lt;br /&gt;
--outline-width=0.2000 \&lt;br /&gt;
--zbridges=-0.0500 \&lt;br /&gt;
--zcut=-1.7000&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Klubko</name></author>
	</entry>
	<entry>
		<id>https://wiki.base48.cz/w/index.php?title=Metal_workshop&amp;diff=5628</id>
		<title>Metal workshop</title>
		<link rel="alternate" type="text/html" href="https://wiki.base48.cz/w/index.php?title=Metal_workshop&amp;diff=5628"/>
		<updated>2026-08-28T23:27:57Z</updated>

		<summary type="html">&lt;p&gt;Klubko: Update CNCs&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Equipment]]&lt;br /&gt;
{{Project&lt;br /&gt;
 |name=Metal workshop&lt;br /&gt;
 |image=20240302_155942.jpg&lt;br /&gt;
 |founder=&lt;br /&gt;
 |coops=&lt;br /&gt;
 |status=active&lt;br /&gt;
 |tags=hw&lt;br /&gt;
 |shortdesc=Area equipped for metal work&lt;br /&gt;
 |created=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[https://www.youtube.com/results?search_query=metal Metal]&lt;br /&gt;
&lt;br /&gt;
== Mechlab ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Item&lt;br /&gt;
!State&lt;br /&gt;
!Ownership&lt;br /&gt;
|-&lt;br /&gt;
|[[Large CNC]]&lt;br /&gt;
|&#039;&#039;&#039;in dvelopment&#039;&#039;&#039;&lt;br /&gt;
|needs volunteers&lt;br /&gt;
|-&lt;br /&gt;
|CNC FC16&lt;br /&gt;
|available after agreement&lt;br /&gt;
|Milan&lt;br /&gt;
|-&lt;br /&gt;
|lathe&lt;br /&gt;
|?&lt;br /&gt;
|Milan&lt;br /&gt;
|-&lt;br /&gt;
|PCB drill&lt;br /&gt;
|?&lt;br /&gt;
|base 48&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Metal workshop ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Item&lt;br /&gt;
!Make&lt;br /&gt;
!Ownership&lt;br /&gt;
|-&lt;br /&gt;
|[https://wiki.base48.cz/w/images/e/ef/20240302_155942.jpg metal workshop]&lt;br /&gt;
|&lt;br /&gt;
|skirit/base48&lt;br /&gt;
|-&lt;br /&gt;
|Shielded Metal Arc Welding&lt;br /&gt;
|&lt;br /&gt;
|skirit&lt;br /&gt;
|-&lt;br /&gt;
|Welding invertor MIG / MMA&lt;br /&gt;
|Laston&lt;br /&gt;
|Adam&lt;br /&gt;
|-&lt;br /&gt;
|Welding trolley + CO2 gas tank&lt;br /&gt;
| -&lt;br /&gt;
|Adam&lt;br /&gt;
|-&lt;br /&gt;
|Welding mask&lt;br /&gt;
| -&lt;br /&gt;
|martian742&lt;br /&gt;
|-&lt;br /&gt;
|Welding mask&lt;br /&gt;
| -&lt;br /&gt;
|Adam&lt;br /&gt;
|-&lt;br /&gt;
|Angle grinder&lt;br /&gt;
|Bosch&lt;br /&gt;
|Adam&lt;br /&gt;
|-&lt;br /&gt;
|Angle grinder&lt;br /&gt;
|Bosch&lt;br /&gt;
|Adam&lt;br /&gt;
|-&lt;br /&gt;
|Cordless Angle grinder&lt;br /&gt;
|Bosch&lt;br /&gt;
|Adam&lt;br /&gt;
|-&lt;br /&gt;
|Angle grinder&lt;br /&gt;
|Parkside&lt;br /&gt;
|Krey&lt;br /&gt;
|-&lt;br /&gt;
|Cordless Angle grinder&lt;br /&gt;
|Parkside&lt;br /&gt;
|Krey&lt;br /&gt;
|-&lt;br /&gt;
|Bench grinder with belt sander (Combined Sharpener)&lt;br /&gt;
|Parkside&lt;br /&gt;
|base 48&lt;br /&gt;
|-&lt;br /&gt;
|Bench grinder&lt;br /&gt;
|Scheppach&lt;br /&gt;
|base 48&lt;br /&gt;
|-&lt;br /&gt;
|Corded Power drill&lt;br /&gt;
|Black&amp;amp;Decker&lt;br /&gt;
|base 48&lt;br /&gt;
|-&lt;br /&gt;
|Corded Power drill&lt;br /&gt;
|Offbrand&lt;br /&gt;
|base 48&lt;br /&gt;
|-&lt;br /&gt;
|Plasma cutter&lt;br /&gt;
|Plasmatech / shark&lt;br /&gt;
|base 48&lt;br /&gt;
|-&lt;br /&gt;
|Dremel grinder&lt;br /&gt;
|Dremel&lt;br /&gt;
|base 48&lt;br /&gt;
|-&lt;br /&gt;
|Stationary drill&lt;br /&gt;
|TOS Kuřim&lt;br /&gt;
|base 48&lt;br /&gt;
|-&lt;br /&gt;
|Metal Cut-off Saw&lt;br /&gt;
|Bosch&lt;br /&gt;
|Adam&lt;br /&gt;
|-&lt;br /&gt;
|Vise&lt;br /&gt;
| -&lt;br /&gt;
|base 48&lt;br /&gt;
|-&lt;br /&gt;
|Grinding accessories ( grinding discs, cutting disks, sandpaper discs, metal brushes, ...)&lt;br /&gt;
| -&lt;br /&gt;
|base 48&lt;br /&gt;
|-&lt;br /&gt;
|Welding accessories (gloves, apron, electrodes, anti-stick spray, soapstone, pliers, metal brushes, clamps, 90-degree clamps, magnetic speed-squares, ...)&lt;br /&gt;
| -&lt;br /&gt;
|&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Klubko</name></author>
	</entry>
	<entry>
		<id>https://wiki.base48.cz/w/index.php?title=Large_CNC&amp;diff=5627</id>
		<title>Large CNC</title>
		<link rel="alternate" type="text/html" href="https://wiki.base48.cz/w/index.php?title=Large_CNC&amp;diff=5627"/>
		<updated>2026-08-28T23:26:27Z</updated>

		<summary type="html">&lt;p&gt;Klubko: Klubko moved page BigCNC to Large CNC without leaving a redirect: Better name&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Project&lt;br /&gt;
 |name=Base48 CNC&lt;br /&gt;
 |image=641378466 1341178588052502 3684234166280655407 n.jpg&lt;br /&gt;
 |founder=Skirit&lt;br /&gt;
 |coops=skirit, krey&lt;br /&gt;
 |status=active&lt;br /&gt;
 |tags=hw&lt;br /&gt;
 |shortdesc=&lt;br /&gt;
 |created=2022&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
DescriptionCost:hgbxfh &lt;br /&gt;
&lt;br /&gt;
Material: &lt;br /&gt;
&lt;br /&gt;
G code:&lt;br /&gt;
===  Gallery: ===&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;slideshow&amp;quot;&amp;gt;&lt;br /&gt;
File:641378466 1341178588052502 3684234166280655407 n.jpg&lt;br /&gt;
File:643780689 1341178651385829 2896998308626909146 n.jpg&lt;br /&gt;
File:640817616 1341178701385824 4027835777262540953 n.jpg&lt;br /&gt;
File:641267395 1341178764719151 308047410247638726 n.jpg&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;/div&gt;</summary>
		<author><name>Klubko</name></author>
	</entry>
	<entry>
		<id>https://wiki.base48.cz/w/index.php?title=Large_CNC&amp;diff=5626</id>
		<title>Large CNC</title>
		<link rel="alternate" type="text/html" href="https://wiki.base48.cz/w/index.php?title=Large_CNC&amp;diff=5626"/>
		<updated>2026-08-28T23:21:52Z</updated>

		<summary type="html">&lt;p&gt;Klubko: Klubko moved page CNC to BigCNC without leaving a redirect: We got multiple CNC machines. Put the generic name aside for eventual generic CNC machining hub.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Project&lt;br /&gt;
 |name=Base48 CNC&lt;br /&gt;
 |image=641378466 1341178588052502 3684234166280655407 n.jpg&lt;br /&gt;
 |founder=Skirit&lt;br /&gt;
 |coops=skirit, krey&lt;br /&gt;
 |status=active&lt;br /&gt;
 |tags=hw&lt;br /&gt;
 |shortdesc=&lt;br /&gt;
 |created=2022&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
DescriptionCost:hgbxfh &lt;br /&gt;
&lt;br /&gt;
Material: &lt;br /&gt;
&lt;br /&gt;
G code:&lt;br /&gt;
===  Gallery: ===&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;slideshow&amp;quot;&amp;gt;&lt;br /&gt;
File:641378466 1341178588052502 3684234166280655407 n.jpg&lt;br /&gt;
File:643780689 1341178651385829 2896998308626909146 n.jpg&lt;br /&gt;
File:640817616 1341178701385824 4027835777262540953 n.jpg&lt;br /&gt;
File:641267395 1341178764719151 308047410247638726 n.jpg&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;/div&gt;</summary>
		<author><name>Klubko</name></author>
	</entry>
	<entry>
		<id>https://wiki.base48.cz/w/index.php?title=PlotBot&amp;diff=5598</id>
		<title>PlotBot</title>
		<link rel="alternate" type="text/html" href="https://wiki.base48.cz/w/index.php?title=PlotBot&amp;diff=5598"/>
		<updated>2026-06-11T10:19:23Z</updated>

		<summary type="html">&lt;p&gt;Klubko: /* Control Board */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Project&lt;br /&gt;
 |name=Base48 PlotBot&lt;br /&gt;
 |image=Turtle-bots.jpg&lt;br /&gt;
 |founder=niklasroy.com/robotfactory&lt;br /&gt;
 |coops=lubko, vanicka&lt;br /&gt;
 |status=active&lt;br /&gt;
 |tags=hw&lt;br /&gt;
 |shortdesc=Whiteboard drawing bot&lt;br /&gt;
 |created=2025-25-09&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== What is this ==&lt;br /&gt;
A whiteboard drawing bot project. We didn&#039;t design the thing, but we built a couple of robots. Along the way, we made modifications and learned a lot.&lt;br /&gt;
&lt;br /&gt;
Among things we learned is that it&#039;s a perfect project to get start with robotics.&lt;br /&gt;
&lt;br /&gt;
Here&#039;s where it comes from:&lt;br /&gt;
&lt;br /&gt;
https://hackaday.com/2025/09/02/this-plotter-knows-no-boundaries/&lt;br /&gt;
&lt;br /&gt;
https://www.niklasroy.com/robotfactory/&lt;br /&gt;
&lt;br /&gt;
The above link actually contains everything needed to get the bot going. Below are adjustments for parts we had.&lt;br /&gt;
&lt;br /&gt;
== Our modifications ==&lt;br /&gt;
Our FreeCAD model is here: [https://codeberg.org/lubko/turtle-robot/src/branch/main/tiny_turtle_plotter_CAD.FCStd tiny_turtle_plotter_CAD.FCStd]&lt;br /&gt;
&lt;br /&gt;
Modified parts typically have &amp;quot;new&amp;quot; in their name. Sorry if it&#039;s messy. First time FreeCAD.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:555688595 1215584740611888 2776984424721907890 n.jpg|3D-printed parts for original build&lt;br /&gt;
File:Turtle-endstop.jpg|Different endstop microswitch&lt;br /&gt;
File:Turtle-switch-ball.jpg|Different size roller and endstop&lt;br /&gt;
File:Turtle-ball.jpg|Roller ball&lt;br /&gt;
File:Drawbot-ball2.jpg|Roller ball&lt;br /&gt;
File:Turtle-wheels.jpg|Wheels and tyres&lt;br /&gt;
File:Turtle-wheels1.jpg|Wheels&lt;br /&gt;
File:Turtle-carriage.jpg|Wheel carriage&lt;br /&gt;
File:Turtle-steppers.jpg|Stepper motors&lt;br /&gt;
File:Turtle-pen-lifter.jpg|Hacked pen lifter&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Endstops ===&lt;br /&gt;
The microswitches come in different shapes and forms. We added extra prongs to the bumper ring to engage with wider range of microswitches.&lt;br /&gt;
&lt;br /&gt;
=== Roller ball ===&lt;br /&gt;
We used a larger furniture ball, which in turn means we had to make room in the parts in two lowest layer and make the wheels larger.&lt;br /&gt;
&lt;br /&gt;
=== Wheels ===&lt;br /&gt;
The wheels were too small, possibly because our roller ball was bigger. They were also rubbing against layers 1 and 2, and appeared to be made for 5mm shaft in the stepper (our had 6mm). This has, of course, thrown off the geometry. a little.&lt;br /&gt;
&lt;br /&gt;
We also had different size tyres.&lt;br /&gt;
&lt;br /&gt;
=== Power banks ===&lt;br /&gt;
Ones we had didn&#039;t fit. We adjusted the layers 1 and made different versions of the upper ring to hold them in place.&lt;br /&gt;
&lt;br /&gt;
=== Pen lifter ===&lt;br /&gt;
One robot is equipped with a more precise pen lifter that utilizes linear motion bearings (LM8) on 8mm rods.&lt;br /&gt;
&lt;br /&gt;
== Control Board ==&lt;br /&gt;
[[File:Turtle-bot-v3-pcb-back-etch.png|thumb|Traces can be drawn on copper laminate (cuprexit) with toner transfer technique and chemically etched. Negative printout for PCB etching: [https://codeberg.org/lubko/turtle-robot/src/branch/main/artifacts/turtle-bot-v3-pcb-back-etch.pdf turtle-bot-v3-pcb-back-etch.pdf]]]&lt;br /&gt;
We&#039;ve drawn a PCB that can be sent to a manufacturing house, but is also optimized for chemical or CNC etching!&lt;br /&gt;
&lt;br /&gt;
Schematic: [https://codeberg.org/lubko/turtle-robot/src/branch/main/artifacts/turtle-bot-v3-schematic.pdf turtle-bot-v3-schematic.pdf]&lt;br /&gt;
&lt;br /&gt;
Fabrication notes: [https://codeberg.org/lubko/turtle-robot/src/branch/main/artifacts/turtle-bot-v3-pcb-fab-notes.pdf turtle-bot-v3-pcb-fab-notes.pdf]&lt;br /&gt;
&lt;br /&gt;
Negative printout for PCB etching: [https://codeberg.org/lubko/turtle-robot/src/branch/main/artifacts/turtle-bot-v3-pcb-back-etch.pdf turtle-bot-v3-pcb-back-etch.pdf]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:630198759 1327012059469155 4819732943989781073 n.jpg|Cutting copper boards&lt;br /&gt;
File:631316442 1327012126135815 8139523202493073450 n.jpg|Chilling in a pool after toner transfer&lt;br /&gt;
File:640173458 1339273461576348 8523389435759424901 n.jpg|Toner transfer done, paper peeled off&lt;br /&gt;
File:633395964 1327012302802464 3349586654434092500 n.jpg|Copper etching&lt;br /&gt;
File:640446084 1339273764909651 2435820910506464661 n.jpg|Board fully etched&lt;br /&gt;
File:640928983 1339273704909657 7028863716144500154 n.jpg|Posing for a picture&lt;br /&gt;
File:Turtle-front.jpg|Perfboards are a no-hassle option&lt;br /&gt;
File:Turtle-pcb1.jpg|Back side of a perfboard&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Software ==&lt;br /&gt;
Arduino code: https://github.com/vranicka/PlotBot&lt;br /&gt;
&lt;br /&gt;
== Shopping list ==&lt;br /&gt;
&lt;br /&gt;
=== CY-8H roller ball ===&lt;br /&gt;
&lt;br /&gt;
* https://www.aliexpress.com/w/wholesale-CY%2525252d8H-10-pcs.html?spm=a2g0o.detail.search.0&lt;br /&gt;
&lt;br /&gt;
=== Threaded rod ===&lt;br /&gt;
&lt;br /&gt;
* https://www.hornbach.cz/p/zavitova-tyc-a2-m4-1m-nerez/12178521/&lt;br /&gt;
&lt;br /&gt;
=== M4 nuts ===&lt;br /&gt;
&lt;br /&gt;
* https://www.hornbach.cz/p/matice-presna-m4-sestihranna-nerez-a2-30ks/8718280/&lt;br /&gt;
&lt;br /&gt;
=== Stepper ===&lt;br /&gt;
&lt;br /&gt;
* https://www.gme.cz/v/1500758/md775047-dc-motor-krokovy-5v&lt;br /&gt;
* https://www.aliexpress.com/w/wholesale-stepper-5v.html?spm=a2g0o.detail.search.0&lt;br /&gt;
&lt;br /&gt;
=== Arduino Nano ===&lt;br /&gt;
&lt;br /&gt;
* https://www.aliexpress.com/w/wholesale-arduino-nano.html?spm=a2g0o.productlist.search.0&lt;br /&gt;
* https://www.gme.cz/v/1514835/usb-c-klon-arduino-nano&lt;br /&gt;
&lt;br /&gt;
=== OD23xCS2.5 Rubber O-Ring ===&lt;br /&gt;
&lt;br /&gt;
* https://www.aliexpress.com/w/wholesale-OD-23-CS-2.5-rubber-o%2525252dring.html?spm=a2g0o.productlist.search.0&lt;br /&gt;
&lt;br /&gt;
=== Micro switch with 20mm-35mm lever ===&lt;br /&gt;
&lt;br /&gt;
* https://www.gme.cz/v/1496684/zippy-sm-05s-07a0-z-mikrospinac&lt;br /&gt;
* https://www.aliexpress.com/w/wholesale-limit-micro-switch.html?spm=a2g0o.productlist.search.0&lt;br /&gt;
&lt;br /&gt;
=== ULN2803 motor driver ===&lt;br /&gt;
&lt;br /&gt;
* https://www.gme.cz/v/1519030/taejin-htc-korea-uln2803an-darlingtonuv-proudovy-budic&lt;br /&gt;
* https://www.aliexpress.com/w/wholesale-uln2803-dip.html?spm=a2g0o.home.search.0&lt;br /&gt;
&lt;br /&gt;
== More pictures ==&lt;br /&gt;
omg somebody please take a picture of it drawing and writing&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:20260119 145224.jpg|Robot coming alive&lt;br /&gt;
File:555534763 1215584797278549 3519708831245411009 n.jpg|Robot skeleton&lt;br /&gt;
File:PlotBot.jpg|In action&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;/div&gt;</summary>
		<author><name>Klubko</name></author>
	</entry>
	<entry>
		<id>https://wiki.base48.cz/w/index.php?title=PlotBot&amp;diff=5597</id>
		<title>PlotBot</title>
		<link rel="alternate" type="text/html" href="https://wiki.base48.cz/w/index.php?title=PlotBot&amp;diff=5597"/>
		<updated>2026-06-11T10:18:32Z</updated>

		<summary type="html">&lt;p&gt;Klubko: /* Shopping list */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Project&lt;br /&gt;
 |name=Base48 PlotBot&lt;br /&gt;
 |image=Turtle-bots.jpg&lt;br /&gt;
 |founder=niklasroy.com/robotfactory&lt;br /&gt;
 |coops=lubko, vanicka&lt;br /&gt;
 |status=active&lt;br /&gt;
 |tags=hw&lt;br /&gt;
 |shortdesc=Whiteboard drawing bot&lt;br /&gt;
 |created=2025-25-09&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== What is this ==&lt;br /&gt;
A whiteboard drawing bot project. We didn&#039;t design the thing, but we built a couple of robots. Along the way, we made modifications and learned a lot.&lt;br /&gt;
&lt;br /&gt;
Among things we learned is that it&#039;s a perfect project to get start with robotics.&lt;br /&gt;
&lt;br /&gt;
Here&#039;s where it comes from:&lt;br /&gt;
&lt;br /&gt;
https://hackaday.com/2025/09/02/this-plotter-knows-no-boundaries/&lt;br /&gt;
&lt;br /&gt;
https://www.niklasroy.com/robotfactory/&lt;br /&gt;
&lt;br /&gt;
The above link actually contains everything needed to get the bot going. Below are adjustments for parts we had.&lt;br /&gt;
&lt;br /&gt;
== Our modifications ==&lt;br /&gt;
Our FreeCAD model is here: [https://codeberg.org/lubko/turtle-robot/src/branch/main/tiny_turtle_plotter_CAD.FCStd tiny_turtle_plotter_CAD.FCStd]&lt;br /&gt;
&lt;br /&gt;
Modified parts typically have &amp;quot;new&amp;quot; in their name. Sorry if it&#039;s messy. First time FreeCAD.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:555688595 1215584740611888 2776984424721907890 n.jpg|3D-printed parts for original build&lt;br /&gt;
File:Turtle-endstop.jpg|Different endstop microswitch&lt;br /&gt;
File:Turtle-switch-ball.jpg|Different size roller and endstop&lt;br /&gt;
File:Turtle-ball.jpg|Roller ball&lt;br /&gt;
File:Drawbot-ball2.jpg|Roller ball&lt;br /&gt;
File:Turtle-wheels.jpg|Wheels and tyres&lt;br /&gt;
File:Turtle-wheels1.jpg|Wheels&lt;br /&gt;
File:Turtle-carriage.jpg|Wheel carriage&lt;br /&gt;
File:Turtle-steppers.jpg|Stepper motors&lt;br /&gt;
File:Turtle-pen-lifter.jpg|Hacked pen lifter&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Endstops ===&lt;br /&gt;
The microswitches come in different shapes and forms. We added extra prongs to the bumper ring to engage with wider range of microswitches.&lt;br /&gt;
&lt;br /&gt;
=== Roller ball ===&lt;br /&gt;
We used a larger furniture ball, which in turn means we had to make room in the parts in two lowest layer and make the wheels larger.&lt;br /&gt;
&lt;br /&gt;
=== Wheels ===&lt;br /&gt;
The wheels were too small, possibly because our roller ball was bigger. They were also rubbing against layers 1 and 2, and appeared to be made for 5mm shaft in the stepper (our had 6mm). This has, of course, thrown off the geometry. a little.&lt;br /&gt;
&lt;br /&gt;
We also had different size tyres.&lt;br /&gt;
&lt;br /&gt;
=== Power banks ===&lt;br /&gt;
Ones we had didn&#039;t fit. We adjusted the layers 1 and made different versions of the upper ring to hold them in place.&lt;br /&gt;
&lt;br /&gt;
=== Pen lifter ===&lt;br /&gt;
One robot is equipped with a more precise pen lifter that utilizes linear motion bearings (LM8) on 8mm rods.&lt;br /&gt;
&lt;br /&gt;
== Control Board ==&lt;br /&gt;
[[File:Turtle-bot-v3-pcb-back-etch.png|thumb|Traces can be drawn on copper laminate (cuprexit) with toner transfer technique and chemically etched. Negative printout for PCB etching: [https://codeberg.org/lubko/turtle-robot/src/branch/main/artifacts/turtle-bot-v3-pcb-back-etch.pdf turtle-bot-v3-pcb-back-etch.pdf]]]&lt;br /&gt;
We&#039;ve drawn a PCB that can be sent to a manufacturing house, but is also optimized for chemical or CNC etching!&lt;br /&gt;
&lt;br /&gt;
Schematic: [https://codeberg.org/lubko/turtle-robot/src/branch/main/artifacts/turtle-bot-v3-schematic.pdf turtle-bot-v3-schematic.pdf]&lt;br /&gt;
&lt;br /&gt;
Fabrication notes: [https://codeberg.org/lubko/turtle-robot/src/branch/main/artifacts/turtle-bot-v3-pcb-fab-notes.pdf turtle-bot-v3-pcb-fab-notes.pdf]&lt;br /&gt;
&lt;br /&gt;
Negative printout for PCB etching: [https://codeberg.org/lubko/turtle-robot/src/branch/main/artifacts/turtle-bot-v3-pcb-back-etch.pdf turtle-bot-v3-pcb-back-etch.pdf]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:630198759 1327012059469155 4819732943989781073 n.jpg|Cutting copper boards&lt;br /&gt;
File:631316442 1327012126135815 8139523202493073450 n.jpg|Chilling in a pool after toner transfer&lt;br /&gt;
File:640173458 1339273461576348 8523389435759424901 n.jpg|Toner transferred&lt;br /&gt;
File:633395964 1327012302802464 3349586654434092500 n.jpg|Copper etching&lt;br /&gt;
File:640446084 1339273764909651 2435820910506464661 n.jpg|Board fully etched&lt;br /&gt;
File:640928983 1339273704909657 7028863716144500154 n.jpg|Posing for a picture&lt;br /&gt;
File:Turtle-front.jpg|Perfboards are a no-hassle option&lt;br /&gt;
File:Turtle-pcb1.jpg|Back side of a perfboard&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Software ==&lt;br /&gt;
Arduino code: https://github.com/vranicka/PlotBot&lt;br /&gt;
&lt;br /&gt;
== Shopping list ==&lt;br /&gt;
&lt;br /&gt;
=== CY-8H roller ball ===&lt;br /&gt;
&lt;br /&gt;
* https://www.aliexpress.com/w/wholesale-CY%2525252d8H-10-pcs.html?spm=a2g0o.detail.search.0&lt;br /&gt;
&lt;br /&gt;
=== Threaded rod ===&lt;br /&gt;
&lt;br /&gt;
* https://www.hornbach.cz/p/zavitova-tyc-a2-m4-1m-nerez/12178521/&lt;br /&gt;
&lt;br /&gt;
=== M4 nuts ===&lt;br /&gt;
&lt;br /&gt;
* https://www.hornbach.cz/p/matice-presna-m4-sestihranna-nerez-a2-30ks/8718280/&lt;br /&gt;
&lt;br /&gt;
=== Stepper ===&lt;br /&gt;
&lt;br /&gt;
* https://www.gme.cz/v/1500758/md775047-dc-motor-krokovy-5v&lt;br /&gt;
* https://www.aliexpress.com/w/wholesale-stepper-5v.html?spm=a2g0o.detail.search.0&lt;br /&gt;
&lt;br /&gt;
=== Arduino Nano ===&lt;br /&gt;
&lt;br /&gt;
* https://www.aliexpress.com/w/wholesale-arduino-nano.html?spm=a2g0o.productlist.search.0&lt;br /&gt;
* https://www.gme.cz/v/1514835/usb-c-klon-arduino-nano&lt;br /&gt;
&lt;br /&gt;
=== OD23xCS2.5 Rubber O-Ring ===&lt;br /&gt;
&lt;br /&gt;
* https://www.aliexpress.com/w/wholesale-OD-23-CS-2.5-rubber-o%2525252dring.html?spm=a2g0o.productlist.search.0&lt;br /&gt;
&lt;br /&gt;
=== Micro switch with 20mm-35mm lever ===&lt;br /&gt;
&lt;br /&gt;
* https://www.gme.cz/v/1496684/zippy-sm-05s-07a0-z-mikrospinac&lt;br /&gt;
* https://www.aliexpress.com/w/wholesale-limit-micro-switch.html?spm=a2g0o.productlist.search.0&lt;br /&gt;
&lt;br /&gt;
=== ULN2803 motor driver ===&lt;br /&gt;
&lt;br /&gt;
* https://www.gme.cz/v/1519030/taejin-htc-korea-uln2803an-darlingtonuv-proudovy-budic&lt;br /&gt;
* https://www.aliexpress.com/w/wholesale-uln2803-dip.html?spm=a2g0o.home.search.0&lt;br /&gt;
&lt;br /&gt;
== More pictures ==&lt;br /&gt;
omg somebody please take a picture of it drawing and writing&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:20260119 145224.jpg|Robot coming alive&lt;br /&gt;
File:555534763 1215584797278549 3519708831245411009 n.jpg|Robot skeleton&lt;br /&gt;
File:PlotBot.jpg|In action&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;/div&gt;</summary>
		<author><name>Klubko</name></author>
	</entry>
</feed>