Archive | Software

Python HVPS user interface

In the spirit of our open-source project we are now developing a python interface to replace (or complement) the LabVIEW interface.

The python interface is multiplatform and can therefore run on Windows, Mac OS, Linux, etc. It is designed with touchscreens in mind, and is easy to use on tablets, or even a Raspberry Pi with the official 7” touchscreen. Keyboards shortcuts makes the use of the interface easy to use on a system with a physical keyboard.

Download 2.7

1 Board PCB files

1.1 v4b3

1.2 v4b2

2 Drivers and components

3 User Interface

3.1 Version 2.7.1

3.1.1 Multiplatform Python Interface

3.1.2 Labview Interface

4 Firmware

4.1 Single Channel HVPS

4.2 Multi Channel HVPS

4.3 Testing programs

5 Enclosures

5.1 Full Enclosure

5.2 Minimal Enclosure

6 Documents

  • Bill of Materials BOM_SHVPS_v4b2.xlsx
  • Poster presented at the 19th SPIE conference on electroactive polymer actuators and devices, Portland, OR, march 2017. HVPS_poster


Switching edges

Result of the switching speed measurement (click to enlarge)

The aim of this test is to characterise the shape of the high voltage square signal generated by the HVPS when in switching mode. It is also the speed at which the HVPS reacts when the on/off button of the GUI is pressed (i.e. when the the HVPS changes its switching mode from off to any other mode, or the opposite.

To perform this test, the HVPS is placed in switching mode and its output at different frequencies (1, 10, 100 and 1000Hz) is recorded. Press the Start button to launch the acquisition. The required recording time is displayed at the bottom left corner of the window. The test is performed at the highest voltage rating of the unit (e.g. 5000 V for a 5 kV HVPS).

Once the acquisition is finished, you can see the shape of the switching profile in the graph indicator. The frequency of the displayed curve can be chosen at the top right corner of the window between the 4 acquired frequencies. The lower part of the window gives a quantified description of the switching profile, such as the rise time and fall time. Typically switching time lower than 300 us can be obtained for a 5kV HVPS.

The button Save Data can be used to save the data in the excel file, whicle the Cancel button can be used to quit without saving the results.

Default and manual calibration

There are basically 3 options to calibrate the HVPS depending on the material that you have at your disposal. Using the default calibration (section 1) requires no tool but is the less accurate. You can perform a manual calibration (section 2) if you have a high voltage voltage probe and a multi-meter. The precision of this method depends on the number of point you take. Finally, if you have a NI-DAQ unit, you can perform an automatic calibration of the HVPS.

1 Default calibration

When you perform the initial configuration described in section 1.2 above, a default calibration factor is stored into the HVPS. The HVPS ADC transforms a 0-5V analogue voltage to a 10 bit values. It therefore expects to map 0 to 5V between 0V and the maximal rating of the HVPS. However, the resistive divider which steps down the high voltage to a value that can be fed to the microcontroller has a slightly higher ratio to enable the detection of an overvoltage. The ratio for the different HVPS voltage ratings is given on this page in column c1. When you perform the configuration mentioned above, the HVPS is initialized with a linear correction factor c1 given in the column c1 of the table.

This default configuration is a good guess, but is not extremely precise, due to the uncertainty on the resistance values and other imperfections. The graph below shows the error in volt between the set point and the true output voltage for a 5kV HVPS. It can be seen that the error is (for this particular unit) comprised between +/- 50 V, i.e. 1% of the full scale

2 Manual Calibration

It is recommended to calibrate each HVPS to increase the precision. We recommend to use the calibration routine included with the interface, but this requires some external equipment and components. If you don’t have them, you can proceed with a manual calibration. The only equipment you need is a high voltage multimeter probe that can sustain the full voltage output of your HVPS (such as the High-voltage probe, 34136A, Keysight). Although these multimeter probes have a defined voltage division ratio (typically 1000), a better accuracy can be obtained by performing a calibration of the probe (see section 2 of the automatic calibration page)

Here is how to proceed to perform a manual calibration:

  1. Establish a direct serial connection to the HVPS
  2. Set the calibration factors C0=0, C1=1, and C2=0 by issuing the commands
    SC0 0
    SC1 1
    SC2 0
    It is important to disable any correction before proceeding to the next step. setting C0 and C2 to 0 and C1 to 1 leads to no correction at all: y=c1 x = x.
  3. Connect the output of the SHVPS to the HV probe and the multimeter
  4. Launch the GUI
  5. Place the HV enable switch on position 1
  6. Select different voltages using the voltage set point dial. Write down the voltage read by the HVPS (feedback voltage in the GUI), and the voltage indicated by your multimeter.
  7. Multiply the voltage read on the multimeter by the probe ratio (e.g. 1000), or by your own calibration equation to obtain the true output voltage
  8. On a graph, plot the true output voltage form the previous step (y axis), as a function of the voltage read by the HVPS (x axis).
  9. Use curve fitting to obtain the correction coefficients. In a perfect linear world, we physically expect to obtain a curve of the form y=c1 x. However, we have found that a correction equation of the form y=c0 + c1 x + c2 x^2 leads to a much better accuracy. This 2nd order polynomial correction is implemented in the HVPS with the coefficient c0, c1, and c2. But you can easily used a purely linear correction if you prefer by assigning a value of 0 to c0 and c2.
  10. Once you have calculated the coefficients for your HVPS, close the GUI and establish a direct serial connection to the HVPS.
  11. Set the coefficients to the values you desire using the commands
    where is the value you want to assign to each correction coefficient. Important: there is a 1E-6 multiplier for coefficient c2: if you calculate a coefficient c2 of 1.45e-6, you have to enter the command SC2 1.45

2.1 Example

The graph above show a manual calibration of a 5kV HVPS with 14 points. The voltage read by the HVPS and displayed in the interface is on the x axis, and the voltage read by the voltmeter (after correction by the probe calibration) is on the y axis. A 2nd order polynomial is fitted to the data, leading to the equation displayed on the graph. To enter this calibration into the HVPS, the following commands needs to be used:

  • SC0 50.63
  • SC1 1.055
  • SC2 -4.84

HVPS Initial Configuration

Once you have assembled a board (assembly instructions for HVPS) and placed it in an enclosure (assembly instruction for the minimal enclosure), you need to configure it and calibrate it before it can be used.

The drivers and the LabVIEW user interface or Python user interface must be installed on your computer.

For the SHVPS to work correctly in single-channel mode, the jumper h5V must be in the on position. The header H2 can be changed depending on your usage, but the GUI requires this jumper to be on the Onboard position. Header H2 should only be changed when the board is not powered.

1 Upload the program to the HVPS microcontroller

  1. Get the most recent firmware from the Download page (, where x represents the version), and decompress it on your computer.
  2. The High Voltage enable switch (S2) must be in the off position.
  3. Connect the SHVPS to your computer with a micro-USB cable (the power adapter can be used, but is not required at this stage).
  4. Using the Arduino IDE, compile and upload the code to the microcontroller (see HVPS drivers for more information).

2 Perform the initial configuration

To perform the required initial configuration, you can either use the LabVIEW interface (see 2.1), the Python library (see 2.2), or you can use a simple command (see 2.3).

2.1 Using the LabVIEW interface

  1. Connect the 6 VDC power adapter to the HVPS.
  2. Connect the HVPS to the computer with a micro-USB cable.
  3. Launch the interface. A dialog box will pop-up to attract your attention that the HVPS is not configured

    Press OK to close the dialog box
  4. In the GUI select the tool icon (Access HVPS configuration options) at the top right of the window.
  5. In the dialog box that pops up enter Bazinga! in the password text field to unlock the configuration options
  6. Press the Reset to defaults button
  7. In the Dialog box that opens, check all of the options. Enter the value of the I2C address attributed to the HVPS (as defined on the assembly test sheets), the voltage rating of the HVPS, and the name of the board.
  8. Press Reset settings to store the parameters in the HVPS
  9. The main window should display the name of the board (red rectangle). The maximal voltage indicated on the setting dial should correspond to the voltage rating of the HVPS (blue rectangle). You can display the parameters saved into the memory of the HVPS by pressing on the content of the HVPS memory button (green rectangle).
  10. The HVPS is now ready to be used (refer to the GUI manual), but for better accuracy, it should be calibrated first.

2.2 Python library

The python library provided with the Python user interface enables to perform the initial configuration. The initial configuration cannot be performed with the executable of the Python user interface. You must use the library of function and have Python installed. Refer the the using the source code to run the Python user interface from the source code.

Although the library of functions primarily provides a class to control and interface the HVPS, it also has a main function, the library can therefore be launched as a stand-alone programme for the terminal using the command (might be python3 if you have both python2.x and 3.x installed on your machine):


The main function of the library provides a basic terminal to send direct command to the HVPS. However, if it detects that the connected HVPS is unconfigured, it will propose to perform the initial configuration. Just follow the prompts.

2.3 Direct Command

You can perform the initial configuration of the HVPS with a simple command sent on the serial link:

  1. Establish a serial connection with the HVPS (refer to direct communication with the HVPS)
  2. Enter the command Conf XXXX where XXXX is the voltage rating of your board, in order to automatically initialize the HVPS. XXXX must be one of the 5 standard voltage ratings described on the website (5000, 3000, 2000, 1200, or 500). Specifically, the parameters initialised are indicated below. They can all be modified using the serial commands.
    • Vmax, the voltage rating of the board, corresponding to parameter XXXX
    • C1, the ideal voltage calibration, based on this table (with C2=C0=0)
    • Gains Kp, Ki, Kd of the PID regulator
    • Name of the board to MyHVPS. Can be changed with SName command once initialisation is done.
  3. The HVPS is now ready to be used, but for better accuracy, it should be calibrated first.

Trigger/Strobe pulse

1 Parameters of the trigger/strobe signal

Access to the trigger/strobe options

When the HVPS is in switching mode, it can generate a low voltage (5 V) signal synchronised with with the High Voltage output. This signal is generated on pin 7 (T) of the multifunction 10-pins header located on the HVPS PCB.  It can be used for example as a trigger signal to synchronise external equipment on the output of the HVPS, or as a strobe signal to freeze the motion of an actuator connected to the power supply.

The trigger/strobe pulse can be configured by accessing the strobe option menu from the HVPS options dialogue box (blue square).

This opens a new window that allows configuring the duration of the trigger pulse, and its position (in fixed mode) or its shifting speed (in sweep mode)

The position and duration of the strobe pulse are defined as a function of the period of the HV signal.

  • The pulse location is defined between 0 and 1 and represents the position of the trigger/strobe pulse with respect to the HV switching signal. A value of 0 means that the raising edge of the trigger signal is synchronised with the raising edge of the HV signal, and a value of 0.5 means that the raising edge of the trigger signal is synchronised with the falling edge of the HV signal. In the illustration below the location of the trigger pulse is 25%: the raising edge of the trigger pulse is located at the middle of the positive segment of the square signal.
  • The duration of the trigger/strobe signal is defined as a fraction of the HV signal period, as for the position. A value of 0.5 means that the signal stays high for 50% of the duration of the HV signal period. In the example below, the trigger/strobe pulse is 10%.

Strobe/trigger pulse. The green curve is the high voltage signal, and the blue dashed line represents the strobe/trigger signal.

By default, when the HVPS is powered up, the trigger/strobe pulse defaults to a position of 0 and a duration of 0.5, which means that the signal is mimicking the HV signal. Even though the strobe pulse is configured by default, it is not turned on (see below).

The strobe/trigger menu window is shown on the illustration below:

Menu to configure the trigger/strobe pulse

  • Strobe mode (blue rectangle): There are 3 different modes for the trigger/strobe pulse: Off, Fixed, and Sweep. Pressing the button allows changing from one mode to the other. By default, when the HVPS starts up, the Strobe mode is Off.
    • Off: no strobe signal is generated. The pin T of the multi-function 10-pins header stays continuously at 0V. This is the default mode when the HVPS starts
    • Fixed: the pulse is located at a fixed position defined by the control Pulse Position (see below). If the pulse is used to drive a strobe light, this allows to freeze the motion.
    • Sweep: the pulse position is gradually shifted at a speed defined by the control Sweep speed (see below). If the pulse is used to drive a strobe light, this allows to slow down the apparent motion.
  • Pulse position (green rectangle): This control sets the location of the rising edge of the strobe/trigger pulse (see graph above). The pulse position is defined between 0 and 1 and represents the position of the trigger/strobe pulse with respect to the HV switching signal. A value of 0 means that the raising edge of the trigger signal is synchronised with the raising edge of the HV signal, and a value of 0.5 means that the raising edge of the trigger signal is synchronised with the falling edge of the HV signal. This control is only useful when the strobe mode is set to Fixed (see above).
  • Pulse duration (red rectangle): This control sets the duration of the strobe/trigger pulse. The duration of the trigger/strobe signal is defined as a fraction of the HV signal period, as for the position. A value of 0.5 means that the signal stays high for 50% of the duration of the HV signal period. This control is useful when the Strobe mode is set to Fixed or Sweep.
  • Sweep speed (cyan rectangle): This controls defines the time is takes in ms to shift the strobe pulse along one period of the HV signal. This control is only useful in sweep mode. If the strobe/trigger signal is used to control a stroboscopic light source, using generating a sweeping strobe pulse allows to slow down the apparent motion of an actuator driven by the main signal of the HVPS. A value of 1000 ms means that the apparent frequency of the motion as seen through the stroboscopic illumination will be 1 Hz. The sweep speed must logically be much slower than the period of the main driving signal.

The parameters of the trigger/strobe pulse (mode, position, duration, speed) are not saved in the HVPS non-volatile memory. When the HVPS is powered up, it will default to the following parameters:

  • Strobe mode: off
  • Strobe position: 0
  • Strobe duration: 0.5

This means that no pulse signal will be generated, but a simple change of the strobe mode to Fixed generates a 0-5V signal mimicking the main HV signal with superimposed rising and falling edges.

Even if the strobe mode is set to Fixed or Sweep, no pulse will be generated if the HVPS is in a switching mode other than switching (i.e. Off, DC, or Waveform).

2 Using the trigger pulse for stroboscopic illumination

One of the applications of the strobe/trigger signal is to drive a high power LED for stroboscopic illumination synchronized on the HVPS output. For such an application, the T pin of the HVPS multi-function 10-pins header cannot be used directly to drive the LED. The signal should be connected to an amplification system, such as a transistor. The image below shows how the T output pin of the HVPS can be used to drive a high-power LED for stroboscopic illumination.

The trigger output T can be connected to the gate of a MOSFET to drive a LED in order to provide synchronized stroboscopic illumination

For stroboscopic illumination, you want to keep the pulse duration as short as possible (typically 5% or less of the total period) in order to freeze the motion. It is therefore necessary to use a high power LED in order to have enough light intensity despite the very low pulse duration. As the pulse duration is defined as a fraction of the total period, the light intensity remains constant when the driving frequency is modified.

The video below illustrates the use of the the trigger function for stroboscopic illumination, showing the required manipulations in the GUI.


General compatibility table

SHVPS firmwareMHVPS firmwareGUIPCBVersion summary
91.52.9v4b2, v4b3, v6b1Improved python interface and python library of functions
81.42.8v4b2, v4b3, v6b1python interface. Standalone version with battery.
71.32.7, 2.7.1v4b2, v4b3, v6b1Initial release of the PetapicoVoltron project

We recommend to use the first line of the table (i.e. the most recent version)

Most Recent Version: GUI v2.9 / SHVPS v9 / Board v6b1

Direct Access to file repository:

Below is the description of each file included in this release

General Files



Enclosure Files

Full enclosure files. However, these are not compatible with the new version of the board (v6), due to a change in the location of the power jack.

Previous versions

GUI v2.8 / SHVPS v8 / Board v4bx

GUI v2.7 / SHVPS v7 / Board v4bx


Integrating the power supply with other instruments

The GUI is well suited when the HVPS is used in stand alone mode. However, it is often desirable to integrate the power supply with other instruments, such as a data acquisition system. The HVPS is designed for easy integration into more complex setups. All of the HVPS functionalities are accessible through simple plain text commands sent via a serial connection through a USB cable. This allows using the power supply with any programming language.

There are different ways to send commands to the HVPS, which are described below


We provide a LabVIEW library with VIs allowing to access the HVPS main functions. It is important to select the library version that corresponds to the firmware loaded on the  HVPS. The following table shows which interface version corresponds to which firmware. The library version has the same number as the graphic user interface.

SHVPS firmwareMHVPS firmwareGUIPCBVersion summary
91.52.9v4b2, v4b3, v6b1Improved python interface and python library of functions
81.42.8v4b2, v4b3, v6b1python interface. Standalone version with battery.
71.32.7, 2.7.1v4b2, v4b3, v6b1Initial release of the PetapicoVoltron project

The library is the file HVPS_functions.lvlibp that you can find on the download page. This pre-compiled library works with LabVIEW 2015 (other versions will follow) on MS Windows (not on OSX). For other systems, you can use the source code of the interface, which includes the library (on the download page).

The library is separated in two groups of functions: a) the main functions, and b) some support VIs, the latter being mainly secondary functions that are not useful for the ordinary user. All of the main functions have file name that describe their functionality and have clear documentation on what they do, what are the required inputs, and what are the outputs. The first line of the context help of each function is a bold text being either S/M, S, or M. It indicates whether this function applied to single channel HVPS (S) or multi-channel HVPS (M). Some of the functions that apply to both S and M versions have an input named channel. If you are using a SHVPS this input has no effect and should be left unconnected.

The easiest way to use the library is to place the file HVPS_functions.lvlibp in your instr.lib or user.lib folder which then automatically adds the group of functions to the Instrument Drivers or User Libraries palettes respectively. These two folders are in your LabVIEW installation directory, most likely C:\Program Files (x86)\National Instruments\LabVIEW 20xx.

The following image shows the main function palette for a SHVPS, when the library is located in the user.lib directory.

Library palette for the single channel HVPS

Only the main functions are included to the palette so as not to clutter it. To access the support functions, add them from the project manager window, after adding the library to your project.

Functions usually start with either Set_ or Query_ to respectively set the value of a parameter, or query the current value of this parameter. Note that Set_ functions are in fact “set and query” as they also return the new value of the parameter as understood by the HVPS.

A program must start with the Open function, whose input is the name of the serial port to which the HVPS is connected. This VI initiates the communication with the HVPS, sets the mode to on-DC, and sets the output voltage to 0V. It returns a cluster with a handle to the HVPS, and useful information about the unit (such as the board voltage rating). The cluster is then used as input to all the other sub functions. If the HVPS cannot be initialized, it will return an error. If no error is returned (the HVPS has been correctly initialized),  the High Voltage enable switch can be safely placed in the “on” position, because the initialization VI imposes an output voltage of 0V.

After the initialization, you can chain as many functions as you need to perform your tasks.

Your program should end with the Close function. This will set the output voltage to 0V, and close the serial link.

It is important to use the open function only once at the beginning of your program, and close at the end, and not have a series of open-“some functions”-close. This for two reasons: 1) the open command involve some information transfer between the HVPS and the computer. This takes some time and would slow down the program. 2) the open commands resets the box in a starting state (Voltage to 0, DC mode, etc.) so you would cancel all of your previous settings.

The following image (click to enlarge) shows a program example with an event structure. The HVPS is initialised, using the com port number to which it is attached (COM4 in this example). When the user modifies the value in the control Vset in, this value is sent to the HVPS (left). In the absence of input from the user, the HVPS output voltage is queried every 500ms and shown on the indicator Vout. When the user presses the stop button, the communication with the unit is closed and the program ends.

Example of programme using the LabVIEW library

2 Using a programming language of your choice

You can use any language that has libraries to send/receive commands on a serial port (Matlab, Processing, C, etc.). The settings you need to use for the serial communication are:

  • COM port to the correct port name corresponding to the HVPS
  • Bits per second: 115200
  • Data bits: 8
  • Parity: None
  • Stop Bits: 1
  • Flow Control: None

You need to end each command you send to the HVPS by a carriage return (0x0D).

The list of commands that you can send to the HVPS once you have established communication is given on this page.

Using the HVPS without a computer

Back to the HVPS User Interface

A computer is necessary to modify the settings of a HVPS. However, it is possible to store the current settings of the HVPS in its memory. Whenever the HVPS is powered up without being connected to the interface, the HVPS runs in the stored configuration. This is particularly useful for a demonstrator or an experiment that always needs the same input, as it allows powering the device without the need of a computer.

Any combination of settings can be saved in the HVPS memory. However, the 3 most useful combinations for stand alone operation are:

  1. On and switching mode on internal timer with a voltage >0 (the source outputs a square signal at the saved voltage and frequency). If a limited number of cycles is defined, the HVPS automatically turns off once the cycles are executed. A new series of pulses can be restarted by pressing the push button.
  2. On, with the switching source set to the push button and with a voltage >0. The button operation mode (latching/non-latching, see manual control via the push button) is also saved in memory. In this mode, the user manually controls whether the output is turned on with the push button.
  3. On, with a continuous (DC) voltage >0.

1 Saving parameters into memory

The image below shows how saving parameters in the memory works:

Contents of the Memory

  • The first thing to do is to set the HVPS to the desired state. All the parameters inside the green rectangle (displaying the current setting of the HVPS) are saved into memory (in this example: source on, switching, on internal timer, voltage internally regulated, voltage set to 2000V, frequency of 20Hz, 100 cycles).
  • Saving the actual parameters into memory is done by pressing the Save button on the interface (red rectangle)
  • To check the content of the memory, press the memory button (yellow rectangle). A dialogue box pops-up, with the content of the memory. The indicators within the blue contour show in which state the HVPS starts when it is not connected to the user interface. The voltage indicator is flashing in red, because the stored voltage is higher than 0V, which can be potentially dangerous (see below). The other indicators of the memory dialogue, show constant parameters of the HVPS, such as its voltage rating, firmware version, I2C address and calibration. The operation mode of the push button (latching/non-latching, see manual control via the push button) is also saved in the memory.

2 Starting the HVPS using the parameters stored into memory

The parameters stored in memory are loaded when the HVPS is powered up. However, when the HVPS is connected to the GUI interface, these parameters are overridden, and the HVPS always starts in a safe mode (DC output at 0V). To use the HVPS with the stored parameters, it simply needs to be powered up without being connected to the GUI. This can be done by plugging only the 6V D.C. power jack, and not the USB cable. In other word if you have just saved some parameters into memory via the interface, proceed as follows:

  • Close the interface and unplug both USB cable and power supply to completely shut the HVPS off.
  • Place the HV enable switch in the off (0) position.
  • Connect HVPS to the power supply and it will automatically load the saved configuration.
  • HV enable switch in on (1) position to enable the HV output.

If you save the HVPS in switching mode on internal timer with a limited number of cycles, a new series of pulses can be started by pressing the HVPS push button.

3 A note of caution

A useful combination of parameters logically has a voltage >0. However, when a voltage >0 is stored in the memory, it can be present at the output of the HVPS as soon as power is applied (and the HV enable switch s1 is placed in the on (1) position). This is potentially dangerous, for example if a user is unaware of the HVPS current settings. Consequently, when the HVPS is not used in stand alone mode, a voltage of 0V (and/or an off state) should be saved in the memory for increased safety. Note that there are two features that should prevent shocks and/or damage to connected devices when using the memory function: the High Voltage enable switch on the HVPS overrides any setting: when it is off, there cannot be a voltage at the output. Always store/manipulate/connect the HVPS with the switch in this position. Additionally, the HV LED on the HVPS is turned on whenever the output is live, and can serve as an indicator for potential danger.


User-defined waveforms

Back to the HVPS User Interface

Although the HVPS is designed to output a DC signal, or a square signal with rapid transitions, it can also output user-defined periodic waveforms. This is an experimental feature which goes beyond what the HVPS has been designed for, but it can be useful to some users. Outputting a custom waveform is done by acting on the high voltage DC-DC converter and is therefore limited in frequency (works best at 1Hz and below).

1 Defining the Waveform

To define a new waveform, open the HVPS options dialogue box from the main window (red square). Press on the Set Waveform button (blue rectangle).

Access to custom waveform functions

Set a waveform

The drop-down list (green square) allows choosing between predefined waveforms (Trapezoid, Triangle, or sine-like) or a user-defined waveform. For each of these waveforms, you can choose if you want the waveform itself, or its square root. In case the HVPS is used to drive a DEA, and using a simple quadratic approximation between voltage and strain, this allows you to decide if the profile should apply to the voltage, or to the strain. For example, if you want a triangular strain profile with respect to time, you should select triangle sq root as input shape.

When you select a waveform (or change any of the other parameters), you see the resulting waveform displayed on the graph. The waveform is relative both in amplitude and time. The amplitude of the waveform is defined by the voltage set point that you define in the interface (i.e. if you have 1000 volts as your voltage set point, then the actual output will be 1000V multiplied by the relative amplitude of the waveform. For the time, the graph shows one period, and the waveform will be repeated at the frequency defined in the interface.

The number of points control (blue rectangle) allows you to define how many points are used to create the waveform. The maximum is 255. If you intend to work at very low frequencies (0.1 Hz or below), use 255. At higher frequencies, you may need to reduce the number of points so that the HVPS can keep up.

The edge duration control (red rectangle) is used only for the trapezoid waveform and enables to define the slope of the raising/falling edge. The duration of the edges is defined as a fraction of period. A value of 0.5 is the maximum, and is equivalent to a triangle signal. A value of 0 is equivalent to a square signal, and should not be used: use the switching mode to obtain a square wave. Indeed the switching mode uses the HV switch based on optocouplers to toggle the state of the output, which can be done very fast, whereas the waveform mode uses the EMCO DC/DC converter, which is very slow.

If you want an output profile that is different from the 3 provided signals, you can define your own waveform. You need to create/edit the file waveform.txt located in the application support folder. The file simply consists of one number per line. Each number is between 0 and 1 to represent 0 to 100% of the voltage set point. You can have up to 255 lines (i.e. points), and they should represent one period of your signal.

Once you have set the parameters, you can transfer the data points to the HVPS (cyan rectangle).

2 Turning on the waveform mode

To use the SHVPS in waveform mode, simply press the switching mode button (blue rectangle) until you are in waveform mode (orange sawtooth with text Waveform). You can set the amplitude of the waveform with the voltage set point (red rectangle), and its frequency with the frequency control (green rectangle). As in the standard switching mode, you can either have an unlimited number of cycles, or stop automatically after a defined number of waveform periods.

How to turn on the customised waveform mode

3 Checking the Waveform

You can use this function for two purposes: 1) Check what waveform is currently stored into the HVPS and 2) check what is the actual output profile of the waveform. The second point is especially important because there can be differences between the defined waveform and the true output, especially if working at frequencies above 1 Hz.

To check the waveform, access the HVPS options dialog (red square), and press the Get Waveform button (green rectangle).

Access to custom waveform functions

The data will be downloaded from the SHVPS and displayed. The blue points are the waveform set points, while the red points are the actual output of the HVPS. To get meaningful values for the actual output, the HVPS must have run in waveform mode for at least one cycle at a voltage set point higher than 0. In the examples below, it can be seen that the waveform is quite well reproduced for a driving frequency of 0.2 Hz, but at 0.5 Hz, one sees a larger distortion. In particular, the EMCO is slow at decreasing its voltage output.

Programmed waveform (blue) and measured data points at 0.2 Hz.

Programmed waveform (blue) and measured data points at 0.5 Hz.

4 Saving the waveform

If you change the waveform of a SHVPS, it will revert back to the previous waveform once you switch the unit off. If you want to memorize the waveform in the SVHPS non-volatile memory, you need to use the save function. See the page about using the HVPS without a computer for more information on how to save the HVPS current parameters into the non-volatile memory.