Hello, I occasionally read on the forum. Now I have a question and Ryan from Ooznest told me to place it here. Because he had no experience with closed loop stepper motor. I try to connect closed loop stepper motors to a duet2 with an expansion breakout board. Before I had normal stepper motors with external drivers on the duet. When I use the jog commands (G0) with the buttons it works. When I use a other command,like homing (G1), it goes wrong. Stuttering movements and the distance is no longer correct. The distance is ok when i use the buttons. If i set the closed loop running off with a switch, same result. The strange thing is that the driver does not give an alarm for the missed steps. So the driver does not see the missed steps. When I block the motor, the driver go in alarm because of missed steps. I'm using following motor and drivers: 2phase LC57H2100 from Lichuan LCDA257S driver from Lichuan Shenzhen Xinli Chuan Electric Co., Ltd. bought on Aliexpress. Motor encoder resolution is 1000 (PPR) Step angle 1.8° Does anybody have experience with this? Or an idea how to solve this? Sorry for my english. Thanks, Davy
Hello, I tested with a 3phase motor/driver, also closed loop and this works fine. I tested the 2phase motor with a normal driver and this works also fine. So the problem is the driver or the settings? But i'm at the end, i don't know what to do next.
Only thing I can think of that would be different between G1 and G0 is the feedrate, which as far as the controller is concerned is the pulse frequency. The driver may need specific pulse envelopes or timings (dir hold, pulse duration, rise time, whatever) that it's only getting from the controller during jogs/rapids. What happens if you send a G1 command with the same feedrate as your rapid speed?
Hello, G1 command with higher speed works. So it's somewhere a setting, but which one? I have no idea. The seller gave me software to program the driver. Here I can see that if I give 5000 pulses with a speed of 15000, the driver also gives 5000 pulses. But when I give 5000 pulses at speed 1500, then only 800 pulses are counted. So only higher speed as 12000 works.
Whilst it's good that it's clear everything is working, unfortunately this is where it delves into making digital CMOS logic circuits talk to each other with timings measured in microseconds, or even nanoseconds. In theory, with your stepper motors, there should be a section of the manual where it gives the timing information that they need for the counters or whatever to actually reliably detect the input pulse train. This page, from LinuxCNC, lists a lot of the popular drive timings. It may help, or at least get you pointed in the right direction: LinuxCNC Documentation Wiki: Stepper Drive Timing This only works, of course, as long as you have control over your step generation timing. I had to input these to make a hardware FPGA board work properly with some NEMA 34s. Grbl only allows you to change the first value, step time, using $0 - Step Pulse, in micrseconds. Try shortening that value up from 10us to say, 2us, if you're using grbl or a grbl-based controller. Anything else, you'll have to refer to the appropriate documentation or forum.