Multi Channel High Voltage Power Supply

1 Introduction

This information is experimental. We cannot provide support for the multichannel configuration. The groundwork has been done, but there might be some tweaking necessary. Everything is open-source, so feel free to experiment.

Several (2 to 4) single channel HVPS can be combined together to form a multi-channel power supply. Of course, it is also possible to connect several single channel power supplies separately to a single computer, as the GUI can handle multiple SHVPS connected simultaneously. However, there are a few advantages (and disadvantages) with combining several SHVPS into a multichannel unit:

Advantages of the Multi-channel configuration:

  • Only 1 USB and power supply for up to 4 HV channels
  • Possibility to synchronize the channels
  • Possibility to create precise phase shifts between the channel in switching mode (for example to drive a peristaltic pump)

    Phase shift between 3 channels. Channel 0 is synchronized on the clock signal, channel 1 is shifted by 1/3 of the period, and channel 2 is shifted by 2/3 of the period

Disadvantages of the Multi-channel configuration:

  • Only a subset of the functionalities of a SHVPS is available (for example no custom waveform or trigger signal), but these functionalities can be added if required.
  • The concept is more experimental and has not been as thoroughly tested as the SHVPS.


The PCB for the multichannel unit is a mother board in which the SHVPS cards are plugged (using the 10 pins header). It also has a socket for a Arduino micro, that serves as the central brain synchronizing the connected channel. We currently do not have a proper PCB layout made, but due to the limited number of components required, it can be easily made on an experiment board, as illustrated below

The squares with the red dot indicates where the copper must be removed to interrupt the track.

Prototype board of the multichannel motherboard

The required components are:

  • 2x 1×17 header socket for the microcontroller. Possible product (36 contacts that can be cut to the required 17 length):
    Order code:  Farnell 2396216
    Part number: 929974-01-36
    Description: Board-To-Board Connector, 929 Series, 36 Contacts, Receptacle, 2.54 mm, Through Hole, 1 Rows
  • 1x 1×2 header to connect a diode (where D1 is indicated on the schematics). This is an error LED which indicate a communication problem on the I2C bus linking the cards
  • 1x 220 Ohm resistance to limit the current going in the LED
  • 2x 1.5 kOhm resistance to pull I2C line high
  • 2x 1×2 terminal block to connect wires to a main safety switch and to a 5VDC 2A power supply.

3 Configuration

3.1 Required Material

  • Mother board PCB as described above.
  • 5V 3A power supply.
    Order code: Farnell 1907585
    Product number: E2EFSW3-30/5S-/+
    Description: AC/DC Power Supply, 1 Output, 15 W, 5 V, 3 A
  • 1 Arduino micro with the firmware for the multichannel HVPS (see download page).
  • 2 to 4 single channel HVPS configured and calibrated. They do not need to all have the same output voltage. Therefore, you can make a MHVPS with a different voltage rating on each channel.

3.2 Initial Hardware configuration

  • Take the number of single HVPS (SHVPS) that you need (2 to 4), and be sure that they have the correct firmware, matching the one running on the Master HVPS board, according to the version table.
  • If the SHPVS are in an enclosure, disassemble the enclosure to take the board out.
  • The onboard safety switch S2 of each SHVPS board must be placed on the 0 position.
  • The bridge h5V near the power jack must be moved to the off position.
  • Check that the header H2 is set to onboard control.
  • Slide the boards in the MHVPS slots. There are 2 important points to remember when installing the boards:
    1) If you are installing less than 4 boards, you must install them in the lowest possible slot numbers. A two board configuration will have boards on slots 0 and 1. See image below:

    Boards should be installed in the lowest possible slot number available

    2) For automatic channel configuration, you must place the SHVPS in channels 0 to 3 by  increasing I2C address number (the I2C address is written on a sticker on the board). If all the boards you install have the same voltage rating, then it shouldn’t be problematic to do so. However, with SHVPS of different voltage ratings, it may be preferable to sort them by increasing voltage ratings, which doesn’t necessary coincide with increasing I2C addresses. If you end up installing the SHVPS so that the I2C addresses are not sorted from smallest to highest, it is necessary to write down which I2C address is connected to which channel.

3.4 Initial firmware configuration

To configure the newly assembled MHVPS, connect it to the user interface. It is assumed the reader is familiar with the user interface from the SHVPS user manual.  When a newly assembled (or badly configured) MHVPS is connected to the interface, the error LED (if installed on the PCB) will be turned on, and the following dialogue box will be shown:

Dialogue box that pops up if an connected MHVPS is unconfigured (or badly configured)

  • If the Master board has never been configured before, the Master Name field is empty. You must enter a name (up to 20 characters), because a nameless board is considered to be “unconfigured”. If the Master board has already been used before, then its name is displayed. You have the opportunity to change it.
  • The second parameter which needs to be configured is the I2C addresses of the boards. There are two possible ways to do so, depending on how you installed the SHVPS on the Master board (see initial hardware configuration, above).
    • If the boards (2 to 4 boards) are installed in the channels by increasing value of their I2C addresses (lowest address in channel 0, second lowest in channel 1, etc.): place the switch I2C addresses on auto and press the green check mark.
    • If the boards are not installed by increasing value of their I2C addresses, you need to place the the I2C addresses switch on the manual position, and enter the address of each board in the respective channel input field. In a configuration with less than 4 channels, the free channels must be assigned an address of 0. The image above shows an example of a 2-boards configuration, with HVPS address 15 installed in channel 0, and HVPS address 12 in channel 1. Then press the green check mark.
    • It takes a few seconds for the MHVPS to be configured, and then the dialogue box will be closed and be replaced by the control panel of each channel. In manual mode, if the dialogue box reappears, it means that the I2C address configuration that you entered is not correct.

3.5 Changing the configuration of a MHVPS

if you change the configuration of a MHVPS, such as removing a channel, or exchanging the HVPS on a channel (for example replacing a 5kV SHVPS by a 2kV SHVPS on channel 0), the Master board can detect the change of configuration in most situations, and you will be presented with the configuration dialogue mentioned above. This allows you to perform a new automatic scan or to enter the addresses of the modified configuration manually.

However, there are a few situation in which a MHVPS won’t be able to detect a change of configuration by itself:

  • You add a channel (e.g. going from a 3 channel configuration to a 4 channel configuration): in this case, the new installed channel will be undetected and you won’t be able to use it.
  • You keep the same channels, but change their order (for example swap channels 0 and 1): in this case, commands related to the state of the high voltage switch (placing the channel on off, on-DC, or on-Switching) will be applied to the wrong channel.

What you need to do in these two cases case is to force the MHVPS to reconfigure :

  • connect the MHVPS to the user interface
  • Click on the button with the tools icon to access the configuration options (on the panel of channel 0)
  • Press on the Reset board config button (eraser, highlighted in green below)

    The erase button resets the configuration of the MHVPS

  • The interface will close, and you should see the MHVS appear as “unconfigured” in the list of devices you can connect to
  • Connect to the board, and you will see the configuration dialogue that allows you to update the board configuration.

4 Graphic user interface (GUI)

The user interface is identical for the MHVPS and SHVPS. Please refer to the SHVPS manual for more info. Once you connect to the board, a number of control panels corresponding to the number of installed channels pop-up. The name of the Master board, and channel number are indicated at the top of each panel to easily identify which panel corresponds to which channel.

Main panel for channel 0 of a MHVPS

The panel of the MHVPS is very similar to the panel of the SHVPS, so controls and indicators will be familiar. There is less options and settings at this time, but it will be added with time, so that most of the SHVPS options will also be available in multi-channel configuration. A few points about the interface:

  • The Stop button (cyan square) allows you to close the interface. It is only present on the panel of channel 0. When pressed, it closes communication with all connected channels.
  • The help button (green square) allows you to display a context help window giving you information of the function of the controls and indicators. Only present on the panel of channel 0.
  • The memory button (blue square) displays a dialogue showing you the actual parameters of the channel (i.e. the same information present on the current channel settings indicator from the main panel) and the content of the memory for the channel. You can either close the dialogue box or save the current settings to memory. Caution: clicking the save button not only saves the parameters of the channel concerned by the dialogue window, but is also saves the respective settings of all the connected channels. In other words, it is not possible to save only the state of a single channel. Consequently, you should first set all the channels in the configuration you want to memorize, and then use the memory dialogue box of any of the channel and press the save button.
  • The feedback button (yellow square) allows you to query the feedback voltage of each channel. When the channels are either off or in DC mode, the feedback voltage is queried regularly, and this button is not necessary. However, as soon as one or more channels are in switching mode and turned on (i.e. On + Switching), automatic update of the output voltage is disabled, as it interferes with the generation of the switching pulse and phase shift. In this situation, you can press the feedback button to refresh the voltage value displayed in the Feedback indicator of each channel. This button only appears on channel 0, but pressing it updates the feedback indicator of every channel.
  • The tools control (red square) displays the option dialogue box which allows you to perform the following operations:

    Configuration dialogue for the MHVPS interface

    • Use channel 0 as Master for: select parameters such as the switching state (on/off DC/Switching), the voltage setpoint and the frequency to be controlled by channel 0. The checked parameters will disable the respective controls on all channels except channel 0, which you can use as a master to control all the channels. You can for example turn on/off all the channels at the same time, or impose the same voltage on all of them.

      Channel 0 used as Master to control the frequency, voltage, and switching mode of all connected channels

      The above image shows an example with 2 connected channels, where channel 0 has been selected as the master control for the switching state, voltage setpoint and frequency. The corresponding controls are therefore disabled on channel 1, and the switching state (on-DC in this example) and frequency are identical in the Current Channel Settings info box of the two channels. The voltage setpoint is also controlled by channel 0.

    • Define a safety voltage limit: same as for the SHVPS, you can define, for each channel, a voltage that shouldn’t be exceeded. This can be used to limit the output voltage to a value lower than the board maximal rating, in order to avoid a wrong manipulation from the operator, in case sensitive equipment is connected to the output. If you use channel 0 to control the voltage of all channels (see previous point), only the limit of channel 0 is taken into account.
    • Query the error code (see below)
    • Reset the board configuration (See changing a MHVPS configuration above)
    • Close the dialog box (green check mark) after defining a safety voltage value or changing the parameters controlled by channel 0.

5 Error Codes

If malformated commands are sent to the MHVPS. The error LED will turn on. The user interface is programmed in order to avoid these situations (with one exception described below), and placing the board in an error condition is more likely to happen if you send direct commands to the board (for example by writing your own program).

When using the user interface, the two following situations trigger an error:

  1. When you just installed channels in a MHVPS, or changed the channel configuration of an MHVPS, but this is normal and will cause the appearance of the configuration dialogue. Once the board is configured, the error will be cleared (the error LED will turn off).
  2. Custom Waveform is not yet implanted with the MHVPS so when you change the switching mode and go through the waveform mode, it will trigger an error 0x08 (see below). It is without consequences. The effective switching mode is displayed in the channel mode indicator. If you want to clear the error flag, see below.
  3. If you use channel 0 to control the voltage of all the channels, and if channel 0 has a higher voltage rating than some of the other channels, then it is possible to send a voltage set point exceeding the authorized range to some of the channels, which causes an error 0x05 (see below)

In any case, if the Error LED turns on, you can check the error code and find the cause of error in the following table.

  • If you are using the user interface, you can query the error code using the options dialog accessible by clicking on the tools button. The button to query the error code is the white exclamation point the red circle. This will show you the error code, and clear it, so the error LED will turn off.
  • If you are using the HVPS_functions.lvlibp library, there is a function called (note that is is not listed on the main tool palette, but located in the support_VIs subfolder in the library). There is a boolean input that lets you decide whether you want to clear the error flag after reading.
  • If you are sending direct commands to the MHVPS, you can use QE to query the error, and CE to clear the error after you have read it.

This table lists the error codes and their causes. Some error codes are critical and are sign of a missconfiguration or malfunction of the unit, whereas some are information of a command sent by the user, which cannot be applied.

Error codeCause
0x00No error (Red LED is off)
0x01One or more boards could not be initialized at startup (critical). Check that the addresses of each board and number of detected channels are correct (QC and QI2C commands). This error triggers the appearance of the configuration dialog when connected to the user interface.
0x02One or more boards didn't reply to request to send voltage rating (critical). Check that the addresses of each board and number of detected channels are correct (QC and QI2C commands)
0x03Channel requested to returned two bytes, but didn't respond or sent wrong number of bytes (critical).
0x04User sent a board specific command to a channel number that doesn't exist (not critical)
0x05Voltage setpoint outside of the channel voltage range (not critical). Voltage is capped to the board's maximal voltage
0x06At least one board is not running the correct firmare version. Expect strange behaviour (semi-critical). Update the firmware of both the SHVPS and the MHVPS to their respective latest versions.
0x07Cannot set frequency on a single channel (temporary limitation) (not critical)
0x08Invalid switching mode. Valid switching modes must be 0, 1 or 2 (not critical)
0x09Frequency set point exceed the maximum allowed value (5000 Hz) (not critical)
0x0AToo long string transferred over I2C (EEPROM reading problem) (semi-critical)
0x0BFrequency set point lower than 0.001Hz (not critical, 0.001Hz is used instead)
0x0CCommand send on serial link not recognized (semi-critical: no action is taken)

6 Integration with other instruments

The integration with other instruments is similar than for the SHVPS, so please refer to the SHVPS user manual. The library of LabVIEW functions works with both SHVPS and MHVPS. The functions that applies to the MHVPS have a bold M at the top of the context help describing the function. (either S/M for functions that apply to both versions, or M for functions that apply only to the MHVPS). Functions that allows to set a parameter usually have 2 inputs (in addition to the usual HVPS handle and error cluster): the value of the parameter, and the channel to which this parameter should be applied. If you want to apply the parameter value to all connected channels, wire the value -1 to the channel input (i.e. -1=all channels)

If you add the library to your user.lib folder in your LabVIEW installation, you will have access to the main functions to communicate with the multi-channel HVPS through the MHVPS palette (see image below).

Function palette for the MHVPS

If you want to use another programming language and send commands directly to the MHVPS, you can find the list of commands here. They are basically the same as for the HVPS.