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

Jrk 12v12 serial control


I am trying to pair your 12v12 controller with a 4D systems uLCD-32PT device (4dsystems.com.au/prod.php?id=114) without any success so far.

This is what i’ve done:

  • configured 12v12 from Jrk Configuration Utility to Serial input mode, no CRC, no timeout, no feedback
  • tried to pair them on fix baud rates at 9600 and 11520 but 12v12 sets Serial Signal Error when uLCD sends data
    -tried to pair them with auto detection of baud rate (uLCD working at either 9600 or 11520, neither giving any results)
  • tried to use the simple protocol and then the pololu one, neither worked

A sample of code (for motor stop) would be something like:

com_SetBaud(COM0, BAUD_9600); serout(0xFF);


  • can i use auto detect with simple mode protocol, how do i initialize the communication? just send a 0xAA before any simple mode commands?
  • why is it that if i set the serial interface to UART i can still give commands from the computer even though the manual states that in this case computer can only read from jrk
  • are there any command separators, line feeds, or anything else that i might be missing?
  • any details on timings? power on time, time between parameter request and response

thank you

Jrk 21v3 Deceleration Control
Jrk 21v3 ramp up and down request
Jrk 12v3 reading current consumpion nonlinearity

Hello, yuck.

Can you tell me all the connections you have made between the jrk and the uLCD-32PT?

Do you have an oscilloscope available?

For now, I recommend setting the jrk’s serial mode to UART with a fixed baud rate of 9600.

The answer to those questions is yes, but we call it the “compact protocol”, not the “simple mode protocol”. You should give the jrk several milliseconds to start up before sending the 0xAA byte. However, I recommend not using auto-baud detect for now because it introduces another layer of complexity and possible issues.

The Jrk Configuration Utility uses the jrk’s native USB interface, which is different from its serial interfaces. I’m not sure what page of the documentation you were reading, but it probably was only talking about the serial interfaces.


You should give the jrk some time to initialize itself after powering on or else it might lose the first few bytes you send to it. One hundred milliseconds should be more than enough time. We don’t have any specs on how long it takes the jrk to respond to serial commands but it should be pretty fast. Not all commands result in a response. Before you worry about receiving bytes from the jrk, we need to fix the Serial Signal Error you are getting.



thank you very much for the help

it turned out that it was a power issue. I was using jrk’s internal regulator for uLCD and it wasn’t enough. switched to an external supply and all is going good so far. i’ll do more test when i’ll get back home

ps: a lil offtopic, i’ve read somewhere on the forum about a custom firmware for someone who needed speed up/down ramps as long as he was willing to sacrifice some features to make room for the additions

i would gladly sacrifice serial CRC, timeout and analog feedback for such a feature. is it possible?


The standard jrk firmware already has an acceleration limit feature, but there is no limit on how fast the motor can decelerate. If that is not adequate for you, we can provide a modified version of the firmware that gives you deceleration limits, but sacrifices the max duty cycle limit and current limiting feature.

If neither of those options will work for you, you should email us at www at pololu.com to discuss commissioning a custom firmware version.



if such a version already exists than it would be great if I can test it and see how it goes. the maximum duty cycle limit shouldn’t be a problem as my interest is not close to the motors nominal rpm. limiting the maximum duty cycle should also act as a current limit so it’s an acceptable trade


it would also be very handy that even though no feedback is chosen, to be still be able to read the analog value on the feedback pin with the serial variable reading command, practically having an ADC channel


Here is the custom version of the firmware:

umc01a_v1.3p_20110804.pgm (33 KB)

You can load it onto a jrk using the Jrk Configuration Utility. After you have done that, you can set the deceleration limits in the Motor tab, in the boxes that are labeled “Max. duty cycle”. The max duty cycle and max current features are not available in this version of the firmware.

Let me know how it works for you!



Unfortunately the jrk does not allow this, but our Simple Motor Controllers do. They have two RC inputs and two analog inputs. You can read the values of these 4 inputs over USB or serial at any time, and use the values from the inputs to decide what speed to set the motor to.

The simple motor controllers also have acceleration and deceleration limits in the standard firmware. Since you’re not using the feedback feature of the jrk, a Simple Motor Controller might be a better fit for your application.



looking back and comparing controllers I kind of got to the same conclusion you did, the Simple Motor Controller would have fit my needs better.

sadly it’s a little too late as I can’t afford the shipping costs of a new controller till I don’t drive the jrk to the max of it’s features and get stuck trying

looking at the file name conventions from the manual, umc01a*.pgm files are for Jrk 21v3 and umc02a*.pgm files are for Jrk 12v12. As I’ve mentioned before, I have a jrk 12v12 controller but the firmware you provided is named umc01a*.pgm. Is it still OK to use it?

thanks again for the support


Oh! Thanks for catching that. Don’t try to use the file I posted earlier. I will get you the correct file.



Ok, here is the right file:

umc02a_v1.3p_20111110.pgm (32.7 KB)

I have not actually tried it on a jrk 12v12 yet, so let me know if something goes wrong.


12v12 motor drivers carrier board