So... I have a BigTreeTech/BIQU SKR v1.1, and am able to use TMC2208's in single-wire UART mode, thanks to work associated with https://github.com/MarlinFirmware/Marlin/issues/13197 and others (I'm not sure just who to actually thank. @gloomyandy ? :smiley: )
There is one thing that I think should be addressed, but it's not specific to the 2208. Rather, it applies to all Trinamic drivers, I guess:
If a move will cross the stealthChop/spreadCycle Hybrid threshold while accelerating and/or decelerating, some way to avoid confusing the TMC's math the Hybrid switching noise is kinda needed, as they get noisy when moving at speeds close to the threshold.
From what I've read, this may be because Marlin switches to and from double- or quad-stepping during the accel/decel phase.
It's my understanding that Trinamic drivers can move the motors on their own, with commands sent over UART, so could it be possible to split the accel/decel periods into many short moves and let the driver handle them, instead of banging on the step/dir lines?
Why not just plan ahead: when doing a move (whether printing or travel), if the target speed is higher than the configured threshold -- ignoring acceleration entirely (i.e. just assume it's infinite for this particular case), just switch to spreadCycle mode before the fast move starts, and drop back to stealthChop when the move ends, assuming the next move isn't also above the threshold.
That way, any noise the switching causes gets drowned-out by the printer's usual movement noises. At the very least, doing it this way will ensure that the driver will not chatter between the two modes during lots of small moves.
The motor's not skipping/stalling, it's just noisy.
The noise can't have anything to do with double stepping if you are using the configs you posted in the other thread, the LPC176x boards do not start doing that until 80K steps/s, you use 80 steps a unit @ 500mm/s so 40K steps/s.
Well so much for that theory :smiley: ... still needs addressed though.
running 12V or 24V ?
It's my understanding that Trinamic drivers can move the motors on their own, with commands sent over UART, so could it be possible to split the accel/decel periods into many short moves and let the driver handle them, instead of banging on the step/dir lines?
Only the TMC5xxx drivers (of the ones we're supporting) have the ramp generator you're talking about. This is how the Trinamic TRAMS platform worked as it had no step and dir lines into the drivers and I did have an updated firmware but that's already a year old at this point.
If a move will cross the stealthChop/spreadCycle hybrid threshold while accelerating and/or decelerating, some way to avoid confusing the TMC's math is kinda needed, as they get noisy when moving at speeds close to the threshold.
The switching velocity is not the same when accelerating and decelerating, but rather they have a hysteresis associated with it. We're already using the larger setting (also the default) with TMC2130 and TMC2208 does not have it configurable.
I think the image should say TPWMTHRS + 1/16
.
There's this excerpt from the datasheet that may hint at what you're having.
(6.5) A jerk occurs when switching at higher velocities, because the back-EMF of the motor (which rises with the velocity) causes a phase shift of up to 90掳 between motor voltage and motor current. So when switching at higher velocities between voltage PWM and current PWM mode, this jerk will occur with increased intensity. A high jerk may even produce a temporary overcurrent condition (depending on the motor coil resistance). At low velocities (e.g. 1 to a few 10 RPM), it can be completely neglected for most motors. Therefore, consider the switching jerk when choosing TPWMTHRS. Set TPWMTHRS zero if you want to work with stealthChop only.
Personal opinion, use low hybrid threshold with the updated chopper parameters. At this point the spreadCycle is almost as quiet as stealthChop.
@boelle Mine's a 12v system.
@teemuatlut,
Only the TMC5xxx drivers (of the ones we're supporting) have the ramp generator you're talking about
nono, I was suggesting Marlin generate the accel/decel curves more or less as is done now, but send that to the driver as a chain of very short simple moves, gradually increasing or decreasing their speed, letting the 2208's internal pulse generator turn the motors, as described by section 12 of the datasheet (page 61), instead of doing it all through step/dir.
So from my point of view, a 200 mm travel, as commanded by G-code, would become maybe a few hundred move operations, instead of tens of thousands of bit-banged pulses.
All of that said, I can't make any sense of the datasheet regarding how such operations are issued. In any case, would this even help?
use low hybrid threshold with the updated chopper parameters
Mine's still at the upstream default of CHOPPER_DEFAULT_12V
, whatever that equates to. I'm not aware of these "updated" parameters, and as it pertains to Marlin, I have found nothing that adequately explains why I would want to change this setting, let alone use the custom option (voltage aside, since that's obvious). I'm at commit 2513f6b5, if that tells you anything. :smiley:
go for 24V, i had the same issue and Trinamic told me that noise starts to drop at about 18V so 24V was the recommended, just thoughts
@boelle yeah, I've seen similar comments elsewhere, but that's money I can't spend right now.
same here, i ended up finding a 12V->24V stepup converter and feed the drivers directly
I was giving this some thought lately... how about just having Marlin force the driver to spreadCycle mode when the planner encounters a travel move if the F
move speed would exceed the configured Hybrid threshold, do the move entirely normally, and switch back to stealthChop mode for the next print move?
In other words, anticipate the Hybrid switchover and just do it ahead of time. No complicated acceleration emulation or relying on features only some chips have.
This would surely be less noisy than letting the chip switch modes in the middle of a move.
Would be nice to have a resolution to this. I have now disabled the hybrid threshold and leave it in stealthchop as the noise isn't great and loads louder than my old A4988s
Came here for the same reason, @VanessaE suggestion sounds nice? the sound when it switches from stealthchop to spread cycle mid movement is quite jarring :P
EDIT: I have 2209's on an SKR 1.3
*bump*
Is there just no interest in this?
bump
Is there just no interest in this?
Hi there! I'm interested in this. My delta printer can reliably move in stealthchopp mode until around 200mm/s. however, mechanically is capable of more, I am using my delta fixed at spreadcycle just because my travel moves are 250mm/s, I have not tried any higher travel speeds but they might be possible.
I think that having Marlin to recognize a travel move or a quick retraction/deretraction of the extruder und use spreadcycle would allow us to avoid the hassle of the sketchy hybrid threshold that we are currently dealing with.
Big thumbs up for this [FR]
Most helpful comment
I was giving this some thought lately... how about just having Marlin force the driver to spreadCycle mode when the planner encounters a travel move if the
F
move speed would exceed the configured Hybrid threshold, do the move entirely normally, and switch back to stealthChop mode for the next print move?In other words, anticipate the Hybrid switchover and just do it ahead of time. No complicated acceleration emulation or relying on features only some chips have.
This would surely be less noisy than letting the chip switch modes in the middle of a move.