Well about four people have said roughly the same thing - that this is surely caused by an overcurrent situation, I think the above is a good analysis.The pulse generation on pico is based on PWM hardware. Software just sets the target values and then some silicon does the work. The python module "asyncio" is great to control multiple things, but is not needed for PWM on pico.
Found a datasheet for MG996R https://www.electronicoscaldas.com/data ... sek-eRHBox
Running Current 500 mA – 900 mA (6V)
Stall Current 2.5 A (6V)
The waveshare board uses a MCP1584 regulator (source: waveshare wiki, look for 'schematic') which is announced as a 3A device. If you look to the datasheet, the current limit is somewhat higher, but there is a thermal limit too.
Bringing these two datasheet together (just using the numbers, real world conditions might be different/worse)
- one of these servo in stall mode will consume almost all of the board's regulator's capacity.
- with no load, assuming 500mA, the regulator could run 6 servo. So your 5 servo in continuous movement are on the brink.
Powering the pico from the board is possible, but the servo could produce electrical spikes/ noise of all sort which harms the pico.
The pico board converter RT6150B-33 is rated for max 6V, spikes from motors could easily increase the nominal 5V over this level. There is not too much margin on this side.
Also the data lines from pico to the servo is no "one way route"; could be the servo produce spikes on these lines which harm the pico which is only 3.3V tolerant on GPIO lines.
If I would have such a scenario "pico with 5+ of these MG996R servo", then I would build a board from scratch:
- use a more powerful converter for the servo
- use more capacitors on the power 5V line, add overvoltage suppressor to avoid EMI
- carefully separate high current lines from pico power lines.
- if you drive this system from a battery, add a battery voltage monitoring (nice to have)
- add a second converter battery->5V for the pico
- use npn transistor to drive the servo signal lines which protects pico GPIO lines.
In light of OP pictures posted I wanted to also note that the yellow jumper seems to separate the wave share from the Pico for powering and it seems the Pico must be powered through its USB port / VBUS when waveshare is on battery.
3.6V DC x 4 batteries in series is more than the input voltage of 12 volts of the regulator at 14.4V DC.
So the input voltage was exceeded and the output current was probably exceeded and who knows what went on with the Pico drawing power from the computer and any spikes on the lines to the servos.
Statistics: Posted by breaker — Sun Jan 19, 2025 11:31 pm