Current version



Completed, ready for production (for EEZ H24005 model)

PCB manufactured

Yes (r5B9)

PCB assembled

Yes (r5B9)


Yes (Farnell, TME)

File repository

(include Eagle, Gerber, BOM files and SPICE simulations)


TAPR v1.0


C4.1 (Collective Code Construction Contract)

Revision history

2016-12-11: r5B11

  • Current limiter is removed

2016-10-24: r5B10

  • Added optional components on the AC power input
  • Voltage programming switch (IC13) wiring is fixed (#2)
  • Main heatsink (Q4) earth connection is removed (#3)
  • Error amps ground reference offset (#11)

2016-07-24: r5B9 (Version 2.0 on GitHub)

  • DAC Vdd input moved from digital +5 V to analog +5 V power supply
  • Changed power input connector type (X1)
  • Optimized number of parts size and values, renumbered reference designators

2016-06-16: r5B8 – first public release (successor of pre- and post-regulator boards available in Version 1.0 on GitHub)

  • SMPS pre-regulator based on LTC3864
  • 100% duty-cycle mode of operation for lower output ripple
  • Choice between AC and DC power input
  • Remote output voltage programming
  • Remote sense reverse polarity protection
  • Switching frequency synchronization with other channel via Arduino Shield board (no additional cable is required)
  • On-board SMT temperature sensor (no additional cable is required)

Fig. 1:Power board assembled (PCB r5B9, DC power input)

The Power board represents a PSU channel and two boards are used for the dual channel PSU. This design has at least three distinctive features that makes it pretty unique. The first one is that its requires single high voltage input (that can be either DC up to 62 V on X1 input or AC up to 44 V on X2, see Fig. 2). All required bias voltages are derived from the same source! Therefore no custom made (and costly) transformer (or AC/DC adapter) is required for normal operation.

Secondly, it’s hybrid by design and combines best of both world: switching and linear regulation. But hybrid mode of operation can be switched to linear thanks to the chosen SMPS (Step-Down DC/DC) controller LTC3864. It offers 100% Duty cycle capability which when properly managed with the MCU allows implementing of low ripple mode that will be described below.

Thirdly, its compact design and usage of only one 26-pin 0.1” header (X3, see Fig. 11) to carry power output and all control lines simplify assembling and remove need for various connecting cables. The only cable that remains is for power input and in the same time Power board is completely portable and easily replaceable with another one (in case of failure) or future one with different capability and feature set.


The Power board can be divided into the following sections that will simplify its description and understanding:

The Power board capability used in EEZ H24005 model comes with the following features:

  • DC power input (supplied from Mean Well LRS-150-48 AC/DC module) for max. output power of 155 W
  • Voltage programming: local (16-bit DAC) or remote/external, 0 – 40 V
  • Current programming: local (16-bit DAC), 0 – 5 A
  • MCU controlled “Low ripple” mode of operation

For possible modifications and tweaking visit the Hacking area.


Fig. 2: Power input and SMPS power pre-regulator

Power input

The Power board can be connected to both DC and AC power input using X1 or X2 connector respectively. AC input can be used when one have mains transformer on disposal or if proposed AC/DC power module does not seems robust enough. With properly rated transformer a max. possible output power of 200 W can be also achieved. Possible drawback of mains transformer could be that is weight much more then AC/DC power module for the same output power and makes a whole PSU much heavier and unpractical when it is frequently moved from one site to another.

The DC input connector (X1) also has Protective Earth input connected to the C1 and C2 that are used for improve differential noise rejecting. Common-mode choke L1 is added to suppress noise that appears on the Power board output if it’s supplied from the above mentioned AC/DC power module.

Power SMPS pre-regulator

The main role of the power pre-regulator is to efficiently increase input voltage. If only linear regulator is used (post-regulation) that will produce enormous power dissipation for lower output voltage (close to max. rated power). A huge heatsink combined with powerful (and noisy) cooling fan will be needed if we wants to house even single channel in enclosure that is enough compact for handling and transportation. For example if we have on the input 50 Vdc and wants to deliver 3.3 V, 5 A on output the pass mosfet (Q4) need to dissipate over 230 W of heat to deliver only 11 W what is unacceptable.

Switching regulator which by design do not continuously conduct and can lower output voltage more efficiently. Efficiency could vary depending of input and set output voltage but 80% and more is easily achievable for higher load (i.e. 1 A and more).

Let say that 85% is achievable with chosen switching pre-regulator and that we require about 2 V difference between its output and final stage (post-regulator) output (such margin for max. load is enough for good regulation). For previous example that means that pre-regulator need to decrease 50 V to 5.3 V while dissipating only 6.7 W ((50-5.3 V) x 5 A x (1-0.85)). Loss on the post-regulator will be only 10 W (2 V x 5 A), or in total 16.7 W what is easily manageable with medium size heatsink, or even better if cooling fan is employed that not need to run full speed for smaller load or lower ambient temperatures.

The LTC’s LTC3864 (IC1) require P-channel mosfet that is not used so often for switching power regulators because it’s more difficult to manufacture it to have similar characteristic as N-channel mosfet, e.g. low Drain-Source on-state resistance (Rds(on)), high current capability, etc. In general P-channel mosfets are more expensive but that is not so crucial for our design where only one is required per channel.

Selected mosfet (Q1), Infineon’s IRFR5305 has fairly low Drain-Source on-state resistance Rds(on) to keep its dissipation low and also modest Input capacitance (Ciss) and Total gate charge (Qg) to not put too much load on the LTC3864’s gate driver.

Another crucial component for switching regulator is power inductor (L2). We’d like to deliver up to 5 A and if we don’t want to occupy too much space on the PCB, searching for proper inductor could be a rather challenging venture. Most of commercially available power inductors cannot offer more then 33 μH and rated (Irms) and saturation current (Isat) of min. 5 A. With such inductance is in principle possible to maintain regulator’s operation in CCM (Continuous Conduction Mode) for frequency below 500 kHz.

The LTC3864 provide current monitoring using current shunt resistor (R2) that provides output current limit (over-current protection) that can be beneficial in case of short circuit.

Synchronization of switching frequency from external source is deployed (pin 1) that is tied together with bias SMSP pre-regulator (IC4, Fig. 7) and further connected with the (master) SYNC input that is isolated (pin 16, X3). Synchronization could be beneficial in suppressing undesirable sub-harmonic so-called beat frequencies and EMI effects. If multiple SMPS nodes shares same ground sync signal isolation is not required that is not our case – both channels have to be isolated what give us possibility to connect them freely in serial or parallel to increase max. possible output voltage or current.

Line isolators required to isolate I/O signals for power module control are not located on the board itself. They can be found on the Arduino Shield module and they are discussed under topic Digital isolators.

The “free-running” frequency (without sync deployed) of the LTC3864 is set with R7 (47K) to be slightly less (~300 kHz) then master SYNC (~320 kHz) that comes from Arduino Shield module. A typical switching waveform is shown on Fig. 3 (connected to Q1 drain with 1 kΩ resistor).

When channel output is switched off the LTC3864 (using pin 8) is also put into micropower shutdown state when it’s draws only 7 µA.

Fig. 3: Switching waveform for Vout=20 V, load=16.4 Ω

Output filtering

The main drawback of any switching regulator is presence at the input of hard to filter noise. Output capacitors with low ESR could improve situation to some extent. Additional output filtering is achieved with L3, L4 and parallel combination of C13, C19 and C14, C15. Of course L3 and L4 must handle at least 5 A continuously to provide safe operation.

Programming output voltage

A few words how is pre-regulator’s output voltage set. It’s already mentioned that 2 V about difference should be maintained between linear post-regulator input and output to keep its dissipation low (within 10 W). That is achieved with post-regulator output voltage tracking circuit using Q2.

When fixed output voltage is required output voltage programming is achieved with voltage divider (R12, R15) connected between post-regulator’s output (before final filtering L3, L4) and VFB input (pin 5). That voltage level is compared with internal reference of 0.8 V and output voltage can be calculated using the following equation:


Vout = 0.8 V x (1 + R12 / R15)


For example if we’d like to have 5 V on output with R15 set to 4.7 kΩ, R12 has to be 24.68 kΩ. If R12 is not installed feedback loop build around Q2 should provide appropriate voltage drop to maintain 0.8 V on the VFB input when post-regulator output is about 2 V below pre-regulator output voltage. If R12 is applied as in our case it has to be high enough to program LTC3864’s output above input voltage (50 Vdc in our case) to not interfere much with tracker circuit. With selected 330 kΩ output voltage is set to about 57 V. Another reason why it’s set so high is to ensure when “low-ripple” mode of operation is selected that LTC3864 is pushed securely into 100% duty cycle mode.


It’s important to mention that many schematics of one transistor tracking circuit can be found on the Internet. Most of them possibly works pretty fine in theory or in Spice simulation. But, because all of them almost without exception are missing important part “miller capacitor” to stabilize it (C23, 470 pF in our case) it’s hard to believe that they are thoroughly tested in real life. Without them you can expect enormous instability in some point of time that can even ends up with destruction of the switching controller IC. Luckily the LTC3864 showed extreme resilience to such instabilities introduced in the voltage control loop that gave us enough room for testing and finding a solution that we for the first time saw in EEVblog’s video #329.

Low-ripple mode

Hybrid solution that combines switching and linear regulator have a huge advantage when high efficiency and compact design is needed. Regulator with switching mode of operation is superior if huge difference between input and output voltage exists that become questionable usage of linear regulation in final stage. The main reason for deploying linear regulation in final stage is better dynamic (load transient response) and stability over broader range of output voltage and power. There is many promising notice that linear final stage will also attenuate already mentioned switching noise. Unfortunately that is not so simple to achieve. Even with excellent linear final stage, an “inappropriate” PCB layout could ruin such attempts. Using two layer PCB instead of multiple layer (4 or more) PCB can be also labeled as inappropriate, but we stick with former because of its lower cost.

Measuring output ripple and noise is an art by itself and it seems that many manufacturers are presenting only results that looks better in marketing materials without going into details about measurements (e.g. applied additional capacitor’s value and type connected in parallel with the load, output voltage and current, etc.). Generally speaking, only a measuring bandwidth limitation of 20 MHz is mentioned.

Achieved results with this power supply is presented under Measurements. They are looks pretty good – comparable with that from more expensive commercial solutions. The same is with output ripple and noise. An example of standard ripple and noise with 16.4 Ω power resistor is shown in Fig. 4.


Fig. 4: Standard output ripple and noise (Iout=0.48 A, Vout=8 V, custom x1 AC probe)

Thanks to LTC3864 capability to works in so-called 100% duty cycle when it effectively stops to work and Q1 is in continuously switched on (saturated) it’s possible to reduce output ripple and noise figures even further. For example, with the same load connected as above when output voltage is decreased for 0.5 V the PSU will enter low ripple mode of operation cutting noise and ripple in half (Fig. 5) and remain ripple and noise possibly comes only from the bias SMPS pre-regulator circuit (IC4).


Fig. 5: Low output ripple and noise (Iout=0.45 A, Vout=7.5 V, custom x1 AC probe)

The low ripple mode of operation has to be managed with the MCU to limit max. power dissipation of the Q4. Max. dissipation is possible to set in firmware at it should not exceed 30 W (worst case scenario for dual channel is 60 W that has to be efficiently blow out of enclosure).

Bias power supply

The bias power supply (Fig. 7) has two stages: high voltage SMPS pre-regulator and low voltage LDO’s for final regulation. The LM5574 (IC4) buck regulator from the TI Simple switcher family is in the core of the bias pre-regulator and has integrated power mosfet that is rated for output current of up to 500 mA while allowed input voltage could be up to +75 V. Principally it works like LM25575 on the auxiliary power supply with one exception – a coupled inductor TR1 is used to generate both positive and negative voltage. Pre-regulator feedback loop is very simple and derived from R19, R26 voltage divider that cannot guarantee good load regulation what in our case is really not important since final regulation is determined with LDO’s that follows.

IC2, IC3, and IC5 provides final regulated outputs of +5 V and -5 V for linear circuits and +5 V for digital circuits. The LP2951 is selected because it also provide “Power good” indication (ERROR output) that is used for checking power lines “health”. The MCU will not enable power output during start up until that signal becomes high. Also if this signal becomes low during the normal operation, a procedure for entering stand-by mode will be initiated.


Fig. 6: Bias power supply (SMPS preregulator, LDOs and PWRGOOD signal)

Series/pass element and control loops

The analog (or central) part of the post-regulator stage is inspired by exceptional work of Leonid Ivanovitch which is presented on the EEVblog forum.

The N-channel mosfet (Q4) connected as common drain is used as series regulator. There is many possible mosfets that could be used for that job and it has to be carefully selected to not compromise its SOA for the desired output voltage and current range. Q4 requires for normal operation a bias voltage applied on its gate that is few volts above drain voltage. Usually for that purpose an additional bias power source derived from auxiliary secondary transformer winding or charge pump is employed. The output of such power source is floating on top of drain voltage since its negative output is connected to the drain voltage ensuring constant difference between gate and drain potential regardless of the input voltage (applied to the drain). Instead of dedicated gate bias supply we are using input voltage. Therefore input voltage has to be e.g. 5 V or higher the max. output voltage. That requirement is met with Vin=48 V for 0 – 40 V range.

The zener diode ZD4 insures that gate-source voltage (Vgs) stays within allowed limits (i.e. below 20 V).

Diode D11 protects Q7 from B-E junction breakdown and D12 (the same is with D14) is added to prevent current flowing from the external source when output is switched off.

Output voltage on Q4 is controlled with two control loops: Constant Voltage (IC6) and Constant Current (IC7, IC8) and in general only one of them could be active at the time. Diodes D15 and D17 ensures that output signal from one control loop do not affect the other loop functionality. Q12 is common base voltage amplifier stage and R36 and R46||R47 forms local negative feedback.

Both control loops are using the same precision voltage reference REF5025 (IC10, Fig. 11) for programming output voltage and current. The voltage reference output is 2.5 V. Therefore gain of both control loop has to be adjusted in a way that output range returns positive value between zero and 2.5 V. That is accomplished by selecting feedback loop resistors of IC6B and IC8A that are connected as differential amplifiers. For example if we’d like to have output voltage in the range from zero to 40 V the IC6B gain has to be 2.5 / 40 = 0.0625 (actually the output signal has to be attenuated 16 times).

But that works in theory. In practice due to used component’s tolerances it is highly likely that full range (e.g. 40 V) will not be reached and that few tens of mV are missing. That can be easily overridden by extending full range a little bit over desired max. voltage. For example, we can choose that for max. DAC voltage (generated with 0xFFFF code) we expect e.g. 40.667 V instead of 40 V. Therefore IC8B gain now has to be 2.5 / 40.667 = 0.06147 that can be accomplished with combination of 7.5 kΩ (for R44, R55) and 122 kΩ (for R49+R50, R59+R60).

A little bit more challenging is to insure that for programmed DAC 0x0000 code we can goes down to zero (volt or max. current) and that small negative voltage on DAC output is needed. Since used DAC (IC11, Fig. 11) cannot generate negative output by itself it remains that reference signal (“ground”) for IC6A and IC8A is put a little bit above zero. That is accomplished by isolating voltage divider output (R70, R66) with IC7B that give us ~50 mV. That offset on lower programmed output values has to be taken into account in firmware during calibration process.


Fig. 7: CV and CC control loops, serial mosfet driver, OE, DP


Output voltage could be “sensed” locally or remotely. In former case inputs X3-22, X3-21 has to be connected to the power output pins (X3-23...26, X3-17...20) and in the later case such connection is accomplished on the load’s input terminals using separate cable that is connected directly to the load terminals. Thanks to signal relay located on the Arduino board such selection is managed by MCU. Remote sensing cable could be also shielded when cable shield has to the connected on the protective earth terminal only on the one end to avoid creation of the ground loop.

The output current is measured as a voltage drop on the current sense resistor (R69) and current range can be also defined by changing the value of that resistor – higher value will produce the higher voltage drop for the same current and therefore IC8A gain could be smaller. In that way we could improve precision of the measured value, but from other side using the value that is too high could produce excessive heating of the current sense resistor since the dissipated power rise with the square of the current.

It is important to take into account that heating of the current sense resistor decrease accuracy because its resistance is temperature dependent. Choosing a resistor with low TCR while keeping dissipation low gives the best results.

With selected value of 20 mΩ and max. current of 5 A dissipated power will be only 100 mW that is acceptable for selected power rate of 2 W.

Since voltage and current are programmed separately any combination of output current and voltage is possible. That also mean that dual channel power supply if required could be build with two different output ranges (e.g. 0 – 40 V / 5 A and 0 – 50 V / 3.12 A).

Output enable (OE) and down-programmer (DP)

The Output enable is a two-state circuit for enabling power output and quick disabling it in the case of emergency (e.g. connected load is start to overheat because of erroneously programmed voltage and current levels). Output enable circuit consists of Q10, Q11 current mirror controlled by Q13 and Q15 (Fig. 7) that regulate bias voltage that is delivered by Q7 to Q4.

The down-programmer (DP) circuit is built using Q8, Q5 that are controlled by Q9 and Q14 (Fig. 7). It’s used to improve programming output voltage fall time (hence the name down-programmer).

Thanks to it the fall time (from previously programmed higher voltage to the newly programmed lower voltage) could be for the order of magnitude shorter in comparison with power supplies that do not have regardless of how small is power supply’s output capacitor since it could actively sink power stored in mentioned power supply’s output capacitor (that is located on the Arduino shield) but also input capacitor that could exist on the connected load or device.

The difference in programmed output (yellow trace) depending of DP state can be found below. Output is programmed with step from 20 to 1.5 V (10 ms on, 50 ms off) and 450 Ω load is connected. Fig. 8 shows output without and Fig. 9 with DP circuit activated.


Fig. 8: Output voltage programming with DP off


Fig. 9: Output voltage programming with DP on


The common practice is that down-programmer follows the state of the output enable circuit: it is enabled when output is enabled and vice versa. The down-programmer circuit on the Power board could be controlled independently if required and its default state is on, therefore DP control circuit will be disabled when 5 V is applied to its input (DP_DRIVE signal).

The down-programmer has a finite sinking capability that is set to approx. 300 mA (limited with R31). That starts to be visible when device with huge capacitor (or such capacitor alone) is connected to the output. Fig. 10 shows fall time of 460 ms with 3 300 μF capacitor charged to 40 V.


Fig. 10: Output voltage fall time from 40 to 0 V with 3 300 μF

Digital control (ADC, DAC and 8-bit I/O expander) and voltage reference

Post-regulator is an analog circuit controlled by control loops that are also analog. Therefore any function that we want to accomplish digitally using e.g. MCU will require some kind of signal conversion. For that purpose the following three devices are added on board (see Fig. 11):

  • DAC8552 dual channel 16-bit Digital to analog converter (IC11),
  • ADS1120 15-bit delta-sigma (ΔΣ) analog to digital converter (IC14) and
  • MCP23S08 8-bit I/O expander (IC9)

IMPORTANT: All digital devices are powered with 5 V therefore they cannot be directly connected to the Arduino Due (or any other 3.3 V MCU board). Also if more then one Power boards wants to be connected to the single MCU board their SPI buses must be isolated from each other even if used MCU board is capable of working with 5 V logic levels.


Fig. 11: Voltage reference, I/O expander, ADC and DAC

Digital to analog converter (DAC)

DAC device is used to provide the control voltage and current for the power supply. Using a SPI bus the MCU communicates with the DAC to program the new voltage at the DAC outputs (U_SET and I_SET). This device has also incorporated a power-on reset circuit which ensures that the DAC outputs power up at zero-scale and remain there until a valid write takes place.

The range of voltage the DAC can output is determined by the voltages at its reference pin (Vref) that is connected to the precision voltage reference of +2.5 V (IC10).

Important parameter that is used to determine DAC speed is settling time that represents the elapsed time from input code application until the output arrives at and remains within a specified error band around the final value. In our case it is max. 10 μs. Another factor is how complex and how much time require DAC channel programming. For this device it is accomplished by sending 24-bit stream (first byte represents command/register selection and remaining two 16-bit value that will be converted into analog voltage). SPI clock frequency used for transferring 24-bit value could go up to 30 MHz (!). Mentioned characteristics of the DAC provides enough margin to use it efficiently for the power supply programming where is typical that new output value is set in tens of milliseconds (that also include execution time of MCU code used for programming).

Analog to digital converter (ADC)

ADC is equipped with four channel input multiplexer and can accomplish up to 2 000 sampling per seconds. Its SPI clock is 4.096 MHz (4.5 MHz max). It is used to measure voltage and current control loops levels (U_MON, I_MON) but also DAC outputs (U_SET, I_SET). Selected ADC is 16-bit bipolar, but for our application only positive half of the full scale that represents only (unipolar) 15-bit. It also comes with internal 2.048 V voltage reference and many other interesting features that are not used in this project.

In contrast to DAC, the ADC requires bidirectional communication with the MCU. ADC’s output is used to transfer results of data acquisition at the end of each initiated measurement. For that purpose DOUT/DRDY output is used that is connected to MISO line. That output could be also used to notify SPI master (MCU) that data acquisition cycle on the selected input (one of four) is finished and that data are ready. Another possibility that is used in this design is deploying of dedicated DRDY output as a mean of notification. Using JP2 jumper is possible to take DRDY signal to generate MCU interrupt, otherwise “polling” method can be used to acquire periodically conversion data.

8-bit I/O expander

I/O expander is used to minimize number of required signal lines between Power board and digital contel (Arduino shield). Expander’s I/O lines are used in the following manner:




I/O name







Reverse remote sense polarity detected





Enable or disable down programmer circuit





CC (constant current) mode of operation is active





Remote output voltage programming source selection





100% duty cycle mode control





CV (constant voltage) mode of operation is active





Power good input received from the pre-regulator module





Enable or disable power output


One of the starting requirement for this project was resolution of 10 mV and 10 mA and output range of up to 50 V and up to 5 A. Mentioned requirements defines also resolution of digital devices required for programming and monitoring output voltage and current. For 50 V range we need at least 5 000 programming steps. Therefore DAC and ADC resolution has to be 13-bit or higher to provide 8 192 or more combinations (12-bit gives as only 4 096 possible combinations).

Quest for the proper DAC and ADC devices included interface selection, speed, availability (no exotic sources) and, of course the cost. Above mentioned devices used in the post-regulator provides decent price/performance for such kind of project and with 16-bit programming resolution and 15-bit measuring resolution theoretically the following precision could be achieved:



16-bit programming

15-bit measurement

0 – 30 V

0.457 mV

0.916 mV

0 – 40 V

0.610 mV

1.22 mV

0 – 50 V

0.763 mV

1.53 mV

0 – 3.12 A

0.0476 mA

0.0952 mA

0 – 4.16 A

0.0636 mA

0.127 mA

0 – 5 A

0.0763 mA

0.153 mA


According to the above table for the EEZ H24005 model it can be realistic to achieve 10 mV output voltage precision and 1 mA output current precision. Of course, multi-range solution for at least current control should be welcomed, where selection between two or more current sensing resistors with different values (e.g. 20 mΩ, 200 mΩ, 2 Ω) has to be employed and that is a possible update that can be planned for one of the future revisions.

Voltage programming selection

Output voltage programming is already mentioned above where DAC output signal generate reference voltage used by CV control loop. This represents digital programming managed by MCU while user can remotely set desired voltage level using SCPI commands via USB or Ethernet interface or locally via TFT touch-screen display attached to the Arduino shield.

Additionally voltage programming can be performed by applying positive analog signal (2.5 V for the full scale). The Arduino shield has push-in terminal near channel’s output binding posts (X12, X14) reserved for such kind of remote analog programming. Only one reference signal can be used at the time what is regulated with analog multiplexer/switch (IC13). The digital programming is selected by default. The analog programming is much faster but additional care should be taken to stay within working range despite the fact that line protection circuit (IC12) and TVS diodes (ZD10, ZD11 on the Arduino shield) were added. Since MCU can monitor U_SET signal even when analog programming is selected it’s possible to implement at least an over-voltage protection (OVP) that will switch off channel output if applied input signal cause unacceptable output voltage.

One of the use scenario for the analog programming is that EEZ power supply acts as a tracking pre-regulator while experimenting with another adjustable linear power supply connected on it. In that case we would like to keep under control dissipated power because e.g. suitable heatsink is missing in experimental phase or some other flaws in design or testing can be expected to cause dangerous power dissipation. Another reason is to simply test how well power supply under test works with presumed difference between input and output voltage.

CC/CV indications

Power supply when output is enabled could work in one of the following mode of operation:

  • CV (constant voltage) when voltage control loop (IC6) is controlling the output. This mode is assumed as default for power supplies with series regulator element.
  • CC (constant current) when current control loop (IC7, IC8) take over output control and
  • UR (unregulated or not regulated) when neither (or even both) of above mentioned control loop are controlling the output.

CC and CV circuits (Fig. 11) uses “window comparators” that requires two comparators to detect lower and upper voltage level. CV signal is generated by comparing U_SERVO output from IC6A using IC15A, IC15B as window comparator. In the same fashion CC signal uses I_SERVO output from IC7A and brings it to IC15C, IC15D comparators. Generated signals are level shifted for TTL inputs (R86, R89 and R98, R100 voltage dividers).


Fig. 12: CC/CV indications, Remote sense reverse polarity detection

Remote sense reverse polarity detection

The remote sense (or remote voltage sensing) is required if we wants to insure precise output voltage programming regardless of output current. It’s hard to imagine power supply that claims to provide 1 mV precision without remote sensing. It’s very realistic scenario that the output currents of few amperes that flows through inappropriate connection cables or load terminals with resistance in miliohms could produce voltage drop of few milivolts or even hundreds of milivolts. When remote sense is used, output voltage is not measured on the power supply’s outputs but on the connected load terminals. CV control loop (error amplifier) now can compare that voltage against programmed one, and all voltage drops along the way is not relevant anymore.

Exposing voltage sensing inputs also has disadvantages. The major one that is even not so obvious is that any or both of sense inputs are mistakenly connected to the reverse polarity power output. When the local sensing is chosen the signal relay on the Arduino board will insure that remote inputs are connected correctly to the related power outputs (Sense+ to Out+ and Sense- to Out-).

When remote inputs becomes disconnected from the power outputs the power supply can still works safely because they are still properly polarized thanks to R37, R62 with small deviation in output voltage because their additional 2 x 2 kΩ are added to the input voltage divider of the IC6B.

If any of sense input is connected to the other power output that will cause max. error that CV control loop will try to compensate and the end result will be max. possible voltage on the output. That could easily results with irreparable damage of the connected load and one can only hope that output current was set low enough that power supply enters CC mode of operation when CV control loop and remote sensing is not active!

To avoid such unfortunate event a reverse polarity detection circuit (Q17, Q19) is added in parallel with remote sensing inputs. It has two purposes: to immediately decrease output voltage under approx. 1.7 V (Q16) and to generate SENSE_ERR signal (Q18) that will notify MCU to immediately disable output. Regardless of this built-in protection it’s still a good practice to limit output current little above nominal for connected load when remote sensing is used.

PCB layout

PCB layout shown on Fig. 13 includes all mandatory and optional parts from above described circuits. That also include both DC and AC power inputs. Two layer PCB (created in Eagle, autorouter is not used) puts many limitation in arranging this fairly complex design in limited space. Idea was to house everything in the enclosure that is not higher then 2U (89 mm). Another limitation creates efficient cooling of power SMT components (i.e. Q1, D5, L2, R69 but also IC1 and D1-D4 if AC input option is selected) and main THT power component: Q4.

A vertical orientation of two Power board PCBs mounted in parallel was chosen that should create a sort of tunnel with top and bottom enclosure’s plates. The ∅60 mm cooling fan should be located on the one end of such tunnel while on the opposite side both Power boards are connected to the Arduino shield. Both top and bottom enclosure plates requires a dozen of ventilation holes to ensure good air flow.


Fig. 13: Power board PCB layout (r5B11)

The height of the PCB is 74 mm that allows us to mount it into 80 mm enclosure and it is fixed with L-profile on enclosure bottom plate and could be optionally fixed on the top plate too.

The PCB’s top side is oriented toward “tunnel’s” interior to provide max. flow of air over SMD components. Due to that bulky THT components such as X1, L1 (DC input) and X2, C4, C5 (AC input) are moved to the bottom PCB layer.

For the same reason the Q4 (Fig. 14) and it’s heatsink RAD-A4463/120 (120 x 70 x 19 mm) are also mounted on the bottom layer. Four 3.2 mm holes are provided to mount PCB to the heatsink that is fixed with L-profile mentioned before to the enclosure bottom plate. Additionally the cooling of the critical SMT components can be further improved by putting “thermal bridge” between bottom PCB layer and Q4 heatsink. As a thermal bridge 5 mm thick conductive silicone thermal pad is recommended. Q4’s heatsink and thermal pad’s area are shown on Fig. 15.


Fig. 14: Q4 power mosfet position (PCB r5B9)


Fig. 15: Heatsink and thermal bridge area

The PCB layout use a single ground plane that occupy most of the bottom layer. Components that belongs to power pre-regulator, bias pre-regulator, analog and digital circuits are strategically grouped together and separated from other section to decrease interference. Again, this Power board is a great candidate for the 4-layer PCB that could provide more possibility to trace lines in much better way. That is one of the possible improvement that could be planned for one of the future revision.

The ground plane has few sections that is better visible on the Fig. 16. All of them are connected together below power pre-regulator’s output capacitor (C18) and IC1’s analog ground that is traced on the top layer is connected with separate line (SH2) to the C18.


Fig. 16: Ground plane sections and current flows

The top layer in power pre-regulator section is used to route high current loops (both continuous and pulsating) that has to be as short as possible and with extended width to keep trace inductance as low as possible. Input and output loop (marked green) are closed via capacitors C6, C7, C8 and C12, C20. Due to that a ground connection using multiple vias is placed centrally. The same area is used to connect D5 cathode that close another loop via L2 (marked black) and output capacitors C12, C20. “Hot point” represents connection between Q1, D5 and L2 (marked magenta). All sensitive lines are traced outside that area.


Fig. 17: Power pre-regulator PCB layout detail


Outgoing positive and negative power lines are traced in close proximity to each other to keep line inductance low. They also have exposed solder masks that additional thick layer of solder can be manually applied if necessary (their width of 150 mil should be enough for 6.3 A with temperature rise of 10 oC for the 35 μm thick cooper).

Precision voltage reference is positioned close to the PCB edge (to decrease fluctuations possibly induced with mechanical vibrations) and relatively far from the main source of heats (Q1, D5, L2).

Current sensing amplifier (IC8) is connected with the shortest possible lines (via R67, R71) to the shunt resistor (R69) for improved noise immunity and precision. The R69 is an ordinary 2-terminal 2512 resistor therefore the Kelvin connection has to be established (Fig. 18) with proper arrangement of high current (marked magenta) and low voltage (marked green) traces.


Fig. 18: Current sensing 4-wire (Kelvin) connection



SPICE models

zip LTspice EEZ LTC3864 pre-regulator 2.1 HOT

LTspice model of SMPS pre-regulator with LTC3864 that is used in EEZ programmable bench power supply.

License GNU GPLv3 link_extern Author;This email address is being protected from spambots. You need JavaScript enabled to view it. WebsiteWebsite link_extern DateMonday, 25 April 2016 09:08 Language  English File Size 62.29 KB Download 1,108 Download
zip LTspice EEZ post-regulator 0.2 HOT

LTspice model of mosfet post-regulator with CC and CV loops, OE and DP circuits. Simulation shows output voltage programming with

License GNU GPLv3 link_extern Author;This email address is being protected from spambots. You need JavaScript enabled to view it. WebsiteWebsite link_extern DateWednesday, 29 June 2016 13:45 File Size 140.25 KB Download 1,053 Download
zip LTspice remote sense reverse polarity detection 0.1 HOT

LTspice model of remote sense reverse polarity detection circuit used in Power board r5B8.

License GNU GPLv3 link_extern Author;This email address is being protected from spambots. You need JavaScript enabled to view it. WebsiteWebsite link_extern DateWednesday, 29 June 2016 14:38 File Size 59.01 KB Download 964 Download