Show HN: I designed my own 3D printer motherboard

10 days ago (github.com)

3D printing is such a fascinating field of technology, so a couple months ago, I decided to take a deep dive and learn how they actually work!

This took me to one of my very first PCB projects, a small, cheap, 3D printer motherboard. While it's not the most cutting edge board, I learned a lot and I fully documented my process designing it (https://github.com/KaiPereira/Cheetah-MX4-Mini/blob/master/J...), so other people can learn from my mistakes!

It runs off of an STM32H743 MCU, has 4 TMC stepsticks with UART/SPI configurations, sensorless/endstop homing, thermistor and fan ports, parallel, serial and TFT display connectors, bed and heater outputs and USB-C/SD Card printing, all in a small 80x90mm form factor with support for Marlin and Klipper!

Because it's smaller and cheaper than a typical motherboard, you can use it for smaller/more affordable printers, and other people can also reference the journal if they're making their own board!

If I were to make a V2, I would probably clean up the traces/layout of the PCB, pay more attention to trace size, stitching and fills, BOM optimize even further, and add another motor driver or two to the board. I also should've payed a bit more attention to how much current I would be drawing, and also the voltage ratings, because some of the parts are under-rated for the power.

I'm still actively refining it and fixing up some of the mistakes, but I plan on using this board to make a tiny foldup 3D printer I can bring to hackathons and 3D print on the go!

The project is fully open source, and journaled, so if you'd like to check it out it's on GitHub (https://github.com/KaiPereira/Cheetah-MX4-Mini)!

I absolutely loved making this project and I'd love to hear what you guys would want to see in a V2!

I was confused by the prominent use of the word "stepstick", not something I was familiar with even though I try to expose myself to quite a lot of 3D printing material (having one is still more like a bucket list item, though).

I think the term is/was originally a product name for a small, rectangular module with a stepper motor driver on it [1] from 2012. Then it seems the term has been made more generic, with updated versions like the SilentStepStick [2] featuring a driver chip by Trinamic instead.

I guess my point is that for some readers, the stepper motor features on OP's board could be made more clear and perhaps use actual chip numbers, too. :)

Great job!

[1]: https://wiki.geeetech.com/index.php/StepStick_A4988_Stepper_...

[2]: https://learn.watterott.com/silentstepstick/

  • I think the thing about StepSticks is they all have same (or very similar) pinout - so as long as board is designed for generic "stepstick", you can plug your favorite kind.

    Earlier journal log entries mentioned TMC2209_SILENTSTEPSTICK, but most recent schematics removed this designation. Seems like an oversight.

You did an amazing job. What I really like is the attention to detail that will facilitate cable management and repair. This is the weak point for most 3D printers: when you run them long enough and hard enough they'll break and you will need to replace parts. Depending on the brand of printer this can be hard, tricky or next to impossible without a complete teardown of wiring looms and such.

Consider using a slightly higher level connection to the print head: just power and a serial protocol. That way you are immediately future proof. What firmware are you running on this?

  • I'm probably going to run Marlin just because it would be the first 3D printer I've actually made and I've heard it's more beginner friendly. I think Klipper also needs a dedicated host like a Pi which is a bit more overheard I don't want to worry about, but I'm open to exploring any type of firmware!

HW eng here.

If you need (emphasis on need - if it's not in the requirements, don't bother!) to make it smaller, you can fold the low power/compute section underneath the power section by putting it on another board and using either a mezzanine connector or FPC/FFC/ribbon cable to connect them.

You can also integrate the motor controllers directly onto your PCB and give them a combined thermal solution i.e. one heatsink with one fan if needed.

But likely your effort is better spent on making the rest of the printer rather than this :)

For your V2: a Can-Bus connector would be great. Should really be standard for toolheads nowadays. Makes cable management so much easyer. And the board does not need the driver for the extruder, the heater contoll and sensors anymore.

So maybe a version which is optimized for Can-Bus toolheads?

And more driver slots, 4 is not sufficient if you want a self leveling bed.

Vorons need 4 drivers for the gantry alone.

Really cool.

I found myself traveling recently and missed my 3d printer. There were a few neat things I could have done if I had a printer in a carry on. It would be kinda awesome to have a self contained 3d printer with a battery to take wherever I go.

If you're near a harbor freight, they have cheap rugged cases. Maybe design around that form factor, since they're easy to get?

  • May not meet your particular definition of small, but my portable printer is a Voron 0.2. The frame is sturdy enough that you can attach a handle to one corner and just carry it around with you, at least for a while. It's not particularly lightweight. But it is small (fits completely inside the build volume of my other printer), and being fully enclosed within the frame, seems more durable than the likes of the other tiny printers (Lemontron, A1 Mini, etc.)

  • That's a really cool idea!

    I have a couple idea's on how I wanted to do it: - Belt printer fitted into a briefcase (the harbor freight case form factor would be good for that!) - Positron style - Maybe mess around with double four-bars

    Making it self-contained with a battery is also a really cool concept I'll have to explore!

  • You'd need a pretty substantial battery on account of how much heat it takes to melt filament. Even the Bambu A1 Mini uses ~150W while heating the hot end. I like the idea of a portable printer, though.

    • It's actually not the hotend heating that's the largest power drain, it's heating the large heat bed. Bambu Lab is introducing firmware features to more slowly ramp up the heat, but I don't need if that could happen slowly enough to not drain a battery.

Really great job, Kai!!! The fact that you’re only 17, you’re absolutely killing it.

Why all those heat sinks? Power electronics are getting very good these days with low RDS-on. Have stepper drivers not kept up?

  • Sadly not really.

    I think we're only a few years away from BLDC servo motors taking over from steppers in 3d printers.

    Ideally control algorithms for them would go into the MCU so there is proper force feedback too - ie. The system will know that there is an extruder clog by the increased extrusion force, or even set print speeds to be 'the fastest you can follow this path' rather than a fixed number of mm/sec. Ie. If the bearings get a little stiff it'll go slower rather than skipping a step.

    There are some patents on sensorless servo control expiring which should cut the price of this stuff almost in half since the position sensor is one of the most expensive bits.

    Power supplies are one of the more expensive parts of a 3d printer, and by having BLDC motors which can do regenerative braking, that same energy can be reused in the head and bed heaters, which should allow significantly smaller power supplies too - again with significant software complexity to make sure the bed heater primarily heats when the head is decelerating and stops heating whilst accelerating to not exceed the power budget.

    • Holding position with BLDC or FoC controlled motors is IMHO fairly difficult. Maybe less so in a printer where you can apply current to hold position. We usually do speed or torque control with them. Even with an encoder or equivalent it's tough to run 2 or 3 at once with a single MCU. But yeah that's why I asked about stepper drivers, my day job is FoC motor control and I'm running a pair of 2KW motors with a power board about the size of an RPi with no heat sinks.

For some reason my brain read the title as “3D printed motherboard” and I was really curious about how this was even possible, and I ended up being disappointed by the lack of detail on the github readme.

It's only after a few more seconds back on the HN front page that I realized my mistake.

Less exciting than what I read but cool project nonetheless.

  • It's not exactly 3d printing but Bad Obsession Motorsports took a small mill, stuck a hot end into the tool holder, fed solder instead of filament into it, and "printed" traces onto a blank PC board.

    I thought it was pretty clever but they admit it was tricky to make work at all, let alone get good results.

>This is one of the first PCB's I've ever created, so it might have some flaws.

>4 layers

That's quite the jump for a noob. Would you mind sharing how you learned to produce such advanced output so fast? I mean my first ~50 PCB we're still just 2 layers.

Edit: nvm I just saw the journal.

Nice work; I’d love to see a V2. Quick tip: try Flux AI to help accelerate the V2 work!

This is awesome! I'm in the industrial software / CAD space, so I have a rough idea of how painful and complex these engineering workflows can be, even though I don't design hardware myself.

You might find it interesting to look into AI-powered PCB design tools for your next iteration. There are some cool tools popping up that can use AI to assist with the trace routing and layout, which could make the process much less tedious for you.

  • "... I have a rough idea of" and "look into AI-powered ... design tools" is a sad sentence to come across. This young individual spent time to learn complex things and implemented it into an actual useful physical thing. Why give this advice in the first place? To stop them from learning?

  • Routing is honestly one of my favorite parts of making a PCB, there's something about the feeling of understanding exactly what each trace is doing that I find exhilarating.

    The problem with most AI powered tools is that they don't understand the context of your board, which is absolutely crucial for routing. Like so-and-so trace could be switching really fast and an AI powered design tool wouldn't understand that and wouldn't route it properly. Or like power for example, different things have different power requirements and I feel like we're not at the point where these tools are referencing every datasheet on the planet to figure out trace/fill sizes and whatnot.

    There's also some concepts I don't think these tools can wrap around quite yet. For example, minimizing loops, consistent ground planes, proper impedance control, and just all of these factors lead to an inferior board.

    Not saying that humans are perfect and understand all of these too, I just feel like if you understand what's happening with your board, you can do a much better job.

    At the end of the day, you'll be spending more time fixing the mistakes, which are actually pretty hard to spot without checking every single trace sometimes, then actually just routing it yourself, but maybe one day we'll get there!

    I'd love to hear some other takes though ;)