Multiple servo switch on load issue

It might (very tentative might) help if you connect a resistor (say 4700 ohms) between each servo signal wire and GND to ensure the signal is steady in the interval while the Arduino is going through its reset routine.

I'm assuming from your lack of mentioning it that the Arduino power is quite separate from the servo power supply so that the Arduino is not affected by the fall to 2.7v.

...R

Yeah, a big cap may help. It all depends on for HOW LONG the start up "problem" happens.
If the cap isn't big enough, then it won't work.

And as pointed out by Robin2: Make sure the power supply to the Arduino is isolated from the supply for the motors.

Either a whole different one, or a lot of good decoupling.

Yes, different power supply :slight_smile:

So maybe just a big cap and pot in series in over the terminal (i.e. in parallel with the servos) - I can dial in the time constant with the pot that way, or should I say 'just mess around for while and see if it works'.

Need to make sure the cap and the pot are happy sinking and sourcing the current demand?

Hrrrrm, also what numbers would be a good starting point in terms of capacitance and R ? aand, something I never learned but what type of cap is best suited to this job, standard ceramic ?

Time for thinking :frowning:

1:1:
So maybe just a big cap and pot in series in over the terminal (i.e. in parallel with the servos) - I can dial in the time constant with the pot that way, or should I say 'just mess around for while and see if it works'.

I have no idea where the idea for a pot has come from.

The purpose of a big capacitor is to act as an energy reservoir to meet short term peaks. It does not need any resistor in that role.

I suggested putting a 4k7 resistor between the servo signal wire and GND to stabilize the signal - that has nothing to do with providing power, and nothing to do with the capacitor. (And I have no idea whether it will be beneficial in your case, but it is a cheap experiment)

...R

The idea for a pot came from me.

A capacitor in series with a wire is a cap in series with a resistance - together they form a 1st order RC circuit, a very fast one. By adding a pot I can dial in the time-constant and effectively change the duration that it is effective. It's pretty much a blunt LPF - with that in mind you can see that I'm thinking about "HOW LONG the start up "problem" happens" (to quote lost_and_confused) ... and how to potentially deal with it.

The reason I'm not sure why your suggestion of a resistor will work is that this issue happens whatever state the arduino is in (or for that matter any other servo PWM source such a Pololu) - I mentioned this in post #4.

Also I'm not sure what you mean by 'stabilize the signal' - keen to learn though :smiley_cat:

Responding to Repl #10

It seems to me if you have a resistor in series with the capacitor it will "resist" the flow of current to your servos - the very opposite of what you want - but I confess this is not something I am confident about.

The idea of the resistor between the servo signal and GND is to deal with the short period while the Arduino is going through its reset process and has not yet got to the code

myServo.write(pos)

Up to that point the signal line may be floating and some servos behave strangely in that situation. I found the resistor was helpful in preventing unwanted excursions during the startup period. If the servo is not trying to move it may draw less current.

...R

As the supplies are independent the behavior will happen regardless of if the arduino or pololu servo driver are sending PWM, resetting, on or off. The signal lines shouldn't be floating in at least two of those cases, however the issue persists.

Also, keep in mind a wire is a resistance, so any discussion pertaining to a cap on its lonesome for the sake of completeness should be analyzed as a first order RC circuit - just with a very low R value.

As the servos might need a little time to sort themselves out upon power up, using just a cap with no added resistance will lead to a very small RC time-constant, something that might not be sufficient. By adding a pot I can sweep values until I hopefully find a threshold that makes it happy.

That's the plan at least - fingers crossed.

If I wasn't tied up with other tasks I'd be down to the local electronics supplier already :wink:

The alternative would be to hold the resistance constant - i.e. use no pot - then buy a bunch of caps to 'sweep' the RC time constant that way. More expensive, and less resolution in the variation...

4700uF electrolytic (16v) allowed 8 servos to start - will try ganging two in parallel and see what happens next :slight_smile:

and yeees, extra resistance wasn't required - obviously not what I expected! :-[

The signal lines shouldn't be floating in at least two of those cases, however the issue persists.

I wonder how many catastrophes have happened because things "shouldn't" have ...
The Titanic and the Space Shuttle spring to mind.

Also, keep in mind a wire is a resistance,

IMHO this is grossly over theorizing the problem

...R

You're implying that I shouldn't assume things or catastrophe awaits, it's possible yes, but improbable given the circumstances. (strawman argument in essence?)

...you then humbly imply that I shouldn't over theorize.

You simply mean to say that we'd get along better if I had the same ideas and experience as you? (The porridge is juuuust right :slight_smile: )

So far it would appear that I don't - but lets not let that stop us from learning right?

To me more specific:

You suggest that lines supplying PWM should start floating when I power up a unit that they are supplying? That's not something I have the conceptual background to appreciate. Elaboration, if possible ?

Also RC circuit theory isn't exactly egghead territory - (obviously) I'm no expert - but I do understand you can't comprehend them without understanding the (basic) nature of resistance.

1:1:
You suggest that lines supplying PWM should start floating when I power up a unit that they are supplying? T

What I suggested was to connect some 4k7 resistors between the signal wires and GND and see if that was beneficial for your problem. That takes about 5 minutes of your time.

I am not suggestiing what I have quoted above. I am trying to put in your head the idea that when the Arduino starts it is not outputting any servo signal and the poor servo has to figure out all on its lonesome what it should do. Some servos are not happy in that situation. This is not theory.

...R

Once again (feels like the third time, but I'm going to refrain from counting) I reiterate that in tests where the arduino (and also pololu servo driver) are already powered on the issue persists. They are on separate supplies, something you assumed in post #6.

So while agree with you on your second point re. startup signals being for all intents and purposes random (or prone to give unexpected results etc.) - it would seem it is not relevant to this case - yes/no ?

Also:

  • So you're suggesting I 'should' have 10 4k7 resistors on me? ...imminent shuttle disaster? :astonished:
  • You haven't explained what/how resistors would help - I think you said 'steady' the signal- I'm keen to learn (not being sarcastic). You're tying the line to GND - a pull down resistor?
  • Did you by chance miss the part where the cap helped? i.e. likely just need another cap in parallel or a larger value single unit and I'm good

Phew ! something about some Arduino forum users that gets me going I tells ya.

Discussion is robust :wink:

1:1:
Phew ! something about some Arduino forum users that gets me going I tells ya.

"Tell me about it"

You are making a big deal about something that was never intended to be a big deal. And maybe I missed a simple answer that would have made it clear that it was not a solution. If you look at the Reply where I I first mentioned it you will see that I was not really expecting much from the idea. However, all along I have had the impression that the problem you are describing is a startup problem.

When you say "I reiterate that in tests where the arduino (and also pololu servo driver) are already powered on the issue persists" do you mean that you power up the Arduino to the point where it is issuing servo signals and then "throw the switch" to connect power to all of the servos at one time?

And (sorry if I am asking you to repeat yourself) if you "throw the switch" in the same way but without the Arduino powered does the same thing happen?

If it does, it suggests to me that the power supply for the servos is inadequate and the simple way to test that is to try a bigger power supply.

I know very little about electronic theory. I just know that the 4k7 resistor solved a startup problem for me where the servo was moving while the Arduino was resetting.

...R

More read, less type.

1:1:
More read, less type.

For whom?

I want to minimize my reading so I have time to attend to other requests for help.

...R

You are the him to whom I refered.

After looking in the mirror, as you suggest (?) - I still think my comment applies to you only.

With a post count of 16+ per day, your tactic of minimizing reading so as to optimize your 'attendance' is telling.

I suggest that you work at optimizing your efficacy instead.

Try, if you can, to not reply to this...

Consider it a challenge.

:art:

1:1:
Consider it a challenge.

I can never resist a challenge like that.

When I ask a question here (or on any Forum) I like to present my question so the person providing assistance can do so with the minimum of effort.

...R

Should also make it clear, the 2.7 and 5A will hold -

That just indicates an inadequate power supply. Servos under load (or starting current) can use more than 1a each (probably more if they are large servos). Also most servos have a lower operating limit of 4.8v. Lower than this and digital servos in particular may have control issues. People uising lipo batteries are able to operate hexapods with 18 servos.