Troubleshooting large array of HATs
1612 Views - Created 28/06/2018
I am currently using a Raspberry Pi 2 with three of Adafruit's stepper motor HATs, three of Seeed's relay boards, as well as an IO Pi Plus board. I have all the programming complete and everything seems to work well. However, after running for a few hours, one or two of the ICs on the IO Pi Plus stop being detected by the Raspberry Pi.
I'm assuming that they're fried somehow, but I don't know how it could have happened. This happened with two of the boards, and I only have one left. I don't know what's frying it, but I did read somewhere that each pin has a current limit, and the GPIO 5V supply is only capable of supplying a small amount of current. I am using a total of 19 pins on the board and they are all inputs from limit switches. These limit switches receive 5V power directly from the board.
Would my problem be solved if I use an external 5V power supply for the board, or are the ICs frying due to something else? I'm not having issues with any of the other boards.
Can you try testing each IO Pi board individually without anything else connected to the Raspberry Pi? Try using the "sudo i2cdetect -y 1" command to check that each IO chip is appearing on the I2C bus.
If the IO Pis are only being used as inputs, the current shouldn't be a problem as each chip will only be using a few milliamps at most. They only use larger currents when the IO pins are set as outputs and even then, each chip can only supply a maximum of 125mA so that shouldn't cause an issue on the Raspberry Pi’s 5V rail.
Do the inputs on the IO Pi share a common ground with the rest of the Raspberry Pi? If the inputs are being supplied from a separate power supply and the grounds are not connected, then that could damage the IO Pi chips as the potential difference between the two power supplies could be larger than 5V.
The only other thing I can think of that could damage the IO Pi chips is if one of the stepper motors or relays doesn’t have a reverse protection diode fitted and is causing large voltage spikes on the power supply when they are being switched on or off. If you have an oscilloscope or multimeter with a max voltage setting it may be worth measuring the power supply to make sure there are no voltage spikes.
I placed 1K resistors between the switch and the board, and connected them to ground, using the internal pull-up resistors. I also connected an external power supply to the board. It seems to be working now with a new board, however there are a handful of them that still do not work. I might have more investigation to do...
Note: documents in Portable Document Format (PDF) require Adobe Acrobat Reader 5.0 or higher to view, download Adobe Acrobat Reader or other PDF reading software for your computer or mobile device.