Problem using Automation 2040 W (Pico W Aboard) to drive a solenoid

The main use of it is to throw a solenoid which has an inrush current of about 250mA at 12V.
I’m running the board with external power of 16V.
When the solenoid needed to be thrown, I simply set GPIO pin 16 for the digital sourcing output to 1 for about 75Ms.
I’m running MicroPython, but not the Pimorini version for this board.

The issue I had using this board was that when the solenoid was thrown, the Pico reset. I was able to cure this by keeping the USB cable plugged in. I didn’t want to have to have the USB cable always plugged in, so I started to experiment with using Pulse Width Modulation on pin 16 to ramp up the current to the solenoid. I set the PMW to 1000Hz and would ramp it up over a time from anywhere from 25Ms to 500Ms.

The end result of my experimentation is that the board no longer works. The USB connector on the Pico gets very hot. One of the relays also chatters even though I don’t use any of the relays. The processor actually runs, but I’m afraid to let it on for any length of time because of the heat being generated at the USB connector.

I’m not sure what damaged this board. Pimorini specifies that it can be powered by USB, an external power source, or both at the same time. While I was experimenting, I would have it powered by either or both means and be unplugging and plugging in one source while the other source was still applying power. Pimorini doesn’t warn against doing this, but then they don’t say you can do it either.

Another possible problem is the amount of power being sent to the solenoid. Pimorini specifies the digital sourcing output is good for 2A max current at 500Hz PWM. The solenoid is specified at inrush current of about 250mA at 12V. I happened to be using 1000Hz for the PWM, but for no particular reason.

Another possibility is that this ran fine for a week, but then was being overtaxed by something and finally gave up.