DIY CNC mill from mainly salvaged and 3D printed parts

If it doesn't work out, maybe you will want to build an MPCNC instead?

@zboblamont I'll see how it goes. It is a big experiment at this point. If it doesn't work out I may be able to have a frame milled pretty cheap. I work for our local school district and I know the shop teachers at our high school that run the large CNC mill that they have. I may be able to have them mill me some parts. I do have all the needed steppers and things, I may just need a frame, worst case.

So the CNC is near ready for testing. I need to solder a connector on to the X axis stepper and I should be able to run some tests. I think the next step is going to be figuring out how to calibrate the GRBL controller.
Here are some pics of the build so far.

@dbemowsk A+ for sticking with it all the way to completion.
The main calibration number will probably be the revolutions per inch for each of the axises (axi?). From there you can start air carving.

@neverdie Thanks. I appreciate the tip and the compliment. Are you sure it is revolutions per inch and not steps per inch? The larger black motors I have for the X and Z axes are 400 steps per rev, but I think the Y axis motor is only 200 steps per rev. The Y axis is running on the large geared assembly though, so that should help more with both torque and revolution step count.
There is the talk about the rigidity of it. I am thinking if I run it a bit slower, the rigidity will matter a little bit less, but I'll see once I get it going. The MDF I used is 3/4", and it feels pretty rigid, but only tests will tell. I have my spindle chuck, a set of 7 coletts and some bits on order from amazon. Those should be here tomorrow I am thinking, since everything was prime.

@neverdie said in DIY CNC mill from mainly salvaged and 3D printed parts:
@dbemowsk A+ for sticking with it all the way to completion.
The main calibration number will probably be the revolutions per inch for each of the axises (axi?). From there you can start air carving.
I'm just going from memory. I think you're right, though: steps per inch. Or something like that.

So here is it's maiden voyage... It's first simultaneous run of all axes, AKA the initial X, Y and Z axis test.
Initial axis test â€“ 00:23
â€” Dan Bemowski

I believe these are the settings that I need to change: https://github.com/grbl/grbl/wiki/ConfiguringGrblv0.9
I will be trying to configure things tonight. From the tracking information, I should have my chuck, coletts and the drills tonight, but the V bits won't be here til Monday. I am wondering if there are any test files that I can try to test my calibration? I will try to set up software on my WIndows laptop for now, but may migrate to a laptop running linux for the final setup.

I haven't had a chance to test the accuracy of the machine yet, but I did find a web page that has a VERY useful calculator for figuring out your steps per mm for a lead screw type system.
https://www.prusaprinters.org/calculator
Scroll down to the section labeled "Steps per millimeter  leadscrew driven systems". You just enter the parameters of your motor, microstepping, gear ratio (if any) and lead screw type/size. From that it calculates the steps per mm that is needed to configure your X, Y and Z axes for your GRBL controller.Figured this may be useful to others.

Or use a dial gauge and get an exact measurement.

@neverdie I'll check things with my micrometer once I get my bits and get a print on something.

That should work. Here's what I meant though:

@neverdie Interesting video. It appears that I may have to get myself a dial indicator tool. Looks as if it will prove very useful. Using that calculator page that I found can at least get me to a starting point, and I can adjust from there.

So I am trying to get my spindle control set up and I am having an issue. I am checking with a volt meter between the spindle enable (SpnEn) and ground and I am reading 5v. No matter what spindle commands I am sending (M03, M04 or M05) I am always reading 5v. Is there a different command for spindle enable? If I check the spindle direction pin (SpnDir), I read 5v when I send M03, and 0v when I send M04. So that appears to be working.

@dbemowsk
On my board,
M3 SP1000
spins the spindle at maximum speed. Just M3 by itself doesn't.
It's not obvious from looking at your board where the spindle OUT voltage is. Maybe on the opposite side? I guess you'll have to probe around to find it.

@neverdie The SpnEn and SpnDir are control signals. For this board you need to have an external motor driver. After some looking, I may have found my answer. I am running GRBL 1.1. It appears that they swapped 2 of the pins. Pin 12 used to be the spindle enable pin in GRBL 0.9. In 1.1, they swapped 11 and 12 because pin 12 cannot be used for PWM which is how the controller limits the speed. I have not tried it yet, but I am going to try the Z+ pin which is pin 11. If that works, I may do a slight board mod.
Here is the post that explains it. https://github.com/grbl/grbl/issues/1187

BTW, I am using an external H Bridge to control the spindle.

Just tried that and it worked perfect. I don't use SP though, I just use S. So M3 S1000 is full speed, M3 S500 slows the motor, and M5 stops it.

Yes, my typo, just S, not SP.
I do wonder whether some of the more "advanced" boards, like the Duet WiFi, actually perform better, or whether the results are the same.
I think I may get a RAMPS board, if only because it supports Marlin, and that's what the MPCNC uses.
On the other hand, there is a smoothieboard clone on aliexpress for $40. . Hmm... It's tempting....
The jump from GRBL 0.9 to 1.1 convinced me that the firmware can make a difference, that it's not just all equivalent.

@neverdie I have always said, at least for 3D printers, that RAMPS was the way to go if you had to change your main board. Many of these 3D printer main boards have everything integrated into them. With RAMPS, it is all modular. If something dies, you are replacing 1 part rather than an entire board.

@dbemowsk I'll give it a shot. I ordered a mildly upgraded RAMPs board (so called "version 1.6"). It doesn't have the resettable fuses, which I guess have a dodgy reputation (or so Tom Sanlanderer seems to imply).
https://www.aliexpress.com/item/BigtreetechupgradeRamps15BaseonRamps143DcontrolpanelprinterControlReprap/32822038995.html?spm=a2g0s.9042311.0.0.9zbnJj
I'll be curious as to whether it can accept either the TMC2130 or the TMC2660 modules.

@neverdie I think most of those stepper driver modules run the same footprint. Check out this link. It is from Tom's 3D forum. People there are talking about those as replacements for the DRV88256's, which are the ones that I have. May be some useful info for you.
https://discuss.toms3d.org/hardwaref6/drv8825vstmc2100vstmc2130vstmc2208t250.html

@dbemowsk Short of making a very careful study of the datasheets, the other info that's available is awfully sketchy, so I ordered one of each module, and I'll see if I can get either one to work on the RAMPS board that I ordered. I'm not completely sure, but I get the impression that after they are properly configured, they can maybe just plug and play.

So, here is the latest update with pictures. I have the whole setup mounted on a leftover piece of MDF. I am using an ATX computer power supply to run everything. The fan pulls air from the back of the setup and blows it over the heatsinks for all of the modules.
For spindle control I have 3 different modules. The first is a buck converter to boost the 12 volts to 24 for running the spindle motor.
Next I have a dual HBridge that I had in my parts bin. I am only using one side of it. This handles the motor direction and speed. One problem with it that I had to overcome was that it had separate logic inputs for forward and reverse. The problem was that the CNC shield had a single output for spindle direction. To overcome this, I made a simple not gate circuit using an NPN switching transistor which sends a normal logic level to one input pin and an inverted signal to the other. I then use the enable line to start and stop the spindle. This setup works well.
This is the entire spindle drive circuity.
Here is an angled front view.

Don't forget to include a snub diode on the motor, if you haven't already.

@neverdie I thought that that was integrated on to the HBridge controller.

@dbemowsk If that's what it is, then I guess you're covered.

I like the idea of recycling an old PC power supply with a boost converter. For instance, a lot of the 48v power supplies don't come with regular 110VAC plugs, and you're even left with semiexposed 110VAC wiring, so this kinda works around that. It's a bit ungainly, but it works.
The only problem is you probably can't get to more than 240w, as that would be 20amps at 12v to the input of the boost converter. Actually less than 240w because of conversion inefficiency. At best probably just 0.85*240=204w. Maybe it would be good enough for milling PCBs though.

So I am trying to test the new machine and am having some trouble. I am running into an issue with some gcode I am testing. The gcode was generated from inkscape and I am including the gcode below. The way I am testing this is just using a terminal connection to the CNC and pasting the gcode into the terminal window. If there is a better way to test this let me know.
When I paste in the gcode below, the CNC runs through part of it and then stops. If I then hit enter in the terminal window I get this:
error: Invalid gcode ID:35
From my research on this error I found this:
A G2 or G3 arc, traced with the offset definition, is missing the IJK offset word in the selected plane to trace the arc.After testing in chunks, I have found the line that appears to be causing the error.
This will cause the error:G01 Z0.125000 F100.0 G03 X44.448347 Y19.159901 Z0.125000 I203.958107 J224.353401 F400.000000 G03 X45.751092 Y20.363421 Z0.125000 I235.328819 J256.037427 G03 X47.053649 Y21.586232 Z0.125000 I48.170466 J52.617095 G03 X47.737750 Y22.275812 Z0.125000 I14.623944 J15.191857 G03 X49.369789 Y24.042092 Z0.125000 I12.444180 J13.135542 G03 X50.077180 Y25.172247 Z0.125000 I4.326712 J3.494655 G03 X50.505064 Y26.430623 Z0.125000 I5.413285 J2.542606 G03 X50.652755 Y27.790183 Z0.125000 I6.183798 J1.359560 G03 X50.459010 Y29.287714 Z0.125000 I5.884361 J0.000000 G03 X50.002913 Y30.259582 Z0.125000 I2.876467 J0.756965
If I run it just to the line that ends in J0.000000, I don't get the error. From all the testing I am doing, it almost seems like a problem with the version og GRBL that I am running. If anyone can help, it would be greatly appreciated.
Here is the full gcode file I am trying to run.
% (Header) (Generated by gcodetools from Inkscape.) (Using default header. To add your own header create file "header" in the output dir.) M3 (Header end.) G21 G00 Z5.000000 G00 X43.225993 Y18.042555 G01 Z0.125000 F100.0 G03 X44.448347 Y19.159901 Z0.125000 I203.958107 J224.353401 F400.000000 G03 X45.751092 Y20.363421 Z0.125000 I235.328819 J256.037427 G03 X47.053649 Y21.586232 Z0.125000 I48.170466 J52.617095 G03 X47.737750 Y22.275812 Z0.125000 I14.623944 J15.191857 G03 X49.369789 Y24.042092 Z0.125000 I12.444180 J13.135542 G03 X50.077180 Y25.172247 Z0.125000 I4.326712 J3.494655 G03 X50.505064 Y26.430623 Z0.125000 I5.413285 J2.542606 G03 X50.652755 Y27.790183 Z0.125000 I6.183798 J1.359560 G03 X50.459010 Y29.287714 Z0.125000 I5.884361 J0.000000 G03 X50.002913 Y30.259582 Z0.125000 I2.876467 J0.756965 G03 X49.239064 Y30.916004 Z0.125000 I1.644692 J1.141216 G03 X48.146224 Y31.169360 Z0.125000 I1.092840 J2.230286 G03 X47.289509 Y31.048092 Z0.125000 I0.000000 J3.086831 G03 X46.475200 Y30.686621 Z0.125000 I0.908316 J3.144182 G03 X45.866393 Y30.136858 Z0.125000 I1.149043 J1.884428 G03 X45.713957 Y29.684007 Z0.125000 I0.596437 J0.452850 G03 X45.985338 Y29.064178 Z0.125000 I0.843529 J0.000000 G03 X46.679436 Y28.792797 Z0.125000 I0.694099 J0.751942 G02 X47.335454 Y28.673230 Z0.125000 I0.000000 J1.859443 G02 X47.812019 Y28.365758 Z0.125000 I0.474548 J1.258585 G02 X48.135474 Y27.903550 Z0.125000 I0.880288 J0.960310 G02 X48.257626 Y27.288877 Z0.125000 I1.485457 J0.614672 G02 X48.104631 Y26.518211 Z0.125000 I2.017507 J0.000000 G02 X47.682050 Y25.896359 Z0.125000 I1.707278 J0.705676 G02 X47.046759 Y25.486928 Z0.125000 I1.345892 J1.390756 G02 X46.270965 Y25.339351 Z0.125000 I0.775794 J1.965345 G02 X45.292182 Y25.503034 Z0.125000 I0.000000 J3.008278 G02 X44.544242 Y25.933491 Z0.125000 I0.740151 J2.151068 G02 X44.042842 Y26.629349 Z0.125000 I1.319262 J1.479165 G02 X43.857268 Y27.530245 Z0.125000 I2.093979 J0.900896 G02 X44.053076 Y28.610069 Z0.125000 I3.075347 J0.000000 G02 X44.637076 Y29.609740 Z0.125000 I3.204798 J1.201795 G02 X45.497064 Y30.450999 Z0.125000 I4.328411 J3.564579 G02 X46.382366 Y30.983691 Z0.125000 I2.558297 J3.249731 G02 X47.382290 Y31.355341 Z0.125000 I3.964670 J9.135984 G02 X48.109089 Y31.522132 Z0.125000 I1.448687 J4.645789 G02 X48.873231 Y31.617913 Z0.125000 I1.459799 J8.550217 G02 X49.724411 Y31.652101 Z0.125000 I0.851180 J10.578908 G02 X51.889847 Y31.372996 Z0.125000 I0.000000 J8.539831 G02 X53.549194 Y30.649487 Z0.125000 I1.488545 J5.678518 G02 X54.704159 Y29.414339 Z0.125000 I1.811549 J2.851516 G02 X55.127380 Y27.753048 Z0.125000 I3.048959 J1.661291 G02 X54.936373 Y26.631768 Z0.125000 I3.386657 J0.000000 G02 X54.384704 Y25.636421 Z0.125000 I3.198858 J1.122406 G02 X53.586077 Y24.796888 Z0.125000 I4.668650 J3.641547 G02 X52.750815 Y24.225335 Z0.125000 I2.952589 J3.418787 G02 X51.827360 Y23.791569 Z0.125000 I7.103306 J13.922514 G02 X49.947214 Y23.018488 Z0.125000 I24.534815 J56.996312 G03 X48.140362 Y22.212394 Z0.125000 I6.972211 J18.056198 G03 X47.867719 Y21.960175 Z0.125000 I0.309378 J0.607900 G01 X47.867719 Y21.885905 Z0.125000 G02 X48.332245 Y21.916706 Z0.125000 I1.362590 J17.031956 G02 X48.926032 Y21.941607 Z0.125000 I1.463551 J27.806724 G02 X49.538817 Y21.955270 Z0.125000 I1.159694 J38.263217 G02 X50.225717 Y21.960178 Z0.125000 I0.686900 J48.074419 G01 X53.159290 Y21.960178 Z0.125000 G03 X54.047826 Y22.036865 Z0.125000 I0.000000 J5.185830 G03 X54.440406 Y22.182978 Z0.125000 I0.196020 J1.127129 G03 X54.758038 Y22.451881 Z0.125000 I0.663402 J1.105664 G03 X54.978847 Y22.814255 Z0.125000 I1.019962 J0.869964 G03 X55.149683 Y23.228183 Z0.125000 I5.791228 J2.632369 G03 X55.275917 Y23.612631 Z0.125000 I4.868337 J1.811474 G02 X55.407546 Y24.001962 Z0.125000 I45.628782 J15.209704 G02 X55.498720 Y24.262473 Z0.125000 I20.519916 J7.035405 G01 X55.740088 Y24.262473 Z0.125000 G01 X54.551808 Y17.912589 Z0.125000 G01 X43.225993 Y17.912589 Z0.125000 G01 X43.225993 Y18.042555 Z0.125000 G00 Z5.000000 (End cutting path id: path4518) (Start cutting path id: path4516) (Change tool to Default tool) G00 Z5.000000 G00 X35.980838 Y21.607403 G01 Z0.125000 F100.0(Penetrate) G01 X35.980838 Y25.190815 Z0.125000 F400.000000 G01 X35.999408 Y27.233175 Z0.125000 G03 X35.574593 Y26.748497 Z0.125000 I52.703425 J46.622391 G03 X34.773990 Y25.822090 Z0.125000 I191.750900 J166.520630 G02 X33.983162 Y24.922179 Z0.125000 I36.848082 J31.584152 G02 X32.917298 Y23.761165 Z0.125000 I62.405165 J56.220956 G02 X31.819666 Y22.649912 Z0.125000 I29.726417 J28.264352 G02 X30.726405 Y21.625970 Z0.125000 I26.328768 J27.015589 G01 X33.028700 Y21.607400 Z0.125000 G01 X35.980838 Y21.607403 Z0.125000 G00 Z5.000000 (End cutting path id: path4516) (Start cutting path id: path4516) (Change tool to Default tool) G00 Z5.000000 G00 X40.399760 Y21.607403 G01 Z0.125000 F100.0(Penetrate) G01 X42.590657 Y21.607403 Z0.125000 F400.000000 G01 X42.590657 Y20.809024 Z0.125000 G01 X40.399760 Y20.809024 Z0.125000 G01 X40.399760 Y20.084915 Z0.125000 G03 X40.407178 Y19.750985 Z0.125000 I7.520648 J0.000000 G03 X40.436895 Y19.249405 Z0.125000 I17.002115 J0.755670 G03 X40.546108 Y18.791102 Z0.125000 I1.970229 J0.227339 G03 X40.696833 Y18.543863 Z0.125000 I0.702969 J0.258990 G03 X40.941182 Y18.384755 Z0.125000 I0.600616 J0.655210 G03 X41.290973 Y18.283925 Z0.125000 I0.555297 J1.269242 G03 X41.662590 Y18.250282 Z0.125000 I1.978264 J19.782188 G03 X41.977950 Y18.228226 Z0.125000 I1.153236 J14.223609 G02 X42.293361 Y18.222789 Z0.125000 I0.000000 J9.150730 G02 X42.516390 Y18.209656 Z0.125000 I0.158205 J4.587139 G01 X42.516390 Y17.912583 Z0.125000 G01 X33.715674 Y17.912583 Z0.125000 G01 X33.715674 Y18.209656 Z0.125000 G01 X34.198412 Y18.209656 Z0.125000 G03 X34.458043 Y18.231591 Z0.125000 I0.716004 J10.022311 G03 X34.959656 Y18.283923 Z0.125000 I3.655306 J37.467340 G03 X35.448552 Y18.416918 Z0.125000 I0.290338 J2.032389 G03 X35.683768 Y18.580993 Z0.125000 I0.249659 J0.608548 G03 X35.843078 Y18.850674 Z0.125000 I0.547342 J0.505231 G03 X35.962270 Y19.416503 Z0.125000 I2.408402 J0.802798 G01 X35.999405 Y20.809021 Z0.125000 G01 X29.723789 Y20.809021 Z0.125000 G01 X29.723789 Y21.198928 Z0.125000 G03 X31.120862 Y22.513291 Z0.125000 I26.402073 J29.463183 G03 X32.713060 Y24.151066 Z0.125000 I39.419679 J39.915522 G03 X34.252508 Y25.840106 Z0.125000 I70.593355 J65.887243 G03 X36.017970 Y27.864447 Z0.125000 I99.645628 J88.684620 G03 X37.748161 Y29.937732 Z0.125000 I142.627488 J120.783656 G03 X39.025809 Y31.522129 Z0.125000 I82.011066 J67.440569 G01 X40.399760 Y31.522129 Z0.125000 G01 X40.399760 Y21.607403 Z0.125000 G00 Z5.000000 (End cutting path id: path4516) (Start cutting path id: path4514) (Change tool to Default tool) G00 Z5.000000 G00 X18.865337 Y24.225335 G01 Z0.125000 F100.0(Penetrate) G01 X20.480658 Y31.559267 Z0.125000 F400.000000 G01 X20.647760 Y31.559267 Z0.125000 G03 X21.301879 Y31.370938 Z0.125000 I4.220657 J13.429377 G03 X22.207381 Y31.150795 Z0.125000 I6.684447 J25.522464 G03 X23.141733 Y31.001820 Z0.125000 I1.740292 J7.910320 G03 X24.249741 Y30.946556 Z0.125000 I1.108007 J11.079935 G03 X25.672326 Y31.009030 Z0.125000 I0.000000 J16.228010 G03 X26.570605 Y31.150795 Z0.125000 I0.580218 J6.593308 G03 X27.163172 Y31.377624 Z0.125000 I16.345032 J43.587248 G03 X27.758887 Y31.614966 Z0.125000 I17.300215 J44.288718 G02 X27.874660 Y31.545070 Z0.125000 I0.000000 J0.130829 G02 X27.944556 Y31.262194 Z0.125000 I0.537466 J0.282876 G02 X27.858000 Y30.728811 Z0.125000 I1.686705 J0.000000 G02 X27.517517 Y29.981077 Z0.125000 I3.699295 J1.233098 G02 X27.036658 Y29.338516 Z0.125000 I2.958736 J1.712955 G02 X26.087865 Y28.477160 Z0.125000 I6.317281 J6.005326 G02 X24.999472 Y27.947358 Z0.125000 I1.799138 J2.313175 G02 X22.968624 Y27.697349 Z0.125000 I2.030848 J8.123382 G02 X22.023587 Y27.724483 Z0.125000 I0.000000 J16.470844 G02 X21.353303 Y27.790183 Z0.125000 I0.479583 J8.344780 G02 X20.698448 Y27.945130 Z0.125000 I0.823870 J4.943211 G02 X20.090753 Y28.180087 Z0.125000 I1.386162 J4.488536 G01 X19.496612 Y25.562154 Z0.125000 G02 X20.420767 Y26.277720 Z0.125000 I3.544856 J3.623633 G02 X21.371870 Y26.694735 Z0.125000 I2.068978 J3.425688 G02 X22.425760 Y26.915093 Z0.125000 I1.767117 J5.821095 G02 X24.045505 Y27.010372 Z0.125000 I1.619745 J13.720196 G02 X26.002310 Y26.698984 Z0.125000 I0.000000 J6.304103 G02 X27.684619 Y25.822090 Z0.125000 I1.793851 J5.493667 G02 X28.853132 Y24.429454 Z0.125000 I2.426172 J3.222266 G02 X29.262806 Y22.721416 Z0.125000 I3.355793 J1.708038 G02 X28.719685 Y20.623608 Z0.125000 I4.322955 J0.000000 G02 X27.201879 Y19.008034 Z0.125000 I3.955337 J2.195212 G02 X25.055324 Y18.043352 Z0.125000 I4.247338 J6.580391 G02 X22.467318 Y17.689786 Z0.125000 I2.588006 J9.294965 G02 X20.516310 Y17.965951 Z0.125000 I0.000000 J7.029654 G02 X19.125274 Y18.655265 Z0.125000 I1.211062 J4.192136 G02 X18.167632 Y19.798729 Z0.125000 I2.094628 J2.726975 G02 X17.844157 Y21.124661 Z0.125000 I2.555779 J1.325932 G02 X18.001470 Y21.835020 Z0.125000 I1.682496 J0.000000 G02 X18.475432 Y22.480048 Z0.125000 I1.845992 J0.859776 G02 X19.163765 Y22.908353 Z0.125000 I1.503460 J1.648961 G02 X19.942218 Y23.055620 Z0.125000 I0.778453 J1.983804 G02 X20.910521 Y22.903307 Z0.125000 I0.000000 J3.154065 G02 X21.668941 Y22.498615 Z0.125000 I0.744739 J2.308701 G02 X22.184274 Y21.866063 Z0.125000 I1.061617 J1.391084 G02 X22.374483 Y21.031827 Z0.125000 I1.734336 J0.834236 G02 X22.212395 Y20.170622 Z0.125000 I2.368924 J0.000000 G02 X21.780342 Y19.509343 Z0.125000 I1.793062 J0.699732 G03 X21.254269 Y18.887006 Z0.125000 I3.449199 J3.449189 G03 X21.186201 Y18.673830 Z0.125000 I0.299780 J0.213176 G03 X21.278233 Y18.397734 Z0.125000 I0.460159 J0.000000 G03 X21.576106 Y18.153956 Z0.125000 I0.643932 J0.482949 G03 X21.992550 Y18.027396 Z0.125000 I0.884662 J2.162523 G03 X22.393050 Y17.986856 Z0.125000 I0.400500 J1.958017 G03 X23.573351 Y18.312863 Z0.125000 I0.000000 J2.299628 G03 X24.286875 Y19.119436 Z0.125000 I0.912880 J1.526457 G03 X24.642008 Y20.282923 Z0.125000 I4.628727 J2.048777 G03 X24.788181 Y21.941607 Z0.125000 I9.337783 J1.658684 G03 X24.614609 Y23.704630 Z0.125000 I9.040542 J0.000000 G03 X24.156906 Y25.116548 Z0.125000 I6.224224 J1.237565 G03 X23.309525 Y26.128896 Z0.125000 I2.201031 J0.981541 G03 X22.133113 Y26.490499 Z0.125000 I1.176411 J1.732823 G03 X20.931989 Y26.297380 Z0.125000 I0.000000 J3.831820 G03 X20.220721 Y25.859224 Z0.125000 I0.566382 J1.715806 G03 X19.619208 Y25.205500 Z0.125000 I7.557493 J7.557497 G03 X19.403778 Y24.893745 Z0.125000 I1.484653 J1.256244 G03 X19.256083 Y24.552361 Z0.125000 I3.008082 J1.504041 G03 X19.143841 Y24.188203 Z0.125000 I3.312064 J1.220236 G01 X18.865337 Y24.225335 Z0.125000 G00 Z5.000000 (End cutting path id: path4514) (Start cutting path id: path4512) (Change tool to Default tool) G00 Z5.000000 G00 X14.904203 Y20.233452 G01 Z0.125000 F100.0(Penetrate) G01 X14.941337 Y19.379374 Z0.125000 F400.000000 G03 X15.057746 Y18.793506 Z0.125000 I2.825055 J0.256823 G03 X15.201274 Y18.543863 Z0.125000 I0.629513 J0.195849 G03 X15.445033 Y18.383087 Z0.125000 I0.623587 J0.680268 G03 X15.776848 Y18.283925 Z0.125000 I0.534255 J1.182988 G03 X16.129803 Y18.248805 Z0.125000 I3.255779 J30.929087 G03 X16.370989 Y18.228226 Z0.125000 I1.351946 J14.421104 G02 X16.630791 Y18.223896 Z0.125000 I0.000000 J7.796989 G02 X16.927996 Y18.209656 Z0.125000 I0.340681 J10.218602 G01 X16.927996 Y17.912583 Z0.125000 G01 X8.164415 Y17.912583 Z0.125000 G01 X8.164415 Y18.209656 Z0.125000 G01 X8.572887 Y18.209656 Z0.125000 G03 X8.795484 Y18.230346 Z0.125000 I0.974770 J11.695148 G03 X9.296997 Y18.283923 Z0.125000 I6.094603 J59.423063 G03 X9.785893 Y18.416919 Z0.125000 I0.290337 J2.032380 G03 X10.021106 Y18.580993 Z0.125000 I0.249656 J0.608537 G03 X10.180418 Y18.850674 Z0.125000 I0.547335 J0.505231 G03 X10.299610 Y19.416503 Z0.125000 I2.408361 J0.802788 G01 X10.336743 Y20.270581 Z0.125000 G01 X10.336743 Y28.997033 Z0.125000 G01 X10.299610 Y29.851111 Z0.125000 G03 X10.182971 Y30.400736 Z0.125000 I2.487771 J0.240753 G03 X10.021106 Y30.686621 Z0.125000 I0.810657 J0.270219 G03 X9.776926 Y30.897553 Z0.125000 I0.581679 J0.426566 G03 X9.389831 Y31.020826 Z0.125000 I0.534986 J1.010529 G03 X8.980496 Y31.066901 Z0.125000 I1.187543 J8.708864 G03 X8.554320 Y31.095093 Z0.125000 I0.836645 J9.412371 G02 X8.127360 Y31.133065 Z0.125000 I9.469020 J108.890844 G02 X7.941612 Y31.150795 Z0.125000 I1.875189 J20.626530 G01 X7.941612 Y31.447865 Z0.125000 G01 X14.904203 Y31.447865 Z0.125000 G01 X14.904203 Y20.233452 Z0.125000 G00 Z5.000000 (End cutting path id: path4512) (Footer) M5 G00 X0.0000 Y0.0000 M2 (Using default footer. To add your own footer create file "footer" in the output dir.) (end) %

@dbemowsk said in DIY CNC mill from mainly salvaged and 3D printed parts:
The way I am testing this is just using a terminal connection to the CNC and pasting the gcode into the terminal window. If there is a better way to test this let me know.
This may be your problem, or at least a contributing factor. Try using a gcode sender, such as ChiliPeppr, instead.

@neverdie Thanks a million. I tried the online version of chilipeppr and it seem s to be working.

So I did a test run of an old style font carving my house number into a piece of wood. I created the gcode using Inkscape which is a popular vector graphics program. For a test run I think it went fairly well.
I did a video of it carving. The spindle is spinning much faster than it looks like in the video. It has to do with the recording frame rate on my phone.
Test run of my CNC â€“ 12:00
â€” Dan Bemowski

Looks like your spindle may have really bad runout.

@neverdie I don't think it's runout. If you look, a lot of the video is shaky. I think it is vibration from the V bit cutting into the wood. The tip of that bit may be bent a little which would cause vibration like that. I guess I'l find out when I try cutting a PCB. When I do one, I'll change to a new bit. I ordered a pack of 10. I have to see if I have any copper clad laying around.

@dbemowsk As it turns out, I too will have to make something similar to:
in order to install my new brushless motor on the zaxis. What parts should I order to go inside the plastic? I mean, obviously two ball bearing something's and some kind of threaded nut or something. I'm just not sure exactly which something's I should get, if you know what I mean. Did you buy your something's, or were they junkdrawer parts that you had laying around?The zaxis that came with the 2418 is just a unit that came preassembled. I'm not even sure how I will take it apart. I suppose I could maybe extract the parts that are in it and reuse them, but they're melted into the plastic, so if I do that, I'm burning my bridges back to the system as it currently is. It does work, so I'm reluctant to wreck it.

@neverdie I wouldn't advise tearing apart your old one. As you mentioned, you could at least fall back to that if it came down to it. I am assuming that you are getting a different spindle motor?
To make that part I just used 3D printed linear bearings that the smooth rods slide into. For the threaded rod/lead screw, I used a threaded rod coupler nut like this one:
I just hollowed out the hex shape inside the plastic so that when it is tightened on it holds it snug. I designed the part in OpenSCAD. Because I was designing the part myself, I had free reign on the design.

Sorry, meant to include a pic of the bearings. These fit into the outer recessed areas in the frame. I did it this way so I could change them if I had to.

So, I was doing some reading on how to use autoleveling with GRBL and the CNC shield that I have. What I read was that for GRBL on an arduino, the probe needed to be connected to analog pin 5 and ground. For the shield that I have, this is the arduino pinout that I found on it:
Turns out that A5 is not connected on my shield and is labeled (not used/reserved). Luckily, in my parts bin I had a couple arduino uno prototyping boards. So I made a board that stacks in between the CNC shield and the uno. Here is the board with the probe attached:
The probe wires are made from an old dupont header cable that was salvaged out of an old PC. I figured that fit right in with the theme of the project.And here is the stack.
I did a test and the probe seems to work. Tomorrow I will probably do a test mill of a small pcb to see how that works out.For a junk parts build, I am pretty happy with the way it is turning out.

So, turns out the shaft couplers that I got are kind of crappy and seem to come loose every so often. These are the ones that I got which have their set screws on opposite sides from each other:
I am looking to get some replacements, but am wondering which style would be best to get. There is this style which has set screws at 90 degrees to each other:
There is this style which actually clamps around the shaft:
Then there is this style that also is a clamp style which says that it is somewhat flexible. The thing with this style is that I don't know if it separates at the red part:
The shaft on my stepper is a D shaft, so I am wondering how well the clamp style ones will work, at least on the motor side. The lead screw is round, so that should be fine for the one clamp.
Any thoughts?

@dbemowsk My kit came with the same blue couplers, and they came loose too. However, loctite fixed the problem.

@neverdie I'm assuming you used loctite blue?

@dbemowsk Yes.

I believe the flexible couplers are for when the stepper axis isn't colinear with the threaded rod.

@neverdie I still may buy another set. I think the clamping style would be the best, but as I said, not sure how that would be on the D shaft.

@dbemowsk Are these not something you can 3D print? Then you could customize to the D shaft if you like.

BTW, I suspect that using longer linear bearings will lead to less slop:
http://a.co/0yWkPgi

@neverdie said in DIY CNC mill from mainly salvaged and 3D printed parts:
@dbemowsk Are these not something you can 3D print? Then you could customize to the D shaft if you like.
I guess I hadn't thought about 3D printing them. I did order a pack of two though.
https://www.amazon.com/uxcellEncoderCouplerCoupling8mmx5mm/dp/B01E0CTI42/ref=sr_1_14?ie=UTF8&qid=1522050398&sr=814&keywords=5mm+8mm+coupler
@neverdie said in DIY CNC mill from mainly salvaged and 3D printed parts:
BTW, I suspect that using longer linear bearings will lead to less slop:
I would tend to agree. Does your CNC use linear bearings?

@dbemowsk said in DIY CNC mill from mainly salvaged and 3D printed parts:
Does your CNC use linear bearings?
Yes.

Just a note to everyone. These style couplers are NOT good for the X axis, or Z axis if the motor is vertical and facing down.
The problem is that the spiral part is actually quite springy. When say the X axis motor spins to pull the X axis to one side, the springy part seems to really stretch. Pushing the X axis works fine. Since my Z axis motor is mounted on top with the weight of the axis being downward, this will cause the coupler to stretch even more. My 3D printer uses these on it's Z axis which works fine because the motors face up with the pressure of the Z axis down on the couplers.The only thing about the ones that I got that I liked was the way that it clamps to the shaft. I think the clamping action is better because you get more surface area grabbing the shaft.
Something like this may be the best because it is solid and there is no stretching. It also has the clamping action.

@dbemowsk they should work if used as intended. These couplings are supposed to be stiff in only one direction of freedom: Rotation of the axis (=transfer the torque of the motor to the axis). The other 5 degrees of freedom should be of low stiffness to absorb misalignment between motor and axis. So the correct type of bearings should actually constrain the axis to only rotate in one DoF and not translate into the coupling.

@technovation DIDn't think about that when I bought them. I will save them for spares for my 3D printer.

I notice that the kit from CNCrouterParts does appear to use the springy couplers:
John Park's Workshop: CNC Machine Kit Build @adafruit @johnedgarpark #adafruit â€“ 09:28
â€” Adafruit IndustriesSo, I guess it can't be bad, because they seem to make very nice kits.