While trying to make my first steps in CAD design I ran into a few troubles. Nothing big, just the usual learning curve. However while searching for solutions (or quick tips) I found a few very good intro’s into CAD that use Fusion360 instead of FreeCAD.
And since Fusion360 is free for personal use, I had a go at it.
The first impression was quite positive. Partly due to the experience I had already gathered in FreeCAD. But even so, Fusion360 makes a much more mature impression.
But what really clinched the deal was a series of introduction videos into model RC plane design by RC CAD-2-CV.
I am now working through a series by Arnold Rowntree that aims to bring beginners with Fusion360 up to speed.
So, I will be ditching FreeCAD as my CAD tool of choice for Fusion360.
That took longer than expected. I am referring to the design of a XYZ table of course.
I have created, evaluated, optimised and rejected a lot of possible designs. The big problem is of course complexity (simplicity) of the build, the necessary accuracy of the build process and of course the resulting price.
Several designs were rejected because ultimately there was at least one piece of it that could not be procured or created with sufficient accuracy.
In the end I have settled for a design around the aluminium profile 2020/2040 & 4040/4080. You have probably seen this stuff before, it looks as follows:
While I did make a few drawings, these do not show much in the way of construction, hence there is not much to show just yet. It will be simpler to build the thing and then make pictures.
So, until then…
In the first post I wrote that I wanted a CNC-able area of at least 2 meters (X) by 40 centimers (Y). (2000mm x 400mm)
Unfortunately I was unable to find a ball-screw with a length of 2000mm for an affordable price. The ball-screw itself is not even that expensive, its the shipping that kills the idea. Some suppliers charge more for shipping than the ball-screw itself costs.
The longest I have been able to find is 1700mm which, including shipping, still costs me just over 150 euro’s (including two equal length sliders). Still way better than prices of over 400 euro’s for a 2000mm ball-screw (also incl. shipping, excl. sliders). Travel will not be quite 1700mm though, as the sliders are also 1700 mm and I will need about 200mm for the Y-stage.
On the other hand, for the Y axis I was able to keep costs down and still manage a total travel of about 550-600mm. (Sliders are 700mm)
I have not decided on the Z-axis yet. I will probably go for a total travel of 100mm maybe 150mm. But I will first await arrival of the X and Y axis to check on their suitability for my purposes.
That remains a sour point: while this stuff is sold for CNC purposes, I have no experience with the sliders and spindle, and do not know how accurate the cutting tool will be able to trace out (repeatable) patterns. I hope that I will be able to achieve 0.1mm accuracy, but I don’t have any guarantees. Before selecting a Z-axis I will have to wait and see how well the X and Y axis perform to know how much effort/cost I should sink in the Z-axis.
Since it will be another two to three weeks before I receive the HW, I will have time to look at other stuff. For example the construction details of the XYZ stages and the table on which the machine should stand.
Given that the axis themselves will be 1700mm X 700mm, the table will need to be slightly bigger, something like 1800mm x 800m. The table height for normal work-surfaces is also about 800mm.
The table should be sturdy enough, but also dampen the higher frequencies from the stepper motors. But most of all, the sable should not sag at all in the middle where the wood to be cut will be placed.
Another issue is the construction of the X and Y stages. For the X axis I will be using two 20mm wide sliding rails and a ball-screw. These will be mounted on a (ply) wooden plate. The plate itself will be stiffened to the point that sag is so small to be virtually impossible to measure.
For the Y axis I will also be using two pieces of plywood mounted at 90 degrees to each other. Several other triangular pieces will be used squared to the two pieces to keep the angle between them at 90 degrees. On the vertical side I will mount rails similar to the X-axis, but only 12mm wide.
Using wood may not seem obvious, but I do not believe its as bad as we might think if the wood is plywood, waterproof and sealed correctly. I have some plywood constructions that retain their original shape even after years.
However that is not the main reason for choosing (ply)wood. The main reason is that I currently have no possibility to drill metal with sufficient accuracy to create a metal construction. With the XY axis in place I will have that capability, thus if the wood becomes too much of a problem I can at least build an all-metal CNC with the wooden CNC.
And lastly, since it may take a while before the hardware of the CNC is operational, I will start creating the first plans for cutting. One of my other blogs is about building a CL-415 RC-model, and that model is the first thing I want to build with the CNC. But I only have paper plans, which have to be converted into G-code. This is the perfect time to start on that.
I have decided to blog about creating the G-code on this blog, as RC-modellers may not be interested enough in this aspect. And detailing the steps taken may help others with similar interest.
It is probably documented somewhere, but I went the hard way, and checked the
configuration.h file to find the place where the number of steps per mm is defined for each axis.
Then I almost went and changed it, but read about the G-code command M92 just in time.
Turns out that we can override the standard settings by issuing a M92 command before running any other G-code.
The syntax is:
M92 Xnum Ynum Znum Enum
num is the number of steps per mm for the corresponding axis. Because Marlin is written for 3D printing, there is also an
E setting for the extruder. For CNC we can ignore
E, but since it must be specified, any number will do.
I am using a lead-screw with 8mm of travel per revolution. Steppers with 200 steps per revolution and a driver with 32 microsteps per step. Hence the number of steps per mm is: 200 * 32 / 8 = 800. And since all axis are the same, my M92 command is:
M92 X800 Y800 Z800 E800
Note that it is possible to use fractional numbers if that were necessary.
In a first test I took the test shape G-code and put the M92 command in front of the entire sequence. That worked!
Of course it is not practical to manually edit all G-code files, and there is no need for it. Because there is an EEPROM that the settings can be written to. And on each reset (power-up) these settings override the default settings in the Marlin code. This is done with the M500 G-code command.
So I made an extra file, called set-movement.gcode with the content:
M92 X800 Y800 Z800 E800 M500
Then wrote that to the micro-SD and executed it on the Arduino. It did work, but when I restarted the Arduino I discovered that it was not written to EEPROM. After some digging I found that Marlin has the option to disable the EEPROM, which is what V1Engineering has done. This option can also be found in the
configuration.h file. Hence it is still necessary to update the configuration file and re-compile and re-burn the Marlin driver to the Arduino.
With this done, the proof of concept has been completed. Everything is now ready for the next step(s): design, buy and build the hardware that will do the cutting!
FreeCAD can generate G-code. This is one of the most important aspects for choosing FreeCAD.
I did follow a FreeCAD tutorial that created just about the shape I wanted for testing the movements of the electronics. But unfortunately I cannot find it again.
So instead I will recommend following a few tutorials until you get the hang of it. There are probably youtube tutorials as well, I did not search for them.
Next we have to define the shape for the test: it will be a rectangle of 16x32mm with a thickness of 8mm. In the top of this rectangle a rectangular pocket will be made of 8x16mm with a depth of 4mm.
Once this shape is defined, the Path Walktrough for the impatient details the steps needed to create the G-code file.
You can see the results in a simulation in FreeCAD itself.
When done and satisfied with the results in the simulator write the G-code to a file using the extension
gcode and store this on an SD-card. Then switch to the breadboard.
Switch on, and insert the SD-card. The menu on the LCD now displays that a
media card has been inserted and the menu on the next page (press the button once) shows extra items, among which a
Print from media, select this and select the file that must be printed. On the next screen, confirm that it should start printing. The steppers will start moving until ready. While the operation is ongoing a progress bar is shown.
So far so good. The steppers show approximately the expected behaviour with respect to sequence of events. But they do not show the appropriate rotation yet. This was to be expected as I have not yet configured V1-engineering Marlin for my breadboard.
That is next on my list.