Show HN: I designed my own 3D printer motherboard
Posted by kaipereira 10 days ago
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!
Comments
Comment by unwind 1 day ago
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_...
Comment by theamk 18 hours ago
Earlier journal log entries mentioned TMC2209_SILENTSTEPSTICK, but most recent schematics removed this designation. Seems like an oversight.
Comment by jacquesm 1 day ago
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?
Comment by kaipereira 19 hours ago
Comment by jacquesm 11 hours ago
Comment by bb88 1 day ago
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?
Comment by ezst 1 day ago
Comment by adolph 18 hours ago
Comment by thomasjb 17 hours ago
Comment by kaipereira 16 hours ago
Comment by adolph 14 hours ago
The year-in-review design review is worth watching just to see the decision/optimization process. Really nice
Comment by kaipereira 1 day ago
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!
Comment by alnwlsn 15 hours ago
Comment by steve_adams_86 1 day ago
Comment by bdcravens 18 hours ago
Comment by steve_adams_86 7 hours ago
Comment by djfobbz 23 hours ago
Comment by 0_____0 14 hours ago
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 :)
Comment by LordHeini 14 hours ago
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.
Comment by phkahler 22 hours ago
Comment by londons_explore 21 hours ago
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.
Comment by phkahler 15 hours ago
Comment by vablings 18 hours ago
https://www.omc-stepperonline.com/ac-servo-motor
These are EtherCAT AC Servos for a couple hundred bucks, Any small cnc project that uses steppers/small bldc is a joke IMO
Comment by littlestymaar 1 day ago
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.
Comment by kej 1 day ago
Comment by _def 1 day ago
Comment by kej 17 hours ago
Comment by bityard 21 hours ago
I thought it was pretty clever but they admit it was tricky to make work at all, let alone get good results.
Comment by ozten 1 day ago
Comment by aeve890 1 day ago
>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.
Comment by kaipereira 1 day ago
It's also just double the price, so I can get 4 layer boards for like $8 from JLC and it just makes everything much more easily.
You still do want to build up to it though, I made a macropad, then a keyboard, and then made this, so it's definitely not just an immediate jump, but I built those 2 projects within the span of a couple months!
Comment by whynotmaybe 19 hours ago
The Mini Sparkle is a 4 layer and available on their github https://github.com/adafruit/Adafruit-Mini-Sparkle-Motion-PCB
There are many more available at OSHWA : https://certification.oshwa.org/list.html
Comment by kaipereira 19 hours ago
Comment by jonah 17 hours ago
Comment by twelvechess 1 day ago
Comment by rancar2 1 day ago
Comment by jigsawdesigner 21 hours ago
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.
Comment by k1musab1 19 hours ago
Comment by kaipereira 19 hours ago
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 ;)
Comment by jigsawdesigner 17 hours ago