I have four PCA9685 servo drivers in a chain with the I2C addresses 40, 41, 42 and 43. They worked fine a moment ago, but now the one with address 41 stopped working. All four have the led light on. Any idea? I have a spare one I could put in, but I'd like to hear ideas I've missed myself.
I have an Arduino MKR 1010, which is controlling them. Each has 16 servos (sg90), except the fourth with only 13 servos. The Arduino gets 5 V from one LM2596 stepdown converter, all four servo drivers get the same 5 V to the VCC pin (logic power). All four servo drivers get also 6 V from another LM2596 for servo power. Both converters are powered with a 12 V lead acid battery.
My idea was that the 6 V servo power might drop, if too many servos are working at the same time (they shouldnt, but you never know). The drop would happen in one of the LM2596, while the other one shouldn't be affected.
A schematic would be a big help but not a frulzzy thing, be sure to include all power and ground connections. At this point I will take a SWAG and suggest that you go back to the basics and run a I2C scanner and see if it shows. If it appears then check all the voltages etc connected with that board. If ok, then try adding servos one by one until they all work or one locks you up. Be sure all your grounds are solid.
Here's the circuit. I drew only four servo ports on each PCA9685, but there are 16 of them. The one that failed is the second from the right. Its led is on, though. But yeah, I shall check each servo.
That's not really what I said, but after looking at your circuit, I think I would change my suggestion to swap the address of the PCA9685s so a different one uses address 41. (I assume the bad chip doesn't drive any servos)
I would also try the suspect one all by itself with no other PCA9685s in the circuit.
Strangely the misbehaving PCA9685 started to work again today. I have no idea what went wrong yesterday. The servos are tied to a very narrow 60 degree movement. They are pulling keys in a reed organ. It might happen that at startup the servos get some noise and try to turn past their allowed sector. If the assembly prevents them from doing that, bad things might happen. Could the PCA9685 have some circuit that shuts the power internally to protect the power source? Because the other three PCA9685:s showed no power outage.
Anyway, if it doesn't happen again, I guess I'll never know what happened.
It hasn't happened again yet. I was wondering if the IC reads its I2C address only once at powering up. And if it reads it wrong. I haven't covered the ICs anyhow, they might get some dust from the environment (they are attached to a 120 year old pump organ). If the solder jumpers get some dust or something else temporarily, the address becomes something else.