Behavior of drivers at high speeds



  • I have a sand table that has a corexy mechanism that moves a magnet over a 750 x 1560 mm space. I run it at 500 mm/sec with acceleration at 2000 mm/sec^2.

    It has a smoothieboard that microsteps at 16:1. I recently purchased a Duet WiFi to install in a 3D printer at the makerspace and decided to test it in the sand table before I put it into the printer. I installed it, updated firmware, and configured it in about 30 minutes flat (two motors, two endstops, no heaters, no fans). I set it up for 256:1 interpolated ustepping.

    Then I ran some test patterns and I found it really wasn't any quieter than running at 16:1 uninterpolated. I'm wondering if the drivers scale back the interpolation when the mechanism runs as fast as 500 mm/sec. At 500 mm/sec, with 16:1 the motors are spinning at 6.25 revs/sec, 20k pps. Interpolating to 256:1 would have 320k pps going to each motor. It seems like it should be easy enough...

    The motors are 200 step/rev, with 40 tooth, 2mm pitch drive pulleys and belts.

    I'm also wondering if most of the noise is coming from the belt teeth hitting the smooth pulleys...

    I want to make the machine run quietly at 500 mm/sec. At that speed it's nice to watch but not so nice to listen to for very long.

    Any ideas?



  • Belts make almost no noise.
    My Y axis runs on two 15mm steel reinforced PU belts and is powered by a servo. This axis is completely silent, even moving at 300 mm/s.
    My X axis is running two super whopper motors on a 9mm neoprene belt. This axis does make noise, and I´m positive it is the motors. I think it is more since i set them to 1.7 Amps. I´m also running them at the x16 microsteps interpolated to x256.

    Depending on the load on the motor, did you think about adding a substantial gearing to have the motor turn slower? Otherwise you may also want to look into servos. They truly run silent.

    0_1564357825433_IMG_2897.JPG !





  • @nitrofreak Do they take step/direction inputs?
    Do you have a link to a manual for these motors?



  • @mrehorstdmd said in Behavior of drivers at high speeds:

    @nitrofreak Do they take step/direction inputs?

    Yes they do. wiring them and tuning is a breeze. Really easy



  • @nitrofreak I think I'll order a couple and try them in the sand table. if I like them enough, I'll put a couple of them in my 3D printer.

    In the sand table, the belts are running on relatively small diameter smooth pulleys. I'm thinking some of the noise is due to the belt teeth contacting the pulleys at high speed.



  • Yes good just watch out, these servos have a little lower torque than a comparable stepper, but they can rev up to 3000 rpm´s and have the same torque up to 2000. (the nema17 go up to 4000 rpm).
    The nema23 180W version has a torque of 0.57Nm.
    If i were you i would just get the 180W nema23 version since it doesnt cost much more and you can also run it on 24V.
    There are also shorter 140 and 100W versions available if you have space constraints



  • @mrehorstdmd I 99% sure that the Duet WiFi interpolation only works if you use 16x microstepping.


  • administrators

    Two suggestions:

    1. Use the back emf calculator at reprapfirmware.org to check that the driver supply voltage is high enough to maintain torque at those speeds. If it isn't, not only will you lose torque but also the motors will be noisy because the current waveform will be clipped.

    2. If that isn't the problem, try x32 or x64 microstepping instead. Interpolating isn't accurate during acceleration.



  • @dc42 Does the Duet board support 32 or 64:1 ustepping without interpolation?



  • @mrehorstdmd interpolation on the 2660 drivers can only be used with 16x microstepping. To enable interpolation, you must select 16x and set I to 1. If you select 32, 64, or 256 stepping, you are selecting true 1/256th microstepping, etc.



  • @bot Great! I will try tweaking the config file. Thanks!



  • @dc42 Is there any reason to use interpolated microstepping if the drivers can do uninterpolated microstepping to 256:1?



  • @mrehorstdmd said in Behavior of drivers at high speeds:

    @dc42 Is there any reason to use interpolated microstepping if the drivers can do uninterpolated microstepping to 256:1?

    Depends on the travel speed and your steps per mm, but if you use 256x (non-interpolated) then you could run into the maximum step pulse frequency of the board/firmware. I think that's currently around 120Khz but check because it used to be 200 Khz.

    If it helps, using 256x on my extruders which have around 400 steps per mm, I hit the limit using retraction speed above 1800mm/min (30mm/sec) so with say 80 steps per mm you should be OK up to around 150mm/sec.



  • I used the back EMF calculator to calculate speed limits based on the motors I am using, current, pulleys, etc. and found that with a 12V power supply, torque slip is the main limiting factor in maximizing speed at all microstep settings from 16:1 up to 128:1. At those settings, maximum speed is limited to about 350 mm/sec. At 256:1 the pulse rate exceeds the controller's 120 KHz limit.

    alt text

    I composed a gcode file to move the mechanism at 100 mm/sec and 350 mm/sec at 16, 32, 64, and 128:1 ustepping. Video of the test is here.

    Here's the test gcode:

    ; filename: '12V 100 350 mmps'

    M564 H0 S0 ; enable motion without homing
    M350 X16 Y16 Z16 I0 ; Configure 16:1 microstepping with no interpolation
    M92 X40.00 Y40.00 Z40.00 ; Set steps per mm

    G28 Y F3000
    G28 X
    G01 F6000; 100 mm/sec

    G01 X725 Y300

    G01 X0 Y1025
    G01 X725 Y1025
    G01 X725 Y300

    G01 F21000; 350 mm/sec
    G01 X0 Y1025
    G01 X725 Y1025
    G01 X725 Y300

    M350 X32 Y32 Z16 I0 ; Configure 32:1 microstepping with no interpolation
    M92 X80.00 Y80.00 Z40.00 ; Set steps per mm

    G01 F6000; 100 mm/sec
    G01 X0 Y1025
    G01 X725 Y1025
    G01 X725 Y300

    G01 F21000; 350 mm/sec
    G01 X0 Y1025
    G01 X725 Y1025
    G01 X725 Y300

    M350 X64 Y64 Z16 I0 ; Configure 64:1 microstepping with no interpolation
    M92 X160.00 Y160.00 Z40.00 ; Set steps per mm

    G01 F6000; 100 mm/sec
    G01 X0 Y1025
    G01 X725 Y1025
    G01 X725 Y300

    G01 F21000; 350 mm/sec
    G01 X0 Y1025
    G01 X725 Y1025
    G01 X725 Y300

    M350 X128 Y128 Z16 I0 ; Configure 128:1 microstepping with no interpolation
    M92 X320.00 Y320.00 Z40.00 ; Set steps per mm

    G01 F6000; 100 mm/sec
    G01 X0 Y1025
    G01 X725 Y1025
    G01 X725 Y300

    G01 F21000; 350 mm/sec
    G01 X0 Y1025
    G01 X725 Y1025
    G01 X725 Y300

    M350 X16 Y16 Z16 I0 ; Configure 16:1 microstepping with no interpolation
    M92 X40.00 Y40.00 Z40.00 ; Set steps per mm

    G01 F6000; 100 mm/sec
    G01 X0 Y1025
    G01 X725 Y1025
    G01 X725 Y300

    G01 F21000; 350 mm/sec
    G01 X0 Y1025
    G01 X725 Y1025
    G01 X725 Y300

    I hear a definite decrease in noise at 100 mm/sec when it goes from 16:1 to 32:1 or higher, but 32;1, 64:1, and 128:1 all sound about the same. At 350 mm/sec I don't hear any differences at any microstepping levels.

    The single motor motion (diagonal) is a lot quieter than the dual motor motion (X and Y), but only one motor is turning, so less vibration as expected.

    I'm trying to make the mechanism run quietly at speeds like 350-500 mm/sec. Maybe that's just not possible using 2 phase stepper motors?


  • administrators

    0.9deg motors may be quieter, but they also need more drive voltage.

    Have you tried reducing the motor current? If the calculator estimates the drive voltage runs out at 350mm/sec then it might happen at a lower speed. There should be a noticeable increase in noise when the speed exceeds the limit. You could also try turning your 12V PSU up to 14V if it is adjustable.



  • @dc42 I played with motor current and found that if I set it to 500 mA, the torque is a bit too low to drive the mechanism reliably. At 600 mA it seems to work well. The motors are rated for 2A.

    I've tried using 24V and found not much change in noise level, though it lets the mechanism run faster.

    I have some 3 phase stepper drivers so may look for some cheap 3 phase motors and see if things improve. Otherwise, maybe going to 5 phase steppers will drive it quietly at high speed.



  • It occured to me that since I have excess torque and excess resolution available from the motors, and that they run quietly if I keep the speed down to <2 revs/sec, I can use pulleys to gear the mechanism up so that 1 rev per sec or so will drive the mechanism at 500 mm/sec. Motor torque is higher at lower rotation speeds and I can crank up the current if necessary to get enough torque to drive the mechanism.

    I ordered a set of pulleys with a closed loop belt that will provide a 1:5 step up in speed. I'm redesigning the motor mounts to accommodate the 80 tooth drive pulleys. There will be separate pulley mounts that drive the corexy mechanism- a 16 tooth driven pulley from the motor, and using the 40 tooth drive pulleys that the mechanism is currently designed around. 1 rev of the motor will spin the 40 tooth drive pulley 5x, for 400 mm displacement. The motor and corexy drive pulley mounts will be separate pieces, so I'll tension the corexy belts by moving the corexy drive pulley mounts, then tension the loop belts by moving the motor mounts.

    0_1565921614140_1_5 belt drive motor mount v7.png

    I'm trying to get this done in time for the Milwaukee Makerfaire in mid September, but parts are coming from China, so who knows if they will arrive in time.



  • @mrehorstdmd This is an idea that I've been thinking about for a long time, although not for the same reasons. My thinking is that it would allow one to use higher belt tension on the main belt that the stepper motor bearings might not otherwise tolerate. Whether or not this would be beneficial, is of course not known. So I will be following your journey with interest.


  • administrators

    @deckingman can you support the motor shaft with an appropriate bearing at the other end or is it not long enough?


 

Looks like your connection to Duet3D was lost, please wait while we try to reconnect.