New user, new build, join me as I figure out all out

After a couple months of research I was lucky enough to come across V1 engineering and the MPCNC. I’ve been wanting to build my own CNC for a while, and this fits my style perfectly.
I figured that as a new user, what better way to introduce myself than to have an open topic for my ongoing build. My successes and failures shall be published in this thread.
I’m still in the early stages of collecting all my parts and getting things printed. I currently have only 4 feet and 2 trucks printed with 2 mirrored trucks in the printer right now. I’ve also picked up my stepper motors and drivers. The current plan is to run the CNC with LinuxCNC from a PC via the parallel port.
More info and photos to come, and if anyone has any questions or comments, feel free to fire away!

2 Likes


The stepper motors are the recommended ones linked through Amazon in the parts list of the build website. The drivers are “good enough” cheap drivers that will at least allow me to get things running, even if it is at a slow speed. I plan on designing my own custom drivers once I get things going, I simply needed something that functioned even if it’s not that great.
Feet and trucks, in black. My color theme is going to be black and “electric blue” according to the filament info.
I should be getting my PC parallel port breakout board tomorrow. I’ll try updating again with photos and diagrams of the LinuxCNC side of things once that comes in.

2 Likes

Good start. I am not consistent enough printing to have a color scheme but blue and black sounds good


Parallel breakout board came in today, so now I can hopefully get started on getting the electronics in working order. I’m still on the fence about how exactly to drive the mirrored motors on the X and Y axis. I’m using a dedicated driver for each motor, I’m not a fan of lengthy wiring for putting motors in series, and parallel will simply pull too much current.
LinuxCNC uses the parallel port on the PC to send out the logic to control the motors. Each axis has a Step and Direction output line to connect to the drivers. I initially wanted to have two Direction outputs for the X and Y axis individually, but invert the logic in software. I found out that attempting to have multiple outputs for the same logic line just throws errors and refuses to start. So much for that idea.
So I’m considering wiring the axis drivers with shared Dir/Step lines, and invert one of the coils on a driver to reverse. Or use a logic inverter NOT gate to invert the signal in hardware. I’ll have to experiment some once I get further.
Power supply for the steppers will be a no-frills 24-ish, 10 Amp supply from a toridal transformer that I pulled from old equipment.

Well blue is my favorite color, so I’m following the A/B color scheme to keep things simple when following instructions. I’m not too consistent, but I’m consistent enough right now to hopefully get all the parts out :sweat_smile:

300VA transformer is massive overkill for this, key word here being massive.

Would it not be so much simpler to just wire the motors in series off of one driver? It will still work in the same manner as the pololu drivers that we typically use on our Marlin boards, then you can have the two motors from the same driver. Well, unless you want dual endstop functionality, I suppose, but that looks like a 3 axis breakout board to me, so dual endstops is a no-go.

So you basically just need to wire both motors to one driver for both X and Y, then you only need 3 drivers for 3 axes.

Yep, I know, but it’s the only transformer with the voltage rating that I already have. I’m trying to use a lot of parts already lying around. At least power won’t be an issue :grin:

It would be simpler to wire in series, but I have more advanced plans for power monitoring in the future. I may do it just to get things running off my other options don’t work out. I really want each motor to have a dedicated driver, but like I said, it’s mainly for future plans.

As far as the BOB is concerned, it gives access to all of the pins but has built in drivers for input/output switching on the D0 - D7 lines with pull-up/pulldown options. I can pick and choose what each pin is used for under LinuxCNC, so I can in theory have more than 3 axis, and/or multiple limit switches. Have you ever used LinuxCNC before? I haven’t put in much time with it, but I’ve gone through the documents a good bit.
The plan is to have the 3 axis, with X,Y, and Z home limit switches. I should be able to do that with only 6 outputs and 3 inputs which still leaves me with many more I/O’s for other things.

Of course, this is all ‘planned’ and may not work like I want it too :rofl:

Yeah, I was looking at the specs of the C10.

Looks like you mainly get 5 input pins and 12 outputs, at least that’s probably the best way to use it for dual endstops, but doesn’t let you do much else for monitoring. You still need enable, step and direction pins for each driver at a minimum. If you do a group enable, all on one pin, that gives you 5 drivers with 5 inputs (X1, X2, Y1, Y2, Touchplate/Z) and one for spindle control. Since the C10 board is all TTL, it will need some hardware to multiplex the signals to different drivers if you want any more. Still, with one home stop per axis, I can’t see any reason at all not to run the motors in serial from one driver.

Speaking of hardware, I’d recommend a soft start for that transformer. It will have a HUGE inrush current draw when you turn it on, even more so if you happen to do so at a zero crossing moment for your mains. Basically, you wire some ceramic 5W resistors in parallel and heat sink the crap out of them. (You’ll actually be running a lit more than 5W through them, but only for a moment.) Wire it so that the resistors are always in-circuit and the relay shorts across them. This does mean that the resistors are likely to get hot, so take appropriate precautions. Soft starts for torroidal transformers are pretty standard in audio equipment. This is a great example for audio equipment. You can dispense with a lot of the control circuit, taking power from your 24V DC instead of running a separate transformer, and a cheap voltage divider. You shouldn’t need the transistor or MOSFET either, just a couple of cheap flyback diodes for the relay. Buildable for under $15, and it may save your computer PSU and/or a few lightbulbs from spikes/brownouts caused by inrush. 300VA isn’t terrible, but I blew up a few things before I put soft-starts into my audio amplifiers…

Disclaimer: Mess with mains wiring at your own discretion, risk and peril. Mains wiring can seriously injure or kill you, start fires, and generally destroy stuff.

LinuxCNC is quite powerful, but because it uses the parallel port, it’s more limited in I/O than a GRBL board would be, and a RAMPS board has even more I/O. You have a hard limit of 17 bits of data with an IEE1284 parallel port. You can multiplex them for multiple unique non-coincidental signals (That is, use 2 bits to show/control 4 different things that cannot happen at the same time) but the usefulness of this is pretty limited, you’re probably better off not trying to do that. By comparison, a GRBL board using the Uno has 20 pins of data, 6 of which can be analog inputs, which are much more flexible. It also has excellent PWM capabilities. (The Mega 2560 for the RAMPS has 54 I/O pins… 'nuff said.)

Anyway, I think that dual endstops is a pretty hard push with the parallel port, and without them… I guess I just don’t understand what you’re trying to achieve with 5 drivers when 2 of them will basically be slaved to another 2.

Now, if you really want, you’ll need a TTL buffer chip, so that you can take the one TTL signal and split it to 2 drivers. You’ll also want a TTL NOT gate (TTL7404?) for the opposite side, though you could solve that with wiring so that the motors are reversed.

1 Like

I 100% appreciate every bit of advice, some of which I will take into consideration going forward. I should throw out there that I’m not new to electronics, I earned an EE degree some 13 years ago. The world of electrons has changed a lot since then and I’ve been doing my best to keep up. One of my final projects for a semester in college was building an XY plotter that used an old PS/2 keyboard that let you input coordinates for the head to travel to. It was 100% from scratch, discrete transistors and PIC microcontrollers for the stepper drivers coded in assembly.
Lucky I don’t have any pictures, it was ugly to say it lightly.
My goals are to get this thing built and slowly shift away from so much extra hardware. I’d like to design a single PCB motor driver board and then move on to a stand alone motherboard for some projects.
I need a goal to achieve to end up with a working model. From there, after I learn more about CNC in general, I’ll start making my own additions/replacements.

But again, I really love the input and I hope you will be willing to keep sharing your knowledge with me. I certainly do not know everything.

1 Like

I connected up the parallel port breakout board with a logic analyzer and ran a demo program to check out the pulses. It works!
It’s hard to see anything on the screens really, but the logic analyzer connected to my PC on the right screen shows pulses for each axis motor. Now that I know what I’m working with, I can get the electronics all mounted together and (mostly) wired up.
My Ender 3 is still humming along like a champ. I nearly finished off a 1kg roll of PLA on parts this far, so I threaded in my blue filament and got started on the corner clamps. The blue is quite vibrant, hopefully it translates well while being extruded into parts. I’ll update with how they look once the current set finishes, hopefully in the morning before heading to work.

Reversing the coil is our standard practice. There is no real downside, AFAIK. But running them in series should be fine too. You can do all the Y splitting in the control box and it really isn’t any different than running cables for separate drivers. The two downsides of serial vs. separate are:

  • There is a lower top speed, but only when the source voltage saturates. This isn’t a problem. Most of the high torque situations are at low speed. Most of us are using 12V and a 24V supply would more than negate that problem, and I still don’t think it is generally worth it.
  • Series wiring can’t individually control the motors for auto aquaring. This is the only functional reason we have for using separate drivers. When homing, we let each motor feel for their own endstop and bump away to a tuned distance to make the axis square. After that, they move in lockstep and they function identically to series wiring.

At the end of the day, it is your machine. Do what makes you happy. I (and others) will happily pop in with some stories or perspective of what works here. But I don’t see any reason to stop what you are doing. It will work. If you end up with a few extra components and they make you feel more comfortable, then I am happy for you.

1 Like

I think you hit the nail on the head right there.
Unfortunately, my engineering style is to design something with as much control/flexibility as possible from the start. After the design goes through its paces, I then start removing parts or functions that aren’t needed. So I can honestly admit that I initially only wanted the ability to control the motors individually for the sake of being able to. Now that you pointed out the auto-squaring function, it’s going to be part of the design.
I often build things that are overly complicated for the challenge and experience. This isn’t a consumer product, so I don’t have to worry about keeping it too simple. I leave practicality at the door when I build devices for personal use. I’m still not sure if that is a good or bad thing :joy:


Corner leg locks came out beautifully. I really like the color, and this is newer “PLA+” filament that seems to be much better than my normal PLA. Same print settings, same brand, only a change from PLA to PLA+. The printer is currently working on the corner bottoms, so once those are finished (in about 24 hours) I can start attempting to put things together.
I have a massive piece of wood, it’s about 48"x30" and a little over 1.5" thick that I’m going to use as a base. I want to build the work area to about 16"x32" though I’m not set on that for certain yet. I may end up making it shorter, more like 16"x24" but we’ll see. I just ordered the rest of the hardware this morning, so it’ll be Wednesday before I even have the stuff in my hands.

Finally started the assembly. I have everything except for the core and it’s supporting mounts printed, so I can get a good bit of the assembly done. This wkill also allow me to start getting the electronics finalized.
The post office dropped off my parts yesterday, but everything came in about 6 different boxes. Of course one box didn’t make it on the truck, which happened to be the one with all the bearings and the 5/16" bolts, so the CNC trucks get to wait another day to be assembled.
I decided on making it 24" x 17" x 3.25". That will be plenty of space, no need to make it longer. I carefully started measuring out where to install the feet, and got them down. Perfectly squared on the first try! So I continued on with the corner bottoms pieces, installed the Y rails, then put in the X rails. I noticed that while the Y rails were quite flush, the X rails had some overhang. So I kept at it and after starting to bolt down the corner tops, I realized that I measured incorrectly. The left two feet were installed at 33 3/4" not 34 3/4" like I wanted. I used the wrong reference point when measuring :face_with_symbols_over_mouth:

I needed some sleep so I called it a night. Work has suddenly become crazy busy, and will continue that way for the next couple weeks. I would rather take my time and get everything right than rush it and mess up.


Great progress tonight, everything assembled (not including core parts) minus the y axis belts. It’s looking amazing and I’m stoked to get back at it tomorrow. All parts are in, core is printing in the 3D printer, cold beer in the fridge :laughing:
I should have the electronics part wired up tomorrow so I can start moving the X/Y axis motors.

Edit: I didn’t snap a photo when I finished for the evening. So this photo doesn’t show all of the progress.

2 Likes


Almost there. I slapped the electronics together into a box that I hastily made. I didn’t even bother putting the top on it, no real need at this moment. The only thing left before I can test run the X/Y axis is to wire the motors to the drivers. This was as far as I got yesterday before taking a break. It was HOT yesterday, so I went back inside. The build is in my garage and gets beat on by the sun in the afternoon.
Core just finished printing after nearly 40 hours. I used a 0.4 nozzle with 0.2mm layer heights. 70% infill. It looks good, but damn that took a while, lol.

2 Likes

Work has been treating me like a dog, so I haven’t been able to do much with the MPCNC. I have almost all of the parts printed now. The last batch of core mounts will be done by the evening, and aside from the cutting tool (I’m pretty well set on the Makita) I should have everything I need. Hopefully I’ll have enough free time (and the energy) throughout this current week to get it functional.
I did wire up the two stepper motors on the X axis just to try it out and I can easily get it to jog back and forth. I was an awesome sight to see it finally moving under power. I do need a bit of help/advice with the calibration.
I’m trying to figure out how much distance an axis can move when a stepper completes one full rotation. Part of the LinuxCNC setup requires various information to be input, but the common setups use a lead screw on all three axis, not just the Z axis like the MPCNC. I can spoof the numbers for it to still operate correctly, but in order to do that, I have to figure out the distance traveled during one full rotation.
I’m using everything that was recommended. GT2 10mm belt, 16T motor pulley, 200 step/rev NEMA17 motors, ect…
If I understand correctly, the pitch of the GT2 belt is 2mm. With the pulley having 16T, that would make one full rotation travel 32 mm? Which means that at 1/4 stepping, a motor runs at 800 steps/rev, which would be 800 steps per 32 mm, or 0.04mm/step.
Does that sound right? I didn’t take the chance to really try any calculated movements under LinuxCNC, I was forcing it to send out timed pulses just to get stuff moving.

Everything is pretty much printed/assembled with the exception of wiring. I have some drag chain, but I feel like they are a bit too bulky and should have gone with something smaller. So at this point it’s going to be up to me to put together some cable management. I’ve been checking out other builds and I see lots of great ideas that I’ll probably use.

2 Likes

As promised, progress came to a near standstill during the past week or so. But aside from this upcoming July 4th weekend, I should be able to put more time into this thing.
I have everything hooked up, got the Makita router, 1/8" collet with multiple bits (with fast shipping from V1), and even ran a test program on LinuxCNC to see how things work. I didn’t run the router, I still need to put together some braces to hold the material, but it ran pretty well! I have some loose bearing that are chattering, but those won’t be too hard to deal with.
So outside of the braces to hold the material being carved, all I really have left to do is cable management. I pick up some drag chain, but it’s much larger than I expected, so I may end up buying something smaller.
I’ll try to upload a video of it.

1 Like


Well, video uploaded much faster than I anticipated.
I sped up the video to 2x speed, and lowered the volume a bit. The bearing sound bad, lol.


It works!
I still need to tighten up the trucks and get the cable management taken care of, but I was still able to run it through a quick demo job.
I’m absolutely blown away how well it worked on the first run. It’s smooth sailing from here on out :star_struck:

1 Like