Computer PSU switches off when servo is running

Hello everyone,

We are working on a windtunnel project for testing airfoils.
We use an Arduino and potentiometers to control two servo's that control the flap setting and angle of attack of an airfoil.
The whole system is powered by a computer power supply unit:

Schematic:

A1: 230V connector
S1: Power Switch
V1: PSU
M1: Cooling Fan
R1 /R2: Potentiometers

We have connected the green wire to the GND of the PSU, otherwise it won't power on.
The Arduino is connected to a yellow wire and GND of the PSU (12V) and the servo's are connected to a red wire and GND of the PSU (5V).

The servo's are a Hitec HS-755HB (high torque, for controlling angle of attack) and a Hitec HS-65HG (less torque, for airfoil flaps) .

Everything works fine, except that the PSU switches off automaticly when turning the potentiometer for the HS-755 very fast clockwise and counter clockwise so the servo's rotor changes position very fast.
Servo current is around 150 mA when turning.

This problem doesn't occur with the Hitec HS-65HG servo and the strange thing is that the problem even doesn't occur with the HS-755 servo when there is a multimeter connected in series between the PSU 5V and servo. It also doesn't occur when powering the servo with a seperate 6V battery. The problem also doesn't occur when the servo isn't rotating.

We think it's clear that it's a PSU problem, but is it possible to fix it?

It looks a a current protection circuit of the PSU is causing this problem.

Thanks!

Tibo

TiboJ:
We think it's clear that it's a PSU problem, but is it possible to fix it?

That seems a reasonable assumption. Have you measured the current draw?
How much current can your PSU provide?
Can you try a PSU with more current - or use 2 PSUs and separate the loads.
My guess is that for the sort of system you have the servo could be constantly under a heavy load.

...R

Which wire are you getting your 5V from? Red looks good, I can see the other two being problematic with a powerful servo.

Robin2:
That seems a reasonable assumption. Have you measured the current draw?
How much current can your PSU provide?
Can you try a PSU with more current - or use 2 PSUs and separate the loads.
My guess is that for the sort of system you have the servo could be constantly under a heavy load.

...R

Current draw is around 150 mA and is normal.
The PSU can provide enough current (33A), according to the datasheet in the picture (original post).
The problem does also occur when there is no load on the servo.

Which wire are you getting your 5V from? Red looks good, I can see the other two being problematic with a powerful servo.

From the red wire.

I added a capacitor (25V 470µF) in parallel between the 5V output and the servo.
It seems like it fixed the problem...

New problem:

When we connect the two servo's to the Arduino, of the the servo starts jttering.
When we power the Arduino with the PSU (12V) and USB (5V), the jittering stops.
The strang thing is that only one of the servo's jitters, and the other one keeps working correctly.

So if we power the Arduino with only the USB or only the PSU, one of the servo's starts jittering.
If we connector two power supply's at the same time (PSU and USB), everything works correctly.

The servo's are wired like the schematic in my first post and are connected with a Wing Connector:
http://aerobertics.be/productDetail.php?prod=6129&cat=8&brand=21

Sketch:

// GIP Windtunnel FLAP CONTROL
#include <Servo.h>

Servo servoFlap; // Create a servo object
Servo servoAoA; // Create a servo object



void setup()
{
  servoFlap.attach(5); // Attaches servo on Pin 5 to the the servo object
  servoAoA.attach(6); // Attaches servo on Pin 6 to the the servo object
}

void loop()
{
  int angleFlap = analogRead(0); // Read the pot value
  angleFlap=map(angleFlap, 0, 1023, 150, 90); // Map the values from 0 to 180 degress
  servoFlap.write(angleFlap); // write the angle to the servo
  delay(15); // delay to allow servo to reahc position
  
  int angleAoA = analogRead(1); // Read the pot value
  angleAoA=map(angleAoA, 0, 1023, 40, 110); // Map the values from 0 to 180 degress
  servoAoA.write(angleAoA); // write the angle to the servo
  delay(15); // delay to allow servo to reahc position
}

Any reason for this?

Thanks!

TiboJ:
The strang thing is that only one of the servo's jitters, and the other one keeps working correctly.

If you swap the servos does the jitter move with the servo or is it associated with a particular Arduino PIN?

Does the jitter happen if you move the servo to a different Arduino pin?

It sounds like something is interfering with the voltage supplied to the Arduino. Do you have an oscilloscope that can monitor it - and/or the voltage available to the servo.

...R

If you swap the servos does the jitter move with the servo or is it associated with a particular Arduino PIN?

It is not associated with the servo, but happens on one of the pins that is programmed in the sketch.
It's only one servo that jitters. The other servo/pin keeps working correctly.

Does the jitter happen if you move the servo to a different Arduino pin?

Yes, if I program the servo to another pin in the sketch, it will also happen.

It sounds like something is interfering with the voltage supplied to the Arduino. Do you have an oscilloscope that can monitor it - and/or the voltage available to the servo.

I don't have an oscilloscope. Only a digital multimeter.

I just tested again, and now it even happens sometimes when both power supply's are connected.
Although, I remarked something strange that I will explain below:

As mentioned in my previous PSU problem (first post), I have used a capacitor to solve it.
The servo's are powered like this:

Now the strange part comes:

When I hold the capacitor and the servo power wires (soldered on a PCB) against the PSU, and the USB and PSU are connected to the Arduino, the jitter stops! When I disconnect the USB from the Arduino and keep holding the PCB nearby the PSU, the jitter starts again.

When I don't hold the PCB nearby the PSU, the jitter also starts again.

I've never experienced a problem like this before :wink:

To me, it sounds like the servos are causing glitches in the voltage on the power supply, and that's resetting the Arduino... So when the Arduino has it's own truly independent power supply via USB, it works.

I've heard people on other forums complain that some computer power supplies don't do a good job of holding the voltages stable when under a light load.

That's bad news...

Although, the problem also exists when the USB is connected.

I don't have any more ideas, apart, perhaps from trying a big battery instead of the PSU just to find out if the problem lies with the PSU.

...R

Is that an error in your drawing or are you really powering your servos with 12V..?

But I don't understand while holding the PCB with the capacitor against the PSU and connecting the USB to my computer solves the problem...
I would like to find a solution with the current PSU instead of using another power supply.

I will also try to use a battery and see if the problem keeps existing.

It's an error. It should be 5V instead of 12V on the drawing :slight_smile:

Stick a car light globe across the 12V supply, and a 4.7 ohm 10W resistor across the 5V supply and see if it settles down.