BTT TMC2209 external driver vibrating, not moving
-
Hi there,
I've been trying to figure out what I'm missing but have not had much luck. Hopefully someone where is able to help.
I need an extra extruder for my setup on my Duet2 wifi and had some TMC2209 bigtreetech drivers to use. Here is a pin description:
Currently I have connected wires as follows:
TMC2209-----Duet Expansion
Enable---------E2_EN
STEP------------E2_STEP
DIR--------------E2_DIR
VCC_IO-------- +3.3V
GND (8)--------GND (30)Motor pairs are correctly wired (Triple checked)
I've wired 24V directly to the VM and GND pins on the driver as necessary
Snipits from my code:
;Firmware 3.3 ;Drives M569 P5 S0 M584 X0 Y1:3 Z4 E5 P3 ;Extruder M563 P1 D0 H1 F0:1 S"Extruder" ;Axis setting M350 X16 Y16 Z16 E16 I0 M92 X400 Y400 Z400 E424.90
Basically, I can't seem to get my extruder drive to move, it just vibrates. I've checked its working by connecting it to an internal driver (E1) and the stepper functions as it should with the all the firmware settings below, with the exception of the drive mapping (E5). I've swapped out stepper drivers as well and its still the same.
Any help would be greatly appreciated!
Thanks
-
@Armandleo Is it this module? https://biqu.equipment/en-gb/products/bigtreetech-tmc2209-stepper-motor-driver-for-3d-printer-board-vs-tmc2208
It sounds like the driver is at least enabling, if it causes the stepper motor to vibrate. Is the stepper motor harder to rotate by hand when vibrating?
Some suggestions:
- Make sure it's not in UART mode - check the position of the resistor
- Have you set the motor current with the trimpot?
- Are you able to set any of the other features, eg stealthChop, Interpolation etc. Usually this is done with the CFG pins, but there's no documentation for that.
There's an example set up for TMC2130 in the wiki that might help, here: https://docs.duet3d.com/User_manual/Connecting_hardware/Motors_connecting_external#examples
Ian
-
@droftarts Hi Ian,
Thanks for your response and suggestions.
That link is correct for the driver.
When the motor vibrates it doesn't seem to feel harder to turn? That may however be because the extruder is geared? The extruder is a creality sprite pro ([Sprite pro] (https://www.3djake.uk/creality-3d-printers-spare-parts/sprite-extruder-pro?sai=11996&gclid=CjwKCAiA9ourBhAVEiwA3L5RFsn4hYGqdPLLDWS2xImA0Bskaq2V_2cee9obOMTV9tudYBkrpWim6hoCQ2oQAvD_BwE))
As for the configuration of the driver, I'm not sure. I looked for info regarding it's state, hoping to use it in standalone mode but as you've said, there isn't much info on it. I've tried to pulling the PDN pin to ground but that doesn't do much either from what I can tell. My drivers are currently in the factory condition as the image below with the resistor (in red) on the left hand image:
I have set the current using the pot and I've also pulled the ms1 and ms2 pins up to 3.3V using the VCC_IO pin to set the microstep as suggested by the manual on the Biqu driver page you've linked but none of it seems to make much difference.
Do I need to remove the resistor from the PDN pads all together maybe? Or am I missing a blinding obvious piece of course?
Something else I discovered after posting was that I was initialising the drivers (M584) after the axis commands (M350 and so on), which I discovered was wrong. I then moved the M584 command to earlier in the code and now the motor doesn't vibrate at all anymore...so am I missing something with the code? I'll drop my full code in a zipped file when I get back to my pc.
Thanks for your help so far!
-
Here is my code for the parts that are relevant:
config.g
; Configuration file for Duet ; executed by the firmware on start-up ; Configuration files M98 P"config-drives.g" M98 P"config-axes.g" M98 P"config-axes-endstops.g" M98 P"config-axes-limits.g" M98 P"config-extruder.g" M98 P"config-fans.g" M98 P"config-heater.g" M98 P"config-network.g" M98 P"config-probe.g" M98 P"bed.g" ; Other Settings M451 ; Put the machine into FFF Modes G21 G90 ; Set absolute coordinates G54 ; Change workplace coordinates to set 1 ; User Configuration files M98 P"config-user-settings.g" M501 ; Load Stored Parameters M950 J1 C"e1stop" ; Emergency stop M581 P1 T0 S0 R0 ; M582 T0 S1 ; Check if estop active T1
config-drives.g
; Drive configuration executed by config.g M569 P0 S0 ; physical drive 0 goes forwards M569 P1 S1 ; physical drive 1 goes forwards M569 P4 S0 ; physical drive 4 goes forwards M569 P3 S0 ; physical drive 3 goes forwards M569 P6 S1 ; physical drive 6 goes forwards M584 X0 Y1:3 Z4 E6 P3 ; set drive mapping DUAL Y M569 P2 R-1 ; set drive 2 to not monitored - burned driver ; Define axis X on drive 0, axis Y on drives 1 and 3, axis Z on drive 2
config-axes.g
; Axes configuration executed by config.g M350 X16 Y16 Z16 E16 I0 ; configure microstepping with interpolation M92 X400 Y400 Z400 E424.90 ; set steps per mm M566 X900 Y900 Z60 E120.00 ; set maximum instantaneous speed changes (mm/min) M203 X6000 Y6000 Z400 E3000 ; set maximum speeds (mm/min) M201 X500 Y500 Z40 E200 ; set accelerations (mm/s^2) M906 X1900 Y1900 Z1900 E1000 I30 ; set motor currents (mA) and motor idle factor in per cent M84 S30 ; Set idle timeout
config-extruder.g
M563 P1 D0 H1 F0:1 S"Extruder" ; define tool 1 G10 P1 X0 Y0 Z0 ; set tool 0 axis offsets G10 P1 R0 S0 ; set initial tool 1 active and standby temperatures to 0C T1
Please let me know if there is more info that could be useful!
I've desoldered the pads on the UART pads, the reverse of step 4 in the in this link.
After doing this there is no more vibration and nothing now seems to happen.
Any other suggestion would be appreciated!
Thanks!
-
@Armandleo If it's doing nothing, I'd probably check whether it's even enabling. Often the enable signal is the opposite to what you expect, ie high when it should be low. Try probing the enable signal before the drive is configured, and after.
For reference, page 9 of the 2209 datasheet https://www.analog.com/media/en/technical-documentation/data-sheets/TMC2209_datasheet_rev1.09.pdf says:
ENN 2 DI Enable not input. The power stage becomes switched off (all motor outputs floating) when this pin becomes driven to a high level.
So it should be driven low, not high. Try with enable disconnected.
Ian
-
@droftarts Thanks Ian, I'll give that a go! Appreciate the support!