I am using an Arduino Duemilanove for testing and will eventually end up with the Arduino Mega for the controller. I have constructed the arm and started testing the different servos. They all work when hooked up one at a time but I am getting some very unpleasing cross talk to specific servos when they are all on. I have gone back and twisted the servo cables and am also working on cleaning up the connections as well. I am wondering if there is anything else I can check with the hardware or if this sounds like a problem with the controller. I am pretty sure I am not having problems with my code because the sections work fine on their own and I am running pretty standard Arduino code.
I hope that is enough information to get this started.
From your description, I am assuming that the servos are connected to the arduino through some form of shield and not connected up to an SSC-32 that is connected up to the arduino. Is that correct?
I have never working with the arduino, but I have worked on other Atmega systems including the Axon2. A quick look at the datasheet shows that it has 6 PWM channels, but they are 8 bit, which would not give you very much resolution (something like only 8 or 9 different speeds in the positive or negative direction). So my assumption is that the servos are being controlled by software generated pulses, which is doable but you need to be careful to make sure that all of the servos (5 or 6) get the proper pulse widths every 20ms. My guess that is where the problem is.
Hard to say much more without seeing how the code is setup…
What are you using for a power supply? Too small of a power supply is often an issue whan several servos try to move at the same time. I don’t remember anybody having servo problems due to wiring crosstalk.
Originally i was using a voltage regulator on a 12 volt rechargeable battery but have recently switched to a wall plug with 5 volt output. I also have not even tried moving more than one servo at a time. I am setting the pins on the controller and just trying to move one servo and one or two other ones are moving.
But from your description you are currently generating servo pulses for multiple servos. How many? Again how are the pulses generated? Are you in your own software loop generating the pulses or is it driven off of something like a clock? Your own code or some library code?
Just a 5V wall wart? Does the Arduino have its own 5v regulator? If it does, then you don’t have enough “headroom” in the regulator to operate correctly. Switch to a 6-9V regulator for the board. The servos probably want about 6V anyway. Try to power the servos off of a separate 6V supply.
Check you grounds! If you suspect crosstalk (not likely with these signals), then insure You’ve properly connected the grounds. Make sure board power and ground don’t share the same wires with the servo power and ground wires.
Watch the servo voltage as you try to move one or more servos. If it drops, you don’t have enough current. a set of 4 AA batteries in a battery holder is NOT sufficient (by the way) to power multiple servos.
Sounds more like you’ve got a wiring error between the servos. Or an error in the code.