SMALL - Telemetry SMALL - Radio
Thread Tools
Old May 21, 2015, 11:06 AM
T.A.Z is online now
Find More Posts by T.A.Z
Obsession, not a hobby
T.A.Z's Avatar
United States, AZ, Phoenix
Joined Sep 2013
475 Posts
Discussion
HP DPS-1200FB server PS fan thermal control

I'm successfully using two HP DPS-1200FB server power supplies to power an iCharger 308 Duo on series 24V and two small cheapo 5A chargers on each supply's 12V. Even at idle, the 1200FB's seem to run fairly hot. I'd like to get into the fan thermal control to get the fans to come on sooner or to have more control over them. Has anyone figured out the fan control circuit on these supplies?
T.A.Z is online now Find More Posts by T.A.Z
Reply With Quote
Sign up now
to remove ads between posts
Old May 25, 2015, 08:54 AM
T.A.Z is online now
Find More Posts by T.A.Z
Obsession, not a hobby
T.A.Z's Avatar
United States, AZ, Phoenix
Joined Sep 2013
475 Posts
125-130 F or 52-54 C - http://rc.runryder.com/helicopter/t683428p3/
T.A.Z is online now Find More Posts by T.A.Z
Last edited by T.A.Z; May 31, 2015 at 12:19 PM. Reason: Added Celsius
Reply With Quote
Old May 25, 2015, 11:53 AM
T.A.Z is online now
Find More Posts by T.A.Z
Obsession, not a hobby
T.A.Z's Avatar
United States, AZ, Phoenix
Joined Sep 2013
475 Posts
After reading some forum posts and emailing folks that have been using them for a while, the consensus might be that these power supplies are meant to run on the warm side...
T.A.Z is online now Find More Posts by T.A.Z
Reply With Quote
Old May 25, 2015, 12:06 PM
T.A.Z is online now
Find More Posts by T.A.Z
Obsession, not a hobby
T.A.Z's Avatar
United States, AZ, Phoenix
Joined Sep 2013
475 Posts
Perhaps I'll make my own thermal circuit for the fans. Just need to check the fan voltage and max current.
T.A.Z is online now Find More Posts by T.A.Z
Reply With Quote
Old May 25, 2015, 12:26 PM
T.A.Z is online now
Find More Posts by T.A.Z
Obsession, not a hobby
T.A.Z's Avatar
United States, AZ, Phoenix
Joined Sep 2013
475 Posts
Looks like the DPS-1200L2 1200W power supply shuts down at 203 F or 110 C:

http://proj-lhc-adt-f514.web.cern.ch...DPS%201200.pdf

http://proj-lhc-adt-f514.web.cern.ch...s_spec_201.pdf

Data for reference.
T.A.Z is online now Find More Posts by T.A.Z
Last edited by T.A.Z; May 31, 2015 at 12:18 PM. Reason: Added Celsius
Reply With Quote
Old May 30, 2015, 07:34 AM
Julez is offline
Find More Posts by Julez
Proud to eat Kraut ;-)
Julez's Avatar
Germany
Joined Dec 2003
5,511 Posts
Arduino for PWM control

I just checked the thermal behaviour of my 3 DPS-1200PB power supplies.
I used various chargers and a load of around 60A.

One got a case temperature of up to 55C, after which the fan went to full throttle. The fan case temp lowered to 40C and stayed there.
The other one went to 65C before the fan spooled up.
This alone is halfway acceptable, but what bugs me is that the fans keep going really long at full power even after the load is removed, more than 20min.
This is just annoying.
So I had a close look at the fan's datasheet.
It is nice that it it sports both a signal and control wire.
The corresponding Molex Picoblade connector can be seen when one looks at the right side behind the mesh at the rear.
The indicated colors for these seem to be reversed, though. When I removed the blue wire, the fan behaved normally after power up of the PS, but it shut down after a few seconds.
It seems to me that the fan was controlled properly, but the PS got no signal feedback, assumed a fault, and shut down.

When I removed the yellow wire, the fan went to full power after power up of the PS, and the PS stayed on. Seems the PS is happy as long as it gets any signal feedback.
So I assume that blue is signal and yellow is control in our case.
So let's have a look at how these fans are controlled:
https://web.archive.org/web/20130511.../apps_pwm.htm#

Seems all we need is a PWM function between 300Hz and 60kHz. Arduinos conveniently have analog outputs which can provide nice PWM functions at 500-1000Hz per default. I checked that an Arduino Pro Mini just fits snugly at the back of the PS inside the case without obstructing airflow.
Add an LM 35 DZ behind the fan and one should be able to control the fan speed accorting to the air temperature just fine. Stay tuned, I'll report back when I get a circuit ready to control the Fan speed with a poti for testing.
Julez is offline Find More Posts by Julez
Last edited by Julez; Jun 02, 2015 at 09:02 AM.
Reply With Quote
Old May 31, 2015, 05:35 AM
Julez is offline
Find More Posts by Julez
Proud to eat Kraut ;-)
Julez's Avatar
Germany
Joined Dec 2003
5,511 Posts
Eureka!

I found an even better way! The PS has a load share Pin with a voltage rising linearly with load. I used this to generade a PWM with the Arduino, which adjusts the Fan speed to load in real time. The code was finished today at 2am . It works excellent. So, with an investment of $2-3, everyone can have the best fan regulation you'd ever want.

More info and the code follow in the coming week.
Julez is offline Find More Posts by Julez
Reply With Quote
Old May 31, 2015, 06:39 AM
jj604 is online now
Find More Posts by jj604
ancora imparo
jj604's Avatar
Melbourne, Australia
Joined Jul 2005
7,917 Posts
Julez, when you get it working don't forget to post a link to this thread in the sticky.

Quite a few people will be interested I think. Nice work.

Thanks, John.
jj604 is online now Find More Posts by jj604
Reply With Quote
Old May 31, 2015, 12:21 PM
T.A.Z is online now
Find More Posts by T.A.Z
Obsession, not a hobby
T.A.Z's Avatar
United States, AZ, Phoenix
Joined Sep 2013
475 Posts
Quote:
Originally Posted by Julez View Post
Eureka!

I found an even better way! The PS has a load share Pin with a voltage rising linearly with load. I used this to generade a PWM with the Arduino, which adjusts the Fan speed to load in real time. The code was finished today at 2am . It works excellent. So, with an investment of $2-3, everyone can have the best fan regulation you'd ever want.

More info and the code follow in the coming week.
Thanks for your posts, Julez. Can you post a rear panel pinout for the 1200?
T.A.Z is online now Find More Posts by T.A.Z
Reply With Quote
Old Jun 01, 2015, 06:15 AM
Julez is offline
Find More Posts by Julez
Proud to eat Kraut ;-)
Julez's Avatar
Germany
Joined Dec 2003
5,511 Posts
Will do, I think on wednesday, latest next weekend.

I think I also will include a safety thermo sensor, since I already ordered them. This will be optional, but it will speed the fan up on internal temperatures over 60C, also when there is no load present.

In the meantime, you guys can stock up on Arduino Pro Minis, LM35s, and USBasp programmers.
Julez is offline Find More Posts by Julez
Reply With Quote
Old Jun 01, 2015, 08:59 AM
T.A.Z is online now
Find More Posts by T.A.Z
Obsession, not a hobby
T.A.Z's Avatar
United States, AZ, Phoenix
Joined Sep 2013
475 Posts
Is anyone able to locate a pinout for the DPS-1200 line of power supplies?
T.A.Z is online now Find More Posts by T.A.Z
Reply With Quote
Old Jun 01, 2015, 10:45 AM
Julez is offline
Find More Posts by Julez
Proud to eat Kraut ;-)
Julez's Avatar
Germany
Joined Dec 2003
5,511 Posts
So far I determined Pin 34 to be the Load Share Pin, and Pin 37 supplies +12V; I ran my Aduino on that +12V.
Running it on the fan's 12V caused frequent reboots.
Julez is offline Find More Posts by Julez
Last edited by Julez; Jun 01, 2015 at 10:53 AM.
Reply With Quote
Old Jun 01, 2015, 11:14 AM
T.A.Z is online now
Find More Posts by T.A.Z
Obsession, not a hobby
T.A.Z's Avatar
United States, AZ, Phoenix
Joined Sep 2013
475 Posts
Quote:
Originally Posted by Julez View Post
So far I determined Pin 34 to be the Load Share Pin, and Pin 37 supplies +12V; I ran my Aduino on that +12V.
Running it on the fan's 12V caused frequent reboots.
Thanks Julez. I'm wondering if this supply has a fan control pin or pins at the rear panel like a lot of the other DPS power supplies. I'm kinda waiting to build my 3-component thermal control until I find out for sure.
T.A.Z is online now Find More Posts by T.A.Z
Reply With Quote
Old Jun 01, 2015, 03:58 PM
Julez is offline
Find More Posts by Julez
Proud to eat Kraut ;-)
Julez's Avatar
Germany
Joined Dec 2003
5,511 Posts
I don't know that, sorry...

But here's the code I just finished, and tested in a Simulator, as my LM35s are not yet delivered:

Code:
int _ABVAR_1_21 = 0 ;
unsigned long _ABVAR_4_11 = 0 ;
int _ABVAR_9_30 = 0 ;
int _ABVAR_10_40 = 0 ;
int _ABVAR_5_15 = 0 ;
int _ABVAR_6_60 = 0 ;
int _ABVAR_7_5 = 0 ;
int _ABVAR_8_20 = 0 ;
int _ABVAR_11_50 = 0 ;
int _ABVAR_2_31 = 0 ;
unsigned long _ABVAR_3_1 = 0 ;

void setup()
{
  pinMode( 6, OUTPUT);
  pinMode( 13 , OUTPUT);
  pinMode( 10 , OUTPUT);
  pinMode( 9 , OUTPUT);
  pinMode( 6 , OUTPUT);
  analogWrite(6 , 255);

  digitalWrite( 13 , HIGH );

  digitalWrite( 10 , HIGH );

  digitalWrite( 9 , HIGH );

  delay( 100 );

  digitalWrite( 13 , LOW );

  digitalWrite( 10 , LOW );

  delay( 300 );
  
  digitalWrite( 13 , HIGH );

  digitalWrite( 10 , HIGH );
  
  delay( 100 );

  digitalWrite( 13 , LOW );

  digitalWrite( 10 , LOW );

  delay( 500 );
  
  digitalWrite( 13 , HIGH );

  digitalWrite( 10 , HIGH );

  delay( 1000 );

  analogWrite(6 , 65);
  
  digitalWrite( 13 , LOW );

  digitalWrite( 10 , LOW );
  
}

void loop()
{
  digitalWrite( 9 , HIGH );
  delay( 50 );
  _ABVAR_1_21 = 0 ;
  _ABVAR_2_31 = 0 ;
  _ABVAR_3_1 = 0 ;
  _ABVAR_4_11 = 0 ;
  if (( ( _ABVAR_5_15 ) >= ( 122 ) ))
  {
    digitalWrite( 13 , LOW );
    digitalWrite( 10 , LOW );
  }
  if (( ( analogRead(3) ) <= ( 200 ) ))
  {
    digitalWrite( 13 , LOW );
    digitalWrite( 10 , LOW );
    delay( 1000 );
  }
  for (_ABVAR_6_60= (1) ; _ABVAR_6_60 <= (200) ; _ABVAR_6_60+= (1) )
  {
    if (( ( analogRead(7) ) <= ( 700 ) ))
    {
      _ABVAR_3_1 = ( analogRead(7) + _ABVAR_3_1 ) ;
      _ABVAR_1_21 = ( _ABVAR_1_21 + 1 ) ;
    }
    if (( ( analogRead(6) ) <= ( 250 ) ))
    {
      _ABVAR_4_11 = ( analogRead(6) + _ABVAR_4_11 ) ;
      _ABVAR_2_31 = ( _ABVAR_2_31 + 1 ) ;
    }
    delay( 1 );
  }
  digitalWrite( 13 , HIGH );
  digitalWrite( 10 , HIGH );
  if (( ( _ABVAR_1_21 ) > ( 0 ) ))
  {
    _ABVAR_7_5 = ( _ABVAR_3_1 / _ABVAR_1_21 ) ;
  }
  else
  {
    _ABVAR_7_5 = 0 ;
  }
  if (( ( _ABVAR_2_31 ) > ( 0 ) ))
  {
    _ABVAR_5_15 = ( _ABVAR_4_11 / _ABVAR_2_31 ) ;
  }
  else
  {
    _ABVAR_5_15 = 0 ;
  }
  if (( ( _ABVAR_5_15 ) <= ( 122 ) ))
  {
    _ABVAR_8_20 = 65 ;
  }
  else
  {
    if (( ( ( _ABVAR_5_15 ) > ( 122 ) ) && ( ( _ABVAR_5_15 ) <= ( 143 ) ) ))
    {
      _ABVAR_8_20 = ( 65 + ( ( _ABVAR_5_15 - 122 ) * 9 ) ) ;
    }
    else
    {
      _ABVAR_8_20 = 255 ;
    }
  }
  if (( ( _ABVAR_7_5 ) <= ( 75 ) ))
  {
    _ABVAR_9_30 = 65 ;
  }
  else
  {
    if (( ( ( _ABVAR_7_5 ) > ( 75 ) ) && ( ( _ABVAR_7_5 ) <= ( 391 ) ) ))
    {
      _ABVAR_9_30 = ( 65 + ( ( ( _ABVAR_7_5 - 75 ) * 6 ) / 10 ) ) ;
    }
    else
    {
      _ABVAR_9_30 = 255 ;
    }
  }
  if (( ( _ABVAR_8_20 ) >= ( _ABVAR_9_30 ) ))
  {
    _ABVAR_10_40 = _ABVAR_8_20 ;
  }
  else
  {
    _ABVAR_10_40 = _ABVAR_9_30 ;
  }
  if (( ( ( _ABVAR_11_50 - 30 ) ) > ( _ABVAR_10_40 ) ))
  {
    _ABVAR_11_50 = ( _ABVAR_11_50 - 8 ) ;
  }
  else
  {
    if (( ( _ABVAR_11_50 ) > ( _ABVAR_10_40 ) ))
    {
      _ABVAR_11_50 = ( _ABVAR_11_50 - 1 ) ;
    }
  }
  if (( ( ( _ABVAR_11_50 + 30 ) ) < ( _ABVAR_10_40 ) ))
  {
    _ABVAR_11_50 = ( _ABVAR_11_50 + 8 ) ;
  }
  else
  {
    if (( ( _ABVAR_11_50 ) < ( _ABVAR_10_40 ) ))
    {
      _ABVAR_11_50 = ( _ABVAR_11_50 + 1 ) ;
    }
  }
  if (( ( _ABVAR_11_50 ) < ( 65 ) ))
  {
    _ABVAR_11_50 = 65 ;
  }
  else
  {
    if (( ( _ABVAR_11_50 ) > ( 255 ) ))
    {
      _ABVAR_11_50 = 255 ;
    }
  }
  analogWrite(6 , _ABVAR_11_50);
  delay( 50 );
}
This looks impressive, especially as I have no idea what I'm doing, so to speak...

I used Ardublock, which is really cool. So here's what I did:

First, the fan runs at full speed for 2.5sec to leave no doubts whether the PS is really on. Also, the Pin 10 and 13 LED does 2 fast and one slow blink. This is to make sure the code got uploaded alright. After that, the Pin 10 and 13 LEDs are constantly on.
Then, both the load share voltage and the temp probe voltage are sampled 4 times each with 500ms in between, and the average is calculated to remove fluctuation influences a bit. The fan speed setting is updated every 2sec.

I then have defined a low threshold for both load and temp:
5A
60C
Below this, the fan runs at idle speed.
The high thresholds are:
~60A
70C
Between the low and high thresholds, the fan's speed is increased in a linear manner.
Above the high thresholds, the fan runs at max power.
Also, if both criterions demand a different fan speed, maybe because the load is low but the temperature is high, or vice versa, always the higher fan speed is chosen.
If the temperature is above 60C, the Pin 10 and 13 LEDs flash at 1Hz.

Changelog for V2:
I changed the amount of samples taken from 4 to 200 with 1ms in between. Samples with unrealistically high values are discarded. Now the fan speed is updated every 0.3sec instead of 2sec. This makes everything more smooth. Also I slowed down the tracking of the desired fan speed by the actual fan speed. The fan speed is not instantaneously set to the desired value, but changes gradually. If the difference betweent those values is big, the fan speed changes more rapid, if the difference is little, the change is smaller. For example, the fan needs 4-5sec to speed up from 10% to 90%, and 5-7sec to speed up from 90% to 100%, if 100% is the desired value. By allowing only small changes of the difference is low, I prevent fluctuations in the fan speed resulting from noise when reading the values from the power supply. The fan operation is now wonderfully smooth.
I also check the actual output voltage now to give an indication whether the PS was shut down because of overload or whatever.
The blink codes are as following:
After switching on: 2x short, 1x long
Normal operation: always on
Temperature over 60C: fast blink
Shut down: slow blink

Some Links for information:

Arduino Pro Mini:
http://www.arduino.cc/en/pmwiki.php?...noBoardProMini

http://www.engineersgarage.com/elect...ro-mini-pinout

LM35 temp sensor:
http://www.learningaboutelectronics....or-circuit.php

Flashing an Arduino Pro Mini wit an USBasp:
http://www.instructables.com/id/Uplo...bASP/?ALLSTEPS
Julez is offline Find More Posts by Julez
Last edited by Julez; Jun 08, 2015 at 03:20 AM.
Reply With Quote
Old Jun 03, 2015, 03:13 PM
Julez is offline
Find More Posts by Julez
Proud to eat Kraut ;-)
Julez's Avatar
Germany
Joined Dec 2003
5,511 Posts
Alright, the project is finished. Everything works as planned!

I made some pictures and a video, which should explain everything.

DPS-1200FB Server Power Supply Fan Control with Arduino (12 min 49 sec)


As I made some last-minute changes to the code, I built a "programming fork" with 0.8mm music wire as connectors. Much better than fiddling around with these flimsy jumper wires each time. Note that I glued a plastic washer over the reset button to prevent accidental resets by the case pushing on it. Below, I used black fibre tape as insulation. I glued it to the capacitors under the Arduino in the PS. I also pottet the temp sensor with glue, and rested the PS on the side edge while it cured. Kapton tape keeps it from flowing away. I use Marine Goop for this, but electronic grade Silicone is probably even better. Before I close the PS case, I will insulate the Arduino with tape also on the upper side.
The yellow contact of the fan connector can be pulled out after lifting the plastic latch with the tip of a sharp knife. I soldered the wire from the Arduino right into the crimp contact.

I updated the connection circuit. The capacitor for the LM35 really makes things more smooth. Before, I often got errorneous high readings every now and then. Also, I built a voltage divider to check whether the output voltage is on. I used SMD 1208 resistors. If you dont want to use this function, connect A3 to Vcc.
If you don't want the temperature sensor, connect A6 to Ground.
Julez is offline Find More Posts by Julez
Last edited by Julez; Jun 08, 2015 at 03:26 AM.
Reply With Quote


Thread Tools

Similar Threads
Category Thread Thread Starter Forum Replies Last Post
Discussion HP DPS-1200FB A PSU - No output after runningat 13.5v tuprox Batteries and Chargers 3 Apr 24, 2015 12:53 AM
Discussion HiPro HP-W500-FF3 & HP-R650-FF3 Server PS Wiring. madmike8 Batteries and Chargers 5 Apr 22, 2015 09:45 PM
Sold Cellpro PowerLab 6 Charger W/ 24v 1000w Power Supply (Dual HP Server PS) Wangta Aircraft - Electric - Batteries & Chargers (FS/W) 16 Jan 02, 2014 04:22 PM
Question Question on HP 47A server PS Lardog Batteries and Chargers 2 Mar 30, 2011 11:03 PM