JRK 12v12 Duty Cycle

Hi Folks

On p18 of the JRK User Guide it discusses Duty Cycle and says that, with the 12v12, anything below 2% is treated as 0%.

My question is: What is the minimum speed that this controller can drive motors?

I’ve used a Pololu controller with feedback and the issue there was the input only had a resolution of 127 in each direction, which made the motors jump into life with quite a fast starting speed. The 12v12 has an input resolution of 2048 in each direction so that seems good, but I’m not sure I understand the implications of the 2% issue.

Does this mean that the minimum speed of the motor is 2% of the maximum or am I completely misunderstanding Duty Cycle? (Quite likely!!)

Can you help me with this?



The section you are referring to is the Motor options section in the Jrk User’s Guide, which says:

The 2% number you are quoting only applies to the Jrk 21v3, not the Jrk 12v12. We don’t have an exact threshold for the Jrk 12v12, but it should be better than 2%.

Without seeing your motor and doing an experiment on it, I couldn’t tell you whether the Jrk can drive your motor at 2% of its maximum speed. Generally, motors have some minimum duty cycle: for any lower duty cycle, the motor can not spin at all because there is too much static friction. In your system, there might be a lot of static friction that the motor has to overcome, but once it finally overcomes the static friction (at a duty cycle of ~30-60%) there is relatively little dynamic friction, so it spins fast. But this is just speculation because I don’t know what you’re building. I suspect that the minimum speed of your motor is higher than 2% of its maximum speed, so I wouldn’t worry about the 2% limit. You might be able to drive your motor slower if you measure the back emf but the Jrk does not support that. The jrk does have a frequency feedback option. Are you currently using any feedback?


Hi David

Many thanks for your reply.

I’m trying to improve a remote controlled pan and tilt head for a camera. The existing system is pure analog with no feedback and so suffers from poor control at slow speeds.

Experimentally, I intend to use some motors with tacho generators. I’ve used the Pololu 3A controller but because the input is 127 bits for each direction I don’t get the control I want. Basically, an increase of one bit, from the zero speed setting, makes the motors jump to a speed that is too fast for the slow speed requirements.

This is why I’m hoping the JRK design, with 2048 resolution each way, will work better.

I need to be able to smoothly move the camera extremely slowly for one shot, and a few moments later pan the camera very fast for another shot.

Do you think that, with tacho feedback, I’ll be able to achieve this?



Are you saying that speed 1 with no feedback caused your motor to go too fast? If that’s the case, our products probably can’t help you too much, but it seems unlikely that that is the case. If you apply your power supply directly to the motor, does it go a hundred times faster? Can you provide us with some links or datasheets for your motor and tachometer?



Just to clarify, even though the input is a 12-bit number (11 bits in each direction), the duty cycle itself has a resolution of 600 steps in each direction.

- Ben

Hi Ben

Hmmm, I’m not sure that’s good news for me!!

I’ve just ordered two of these units so I may as well try them out now.

I’d noticed something to do with 600 when I read about duty cycle but didn’t really see the significance.

Now, I see that I was focusing on the input and not concentrating on the output.

I’ll go ahead and see just how slow I can make the motor run.

Any suggestions for ultra slow speed at the motor before the gearbox?



A resolution of 600 steps in each direction should be more than enough for smooth acceleration, but it’s certainly possible that external factors (such as friction, as David mentioned) will cause your motor to jump to life if you don’t use frequency feedback to achieve really low speeds.

- Ben

Hi Ben

Thanks for that.

I actually intend to use a dc tachogenerator as the feedback input, scaled to produce the same voltage as a pot, so hopefully that will do it.

What do you think? Good solution?



I think that will be fine, as long as you scale it correctly. When the motor is not moving, the feedback voltage should ideally be somewhere between 2 and 3 V. When the motor moves, sign of the voltage change must indicate the direction. Make sure the voltage stays within 0-5 V. You would want to use the integral term in your PID constants, because when your feedback is proportional to the speed, the integral term is what allows you to actually reach the desired speed.

What kind of input method will you use?

Hi David

Thanks for your reply.

I didn’t really know anything about PID so your comment on the integral term is most useful.

A joystick will control the x and y axes of the pan and tilt head. I hope that the short track length of a joystick can be ‘lengthened’ by scaling. What do you think?

If it can, then I wonder if I can change the scaling ‘on the fly’. This is because finer control is needed at the slow speeds but if an extra fast shot is needed then can I turn up the wick so the camera moves faster? Should this be achieved on the input or can the output be scaled as well?

Many thanks


When you get your jrks, you should experiment with the jrk’s Scaling Degree parameter. The default scaling is linear, which means the relationship between Input (joystick voltage) and Target (desired output value) is linear: dTarget/dInput = constant. But you can make the scaling be 2nd degree (parabolic), which makes the function be quadratic with a derivative of zero at the neutral point. This means that near your joystick’s neutral point dTarget/dInput is small, so you get fine control. If you want even finer control your can increase the degree to 3rd degree (cubic), etc.

The output can also be scaled, but it can only be scaled linearly.



Thanks once again for your help.

This is most encouraging. Not only can I have increased sensitivity on the input due to the parabolic response but I can scale the output as well.

I’m in the UK and, as I placed the order on Monday, it’s going to be a few days before I can actually play with these units.

There’s only one question remaining, can I alter these parameters on the fly? In particular the output scaling.

I really appreciate the help you are giving me.

Many thanks


Not easily. The parameters are all set by the Jrk Configuration Utility over USB and there are no serial commands to change them. To change them on the fly, you would need the jrk to be connected to some USB host (like a personal computer) and you would have to send the correct USB commands to it. We have a C# library that will allow you to do that, but it is not very well documented. It hasn’t been released publicly, but I can send it to you if you want it.

Why do you want to change the output scaling on the fly?


Hi David

This is for a camera pan and tilt head. One of the options that expensive heads have is the ablility to set the head for, say, a ‘medium’ maximum speed for most of the time to give greater control for slower shots but then to suddenly increase that speed if caught out by a fast moving object.

So, I thought that this could be achieved by scaling the input or scaling the output. The input needs scaling anyway to suit the joystick and your thoughts on the parabolic setting were most encouraging.

The reason I’m pursuing the output scaling is that the 600 motor bandwidth might have more control if it was set low for most of the day and then cranked up for that surprise shot that wouldn’t need much finesse at that moment. I’m assuming here that the ‘600’ resolution will still be 600 at whatever the max speed setting. Please correct me if I’m wrong or barking up the wrong tree.

I’m afraid that C# is wayyyyyyy over my head. I can do a little ‘basic’ but my logical powers are virtually zero!!

Once again, many thanks for your assistance.


ps. I’ve read a little more about other controllers and I think I was asking too much. Perhaps the ‘600’ bandwidth is going to be more than adequate for my needs and that just adjusting the input will give me the control I need. What do you think?

No, actually, the 600 number is the absolute resolution. A duty cycle number of 600 always corresponds to 100%, and 300 always corresponds to 50%. If you limit your jrk’s duty cycle using the max. duty cycle setting, you don’t get finer control at the lower speeds.

Yes, I think 600 resolution should probably be fine for you unless you have an unusual motor. What is the lowest duty cycle you would want to run your motors at besides 0%?


Hi David

I’m really not sure what I would want with duty cycle as it’s clear that I don’t understand what it means!!!

Perhaps if I show you a short video of a motor with a tacho that I hooked up recently using a very old analog board that doesn’t work very well.

This is the slow speed I require but the motor never got to full speed in this video because I couldn’t hold the camera and operate the joystick at the same time!!

Sorry about the heavy breathing - turn your speaker off!!


So, can the board do this, and also run the motor at 2000rpm and all points in between?



Hi Keith,

I was looking through your posts and I’m building pretty much the same thing you are, so we’re kinda in the same boat. They key to getting the motor to start up slowly is the feedback system in my opinion. I just got my controller the other day so I’m still experimenting with it, but so far I manage to run a motor reliably as slow as ~50 RPM. Being a gear motor with a 218:1 ratio it would take a little over 4 minutes to complete one rotation like this! So I think you’ll find this controller will work very well for your needs.

Since I happen to know about duty cycles I’ll go ahead and answer your question. Anything else I’ll leave to David :wink: Ok, so the duty cycle is just how these digital controllers get the motor to vary its speed. Rather than changing the voltage, the controller pulses the current to the motor very rapidly and the longer each pulse is the faster the motor goes. By varying the duration of each pulse the speed can be regulated very efficiently. To be able to operate the motor at the slowest and fastest possible speeds you want the controller to operate at the full duty cycle range from 0 to 600.

Hi John

Thanks for your comments.

Have a look at the video in my previous post.

You’ll see that the motor can move very, very slowly. Can you confirm that you’ve made yours run at the slowest in the video?

I’m afraid that’s the kind of speed I need for some long lens work.

Have a look and tell me what you think.



Wow that’s real slow indeed! So far I’ve managed to get down to about 3 times that and it’s not quite as smooth at such a slow speed, but I’m still experimenting so I expect it to get better. Running at a PWM frequency of 5 kHz rather than the 20 kHz default helps, although at the 5 kHz frequency there is a slight high-pitched hum. Why not just gear it down a bit more? You’ll sacrifice top speed a bit, but in most cases this won’t be an issue. As it sets right now, I could go anywhere from a 10 minute pan to a 10 second pan.

Hello, Keith.

Can you give us more information about the motor and controller in the video?

- Jan