TMC2130 – setback

Well, my enthusiasm for the TMC2130 driver was premature. Faith was not kind and I discovered several design flaws after I ordered a bunch of assembled boards.

First I somehow completely missed the 5V power pin to the driver. So initially it was as dead as a door nail. I also discovered one of the config pins was not properly grounded – but that was not a big deal.

After a few bodge wires the driver sill would not respond to SPI commands. This was a rather frustrating thing and I remember having similar experience with the first PrntrBoard with 2130 drivers. Back then I had to wire a separate clock signal to each driver to get them to work.

When reading the datasheet of the 2130 chip it describes that if one connects the clock pin to the ground the chip would use an internal clock generator, but something is amiss and it does not seem to be working correctly in my version.

So back to the drawing board. I updated the PrntrBoard V2 to have a driver clock signal and now have to order new sets of PCBs.

Quite annoying. If you have a clue why the build-in clock is not working on these I would appreciate the hint.

High voltage motor driver design using TMC2130

The good old TMC2130 chip has fallen out of favor thanks to newcomers like the TMC2208/9. It is still top-shelf stuff and the preferred driver by Prusa for the Einsy Rambo as well as their MMU control board.

New chips are cheaper and cad drive more current, but the 2130 sill has one thing you can’t beat – it can handle voltages up to 46V.

Here is an example of a motor driver in the same PCIe form factor with external 3.5mm power terminal block. This allows the driver to use high voltage for example 36V or 42V to drive beefier motor.

The solder jumper on the bottom can be shorted and then the driver would take power from the carrier board.

Thermal test TMC2209 driver @1.7A RMS

I wanted to push my TMC2209 driver design to high-er current. The driver chip is relatively small and even at moderate 1.3A RMS motor current it gets very hot very fast.

Now to be fair 1.3A RMS is probably more than enough to drive most NEMA17 stepper motors. However every once in a while one can get a 1.6A motor or in my case a 1.7A motor. Now in most cases it is not required that you drive the motor with it’s maximum rated current, I just wanted to push the driver and see how it fairs under load.

Here is a picture of my very messy desk with the test setup:

I have my 1.7A NEMA17 motor on a linear rail I used for the test. Above it you can spot my Seek Compact Pro thermal camera. It is not the most accurate instrument, but does the job +/- 5 degree C.

The driver board has one 14x14x7mm heat sink on the driver chip and one 25x25x5mm heat sink on the back of the board, There is also a low RPM 5V 40mm fan blowing air horizontally across the driver boards.

First I configured the driver to use 1.6A RMS current and run a series to G1 X100;G1 X0 commands to move the axis back and forth. I used relatively slow speed, because from my experience this heats the driver the most. This test was uneventful (aka no smoke or major errors), so I proceeded to configure the driver to use 1.7A RMS current.

Here is a picture of the temperature of the board after about 15 minutes of moving the axis back & forth:

The hottest spot is around 54C. While the colors are very dramatic, this is quite cool for this type of setup.

The back side was about 45C:

In conclusion the test was very successful. In previous experiments the drivers would heat up to 70C. In this setup 54C was quite reasonable for the amount of current the driver was handling.

PrntrBoard gets upgraded to 480MHz CPU!!!

I was perusing trough the parts catalog offered by JLCPCB for their assembly service and found this awesome micro controllerĀ  STM32H750VB it is quite an upgrade over the good old F407 part. It runs newer Cortex-M7 ARM core, it has double precision FP unit and can run at sweet 480MHz. Best of all it was mostly pin compatible with the F407. I had to re-route one side of the pins, but it was fairly quick.

The only down side is that the build-in flash is a bit limited – 128KB, but I think I can work with that. I’ll order some boards with that processor once the factories in China are bully back in business.

The updated design is on my github page in the “new_cpu” branch.

Happy 2020: PrntrBoardV2 update

I’ve been busy over the holidays. Here is a summary of the recent progress with the PrntrBoard V2 3D printer controller.

I decided to give the JLCPCB SMT Assembly service a try and ordered some TMC2209 driver boards as well as some semi-assembled PrntrBoard V2 controllers. Overall I was quite happy with the results.

Here is a picture of the driver boards. I tested all of them and they worked flawlessly out of the box.

These are the semi-assembled controllers. I use semi-assembled, because only the SMT components were populated and I have to spin my soldering robot to work on the thru hole connectors.

Next I tested the sensorless homing capability of the TMC2209 drivers. After some tuning of the sensitivity parameter is works very well. You can see one linear rail axis homing with no sensors in this video:

I also decided to work on improving the mounting of the drivers to the board. The driver boards were not very stable in the PCI Express slots and I designed these little plastic holders to fix them in place.

They are bolted to the bottom of the controller PCB. The drivers are very well affixed in place.

While I was trying to get my 2004 LCD panel to work with the controller, I found that not all “standard” EXP1 and EXP2 connectors have the same orientation. At first I though that the SKR 1.3 board, just has them backwards, but I then found this article on the RepRap discussion forum. It appears that the original schematics had an error and now some boards/displays are just backwards. I quickly flipped the connector on my 2004 display and with worked, but this can be quite frustrating.

I made a small PCB that one can use to flip the polarity of the connectors. “To flip or not to flip” seems to be ongoing question.

Progress update on PrntrBoard V2

I tried to do some thermal testing on the TMC2660 drivers. First I tried running my puny motor at 2A with a 60cm 5V fan blowing at the driver. This kept the driver quite cool, which was a not interesting.

I was planning to run all 3 axis at the same time, but my heat sink was just a bit too tall and was touching the other driver :-(. I ordered slightly shorter ones, but they have to swim trough the pacific ocean first.

While I was enjoying torturing the poor motor at it’s rated limit. The thermal camera picked an unusual hot spot on the board. The reverse protection diode was cooking quite a bit. Serves me right for being lazy and not doing the reverse protection the proper way. Even with only one motor running, the diode was dissipating quite a bit of heat. I can’t imagine in what world this part is rated for 10A continuous current. Maybe it needs a small refrigerator attached.

Anyway I changed the schematics to use a proper P-channel MOSFET and a zener.

I added a small cooling pad on the PCB to help the transistor cool off. Hopefully this will not overheat with full 10A load.


I also decided to test one of the last remaining circuits on the board – the servo connectors. This proved to be quite the challenge. There was a serious contention for Timer #7 on the micro controller.

First Marlin’s temperature control was set to use Timer 7. This was not making the Servo module happy. I moved the temperature module to use Timer 8. Then I found that the SoftwareSerial code was also trying to hijack Timer 7. Moved that to Timer 12.

Finally the servo was working properly. I was able to set the position with the M280 command. I decided to quit while I was ahead.

More next week.

PrntrBoard V2 status update

First my woes with the TMC2209 driver boards are ongoing. The company making the PCBs called that they could not complete my last two prototype designs. The issue was that I didn’t pay attention to the fabrication capabilities and used the wrong design rules.

Long story short I had to re-wire part of the board to meet their spec and submit another order. Alas that meant I have to wait another two weeks for the boards to appear šŸ™

In the mean time I was trying to test what I can with the rev1 prototype I had. I tested the heaters and thermistors are working. Now it was turn to my old nemesis – the LCD panel.

The software for these LCD panels is remarkably convoluted and not at all supported on STM32 series of MCUs. I had to write two more drivers for the U8G library, but finally some good progress:

I got the FYSETC mini 12864 panel to work. To finish the week, I also verified the SD-card interface is working.

Here is a link to the github project with all the board design files. The Marlin firmware I’m using.

V2 Board in all its glory

I managed to assemble a few driver boards. Here is the V2 board loaded with 3 TMC2660 drivers and 3 TMC2209 drivers:

I also got marlin to load and communicate with the drivers. More testing tomorrow.

V2 prototype assembled – sort of

Here is my first assembled prototype of the V2 board. I only had patience to solder 3 PCIe connectors and skipped on the Thermocouple and servo connectors for now.

Sorry about the “no clean” solder paste gunk around the fuses. I noticed it after I took the picture.

Here is a picture with the driver boards in the slots

And slightly different angle

Here I added a 40x10mm fan for scale comparison

I’m not set on the 40mm fans for cooling, I ordered some 60mm and some 50mm and will do some experimentation what would be the best combination.

Next, I’ll make some driver boards and start porting Marlin to test the contraption.