I'm working on rather simple robot project and I got stuck with a problem. I'm using Intel Galileo Gen1. I have six digital servos powered externally (from SMPS). My circuit is definitely good. It runs perfectly from an Arduino Mega. When I run the exact same software on the Galileo Gen 1, the servos goes crazy. By crazy I mean that 4 servos are working fine, 5th is working with little delay compared to the rest, and the last one (6th) isn't moving at all. I've done a lot of research.
I tried to connect servos to different PWMs pins (I'm using all of them of course, pins 3, 5, 6, 9, 10, 11, but tried to connect them in different combinations). The results are as follows:
If 4 servos are connected to, for example, pins 3, 9, 10, 11, everything is ok. But if I try to connect another servo to pin 5, servo connected to pin will start to move with a delay. And after another servo being connected, servo connected to pin 10 will start to move with a delay, and servo connected to pin 11 will stop moving at all.
I know my software is written correctly for Arduino. I know there are differences between the Servo libraries on each (I tried Mikal Hart's servo library, without success). And I know that circuit is fine.
Thank you in advance for your help!
Do you have a CRO or logic analyzer to measure the signals used to move the servos. What is the behavior on pin 10 and 11 when you connected the last two servos in the CRO?
Do you have separate power circuits for each of the servos? What design are you using to power each servo? What is the output current of your Galileo's power supply?
Unfortunately, I do not have such equipment.
All servos are supplied from 5V 5A SMPS. They are directly connected to power supply (I'm using 2 1000uF filtering capacitors, everything is wired up on prototype board).
Power supply output current is 2.1A. I have read somewhere in the internet that it should be 3A. The problem is that the power supply was included with Galileo. Could that cause these problems?
Take a look at this thread . The user of this thread is also using several servos and the suggestion worked for him.
Try this and let us know your results.
Do you know how much current is each servo drawing when connected to the Arduino? How much current does each servo need to work correctly with the Galileo, in the scenario where only 4 are connected? I believe that the reason why the circuit stops behaving properly after connecting the last two servos is related to the overall limit of all output pins. Take a look at the Galileo datasheet http://www.intel.com/support/galileo/sb/CS-035174.htm Intel® Galileo Boards and Kits — Datasheet . There is a section that covers the properties of pins configured as output. Are you sure that the combined current of all servos doesn't exceed the maximum values permitted for the Galileo?