Pololu Robotics & Electronics
My account Comments or questions? About Pololu Contact Ordering information Distributors

How to control speed of linear actuator with jrk 12v3



I have a linear actuator set up with the jrk 12v3. It is working when using the jrk configuration utility and when I use a modified version of the jrk Example program.

My question is how do I control the speed? I want to set the target position and also the speed. For example, I want it to go .25 inches per second instead of the maximum .5 inches per second.



Hi, Kevin.

If you only need to operate the linear actuator at one lower speed, you can set the “Max duty cycle” to 300 (which corresponds to a 50% duty cycle) in the Pololu Jrk Configuration Utility under the “Motor” tab.

Another option might be to create a loop that increments the target position to the final destination you want with an appropriate delay to reduce the speed.




Thank you for your reply! These suggestions work, but after trying them I realize I have some requirements that I wasn’t thinking about before. I am trying to stretch a spring with the linear actuator and I want it to go at a constant speed. I am now trying to write a PID control for the velocity, so the program will increase the duty cycle as the spring load increases to maintain a constant velocity. Does this sound like the right approach?



A couple of things you might consider. The mechanical nature of the linear actuator makes them very strong and you might find that the actuator will stretch the spring without any apparent slowing of the motor. Another consideration is that the jrk controller has PID functionality built in, and it should react to any load by adjusting the duty cycle to maintain a constant speed. I recommend trying to stretch your spring with the actuator and see if you actually have the problem you envision.



Thanks, in general the jrk 21v3 driver has a good performance vs price rate.

Nevertheless I encountered as a good improve opportunity or firmware update the possibility to command target and maximal speed. Cheap servos as the Dynamixel can do it, I do not understand why the so versatile and general purpose JRK is not able to do it. By the way, it is not well documented how and which parameters in addition to the target, could be changed through serial commands. The given workaround by dear Mr. Derrill seems to work but it requires additional programming and an artificial loop introducing other problems like undesired transients signals. I guess that the parameters table of the driver could not be changed (as that of Dynamixel) on the fly and so it requires to burn data by configuration (as a kind of static parameters) Is it?



Thank you for the feedback on our jrk motor controllers. The serial interface lets you set the target, but does not support changing the PID or motor settings. There isn’t enough program space to add features like that to our existing jrk products, but we are working on some new versions that will most likely have features like that.