Servo Shield

For everyone who want to add more servos to their OpenMV, I designed a servo shield. It uses a popular PCA9685 PWM chip and works with the Adafruit library for MicroPython. For details see the project page at Servo Shield for OpenMV | Hackaday.io

Mind explaining more about this thing? Maybe we can build it. We’ve got a little more cash in our coffers now and we can afford to build a servo control shield if the price is not that high.

Looks like you don’t have enough power conditioning on the 5V line though. How do you power it? How do you make sure all the servos don’t cause a brownout?

If you’re looking for other shields, I’d love to have you make this Arduino shield. Along with adding 5 servo PMW channels (expandable to 12), it also adds 4 analog sensor inputs and any PWM channel can be used as a digital sensor input, too.

It uses a standard Arduino Mini, so it has all the other standard Arduino goodness such as programmability and expandability . Stackable, but designed to fit on the back side of the OpenMV, not the front. BOM cost is $12

Design file is here: https://circuits.io/circuits/4446963-openmv-arduino-shield.
Arduino code is here: OpenMVrover/ArduinoV2__sw_serial at master · zlite/OpenMVrover · GitHub

Sure. It’s basically just the PCA9685 chip, which is a 16-channel PWM chip originally created as a LED driver. However, since it lets you set the PWM frequency to 50Hz, it can also generate the signal for servos. It communicates over I2C, and there is a number of libraries available for different platforms, because Adafruit used it in their servo controller board.

This particular shield only breaks out 12 of the 16 channels, because of space limitations. The remaining 4 channels are broken out on a small 1.27mm-pitch header on the PCB, but it’s easier to just stack another shield on top if you need more servos. The chip normally has 5 jumpers for setting the I2C address, which would let you stack up to 64 shields, but in this case I only broke out one of them, so you can stack two shields max. This was enough for my use cases, but can be changed of course.

For brownout protection, there is a footprint for an electrolytic capacitor on the board, which I left unpopulated for now – while testing with just a single servo, I didn’t need it. I suppose that for a more professional production, an SMD capacitor would be used in that place.

I also completely omitted the filtering capacitor on the chip’s power line, because I’m not an engineer and I don’t follow good practices. That should probably also be added for production.

Please feel free to take this design or to make your own thing based on it. As I mentioned, it probably needs some work to be brought up to professional standards, and possibly re-done in a different layout program (I use Fritzing, yeah, I know). In any case, all the files are available for download on the project’s page.