I am using the jrk 21v3 as a speed controller for a Maxon 304420 brushed motor. I am using 0 - 5V via potentiometer for the input to set the target value and frequency (digital) feedback from an encoder.
My problem is without the encoder connected I can drive the motor to it’s full speed, but with the encoder connected I cannot get above 30% duty. I have tried all different PID settings and also feedback scaling.
Any suggestions please?
I think your configuration of the jrk is what’s causing the problem. The Jrk Configuration Utility allows you to see all of the variables that are relevant to the PID calculation and the user’s guide explains how all those variables are calculated, so that should let us debug the problem.
Could you please get the jrk in to a state where you think it should be driving the motor at 100% but is only driving it at 30%, and then post here a screen shot of the graph window with all checkboxes checked, and post your jrk’s saved configuration file?
P 0.09375.pdf (93.2 KB)P 0.09375 cfg.pdf (12.9 KB)]
Thanks for the quick reply. I have tried setting the PID parameters following your instructions, increasing P until the output is unstable and reducing by 50%, then increasing the I value. This does what you would expect and reduces the error, but I can’t get the system stable and run across a range of speeds. Ideally I need to run to as near zero as possible up to maximum without noticeable oscillation on the motor.
I have enclosed 1 config file and 2 screen shots showing the motor at maximum input and about 10% input for 1 Prop only setting, D seems to have very little effect, the motor is running at very little load.
My next post post shows the addition of Integral and the effects on control.
P 009375 slow.pdf (103 KB)
P+I 0.09375.pdf (88.6 KB)P+I 0.09375 slow.pdf (110 KB)P+I 0.09375 cfg.pdf (12.9 KB)
Here are the files with Integral added
Hello. The instructions that I think you are referring to are only really applicable if you are using a potentiometer for position feedback. Instead, you are using a tachometer for speed feedback. Therefore, the Error term on your graph is actually a measurement of the error in the system’s speed (rather than a measurement of the error in the system’s current position). The Error term gets added to the Integral term every PID cycle, so the Integral term can be thought of a measurement of the error in the system’s current position. So in your system the Integral Coefficient serves the same purpose that the Proportional Coefficient would serve in a position feedback system.
To make your speed feedback system work, please start with all your PID constants at zero and then try increasing the Integral Coefficient. In all the screenshots you sent, the Integral variable was close to its limit of -1000, which means that the system’s speed was slower than desired and the Integral Coefficient was not high enough. If you make the Integral Coefficient high enough, the jrk should be able to keep its Integral variable closer to 0 (but not exactly 0).
The product of the Integral Coefficient and the Integral variable is one of the terms in the equation that determines the duty cycle target. For example, if you set the Integral Coefficient to 1.0, then whenever the Integral variable is -1000, that term in the equation will be 1000. This is much larger than 600 so it will probably result in the duty cycle target and duty cycle getting set to 600, or full speed forward. Your integral coefficient was only 0.094 so that didn’t happen for you.
Thanks for your prompt reply, I am away from the lab for a few days so will not be able to try these suggestions for a while. I will post the results as soon as I have them.