Design and Implementation of High Voltage Pulse Generator in Energizing Magnetized Coils
ABSTRACT
This paper describes one implementation approach in generating a high voltage pulse to drive four pairs of inductive magnetic coils by charging/discharging a high voltage capacitor controlled by a microcontroller. In the design, an Arduino microcontroller module controls a MOSFET switch to charge the high voltage capacitor. A relay bank controlled by the Arduino controller module is employed to switch the high voltage output to different channels of the magnetic coils with specified polarities. The maximum high voltage level is user programmed by the charging period set by the Arduino controller module. The discharging period relies on the voltage, the capacitance of the capacitor and the impedance of the coils. The development of this device includes customized electronics hardware, system firmware, and software running on the backend control computer. This paper focuses on the design and implementation of the electronics circuits of the High Voltage Pulser Generator.
INTRODUCTION.
One main research theme in the Quantum Matter Institute (QMI) of the University of British Columbia is quantum materials. Electrons in quantum materials engage in highly correlated motions that resemble a complex dance. These correlations give rise to a wide range of astonishing electronic and magnetic properties, evoking profound scientific behavior and challenging the field of condensed matter physics. Research at QMI seeks to unravel and exploit the complex phenomena in novel engineered materials. An equipment called 3D VLEED Single Transfer Chamber [1] is used to run experiments on the research of electron and/or photon particle behaviors in the magnetized field in QMI. The chamber is powered with a high voltage up to 3KV. Four pairs of coils placed inside of the chamber need to be energized with a high voltage pulse up to 250V floated on top of this 3KV voltage. The 3KV voltage is powered by the chamber but the 250V pulser is not supplied. An additional user designed electronics device for generating a high voltage pulse (floating on top of the chamber high voltage) is required in energizing the coils. This electronics device needs to be programmable with the pulse amplitude from 0V~250V for a designated magnetic coil pair with specified polarities. This device should be capable of monitoring the charging/discharging status such as the charging/discharging voltage, current and period. In case the operator needs to abandon energizing the coils after the capacitor is fully charged, a dummy load should be in place to discharge the voltage on the charged capacitor. After investigation and research on high-voltage supplies, there is no suitable off-the-shelf equipment that perfectly meets the requirements for this application. Therefore, a customized device needs to be developed in order to perform this task.
While there are a variety of methods in generating high voltage pulses with electronics circuits, the most straightforward implementation approach is to charge/discharge a high voltage capacitor controlled by a microcontroller while specifying the charging voltage level, charging period and other parameters. The capacitor serves as the energy storage component and the microcontroller works as the control unit in issuing different commands and receiving different kinds of data for the status monitoring. This high voltage pulse generator circuits will be placed inside of a box and installed in the lab. The mechanical dimension and environmental requirements are not major concerns. To simplify the design and expedite the implementation lead time, an off-the-shelf Arduino module is used as the front-end controller. The Arduino controller receives commands issued by the backend control computer and then starts to charge the high voltage capacitor [2]. After the capacitor is fully charged with the specified high voltage, the high voltage capacitor is in steady state and ready to energize the coils in the chamber. The coil energizing process starts from the discharging command sent from the backend control computer issued by the operator. When the Arduino controller receives the discharging command, it turns on a power MOSFET switch and the relevant relays in the relay bank to ensure the high voltage output is directed to power the coil pairs with the specified channel and polarity. The maximum high voltage level is determined by the programmable charging period set by the Arduino controller module and the total energy stored in the capacitor is determined by the capacitance of the capacitor and the charged voltage level [2]. The discharging period relies on the voltage, the capacitance of the capacitor and the impedance of the coils [2]. The Arduino controller also collects real time data and sends the data to the backend computer via the RS232 serial communication port. The development of this device includes customized electronics hardware, system firmware as well as the Human Management Interface (HMI) software running on the backend control computer. The hardware prototype, firmware and backend operation software have been implemented, tested, and verified as per the requirements in energizing the four-channel coils. The electronics circuits design, implementation and testing are presented in this paper.
MATERIALS AND METHODS.
System Requirements for the High-Power Pulser Generator.
The requirements for the high voltage pulser generator are specified in this section. The high voltage pulser needs to be powered by 110V/60Hz AC power supply which is available from the wall plug. The high voltage pulser energizes four inductive channels (coils) and one dummy resistive load for discharging the high voltage in case the high voltage is not needed to be applied to the coils. The charging high voltage is adjustable (range: 0V-250V, precision: 10V). The voltage output polarity is user programmable (+/-). Real-time high voltage can be sent to and read out from the backend control computer.
The controlling logics need to ensure the proper magnetization process of the coils. Due to the inductive nature of the coils, the transient voltage might span hundreds of volts and the inrush current in/out of the coil might rise up to 10~60 times of the normal current level that is present in the stored magnetic energy in the coils when the supply is on/off [3]. Properly designed control logics are required in preventing the electronic circuits and coils from damaging. The control logics include but are not limited to: only one selected output channel at one time; only one selected output polarity at one time; charging and discharging are not allowed to be activated at the same time; the shields potential (3KV) is independent of the charging and the discharging process. The high voltage pulser is floating on top of the chamber shield high voltage, i.e., the voltage is referenced to the chamber shield high voltage.
The high voltage pulser needs to be fully controlled by a backend remote computer. A virtual USB port with RS-232 communication protocol needs to be employed for the communication between the high voltage pulser and the controlling computer. The HMI on the backend computer which sets up the data and/or the operational real time data need to be able to be displayed and monitored on the screen of the computer. The data includes but is not limited to: charging or discharging operation; charging voltage level; charging current level; charging period; channel(s) status: discharging, floating, grounded, etc.; activating specified output channel; setting output polarity (+ / -); tuning the charging voltage (if applicable by remote control) and acquiring status feedback.
Design and Implementation for the High Voltage Pulser Generating System.
As per the system requirements, the magnetizing high voltage pulser system design is depicted in Figure 1. As specified in the system diagram, the electronics device includes the following modules: Backend Control Computer, Arduino Controller, High Voltage Generator Module, High Voltage Pulse Generator, Relay Bank Driver and Control Module and High Voltage Monitor Module. The coil pairs shown in the diagram are not part of the electronics device. The main function modules are described in the following sections.

Upon the customer setup, the overall system can be biased on top of the positive side (HV+) or on top of the negative side (HV-) of the chamber shell high voltage, or can be left to be floated to the high voltage potential. Therefore, isolation is required between the backend computer and the system electronic circuits.
For the Backend control computer, a desktop or laptop computer is used to issue the commands, displaying and monitoring the real time data. The USB port in the computer is configured as RS232 serial port to communicate with the Arduino module. The HMI is developed to collect application data and for the user to issue operating commands.
The Arduino MEGA 2560 Rev 3 [4] is used as the microcontroller module in the design. It communicates (by RS232 port) with the backend control computer in accepting commands and transmitting real time data. It also controls the operations in generating/tuning high voltage, generating the high voltage pulse, charging/discharging/dumping the high voltage pulse to the coils or the dummy load.
The high voltage generator module generates high voltage in charging the pulse generator circuits. The amplitude of the high voltage output will be the peak value of the pulse to energize the coils. The High Voltage Generator Block Diagram is shown in Figure 2. 5V DC input power is converted to 8V~34V DC adjustable voltage and then a flash transformer further converts it to a voltage up to a maximum of 340V DC. The high voltage output can be adjusted in the range of 80V~340V by the feedback and high voltage adjustment circuits. The high voltage and current outputs are also sent to the Arduino controller for the purpose of monitoring and displaying.

The high voltage pulse generator module uses the output of the high voltage generator to charge a capacitor and to connect to the load of the coils for discharging. Under the control of the Arduino module, the voltage charging circuits generate the desired pulse to energize the coils. The high voltage pulse generator block diagram is shown in Figure 3.

The circuits operate as follows: when supplied with high voltage, a capacitor voltage charges to match the input. During the charging process, the power MOSFET switch is kept at the OFF state. The charging circuits will charge the storage capacitor. A resistor is connected in series with the capacitor forming an RC circuit. The capacitor will charge up gradually through the resistor until the voltage across the capacitor reaches that of the supply voltage.
After the storage capacitor is fully charged, it is ready to be discharged in energizing the coils. The backend control computer can issue a command to disconnect the high voltage supply and bring the power MOSFET into conductive status. The positive side of the storage capacitor will be grounded and therefore a negative pulse will be applied on the coil.
This high voltage monitor module samples the voltage of the discharging pulse and the current of the discharging pulse. This module is used to monitor the status of the high voltage pulse and current. All the data is fed back to the backend computer and displayed.
The relay bank Driver and control module is used to control the connection between the discharging circuits and the coils. Figure 4 shows the control principle for one channel.

The driver control circuits are used to drive and control the on/off of the discharging circuits to the coils. Commands are issued from the backend computer and the MOSFET drivers will then be connected to the relay coils. The control signals need to be isolated from the backend control computer and have the same voltage reference with the relays. The relay module HE1aN-W-DC12V [5] is employed for the application. The coils are connected to the discharging circuits at one time for one pair of coils through controlling the on/off states of the relay banks. The polarity of high voltage applied to the coils are also controlled by the associated relay bank as per the command issued from the control signals.
As an option, the shield of the chamber can be connected to high voltage positive side, negative side or floated. This is also implemented by this module.
RESULTS.
The test setup is described first in this section. Then, the theoretical analysis of the RC charging/discharging processes are presented. The test results would validate all the specified functionalities as outlined in previous sections. The generated high voltage pulse output would be checked for both of the specified voltage range and also the charging periods. Both of the discharging voltage and current are measured in the tests to verify it meets the requirements in energizing the coils. The discharging test results in powering the magnetized coils are shown for the initial and revised designs.
Test setup.
The high voltage pulser generator testing setup is shown in Figure 5. The magnetizing coils are used to simulate the true load in the magnetizing chamber. The coil inductance and other parameters are identical to the coils installed in the magnetizing chamber. The shell high voltage power supply is used to simulate the chamber shell high voltage, which is actually 3KV but here is set at 30V only in simulating the test environment. The purpose of using the low voltage instead of the 3KV actual shell high voltage is for safety concerns during the testing. As long as the generated high voltage from the generator is floated on top of the chamber shell voltage to verify the isolation is properly set up, the simulated value used for testing is not a concern. The high voltage pulser generator board is powered by the wall supply through a barrel jacket on board. The RS232 port is used to communicate with the backend control computer for issuing commands and capturing real time data [6].

Tests results.
In this section, the theoretical charging/discharging voltage and current for the RC circuits are depicted and the actual implementation outputs are presented. For the actual implementation, the test results are also compared with initial and revised designs.
As shown in Figure 6, the time required for the capacitor to fully charge is equivalent to about 5-time constants or 5T (T = RC) [7]. The charging voltage and current indicate that after a period equivalent to 4 time constants (4T) [6], the capacitor in this RC charging circuit is virtually fully charged and the voltage across the capacitor is now around 98% of its maximum value, 0.98Vs. After a time of 5T the capacitor is now fully charged and the voltage across the capacitor, Vc is equal to the supply voltage Vs. As the capacitor is fully charged no more current flows in the circuit. After the time period of 5T [7], the circuits are in the steady state period.

The discharging voltage and current curves are shown in Figure 7. As with the previous charging circuit, the voltage across the capacitor is equal to 0.5Vc at 0.7T and the steady state fully discharged value is finally reached at 5T [8]. By picking up the appropriate charging capacitor (330uF/500V used in the design), the charging time can be specified as per the system requirements and hard-coded by the Arduino microcontroller.

The following system tests are performed based on the setup as shown in Figure 5. The baud rate for the RS232 communication port is set up at 11,520 bps. The charging voltage levels are tested with 50V, 100V, 150V, 200V and 250V respectively. The charging period can be up to one minute for voltage of 250V. The charging process is monitored by the operating software with displayed real time high voltage level and also the charging time. After the charging voltage reaches the specified level, the charging process flagged as READY status.
The tests of energizing coils are performed by issuing the discharging commands for a specified channel with either positive or negative polarities. The operator can read out the real time discharging voltage and current from the backend control computer during the process of energizing the coils. The charging/ discharging voltage, current and the periods match the theoretical analysis as depicted as shown in Figure 6 and Figure 7. However, the initial test result shows the discharging voltage ripple is slightly over 10V for 250V discharging voltage and the discharging current is also oscillating in the range of 2.5 mA. Both of these exceed the limit of the specifications. The solution to fix this issue is adding a filtering capacitor at the high voltage output circuit.
After a 10uF/400V capacitor was added at the high voltage output circuits, the ripples on the high voltage and the current are reduced significantly. The maximum voltage ripple is reduced to less than 3V and the current ripple is lower than 0.1mA. These voltage and current noises are negligible in affecting the movements of the electron/photon inside of the chamber.
DISCUSSION.
As observed from the testing, the high voltage pulser device functions as per the design requirements. However, there are some improvements needed for the electronics circuits to fully meet the specifications.
The ripple on top of the discharging high voltage output is over 10V and the discharging current ripple is far higher than the specifications before the filtering capacitor was added in. These discharging voltage and current ripples applied on the coils would cause the magnetized coils to cause unwanted movement of the electrons or photons inside of the chamber. The discharging voltage and current ripple might cause the current direction to vary and the magnetizing field would not be applied in the desired manner. In order to reduce the ripple noise on the high voltage pulse, an external 10uF/400V filtering capacitor has to be installed in the test fixture for the current design to smooth the output discharging high pulse voltage and current. Due to the bulky size of the capacitor, there is no room to add it on the current PCB. Future revision of the PCB can be considered to install the filtering capacitor in the PCB to have the design to be more compact.
The relay module initially used in the design was G9TB-U1ATH-E DC12 [9]. However, this relay module is the type of “normally closed” and when the system is powered on, all the coils would be connected together. The microcontroller has to set up all the relays to the proper on/off status. This initialization process takes time when the system is powered on and causes the system to not work properly initially. To remedy this issue, a “normally open” relay module of HE1aN-W-DC12V is used to replace the relay of G9TB-U1ATH-EDC12. After this fix, the circuits work more reliable and predictable. The Arduino controller firmware can also be simplified not performing the relay bank initialization which serves as a working around in the initial design.
ACKNOWLEDGMENTS.
I would like to thank Mr. Mark Carlson for mentoring me during the design and implementation on the project.
REFERENCES.
- Scienta Omicron, 3D VLEED Single Transfer Instrument Manual, Chapter 1-4, pp. 23-31 (2016).
- Paul Horowitz, The Art of Electronics 3rd edition, Winfield Hill, pp. 20-44, pp. 52-53 (2015).
- Texas Instruments, How to Drive Resistive, Inductive, Capacitive, and Lighting Loads, pp. 25 (2021).
- Arduino Manual, ARDUINO MEGA 2560 Rev 3 User Manual (2025).
- Panasonic Ind, HE-N RELAYS General Application Guidelines (2023).
- Future Technology Devices International Ltd, USB to RS232 Serial Converter Range of Cables Datasheet (2018).
- Electronics Tutorials – RC Networks, RC Charging Circuit, https://www.electronics-tutorials.ws/rc/rc_1.html (2026)
- Electronics Tutorials – RC Networks, RC Discharging Circuit, https://www.electronics-tutorials.ws/rc/rc_2.html (2026)
- Omron, 120A Compact and high power latching relay (2018).
Posted by buchanle on Tuesday, June 2, 2026 in May 2026.
Tags: Arduino, Charging/Discharging Capacitor, High Voltage Pulse, Magnetized Coil, Relay
