Adafruit is open and shipping! Let's build back better, together!
0

16-Channel Servo Driver - PCA9685
Moderators: adafruit_support_bill, adafruit

Please be positive and constructive with your questions and comments.

16-Channel Servo Driver - PCA9685

by fprete on Thu Jun 18, 2015 12:12 pm

Friends:

Is there any technical reason that the Adafruit 16-Channel 12-bit PWM/Servo Driver - I2C interface - PCA9685 cannot be used to drive any small DC motors (other than a servo) such as an ERM (Eccentric Rotating Mass)?

fprete
 
Posts: 110
Joined: Mon Feb 09, 2015 3:06 pm

Re: 16-Channel Servo Driver - PCA9685

by adafruit_support_bill on Thu Jun 18, 2015 12:26 pm

Only very small motors. The pins on the PCA9685 can only source 10mA or sink 25mA. Make sure that your motor does not exceed those ratings. Some larger ERM motors pull as much as 75mA at 3v. There is also no kickback protection on those pins. Unless it is a really tiny motor, it would be wise to wire a kickback protection diode in parallel with the motor.

Image

adafruit_support_bill
 
Posts: 79405
Joined: Sat Feb 07, 2009 10:11 am

Re: 16-Channel Servo Driver - PCA9685

by fprete on Thu Jun 18, 2015 1:04 pm

Thanks!

Here is my problem: I need to control 36-49 ERM motors with an Arduino. The ones that I use operate at 75 mA. So, I guess this board is not the correct one. Do you have a suggestion? I was planning on moving from an Uno to a Mega and driving them directly with individual output pins as I am now. That would probably be the simplest. But I would prefer-- from a design standpoint-- to have fewer wires going from the Arduino to the motors.

Is there an Adafruit solution?

fprete
 
Posts: 110
Joined: Mon Feb 09, 2015 3:06 pm

Re: 16-Channel Servo Driver - PCA9685

by adafruit_support_bill on Thu Jun 18, 2015 1:16 pm

75mA at what voltage?

You have a few options:
1) Run the motors at 1/3 or less than the rated voltage. The current will be proportionally lower too. But then, so will the amplitude of the vibration.
2) Add simple transistor/diode circuit (see above) to the output of each pin to handle the extra current. You don't need a power transistor, the cost per-channel will be pretty low. https://www.adafruit.com/product/756
https://www.adafruit.com/product/755
3) Use off-the-shelf relay boards. You will have to put up with the clicking on actuation and the cost per channel will be relatively high.
4) Use off-the-shelf solid-state relay boards. No clicking, but even higher cost per channel.

adafruit_support_bill
 
Posts: 79405
Joined: Sat Feb 07, 2009 10:11 am

Re: 16-Channel Servo Driver - PCA9685

by fprete on Thu Jun 18, 2015 3:14 pm

Thank you. Cost is not an issue for this prototype. It may be when I start producing a quantity. But perhaps Option 2 is my best first option. I am not being successful at inserting an image of the circuit that I am using into this post, but it is similar to the one that you inserted. It is a discreet low-side circuit with an N-channel MOSFET (see, http://www.precisionmicrodrives.com/application-notes-technical-guides/application-bulletins/ab-001-discrete-driver-circuits-for-vibration-motors).

So, I am not quite clear how your sketch corresponds to the PCA9685 outputs. Am I correct that the board has 3 outputs for each motor (PWM, voltage out, and ground)? Would this work using my circuit? In this case, each PWM output from the PCA9685 would feed into one of the MOSFETs, and each voltage out and ground from the PCA9685 would connect to one of the ERM's anode and cathode. Correct? BTW, the ERMs are rated at 75mA at 3V.

Possible or is this board not the right option?

fprete
 
Posts: 110
Joined: Mon Feb 09, 2015 3:06 pm

Please be positive and constructive with your questions and comments.