New Encoder Products - How do they connect?

I’ve read all the documentation on their sites but am confused.
Specifically referring to
Rev Hex Encoder
Hex Encoder says it uses a JST connection. How long can these be and where can they plug in (MC? Rio? Other)?
CanCoder connects to CAN but drawing on website shows a black and red wire also, are those power wires? Whatever they are, where do they go?

A partial answer, based on general knowledge (not product-specific):

Looks like CTRE hasn’t released the docs on the webpage yet, though that is a reasonable assumption (power cannot come from CAN itself, but device would require power to work on a CAN bus).

JST refers to the physical mating connector on the encoder itself - the wiring at the other end would connect to whatever controller is supposed to read the signal.

I expect the incremental quadrature outputs should be readable by any motor controller or RIO that supports external quadrature encoders. The absolute position is encoded in pulse width, so it is readable by any controller that can accurately read pulse width (The RIO should be able to, not 100% sure about the others).

Length of wire will be limited by your quality of cabling and routing - you’ll need to ensure the electrical pulses aren’t distorted. Given the pulse sizes and frequencies listed in the web posting, I expect you’d get a least three or four feet without too much effort. Exact answers require more electrical details of the setup though. I’d think of it like any other encoder though.

However, lacking a hookup guide or exact electrical (and firmware) specs for 2020, I don’t know if any non-insiders can say for sure at this point which combinations will work or not work.

1 Like

I would say that the Rev Hex encoder works like a normal encoder, Rev also sells a breakout for their 6 pin JST. The data sheet also shows the pin out, . I feel that the CanCOder works like a normal can stuff. so the green and yellow are can-bus and the red and black wires would be for power because Can is completely data transfer and power is not transferred through it.

1 Like

As far as the CTRE CANcoder goes the red and black are power. I’d expect we could power those from either a fused PDP slot or the volatage regulator or one of the other power taps on the PDP. I’m sure the 2020 rules will tell us what’s allowed and the CTRE user guide will make a recommendation.

I’m glad they decided to make this product. This will be used by teams using the FALCON without any other motors as a way to still have an external encoder on CAN. Previously, the mag encoder needed that ribbon cable used from a talon (as the easiest method to use it). Man I hate that ribbon cable.

If you use a 2 speed transmission with a Falcon drive base you probably want this version of the encoder to just add it to the CANbus.

If 3310 uses a two speed tranny this year then we will probably use this encoder instead of the normal mag encoder.

Oh, and my conflict of interest disclaimer is now in my user title.


If anyone from the companies is poking here, is also be interested in some of the max speed limits, both mechanical and sensing/electrical. Basically, any known issues if we slam either of these on something like a shooter wheel that’s doing a couple thousand RPM?

This is probably a stupid question, but would this not be helpful on a one speed transmission or is it unneeded if using the Falcon built in? Also, Can I assume the 2 speed transmission’s 2 gear ratios cause some confusion when using the built in encoder?

I also see this as being very useful for teams who want to use neos with an external encoder.

@Ambrose, the added cost isn’t really necessary if you are using a Falcon (or Neo) with a signal speed transmission on a drive base. The backlash between the motor and the wheel is not really enough to truly matter for most autonomous routines. Now, if your backlash generates a lot of difference between where the motor thinks you are and and the wheel, then you may need it for single speed.

However, for a 2 speed all of the COTS gearboxes have some small neutral between the 2 speeds so there will be induced error that will be hard to control.

Because the motor is before the shifter there will have to be two different conversions between encoder counts and wheel rotation. Not impossible but also a bit of a pain unless you are not planning on shifting during auton.

An external encoder has the same conversion to wheel rotation in both gears.

1 Like

The Through Bore Encoder will come with adapter cables so that it can be connected as follows:

  • 6-pin JST to 6-pin JST - Connect directly to SPARK MAX in Brushed Mode* or like @JKBear331 mentioned our JST PH 6-Pin Breakout Board.
  • 6-pin JST to PWM - Connect to the digital ports on the roboRIO. One PWM-style connector for A, B, I, and Absolute Pulse.
  • 6-pin JST to 4-pin JST - Connect to the quadrature encoder ports on the REV Expansion/Control Hubs. This is mainly a cable for FTC.

*We are working on external encoder support in Brushless Mode. You can track the progress on our public Trello.

As far as maximum RPM limits, we designed the encoder to operate at 10000 RPM. However, we’re still finishing up some testing to find the actual upper limit.


If I’m not wrong Smart Motion uses the internal encoder to calculate the velocity(sorry if I’m wrong, I’m not sure). If this is the case will you be able to use the Bore Encoder as an input for Smart Motion?

Smart Motion, as well as all of the other internal closed loop control modes, use whatever sensor you configure as the feedback sensor for its calculations. This can be the internal encoder, an analog sensor, or the alternate encoder once this feature is released. So yes, you would be able to use the Bore Encoder as the input for Smart Motion.


Can encoders on the CAN bus, like the CADcoder or something in a CANifier, can be used for motor controller onboard PID or motion profiling? Or is that restricted to encoders plugged directly into Talon SRX ports?

I’m trying to figure this out also.

Remote encoders can be used for onboard PID control. Here’s how we configured our wrist TalonSRX to use a quadrature encoder on a Canifier last year:

  private final TalonSRX wristMotor;
  private final CANifier wristSensor;

  public Wrist() {
    wristMotor = new TalonSRX(RobotMap.WRIST_MOTOR_CAN_ID);
    wristMotor.configVoltageCompSaturation(8, RobotConstants.TALON_CONFIG_TIMEOUT);

        FeedbackDevice.RemoteSensor0, 0, RobotConstants.TALON_CONFIG_TIMEOUT);

    wristSensor = new CANifier(RobotMap.WRIST_CANIFIER_CAN_ID);


    wristState = new WristState();