I’m working with a jetson nano and 4 T-200 thruster which are connected through a PCA9685. my communication protocol is I2C.
I’m working with 2 libraries, adafruit CircuitPython.
when I connect my engines and put all of them on 90 (the PCA thinks all of them are servo engines) which suppose to be no movement my engines still rotate (minimally but still). is there any way to make them stop beside checking each pulse until it stops?
I’m not really sure what you mean by this. Servo-style control is generally done via PWM signals, with 1000-2000µs pulse-durations. If you’re controlling your thrusters with our BasicESCs then 1500 \pm 25µs is stopped/neutral, 1100µs is full thrust in one direction, and 1900µs is full thrust in the other direction. Other ESCs may not be bi-directional by default, in which case neutral/stopped is generally 1000 or 1100µs, and full thrust is 1900 or 2000µs.
It’s not clear what your “90” refers to, so we can’t advise on what you would need to change to properly stop your thrusters. If it’s supposed to be a rotation angle I’d recommend you double-check the angle range that’s being applied, and what signals that’s supposed to correspond to (e.g. if it’s set to a range of 170 degrees for signals from 1000 to 2000µs then you would need to command 85 to send a stopped signal).
Hey Eliot,
thank you for your fast reply.
you replied the information I needed. just one question, for each BasicESC you’ll have a different PWM signal that will be neutral/stopped?
No, our BasicESCs are all pre-programmed with a 1500µs neutral/stopped signal, with a 25µs dead-band on either side (so any signal from 1475 to 1525µs should be considered as neutral/stopped).
@Joe1 the PCA9685 can be very imprecise. telling it to do 1500us could end up at 1580 or so, depending if you got a good or a bad batch.
I recommend to adjust the numbers manually until you find what generates 1500us, or feed the PCA an external clock signal.