TMC2209 design thermal tests

I did some simple thermal tests on the TMC2209 board. In theory these driver chips can supply up to 2A RMS current to the motors. Silent StepSticks with the same drivers are rated around 1.2 to 1.4A depending on the manufacturer.

The test setup

I used all passive cooling. Ambient temperature was 25C. I used a small 9x9x12mm heatsink on top of the driver chip. These are commonly used on the TMC2209 StepStick boards from China (FYSETC or BIGTREETECH). These are not great, but that is what I could fit in the space. I’ll try to move some of the capacitors to make space for a larger heatsink.

On the bottom I used a 20x14x6 heatsink. Not ideal, but that is what I had laying around. There is enough space for a much larger one (25x25x8 for example).

I used a Seek thermal camera “mounted” on a small microscope stand and connected to my old Nexus 5X phone.

The results

First I tested it at 1A RMS current. I use several very slow speed motion commands (G1 Y250 F50 followed by G1 Y0). I found that slow speed motion is much more challenging to the driver heat  wise.

After about 20 minutes it board heated to about 47C on the top:

The heatsink was barely warm to the touch. In my experiments the top of the drivers always heats up more than the bottom, probably because of the relatively large thermal mass of the PCB itself.

Next I ran the board at 1.4A RMS. This was more challenging test for the heat dissipation. It took a while for the temperature to stop rising. It stabilized at around 64C on the top:

And around 55C on the bottom:

In the picture the heatsink looks “cool” because the camera can not compensate for the different emissivity of the bare aluminum.

Both top and bottom heatsinks were considerably hot to the touch. Not “burn your fingers” hot, but “I cant keep my fingers longer that 5 seconds” type of hot.

In both cases I did not get any over-temperature warnings from Marlin. I would say 1.4A is the limit on convection heat dissipation of this board in this configuration.

The Seek camera has around +/ – 5C accuracy.

I did one last test at 1.8A RMS. This was on the extreme side of the capabilities of the board. The temperature of the driver kept climbing slowly. Once it reached around 75C on the top I got an overheat alarm in Marlin, so I turned the power off.

I’m confident with some active cooling the driver would be able to run at this setting, because it took quite some time to get to the alarm.


Marlin ported to the TMC2209 board

I just got Marlin to boot and move the motors. Had to make some tweaks to the serial port configuration, because I have unique setup (X, Y and Z share one serial port) and the two extruders share another. I also use proper hardware serial ports, not the SoftwareSerial library. At the moment the code requires special patches to the STM32Duino core and the Trinamic library so it can properly support serial half-duplex communication.

On separate topic, I got a prototype of an LCD i/o board for the Nucleo-F407. I tested it with the REPRAP_DISCOUNT_SMART_CONTROLLER and was working flawlessly.

Here it is connected to my soldering machine:

The very first prototype had a bug, hence the little red wire. This adds support for the traditional EXT1 and EXT2 connectors that are popular with other boards. Graphics panels would require a little work, to convince marlin to use the second SPI hardware block.

Some early experiments with the TMC2209 board

Good news first: I managed to get one motor moving with a simple Arduino sketch.

I’m starting to hate QFN packages with a passion. I spent a whole afternoon trying to re-work two pesky drivers. The chips would not communicate via the UART port, no matter what I tried. Finally traced the issue to a bad solder joint on the QFN package and boy these are hard to spot. Simply re-heating the drivers and re-positioning was not enough, I had to remove the chip, add more solder paste, melt it, then re-insert the chip, wipe the excess solder with a soldering iron and finally re-flow the chip one more time. Complete and total PITA.

To top it off this destroys any near by plastic connectors, so now I have the drivers in-place but have to re-solder the connectors back. This would be an endeavor for the next week.

Now all 5 steppers are communicating with the MCU reliably. I had to add support for half-duplex mode to the stm32duino core. The proposed changes are still pending, but I verified that the TMCStepper library is able to communicate with the drivers.

First prototype of the TMC2209 design

This took me whole day. Working with QFN drivers is plain PITA. It does look good though. I just hope it works.

I finally figured out how to wash most of the flux from the board. It is still not perfect, but looks really good.

I have another revision with 3 fuses. I figured that one fuse for both motors and extruder heaters may be too taxing. In my latest design I have one 15A fuse for the heated bed; one 10A fuse for the extruder heaters and one more 10A fuse for the rest of the electronics.