Archive for March, 2012

At some point you need to do the math: the theoretical milling speed of your milling machine running a milling bit at high speed. And guess what we just mentioned the 2 variables to te equation:

  • Spindle speed
  • Milling bit

So you have to measure 2 things and then you’re able to calculate te IPM. Coming up: theory versus practice.

Spindle speed



Fair enough most spindles will ave ample documentation describing te maximum RPM. Mine as well but I wasn’t all that convinced so I bought a tachometer.

Theory versus practice.

In theory the spindle would run at 13000 RPM maximum. Measurements show a maximum of 11400 RPM. So the spindle speed was exagurated by 15%.


Theoretical Feed rate

Fl = R/min * Ft * n

So here it is:

Fl = 11400 * 0.3 * 1 = 3420 mm / minute = 57 mm /second


From a pcb milling forum (it off course depends on the type of bit used) : Advised speed on milling a pcb is 20 to 30 mm/second on 40000RPM. Proportional reduced to 8 mm/second for my 11400 RPM spindle.


From pcbgcode: As a rule of thumb, a safe feedrate for very small milling bits (under 20 mils diameter) is about 1% of the diameter per revolution.

Using the rule of thumb approach. The bit is 0.3 mm V-tip and the RPM is 11400:

0.3 * 0.01 * 11400 = 34 mm / minute = 0.5 mm /second


“Your milage will vary”

The calculated speed seems very high. From other sources and depending on the bit used te feed rates are muc lower. The deafult on the pcb-gcode setup screen is 254 mm /minute (4mm /second). It appears that te spindle speed cannot be entered there so I assume it will be higher then my 11400 RPM.

First I’ll stick to the 4mm / second but I might have to reduce that, after giving it a go.

Comments No Comments »

In some cases it might be convenient if we can split a gcode file into smaller pieces so they can be milled in small sections.

How does a typical gcode file, produced by pcb-gcode- look like? I suspect to find a header section like:

  • Initialisation
  • Move spindle up.

Sample of the top 15 lines of a test file. The section I consider header is in bold.

(Absolute Coordinates)
G00 X0.0000 Y0.0000
G04 P3.000000
G00 Z2.5400
G00 X1.6917 Y9.2837
G01 Z-0.1778 F254
G01 X3.3883 Y9.2837 F508
G01 X3.5576 Y9.3174
G01 X3.7171 Y9.3834
G01 X3.8606 Y9.4793

First of all it looks like the file indeed has a header section. Let’s see what the codes mean.

G21Programming in millimeters (mm)
G90Absolute programming.
Positioning defined with reference to part zero.
G00 X0.0000 Y0.0000G00 = Rapid positioning. The other two are coordinates. In this case move to the zero postion.
M03Spindle on
G04 P3.000000G04 = dwell (pause). Where P3.00000 means 3 seconds.
So it means that it pauzes for three seconds and then proceeds with the next gcode.
G00 Z2.5400G00 = Rapid positioning. In this case move the spidle up from the pcb.
Moving it up is needed becase the next step will be to move the spindle to the first line to be milled. You like this movement to be above the pcb, not through the pcb. 😉

That’s it. All there is to the header. I suspect to find a footer as well, but let’s look at the miling parts first.

When milling a line segment it can simply be defined as:

  • Position the spindly just above the linesegment to be milled
  • Move spindle down into the pcb (negative Z movement)
  • Move the spindle around (mill the line segment) without any changes to the height (Z movement)
  • Move spindle up from the pcb (positive Z movement)

G00 X1.6917  Y9.2837
G01 Z-0.1778 F254
G01 X3.3883  Y9.2837  F508
G01 X3.5576  Y9.3174
G01 X1.5224  Y9.3174
G01 X1.6917  Y9.2837
G00 Z2.5400

G00 X1.6917 Y9.2837G00 = Rapid positioning. In this case move the spidle to the starting point of your line segment.
G01 Z-0.1778 F254G01 = Linear interpolation. Move in a straight line (hence linear) to the coordinates specified.

F254 = feed rate. The speed at which the cutter moves.
G01 X3.3883 Y9.2837 F508G01 = Linear interpolation.
F254 = feed rate.
More codes like:
G01 X-position Y-position
G01 = Linear interpolation.
Milling of subsequent parts of the line segment
G00 Z2.5400G00 = Rapid positioning. In this case move the spidle up from the pcb.
Moving it up is needed becase the next step will be to move the spindle to the first line to be milled. You like this movement to be above the pcb, not through the pcb. 😉

Milling a line segment by means of the G01 linear Interpolation is in fact pretty straight forward it seems.

Let’s try to identify the footer. It wraps up operation so it will look like:

  •  Move the spindle out of the way
  • Stop the spindle
  • Stop the program


G01 X-0.6316 Y0.4907
G01 X-0.6316 Y0.4907
G01 X1.8840  Y0.9641
G00 Z2.5400
G00 Z12.7000

G00 Z12.7000 G00 = Rapid positioning. In this case move the spidle way up and out of the way.
M05Spindle stop
M02End of program

All in all it looks like a relative simple gcode file like this can be split into smaller sub programs complete with header and footer.


Comments No Comments »

MO-BB-advancedUpdating the breadboard with the components for the final schematic of the Mighty Ohm – Wifi Radio.

Again, first power it up and check if the 16×2 lcd displays any text (it should) before hooking it up to the asus 520 router.

To the left the usbTiny is shown with the 6-pin ISP cable disconnected. It’s easier to work on the breadboard this way and I don’t want to remove the patching of the other end of the cable into the bradboard just yet. A little breakout board would be handy for this. Maybe I’ll build one. If so I’ll share it with you.

Just above the usbTiny you see three wires in a loop. These are the TX RX and GND that need to be connected to serial pin connector on the asus 520 router.


Comments No Comments »