TMC2208 on Cetus3d mk3

@sergey77, printed both. I installed KiCad on another machine but the computer doesn’t have access to the laser printer. I’ll ask my secretary to check the print for 100% scaling and not fit to page. She’s the only one with a laser printer, the rest of us se inkjet. Thanks!

I don’t like drilling* so started laying out a smd version, still need to tidy of a few bits and pieces before i etch the first board, first (and probably last) layout in EasyEDA so don’t throw rocks!

https://easyeda.com/beikeland/tmc_up_mini

*) or more spescifically don’t like breaking drill bits

The ironly of a smd board being bigger is not lost on me, but I really wanted polarized headers as well:)


Added double layer PCB design with CPU adapter to GitHub.
https://github.com/Sergey-77/Cetus3d_TMC2208

I ordered CPU and driver PCBs as a single board from JLCPCB for $2 and cut them apart later.

Got connectors from DigiKey. 36 pin connector’s pins were too long. I think SSQ-118-03-G-D would be better choice.

Index Quantity Part Number Manufacturer Part Number Description
1 2 SAM9312-ND ESQ-118-14-G-D CONN SOCKET 36POS 0.1 GOLD PCB
2 1 3M157849-1-ND 3365/10 100 CBL RIBN 10COND 0.050 GRAY 1’
3 2 S9286-ND SFH210-PPPC-D05-ID-BK CONN HEADER 10POS IDC 28AWG GOLD
4 2 S9169-ND SBH11-PBPC-D05-ST-BK CONN HEADER VERT 10POS 2.54MM
1 Like

Hi Sergey,

Why do you use serial 68 ohm resistor with the 3.3V power line? Is some kind of safety feature?

Hi Sealight333,
I added resistor to filter voltage spikes. Had Cetus CPU resets when steppers were just enabled. Tried only capacitor across 3.3v close to CPU board - didn’t help.

Hi Sergey77,

Make sense.
Did you try series inductor as well? It has less voltage drop on it and also filtering out voltage spikes.

No, I didn’t try inductor. Any recommendations on size of inductance should work in this application? Thanks

Hard to define without any measurements, but I think this is a good starting point:
https://www.digikey.hu/product-detail/en/bourns-inc/78F1R0K-RC/M10137-ND/1305995

And I also recommend to add a 100nF capacitor next to the ATtiny 3.3V power line.
(FYSETC TMC2208 modules already contains 100nF capacitors on power lines)

Thank you very much. I will order some of those when next time I get something from digikey.

Hi everyone, Hi @sergey77,

I just upgraded my Cetus mk2 using your board!
First of all thanks a lot for your work and effort into this project. I would like to share my experiences with you and where i had to change some things to get it to work.

What i did differently is that i used the silentstepsticks with tmc2209 driver, because they can be set to 32 microsteps with the cfg-pins. So i did not use an attiny85 to configure the stepper drivers. I had a look at your attiny code anyway and i think there is something wrong in the if statement where you have the “&!” inside the “digitalRead()” brackets. I dont know if anyone is using that version of firmware, but if it works, then by accident i guess :smiley:

One issue with the cetus mk2 (i am using the tinyfab opensource cpu by the way) is that i could not get the enable signal from the cpu to enable the drivers. first of all the pin (13 i think) is high when enabled and low when disabled, so the wrong way round for trinamic drivers, and second i could only measure 0.8v when enabled instead of 3.3v.

So i took the signal from the relay on the cetus mainboard. One side of the coil of the relay is always connectet to 5V, the other side gets tied to GND by a transistor when the motors should be active. When the motors are not active and the relay coil is not tied to GND, you get 5v on that same pin that come from the other side of the coil because no current is flowing.
With a voltage devider lowered to 3.3v i got the correct signal for the enable inputs of the SilentStepSticks

So that was my approach to upgrading the cetus mk2 with tmc2209. I set vref on the drivers according to your recommendation, which works just fine, keeps the motors cool and silent.

Thanks to everyone for your input and have a good day! :wink:

Hi, HoneyBaddger,
Yup, it’s a typo. I got right bracket in wrong place.
Should be:
if(digitalRead(input_enable_motors) &! drivers_initialized ){
Not sure how it compiled at all.
Thank you!