T200 Thruster Stalling

Hello, I am encountering an issue running T200 thrusters. I was recently running a thrust test and found that some of the thrusters would only turn properly one way, or not turn in either direction. While all thrusters were able to move intermittently, the ones that stalled would frequently get stuck. I was wondering if any of you have encountered this issue before or have any ideas on how to fix this? Here is some info that I have gained from troubleshooting so far (Note that I am using a raspberry pi pico for these tests):

  • This is an issue regardless of thruster age. One of the brand-new thrusters I bought had this issue along with the older and more used ones.
  • It isn’t an issue with the PWM. I have checked the pulsewidths with an oscilloscope and can hear the two beeps that signify the ESC has been initialised.
  • Sometimes thrusters wouldn’t work at a specific PWM value but would at others.
  • I thought the issue might be with the ESC so I swapped out the old Basic ESC for a brand new Basic ESC. Same result.

I tested 8 thrusters and only 3 of them had this issue.

Thanks so much for your help!

Hi @AhmedShaikh -
Welcome to the forums!
Your issue sounds very unusual! Typically a thruster will “jitter” or have issues spinning if the connection between the motor and ESC is not a good one, electrically.

Have you modified the cabling on these thrusters? How are you connecting them to the ESC?
Can you share any pictures of your setup, or video of the behavior?

How are you generating the servo-style PWM signal on the Pi Pico? Can you share your code?

What voltage are you powering the thrusters with, and is the ground of this power supply connected to the ground of your Pi Pico?

Hi Tony,

Thanks so much for your prompt response. Here are some of the functions I am using in C++ with the raspberry pi pico SDK to generate PWM:

void initialize_motors() {
    uint8_t motors[] = {vMotor1, vMotor2, vMotor3, vMotor4, hMotor1, hMotor2, hMotor3, hMotor4};

    for (int i = 0; i < 8; i++) {
        gpio_set_function(motors[i], GPIO_FUNC_PWM);
        slice_num[i] = pwm_gpio_to_slice_num(motors[i]);
        channel[i] = pwm_gpio_to_channel(motors[i]);
        pwm_set_clkdiv_int_frac (slice_num[i],  9,9);
        pwm_set_wrap(slice_num[i], 65465);
        pwm_set_chan_level(slice_num[i], channel[i], 19639.5);
        pwm_set_enabled(slice_num[i], true);
    }
    sleep_ms(100);
}

This initialises the motors at a pulsewidth of 1500us by setting the clock divider and wrap to achieve a desired and duty cycle to achieve desired pulsewidth.

void set_pw(uint8_t pin, uint16_t duty_us) {
    uint16_t level =(uint16_t)(65465 * ((float)duty_us/5000));
    pwm_set_chan_level(pwm_gpio_to_slice_num(pin), pwm_gpio_to_channel(pin), level);
}

This is the function I used to set PWM values. I have validated this with an oscilloscope.

int main() {
    stdio_init_all();

    initialize_motors();
    gpio_put(LED_PIN, 1);

    initialize_motors();
    
    set_pw(1, 1400);

    sleep_ms(5000);

    set_pw(1, 1500);

    while(1){
        tight_loop_contents();
    }
    return 0;

}

Finally, here is how I tested in the main loop.

Unfortunately I can’t add attachments so I"ll just describe my setup. In my wiring I connect the ESC to a 12V power supply with alligator clips and the ESC wires to the thruster wires with alligator clips. The pico is connected to the ground and signal wire of the ESC. I notice now that I do not have a common ground between the pico and the ESC; this may be the issue, as it explains why there is no clear pattern in the thrusters that failed. I will connect the pico to the ground of my power supply and get back to you soon. Thanks a lot for pointing this out.

1 Like

Hi @AhmedShaikh -
If your alligator clips are long, they may be causing issue on the motor to ESC connector. If possible, using screw terminals or a shorter coupling method may help as well…

Hi Tony,

I checked the thrusters and found that the issue was indeed in the alligator clips. It seems like the alligator clips were way too long and added additional resistance. However, some of my thrusters are borrowed from a nearby lab, and they have some really corroded wires. The wires are brown and green in places, and sometimes even black. These corroded wires were still showing some slight issues with thruster stalling.

I’m planning on stripping these wires down until the corrosion is gone and soldering on some fresh 18AWG wire back to the length of 1 meter. Could you let me know your thoughts on extending the wire like this? I know that the regular T200s have teflon insulation and a strong jacket on the outside, but do I need to take these precautions if I’m not going to go deeper than 5 metres?

Thanks a lot for your help so far.

Hi @AhmedShaikh -
It’s important to minimize the length of the wires from the ESC to the motor. If they are too long, the ESC cannot properly sense the rotation of the rotor, which can cause the jittering you noticed. Typically a meter is about the limit. If you use a multimeter to check the resistance between each of the combinations of the three wires, you should measure a consistent, low resistance on the order of <5-10 ohms. Any higher, and your wires have a bad connection!
A meter to 2 is typically the limit for the motor wires…