Issues with the Talons

Our team has been procrastinating a lot on our robot. We just got electronics board finished, but the talons don’t seem to work. When we tried taking the robot for a drive, the talon lights blink red and green, which suggests that its getting the PWM signal right, but there is no output going through the Talons.

Any suggestions on how we can get this fixed? We are running out of time and I really appreciate any help we can get.

Was the power input ever wired up backwards? That will fry them.
We had one wired backwards, and it blew, but the lights still worked as if there was no problem, but there was no motor output.

Mike Copioli said they were updating the firmware so the light sequence changes when this failure happens, not sure when this hits, or hit production units.

I don’t know if there is a way to test for this condition. Send an email to [email protected] Mike was very responsive.

Scott.

Make sure your PWM cables are plugged in, and in the correct orientation. Also ensure the ribbon cable from your digital sidecar to your crio is secure.

Since the lights are flashing red and green that means it is getting a signal to drive. Make sure you are putting in a large enough signal or it won’t actually have enough power to turn it. Also make sure if you have two motors on one gear box that the two aren’t driving against each other.

Not sure what language you are programming, in C++ we selected the Victor class when controlling the Talon. The lights would blink as you mention, so assumption was it was getting the PWM signal, but motor speed was erratic.

Discovered the problem, the Talons require a faster PWM update rate of 333Hz (user manual sec 13, page 14), whereas the Victor is a 50Hz update rate. Selecting the Talon class fixed the problem and all was good.

-pete

No ,they do not require a faster update rate. They are capable of that update rate.

I will confirm PWM update rate this evening with a scope between Victor and Talon class.

Here are the spec’s for the Talon

Input voltage 6-28 VDC
Continuous current 60 A
Peak current 100 A
Input PWM signal 1-2 ms @ 333 Hz
Input resolution 10-bit (1024 steps)
Output resolution 10-bit (1024 steps)
Output switching frequency 15 kHz

I read this as 333Hz is the update rate as it does not ready provide a lower range for the update. Then kind of assumed it was the update rate.

Now a little puzzled as why changing to the Talon class fixed our issue. Looking at the C++ source code for both the Victor & Talon I expected to see something with the update rate but did not. The only thing were slight changes in the PWM bounds for full forward, reverse and dead band ranges.

Boy, just when you think you have answer you have to go back and dig a little deeper to fully understand.

-pete

Thanks for the quick responses!!!

We know for sure that there is no output going through… I tried using a voltage tester and absolutely nothing goes through.

I remember that when testing out the electronics board for the first time, we didn’t realize the power board polarity was switched and we turned on the breaker with 6 talons plugged in :frowning: I didn’t know this could have damaged the talon, since the lights were still blinking. I will email CTR Electronics to figure out how to test them. Thanks everyone!

2013 Java WPILib drives the Jag input PWM at 5ms (200Hz), Victor at 10ms (100Hz), Talon at 10ms**** (100Hz),
and servo at 20ms (50Hz)

    private void initJaguar() {
        /*
         * Input profile defined by Luminary Micro.
         *
         * Full reverse ranges from 0.671325ms to 0.6972211ms
         * Proportional reverse ranges from 0.6972211ms to 1.4482078ms
         * Neutral ranges from 1.4482078ms to 1.5517922ms
         * Proportional forward ranges from 1.5517922ms to 2.3027789ms
         * Full forward ranges from 2.3027789ms to 2.328675ms
         */
        setBounds(251, 135, 128, 120, 4);
        setPeriodMultiplier(PeriodMultiplier.k1X);
        setRaw(m_centerPwm);


    private void initVictor() {
        setBounds(208, 131, 128, 125, 54);
        setPeriodMultiplier(PeriodMultiplier.k2X);
        setRaw(m_centerPwm);


    private void initTalon() {
        setBounds(211, 133, 129, 125, 49);
        setPeriodMultiplier(PeriodMultiplier.k2X);
        setRaw(m_centerPwm);


    private void initServo() {
        setBounds(245, 0, 0, 0, 11);
        setPeriodMultiplier(PeriodMultiplier.k4X);
  • note: the Talon can be run at 5ms period, if you wish, by changing the period multiplier to k1X (like the Jag)