TMC2209 enable does not enable motor

In my project I'm using TMC2209 drivers in STEP/DIR mode. In theory, pulling EN low should enable the motors, thus holding position, but in my case it does nothing no matter how I try.
Moving the rotor works, but as soon as the movement stops, the motor gets deenergized and does not provide a holding torque.
I wired the drivers up like this:
EN - GND
MS1/MS2 - x
PDN_UART - x
STEP/DIR - Arduino pins
VM - 24V
GND - GND
VIO - x
(x - not connected anywhere)
Of course I connected the GND of the arduino and drivers together.

Is this a common/known issue with the driver/user mistake?

Disconnect EN and check.
Without proper schematics and code annything is possible.

I tried that, nothing changes. I think my code does not influence anything, as I tried connecting EN directly to 3.3/5V and GND. The code I tried included the default accelstepper library examples, so that definetly should work I think.

Here is the relevant part of my schematic:

The MCU is a Nucleo64 F401RE, programmed with PlatformIO in Arduino abstraction layer.

The environment, Platfomio etc. puts me off the quuestion.
I suggest using Arduino IDE and run basic stepper example code to verify the hardware.

Everything works as it should on the MCU side. I verified it with an oscilloscope. 3us wide pulses for step signal and steady DC 3.3/0 for DIR.

What does the motor side look like?
Is the driver type set to 1 (step/dir) when prepaing Accelstepper?

What do you mean by the motor side?
Yes accelstepper is set up properly, it generates good step/dir signals.

Measure what goes from the driver to the motor. Which stepper motor? Datasheet please.

Motor is a 17HS4401S, this is the datasheet
If there is a STEP signal there is a sinusoidal signal going to the motor from the driver, when it idles, regardless if it is enabled or not, there is VM (24V in this case but i tried everything from 9V to 26V) on all coil outputs.

No logic supply (3.3volt) connected to the driver?
Leo..

No, as in other cases it worked flawlessly without that. Anyways, I did not even think about that I would need that, duh. So, if i use a 3.3V STM32, do I connect 3.3V straight from the Nucleo board to the driver?
If this is why the enable did not work, then why did the motors move at all? How is this possible that only EN did not work?

EDIT: Doesn't the TMC2209 have an internal 5V regulator for well, some stuff it needs? is a separate external 3.3v supply needed too?

@kristof889
Your TMC2209 pinout seems to be wrong. It does not have separate PDN and UART pins, there is only one PDN_UART pin.

If you want full current to the motor at idle, then you need to pull the PDN_UART pin High.

I did not know that, thanks. Apparently I'm really bad at reading datasheets. Unfortunately I can't try it out now as I'm out of house for a couple of weeks, but I will update this thread once I get the chance to try the suggested things, so connect 3.3V to VIO and pull PDN_UART to HIGH state.

I have two more questions: If I supply VIO with 3v3, will also 3v3 be considered high instead of 5v?
If VIO gets 5V, will 5V be considered HIGH?

Thanks!

Good question.
I suggest you get the schematic of the driver module you are using and make sure Vio is already connected to something

Powering a chip through/from it's input signals is called ghost- or phantom-powering, is really bad, and could destroy the chip.
Leo..

I got to try it out and lo and behold, it worked. The issue was as per @Wawa and @jim-p comments.
Thank you!

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.