DIY CNC mill from mainly salvaged and 3D printed parts

  • So I have a couple posts in some other threads on this subject, but wanted to move it to it's own thread in the interest of not Hijacking one of the other threads.The other project with posts are the "What did you build today" and the "CNC PCB milling" posts.

    So as not to be too repetitive, I will not do a lengthy first post for this repeating what I said in other posts, but I will post some of the pics that I posted in the other threads so people can get a visual as they start to read this.
    0_1517783145836_f7c11e3f-5a0d-4623-a4aa-bcaec43ba6bb-image.png 0_1517783162627_f8049541-2a33-4336-9d45-dc05ce944c3f-image.png 0_1517783182634_ff92ad83-8ccf-490b-83dd-dddec5a3e86c-image.png 0_1517783214723_7a67953c-c7a3-46dd-a3bf-5f29aee56ac6-image.png 0_1517783191959_8837a4b7-18d8-4a94-8a52-b19f37184855-image.png

    I will have more to post here later tonight as I am in the process of 3D printing the bearing mounts for the platter. Once I have that done I will probably shoot a short video showing the current workings so far.

  • Hero Member

    @dbemowsk Do you use special software for designing the 3D printed gears? Also, what kind of material do you make them out of?

  • @neverdie The software that I am using for designing the whole thing is OpenSCAD. Within OpenSCAD, I found a gear library that seems to work pretty good. Right now the parts are just printed in PLA. When I designed the front and rear frame braces, the plan was to print them with 10% infill just to test them for fit and then print them with either a slightly higher infill or solid plastic. I was surprised to find how sturdy the parts were with just that 10% infill, so I left them at that. If I find any part that isn't sturdy enough, I can re-print it with higher infill, or in ABS or PETG which are a bit stronger.

  • @neverdie The one thing that I like about OpenScad is that it is structured like a programming language. This is how I call the module to make a gear:

       difference() {
            gear (number_of_teeth=78,
            translate([0, 19, 6]) {
                rotate([90, 0, 0]) {
                    cylinder($fn=360, 38, d=3.15);
            english_thread (diameter=5/16, threads_per_inch=18, length=0.4);

    This produces a gear like this which even has the center part with the threads already on it so I can just thread it on to the Y axis rod.

  • So last night I tested the limits of my 3D printer bed. I printed a thin platter that I will mainly use as a drill guide for the MDF that I will cut today. I haven't posted anything in a while on this because I was working with a guy from work that has a metal lathe to make me a new Y axis threaded rod/lead screw. Here is a set of side by side pictures showing my OpenSCAD 3D rendering with a picture of the actual setup so far at the same angle.

    I will also be working on figuring out a set of X/Z axis uprights today. I have done a little work on an X axis motor assembly the past couple days, but it was mainly playing with some ideas. More on that later.

  • Hero Member

    Are you planning to build any closed-loop feedback into your design? I think the z-axis on my CNC might benefit from it, but I suppose it might require different software to take advantage of it. Perhaps there are other ways of getting the same result though.

  • @neverdie What kind of closed loop feedback are you referring to? I just have the standard GRBL software on an arduino uno with a CNC shield on top. I haven't looked into everything that the board can do but there are a lot of options that I will have to figure out.

    One question I have related to your CNC setup and this shield. Do you have end stop switches on both ends of your X, Y and Z axes? I noticed that there is + and - end stop switch inputs for all 3. My 3D printer only has end stops on one end of each, but maybe a CNC is different.

  • Hero Member

    No end stops at all.

  • @neverdie I was curious too about what kind of closed loop feedback you were referring to in your earlier post.

  • So I am toying with an idea for the uprights that will hold the X and Z axis. I salvaged these old DLP projector wall mount brackets and got 2 of these parts.
    The idea is to have them mounted on the sides of the Y axis frame to hold the X and Z axis vertically. I guess my main issue that's leaning me away from using them is that they are quite heavy. If I do use them, I will have to design some sort of bracket that would mount them to the Y axis frame. One nice thing is that they have some holes pre-drilled at a few different levels that might help in mounting the cross rails for the X axis.

    Ahhhh the dilemas of designing something from scratch....

  • Hero Member

    @dbemowsk Looks promising. The Trinus 3D printer ( went all steel on everything, and maker's muse attributed that as the reason why it could print in such fine detail.

    As to the closed-loop versus open-loop feedback, I had written about that in the CNC PCB milling thread, but @andrew didn't think it was needed, so it probably isn't. But anyway, if you look inside, say, modern inkjet printers, they don't even use stepper motors anymore for head positioning in the x-axis. Instead, they rely on a kind of quadrature linear tape that it reads to position the head very precisely. Well, why? In the past, they used to use stepper motors for that. Is it purely a manufacturing cost saving, or did they need to go that route to get more precise control as DPI's increased?

    So, since you're salvaging parts anyway, you could extract such linear positioning tapes from used inkjet printers (which are practically free, because people upgrade and throw out their old equipment because it's so cheap now). Just a thought....

    How to use linear encoders with Arduino. hardware, code, and demo. – 09:53
    — Cheap Science

  • @neverdie I get what you are going for now with the closed loop feedback. The problem in it is that I plan to use the standard GRBL firmware to run this, and if I were to go with that approach, I would probably have to modify the GRBL firmware to accommodate that as I don't think it is something native to it. If I am wrong on that, please correct me. Along with that, I don't know if I would have to make modifications to the CNC shield to do it, or if I could tone out some available pins to use for that. I don't know how encoders like that would work with steppers anyway. When steppers move one position, that equates to a certain distance based on it's direct drive, or as in my case the gear ratio. The fine encoder discs or strips used in ink jet printers may be able to be matched to the steps of the stepper, but if one step of the motor matched to a half step position on the encoder, that could throw things off slightly. I think the encoders would only be needed if the steppers were prone to missing steps, which if they are set up correctly, shouldn't. I think the steppers will be accurate enough for this application. Besides, the extra work it would take to salvage the parts and implement them into the design would be more work than I would care to take on at this point.

  • Still working on the X/Z axis uprights getting things figured out. In the mean time, I got a piece of MDF cut and fit for the work platter.

  • Just a concern, the MDF plate could/might contains sand particles (manufactures use cheap wood materials), so don't let your expensive endmills cut down to the MDF as this will ware out the sharp endmills

  • Hero Member

    @bjacobse What material do you recommend instead?

  • Trying to find a stepper that will work for the X axis is proving to be a bit troublesome. I may end up ordering one. I wish I could find a larger junk laser printer.

  • After some further review and thought, I am thinking of just getting a set of 3 motors. I figure that way I have a matched set and I am not fighting things like too slow speed on one axis that is fighting the others when milling a job. This will require some modifications to my current Y axis, but I will only have to modify the bracket on the motor side which won't be hard at all.

    The question I have is, will these motors be good enough? They are 0.9° which is 400 steps/rev vs the somewhat standard 1.8° @200 steps/rev. They are 65 oz-in bipolar motors.

  • Well, haven't posted to my thread in a while so I thought I'd give an update. I am close to having the Z axis complete. Below are some pictures of the spindle assembly as I have it right now.

    This is the next part in line to be printed is the Z axis motor mount and X axis carriage. Below is a pic of the design. I have it printing now and there is 11 hours to go in the print. The longest printed part so far.

  • Hero Member

    @dbemowsk said in DIY CNC mill from mainly salvaged and 3D printed parts:

    I figure that way I have a matched set and I am not fighting things like too slow speed on one axis that is fighting the others when milling a job.

    From what I've read, your GRBL controller would compensate, as it knows the speed of each motor (well, after you tell it, that is).

  • @neverdie said in DIY CNC mill from mainly salvaged and 3D printed parts:

    From what I've read, your GRBL controller would compensate, as it knows the speed of each motor (well, after you tell it, that is).

    I figured that, but I was having trouble with a couple of the steppers that I was trying to use. Couldn't seem to get them to run reliably from the GRBL controller. The other part would have been figuring out a drive system for them as they all had geared heads. I would have had to figure out a gearing and mounting system. The motors I got were only $33 US, so basically $11/motor, so not a bad price, and I can direct couple them to the threaded rods making things easier.