HP 4500 and 4550 fan converter
Background
I had a
problem with a Hewlett Packard Color LaserJet 4550, when the
front fan stopped working, and I got a 57.3 FAN ERROR message.
Now this fan draws air into the printer at the front, whilst
other fans push the used air out at the back. The front fan is
no longer available from HP - but that shouldn't be a problem
- after all, a fan is a fan, right?
The front
fan is 40x40x10 mm, running at about 6,500 RPM. I bought a
Noctua NF-A4x10 FLX 12V 4500RPM quiet cooling fan, because it
offered only slightly lower airflow than the original, but
with much less noise. I fitted it, but the error 57.3
persisted.
I figured
that the printer must be unhappy with the fan speed, so
ordered a fan with the right speed profile from Radio Spares
(RS Components), an ARX FD1240-C1251A2AL. However this fan
also gave an error 57.3. At this point I stopped working
blindly, and set about understanding fan characteristics.
How fans differ
From poring
over data sheets, I learned that there are two main types of
three-wire fans with a "sense" output. The common ones, that
you find on sale everywhere, send out a stream of pulses - if
the stream of pulses stop, then the fan has failed. However
the second type of fan provides a status output - it simply
indicates OK or failed, with no need to count pulses.
As you might
have guessed, the fans I'd tried were of the former type, but
the HP 4500 and 4550 require the latter type, known as a "lock
sensor output".
Sadly, fans
with lock sensor output are generally only available to OEMs.
RS do offer one (part number 184-6754),
but it was only available on back-order, with a three-month
lead time.
I was not
willing to wait months to get my printer working again, so
decided to make a converter.
The electrical interface
Each of the
fans I've looked at, including the original HP component are
three wire - ground, power and sense, with the sense line
being "open collector". This means that the fan indicates its
state by pulling the sense line to ground - zero Volts. The
great advantage of this is that the sense function is
independent of the fan power Voltage, as the sensing circuit
in the host system can use a pull-up resistor to whichever
Voltage is required. In the case of the HP 4550 Color
LaserJet, the fan is powered from 12V, but the sensing circuit
appears to use 5V. This is shown in the following figure.
Both the
HP 4550 Color LaserJet fan and standard off-the-shelf fans use
this same approach to the interface.
Building a fan converter
The requirements
A 6,500 RPM fan
will rotate around 108 times per second. The ARX FD1240-C1251A2A produces
two pulses per second, so the fan output is around 216 Hz and
expected to be roughly a square wave.
The
requirements are therefore:
- Vcc at
12V
- Input
signal: open collector, square wave around 200 Hz.
- Output
signal: at 0V when OK, open collector when failed.
- Small
enough to fit in the front of the printer top drawer.
The schematic
The
schematic was designed using KiCad, and is shown below.
The
schematic is intended to not only capture the design, but also
support a Spice simulation. It therefore consists of three
parts:
- On the
right, representing the printer electronics, we have voltage
source V12 at 12V, and pull-up resistor Rp1.
- On the
left, representing the fan, we have a complex voltage source
VSq1 and diode Df1.
- In the
centre, we have the schematic for the adapter board.
A number of
tags have been added to the diagram to indicate points of
interest. These are labelled Input1, Input2, Start, Middle,
Base and Output.
The blue
text below the Output tag is not part of the circuit - it's
instructions to the Spice simulator.
How it works
The complex
voltage source VSq1 generates an approximation of a square
wave, switching between 0V and 12V, with a 5mS cycle time
(equivalent to 200 Hz) and equal mark-space ratio, which is
present at tag Input1. Diode Df1 turns the output of VSq1 into
an "open collector" signal at Input2. It does this by ensuring
that the Fan emulation can pull Input2 to 0V when the output
of VSq1 falls, whilst diode Df1 effectively blocks the rising
output of VSq1 from reaching Input2.
An open
collector signal on its own cannot drive a conversion circuit.
To do that, we need to recreate the square wave, which is the
purpose of pull-up resistor R1. To put it simply, when the fan
is not pulling point Input2 down, resistor R1 pulls it up. So
the R1 allows us to recreate the original square wave.
Transistor
Q1 provides an open collector drive to the output of the
adapter board. Just as we used pull-up R1 to recreate the
square wave, so the printer will use resistor Rp1 to convert
our output to switch between zero volts, and whatever voltage
the printer happens to use on its sense circuit. In the Spice
emulation, the pull-up is to 12V, whilst in the real Color
LaserJet the pull-up is to 5V. This difference has no impact
on the behavior of our circuit.
To turn on
Q1, 0.7V is required at its Base, whilst if the Base is near
zero Volts, the transistor will be turned off. So we need to
lift the Base to at least 0.7V when the input signal at Input2
goes high, and store enough energy during that part of the
cycle to keep the base at 0.7V when the input signal goes low.
We accomplish this by using capacitor C2 as that energy store
- we charge it when Input2 goes high, and when the input goes
low, C2 discharges slowly through the base of Q1. Resistor R2
limits the current flow at this point, such that C2 does not
discharge too quickly through Q1.
If point
Input2 ceases to oscillate, and instead becomes fixed at
either zero or 12V, we want to stop charging capacitor C2. By
inserting capacitor C1 into the circuit, w provide the
necessary isolation - as long as there is an Alternating
Current (AC) at Input2, then it will pass through C1, but if
Input2 becomes simply a Direct Current (DC) signal, then it
will be blocked by C1.
The problem
with using an isolating capacitor such as C1 is that the AC
signal that reaches point Start has an indeterminate DC
component. So whereas we knew that an AC signal at point
Input2 would alternate between zero and 12V, point Start could
oscillate between zero and 12V, or between -6V and +6V, or
some other pair of values. We would like to transfer as much
energy as possible to C2 during the high part of the cycle, so
ideally we'd like to fix the low part of the cycle at point
Start to zero Volts, so as to oscillate between zero and 12V.
Diode D1 causes the the signal to approximate to this. When
the AC signal at Start goes below zero, current is added
through D1, which pushes the DC level upwards, such that the
minimum value of the AC signal approximates zero Volts. In
actual fact, D1 will only conduct when there is more than 0.7V
across it, so in reality it will not add energy into point
Start at any point above -0.7V. So the waveform at point Start
should oscillate between -0.7V and 11.3V. Unfortunately the
signal is attenuated by passing through C1, so we don't see
the full 12V range at this point - instead we get a range of
-0.7V to around 4V.
If we were
to simply apply the signal at point Start to capacitor C2 then
we would charge C2 during the upper part of the cycle, and
discharge it during the lower part of the cycle. Diode D2
ensures that when the voltage at point Start is greater that
that at point Middle, then the incoming signal can charge C2,
but when the voltage at Start is lower than that at Middle,
then the diode prevents current flow towards point Start. Thus
the incoming signal can charge C2, but it is not able to
discharge it.
So at this
point, we have a circuit that will charge C2 as long as an AC
signal arrives at the input, thereby keeping the Base of Q1 at
or above 0.7V, and therefore keeping Q1 turned on. When that
AC signal ceases, C2 will discharge slowly through R2 and Q1,
causing Q1 to gradually turn off and therefore allowing the
voltage at point Output to gradually rise. It is therefore an
acceptable circuit. However we can make it better by he
addition of resistor R3. This resistor has negligible effect
when Q1 is fully on, but as the charge across C2 drops and Q1
begins to turn off, then the current flow through Q1 also
drops, such that the small current flow through R3 becomes
more significant. Thus R3 causes Q1 to turn off much more
quickly than it would do without R3, causing a relatively
quick switch from zero Volts at the output of the adapter
board to the voltage provided through Rp1.
The simulation
The signal
produced by complex voltage source VSq1 is a square wave,
followed by a fixed voltage to represent fan failure, where
this latter is currently set to zero Volts. Viewed at point
Input1, the waveform is shown in red:
Following
conversion to "open collector" by Df1, the waveform is
reconstituted by the addition of current through R1, as seen
at point Input2. This waveform is similar to that at Input1,
with two minor differences - due to the voltage drop across
Df1, it will not quite reach zero Volts (so this is an
imperfect emulation of an open collector output) and due to
capacitance in the circuit each rising edge of the waveform is
curved as it approaches 12V.
After
passing through C1, which both removes the DC content and
attenuates the signal, the bottom of the waveform is then
locked to -0.7V by D1. The signal at point Start is somewhat
modified from that at point input2, with a peak gradually
stabilizing at about 4.3V:
The signal
then passes through D2, which rectifies the signal to charge
up C2. However at the same time, current is being drawn
through R2 and Q1. The incoming signal therefore provides each
rising edge, whilst the current drain through the transistor
provides each trailing edge, giving rise tot he waveform at
point Middle.
The trace
also clearly shows the discharge of C2 once the square wave
signal is no longer applied (representing the fan stopped)
Once the
voltage across C2, shown above at point Middle, rises above
0.7 V, the voltage at the Base of the transistor is held at
around 0.6 to 0.7 Volts by the semiconductor effect across the
Base-Emitter or Q1. When the voltage at point Middle decays to
around 0.7V, then it is no longer able to sustain he Base of
Q1 at 0.6 to 0.7 Volts, and so the voltage here begins to
decay, as seen in the waveform at point Base:
Whilst Q1 is fully
turned on, the current flowing through Rp1 goes direct to
0V, through the transistor. However once the Base voltage
begins to decay, this is accompanied by a reduction in
current flowing through the transistor, across the
Base-Emitter junction. That reduction in current induces a
corresponding (but amplified) reduction in the current
flowing across the Collector-Emitter junction. The reduction
in the Collector-Emitter current flow allows the voltage at
point Output to rise rapidly away from zero Volts, enabling
the printer to detect that the fan has failed.
The waveform for point
Output therefore shows that the signal is held at 0V whilst
the fan is running. When the fan stops turning, and C2 is
able to discharge to below 0.7V, the voltage on the
output is able to rapidly rise to the sensing voltage supplied
by the printer through resistor Rp1.
Construction
The KiCad
tool Pcbnew can be used to lay out the components. It won't do
the whole layout automatically, but it assists in ensuring
that the correct components connect together. It's really
intended for designing printed circuit boards, but with care
it can be used to sketch out a VeroBoard layout. In this
design, the input line has been taken to both ends of the
board, so as to allow the board to be wired in single-ended
mode (all wires at one end), or double-ended (printer
connections at one end, fan connections at the other).
The first
image comes from KiCad and shows the component layout and
connections.
The second
image has three dots superimposed, to show where tracks need
to be cut on the underside of the board.
The
essential tricks that assist in planning such a layout are:
- Set the
Grid size to 2.54mm,
- Only draw
green lines vertically, to represent the copper tracks on
the VeroBoard,
- Only draw
red lines horizontally, to represent wire links on the
component side of the board.
An unfortunate
side effect of having drawn the schematic using "Spice"
components instead of ordinary components is that the pin
numbering may not correspond with the physical devices. The
impact of this is seen in the diagram, where it has caused the
diodes to be shown reversed. This could be avoided by working
with a copy of the original spice model, disconnecting
components from the spice library, and connecting them to
physical models. However that would mean managing two separate
schematics - I prefer to simply put the diodes the correct way
round when I build the board.
So the final
design looked like this:
Component list
- Q1:
2N2222
- D1:
1N4007
- D2:
1N4007
- R1: 1k
- R2: 10k
- R3: 100k
- C1: 200nF
- C2: 1uF
No
components have critical values - I used parts that I happened
to have available, so simply use values that are roughly
similar.
Tools used
- Gnu/Linux
operating system (Ubuntu 20.04)
- KiCad 5.1
(free for Ubuntu)
- ngspice
31.3 (free for Ubuntu)
Last words...
I
hope you found this useful. Do let me know.