Closed Loop Motor Setup
-
This post is deleted! -
I Just Got the Software to Modify the Settings Built in to the Closed Loop Stepper.
Will change the Motors back and Get back Tomorrow with the Findings
My First Attempt will change the Timing:
13 Pulse command filtering time Unit: 50us Range: 0~600 Default: 60 <- Will Change to 1 = 50us The larger the value, the smoother the motor runs and the noise, but the position tracking lag time also increases.
-
Alright Here's what I Found. I was able to use the Software to Communicate with the Drives. Changed the Setting to be MUCH Lower. Also Tried Changing these to act like Regular Stepper Motors. But Nothing I Changed Would Work.
Here's My Options:
1 - I need to Find a way to make EVERY Move Wait for An End Stop to be activated before moving to the next (Seems Slow and Unreasonable) So Im Ditching These Motors Unfortunately.
2 - Find another Nema 23 Closed Loop Motor that WILL Work with Duet 3 1XD.
3 - Continue to Rip Hair out until Bald.
Would Prefer #2 at this Point. Cost is not Much Of an issue. Any Suggestions would be awesome!
-
Well, we don't really know what the problem is with these motor-drivers yet, so I'm reluctant to try any other suggestion.
As an experiment (if you're still willing to experiment) set the drivers for open-loop mode and see how they perform.
- Do they finish the moves as expected?
Can you try slow movements and see if they complete the move at the same time?
What is your microstepping value on the drives?
Do you have steps-per-mm set right?- If you move 20mm, does the axis actually move 20mm?
Laqst one: WHY do you need closed-loop control?
- What are you trying to get out of a closed-loop system that you don't get from an open-loop system?
-
@alankilian Great Questions,
Currently Only the X+Y are using these Motors. I Think this Might work if I also Had All 3 Z Motors using the same Motor as well. (Maybe add the same Delay to all Motors Canceling out any issues?)
With the Software, I Changed the Parameters, Saved them and Read them again to make sure it was saved. After changing the Parameters. It doesn't seam like anything actually changed.
I changed them to Open-Loop Mode and it did not change its behavior at all. Slow Movements Repeated the same Issue.
Micro stepping was turned off. Full Steps Only. The Steps Per mm was also Set correctly, 20mm Was Moved 20mm.
Last, Closed Loop was More of a "Want" Then a "Necessity". I Changed these Motors Out just now for Nema 23 Steppers. I Purchased 2 Duet 3 1XD Boards for Closed Loop, and I was Hoping to Utilize them.
Didn't Think I would have a hard time getting them setup
-
These motors are US$100 for me, so I don't really want to invest US$200 to see if I can figure out what's going on.
Where are you located?
If you are interested, would you send me these motors/drivers and I'll hook them to a logic analyzer and see if I can make them work for you and then send them back?
If you're too far away i understand.
-
Sure I don't mind. They will be sitting around Collecting Dust Otherwise. Do you want me to Send 1 Or Both?
The Software they Gave to Change the Parameters:
ESS ProtunerIm Located in Baltimore, Maryland.
Let me know if you need anything else with them, PM me with the details.
-
OK, moving to PM.
-
@Toastinator I have one drive up and running.
I can read and write the internal motor-controller parameters and (sometimes) they survive a power-cycle.
I am driving the motor from an Arduino so I can precisely control the step pulse count and timing.
I'm capturing data using a Saleae Logic 16 probe so I can see the step pulses and the encoder output as a measure of motor angle.
I'm using a 2000 Count-per-revolution encoder and looking at one phase so I get 500 pulses-per-revolution captured.
I'm seeing things that looks pretty good, but it might be good to get some feedback on what others think.
- I'm seeing about 70 step pulses at the beginning of a move before the motor shaft moves. (That's 2.x step at 0.9 degrees-per-step) It seems like this is acceptable for 3D printing.
- I see in the neighborhood of 16 encoder pulses at the end of a move after the step signals complete before the motor stops. This is about 12 degrees (13 steps) which seems like a LOT and I would think would cause printing problems.
I'll update so I can capture both encoder signals to see if the motor is oscillating around at the end of a move or if it's actually decelerating and continuing to move in the same direction.
As it stands, I'm not sure these will work for printer drivers (yet)
Setup:
Beginning of move:
End of move:
-
@Toastinator I built a better motor-to-encoder mount and have takes some more data and I'd like some expert thinking about this.
I see when the motor comes to a stop that it takes tens of milliseconds after the step signals end before the motor actually stops moving.
And the motor does a bit of a "Boing" oscillating back-and-forth a few times as it comes to a stop.
I think all these are from the closed-loop control part of the system, not from the stepper motor itself because the magnitude of the "Boing" is greater than 1 step.
Anyway, I'm thinking that this amount of movement and delay-after-stepping-stops won't be visible in a print, but I'm not sure.
ALSO, this is a raw motor connected to an encoder so there's no real mechanical load on the motor at all and it will behave very differently in a real machine.
Will it boing more or less in a real machine? That's impossible to know.
My next step is to connect it to the Duet2/Ethernet and see what it does when asked to move based on Gcode and all the motion-control stuff in RRF.
-
@alankilian
thumbs up for your setup!
But I still don't dig your encoder-coupler. Sure the encoder has almost zero friction/stiction but to me it seems the cosed loop circuit has a PID algorhythm and the flexing? shrinktube introduces the 'boing'.
I'd put a load to the motor, the PID (if there is any) will be less jumpy then. -
@o_lampe That blue encoder is not involved in the closed-loop control.
It's just for monitoring the motor shaft angle.
All the closed-loopidness is done inside the motor itself.I could stick something into the gap and press on the motor shaft a little to add damping and see if it changes the situation.
Of course, a REAL mechanical system will COMPLETELY change the dynamics because there will be actual friction/damping and inertial loads.
What I'm interested in now is will it make any visible defects if:
- It takes 25 milliseconds after the last STEP before motion stops
- If the stop position oscillates like +/- 4 degrees of motor shaft at the target setpoint.
I've got a Delta, so I don't know what a "normal" pully-degrees-per-effector-mm ratio is for a printer.
-
@alankilian said in Closed Loop Motor Setup:
That blue encoder is not involved in the closed-loop control.
The encoder has a rotormass, so there is inertia and the shrinktube 'stores' energy, too. That was what I meant.
-
@alankilian Really Great Job, Hope someone Can Shed some light on what's going on here
Happy Easter Everyone!
-
Seems like the "boing" could be tuned out or maybe it is tuned and the lack of load is causing it to do that because of current settings (I didnt catch if it is tunable)
-
I connected your motor to the Duet2/Ethernet this morning and made some moves at different speeds and everything went as expected.
; Drives M569 P0 S1 ; physical drive 0 goes forwards M569 P1 S1 ; physical drive 1 goes forwards M569 P2 S1 ; physical drive 2 goes forwards M569 P3 S1 ; physical drive 3 goes forwards M569 P5 S1 T4:4:4:4 ; physical drive 5 goes forwards M584 X0 Y1 Z2 E3 U5 ; set drive mapping M350 X16 Y16 Z16 E16 U16 I1 ; configure microstepping with interpolation M92 X100.00 Y100.00 Z100.00 U100.00 E91.00 ; set steps per mm M566 X1200.00 Y1200.00 Z1200.00 U1200 E1200.00 ; set maximum instantaneous speed changes (mm/min) M203 X18000.00 Y18000.00 Z18000.00 U18000E1200.00 ; set maximum speeds (mm/min) M201 X1000.00 Y1000.00 Z1000.00 U1000E1000.00 ; set accelerations (mm/s^2) M906 X1000 Y1000 Z1000 E800 U1000I30 ; set motor currents (mA) and motor idle factor in per cent
g91 g1 u100 H2 f12000 g1 u100 H2 f6000 g1 u100 H2 f3000 g1 u100 H2 f1500 g1 u50 H2 f800 g1 u50 H2 f400 g1 u25 H2 f200
You mentioned that you were unable to "control the speed" and I have no problem moving at different speeds, so I think we should look at that. It might be the core of your problems with getting two axis synchronized.
I haven't compared my config.g with yours yet.
I'll take a look at that later today.The thing I don't know about is the toolboard stuff.
@dc42 Wasn't there something that limited the step-rate across the CAN bus? Could that have caused his inability to change the speed of the motor? -
Yes, The Speed Did Not Change, Could it have something to do with the Duet 3 Expansion 1XD Board Drivers Or The Step Rate Across The CAN Like you mentioned.
Also, Did you see any Delays Between 2 Different Axis Movements? To See if Triggers are required to Continue only after moves are completed?
-
@toastinator I only hooked up one motor for this test.
I'll hook another and try some different moves and let you know.
After that, I'll send them back to you along with a logic analyzer so we can monitor the exact step signals coming from your Duet to the motors and see if we can determine what the problem is for you.
Are you interested in hooking up the logic analyzer and doing experiments using your Duet?
As far as I can tell, these motors should "just work" when connected to a Duet.
-
@alankilian Ok Sounds Good!
I Don't Mind Doing Experiments, I Should Let you know that Im in the Middle of using this Printer with Normal Steppers to Print out parts to Build a Voron V2.4 3D Printer. Will Slap those Motors back on when Finished with the ABS Parts. Ill Be Printing for At least another Week
While Also Experimenting with a Filastruder to Make my Own PEEK and PEI Filament. Im Buried in Projects!
-
@toastinator I couldn't get my super-old USBee logic probe to work with Windows 10 (No big surprise) so I'm going to send you my Saleae Logic16 probe instead.
When it gets there you should be able to hook the two motors up to unused axes (like U and V) and then do some G1 U10 V10 F600 (or whatever) moves and look at the pulleys and see if they start and stop at about the same time for various moves. Adding a bit of tape with a line on it will tell us you've got the steps-per-mm and microstepping right.
You can also capture the step signals coming out of your board to see if THEY start and stop at the expected times.
Driving these from both an Ardiono and a Duet2 expension connector made them work as I expect and they should be perfectly usable on a 3D printer.
(I'm still unconvinced that a 3D printer benefits from slosed-loop stepper motors, but I'm not the one trying this, so I'm willing to get you going if I can.)
I'll send the stuff back next week. You can return the logic16 when we've exhausted our experiments.