PCA9685 Still won't work after followin instructions to the letter

I'm new to circuitry and I've been trying to make this circuit work for months now. It's very frusturating and I'm hoping to get some help with it. Here's a photo I took as well as a diagram I made of it.



The PCA9685's light turns on and so does the Arduino. The arduino's blue cord is connected to my PC. I just want the servo to spin. I'm really hoping for some good answers, as there's been some wonderful people that helped out in my last post.

Possible answers:

  1. your PCA and/or your servo are toast, because 9V is beyond their ratings
    edit - actually, the genuine PCA9685 from Adafruit is apparently good to 12V; not so sure about the clone boards, but the main chip is probably the same, so you might be okay there. But the servos generally have a 6V max, sometimes 7V, depending on the supplier.

  2. ignoring it's voltage for a moment, the 9V battery has no where near the output current capability to move a servo unless it's brand new, and I bet you've been using it for days...

  3. the problem lies somewhere in the code you didn't share, so we can't help you much there.

your turn.

Alright, I didn't know about the 9v battery not being compatible thanks. This PCA is brand-new and the site said it could handle between 5v-10v so i figured 9v would be okay. I am using bottango, here's the code.


Hi, @dustered_bots
From previous threads you have a habit of cooking your dervos.

Can you try your ervo in a standard non-9685 circuit?

Do you have a DMM? (Digital MultiMeter)

Tom.... :smiley: :+1: :coffee: :australia:

See my edit regarding voltage. Probably your servo that's toast.
I know nothing about the software you're using, someone else may help you.

FWIW, I'm using 5 PCA boards, 48 servos total, on 4 Megas for a model rail project right now, with zero issues... It simply should not be a problem. Code is straightforward, written in the IDE.

Yes I believe I do!! I'm not sure where it is however. I've also just tested the servo and it works as expected in a non-PCA9685 circuit.

Alright, I'll try it with IDE. I am trying to use this software as I'm trying to make an animatronic. The servo works in a non PCA setting.

Then find the Adafruit PCA9685 offering, and use one of the examples you can load.

Is there a possibility that something could be wrong with the arduino? It's smoked at points in the past after too much voltage, but it seems to operate fine in general. Is there a way to test the female slots individually on the arduino?

Of course there is. For example, if you've fried A4 or A5, they're also SDA, SCL; I2C wouldn't work then, so your PCA won't work. Frankly, if you've 'smoked' anything, then as far as I'm concerned, toss it. It'll only cause you frustration and uncertainty.

To test an input, read it and display it's value in Serial Monitor while alternating between 5V and GND; maybe, use INPUT_PULLUP and a pushbutton for that? To test an output, either drive an LED, or use a multimeter to read the pin's voltage while your code alternates between a 1 and a 0, or make the LED follow the pushbutton test? Either test requires you write a small bit of code, unless you find examples that do exactly that for you.

Power requirements/limittions of PCA9685 servo boards is often misunderstood.

The boards has two independent power sections.

  1. Power for the PCA chip
  2. Power for the servos.
    Those two sections only have a common ground, so they can (should) have different supplies.

The PCA chip (VCC pin) has an absolute max voltage of 6volt.
Must be powered from VCC of the Arduino (3V3 or 5volt) for the logic to work.

Servo power (the screw terminal or V+ pin) should be the operating voltage of the servos.
It is limited by the max rating of the reverse voltage protection mosfet and related capacitors.
Aafruit uses a large fet, clone boards can use a tiny smd fet or no fet at all. The ones without fet are basically only limited by the rating of the related capacitors (if fitted).

I was commenting mostly on the V+ pin, but didn't say so. Of course the 5V on the I2C header powers the chip. You're quite right about the range for V+.

The FET is interesting; do you know, is it controlled by the OE pin on the header? That would make sense. The clones I've been using have no FET, and the two originals have the large FET.

I'm running up to 11 servos off a 3A buck converter, but only one servo at a time ever receives a position pulse; so far, currents are always < 1.0 Ampere, including initial movement(monitoring with a shunt sensor and an oscilloscope); the application uses a trivial amount of force (N Scale turnout point movement).
One unfortunate thing about these PCA modules is the inclusion of V+ on the same Dupont header, right beside the 5V pin, as it seems possible to backfeed V+ to your Arduino if working with single-pin Dupont wires; no idea if there's protection in there (don't see any likely component for that, but haven't done a circuit trace), but certainly if there is no series diode or other protection, the Arduino regulator (or possibly the USB supply, yikes!) takes a hit.

Anyway, this is all pretty much wasted electrons, as our OP seems to have left the planet.

It is not. The fet is just an ideal diode between the screw terminal (+) and servo supply (V+).

The V+ pin is there to facilitate daisy-chaining multiple boards. I agree with it's dangers (close proximity to the Arduino pins). Just cut it off if you don't need it.

Didn't leave the planet, just was eating dinner. Thanks for the reply!!

Got it, TYSM!! I ordered a 5v cord earlier today and I'm praying that your solution will work!! If so I'll mark it as one. It seems like it may, and I didn't understand how the VCC and PCA chip's power source differentiated. One question though, if the PCA which had too much power supplied to it has the light still turn on and it's recognized as device, is there a chance that it's still functional? This is the one that I'm using: HiLetgo 2pcs PCA9685 16 Channel 12-Bit PWM Servo Motor Driver IIC Module for Arduino Robot: Amazon.com: Industrial & Scientific I have a backup PCA if it won't, but here's to hoping!!

I don't know if the LED is connected to the PCA supply or to the Servo supply.
Fake parts usually don't come with documentation.
You can see that for yourself by only connecting the PCA supply first.
It's only a power indicator though. It has no other function.

My 5-volt power cord came and it still won't work sadly :( hopefully I'll figure it out soon. Tried it with both boards, the unused and the used one.

Is your device showing on the i2c_scanner sketch? Mine shows at 0x40

I use this on both Arduino (Mega2560) and RPis. Works great on both.

For testing, you can connect an LED from the signal pin and GND pin to test. The signal pins have a 220 ohm resistor to regulate current.

Edit: Here is the scanner code I use:

#include <Wire.h>

void setup() {
Wire.begin();

Serial.begin(38400);
while (!Serial); // Leonardo: wait for Serial Monitor
Serial.println("\nI2C Scanner");
}

void loop() {
int nDevices = 0;

Serial.println("Scanning...");

for (byte address = 1; address < 127; ++address) {
// The i2c_scanner uses the return value of
// the Wire.endTransmission to see if
// a device did acknowledge to the address.
Wire.beginTransmission(address);
byte error = Wire.endTransmission();

if (error == 0) {
  Serial.print("I2C device found at address 0x");
  if (address < 16) {
    Serial.print("0");
  }
  Serial.print(address, HEX);
  Serial.println("  !");

  ++nDevices;
} else if (error == 4) {
  Serial.print("Unknown error at address 0x");
  if (address < 16) {
    Serial.print("0");
  }
  Serial.println(address, HEX);
}

}
if (nDevices == 0) {
Serial.println("No I2C devices found\n");
} else {
Serial.println("done\n");
}
delay(5000); // Wait 5 seconds for next scan
}


Use a DMM (digital multimeter) to see if the 5volt connected to the screw terminal is actually arriving at the servo strips. you should see the same 5volt between the red and black pinstrips.

I followed this code, and the PCA9685 is still being detected yet attached servos still won't respond.