Skip to content
// Power Electronics · MARC

HV Precharge & Bus-Sequencing Controller

Arduino-controlled precharge, bus switchover, and E-stop sequencing for ~1.2 kV DC-DC converter test rigs.

At the McMaster Automotive Resource Centre (Dr. Ali Emadi's transportation-electrification group) I supported three PhD researchers across DC-DC converter, motor-characterization, and dynamometer projects. My main deliverable: Arduino-controlled precharge circuits for two ~1.2 kV DC-DC converter test rigs — sequencing capacitor precharge, bus switchover, and emergency stop so the rigs could be energized without inrush damage.

Role
Research Assistant — built, programmed, validated
Timeline
Jan — Apr 2026
Status
Research
Stack
ArduinoHV prechargeBus switchoverE-stopHV safety
Precharge controller I/O wiring: Arduino breakout board wired to fused DIN-rail terminal blocks
// The rigs

Two converter test rigs at ~1.2 kV

One rig hosted an 11 kW three-port triple active bridge (TAB) converter — 300–700 V input, 890–1250 V high-voltage output, and 36–48 V low-voltage output — researched for 1.25 kV on-board-charger and 48 V auxiliary-power-module applications. Both rigs needed a controlled way to bring their DC links up from a stiff high-voltage source.

// Why precharge

A discharged DC link looks like a short circuit

A converter's DC-link capacitance starts at 0 V. Closing a contactor straight onto the source puts the full bus voltage across only the wiring and capacitor ESR, so the inrush is limited by a few milliohms — enough to weld contactor tips, blow fuses, and stress the capacitors. A precharge path inserts a resistor first:

vC(t)=Vbus(1−e−t/RC),i(t)=VbusR e−t/RCv_C(t) = V_{bus}\left(1 - e^{-t/RC}\right),\qquad i(t) = \frac{V_{bus}}{R}\,e^{-t/RC}

Peak current becomes Vbus/RV_{bus}/R, and the link reaches over 99 % of the bus after about 5τ=5RC5\tau = 5RC. Sizing the resistor is a trade between that charge time, the peak current, and the resistor's pulse-energy rating — the stored energy 12CVbus2\tfrac{1}{2}CV_{bus}^2 is dissipated in it during every precharge.

// Approach

Sequencing: precharge → switchover → run, with E-stop from anywhere

The Arduino sequences the rig in a fixed order — precharge the DC link through the resistor, switch the bus over to the main path, then run — and an emergency stop de-energizes the rig from any stage.

  1. IdleAll paths open
  2. PrechargeDC link charges through the precharge resistor
  3. SwitchoverBus moves to the main path; precharge path drops out
  4. RunConverter under test energized
E-stopFrom any stage — de-energizes the rig; reset returns to Idle.
Precharge sequence
Controller I/O — Arduino breakout wired to fused terminal blocks
Controller I/O — Arduino breakout wired to fused terminal blocksMARC · DC-DC test rig
Hand sizing — 48 V load steps and precharge RC
Hand sizing — 48 V load steps and precharge RCMARC · Whiteboard
Media pending
Precharge — DC-link voltage riseScope capture
Media pending
Rig — before / during / afterMARC
// Detail

Technical Documentation

§

LV load steps (48 V side)

Hand calculation for a 48 V, 3.6 kW resistive load on the low-voltage side, sized in 25 / 50 / 75 / 100 % steps. From P=V2/RP = V^2/R:

R=V2x Prated⇒R100%=4823600≈0.64 ΩR = \frac{V^2}{x\,P_{rated}} \quad\Rightarrow\quad R_{100\%} = \frac{48^2}{3600} \approx 0.64\,\Omega
Load stepPowerEquivalent R
100 %3.6 kW0.64 Ω
75 %2.7 kW0.853 Ω
50 %1.8 kW1.28 Ω
25 %0.9 kW2.56 Ω
§

Precharge resistor sizing method

Choose a target charge time tpct_{pc}, set it equal to about five time constants, and solve for the resistance; then check peak current and pulse energy:

R=tpc5C,Ipeak=VbusR,ER=12CVbus2R = \frac{t_{pc}}{5C},\qquad I_{peak} = \frac{V_{bus}}{R},\qquad E_R = \tfrac{1}{2}CV_{bus}^2
§

HV safety

I designed and built a ground-bonded HV test enclosure so testing could be done under the lab's formal high-voltage safety procedures, with the emergency stop built into the precharge sequence.

§

Other MARC work

  • Helped commission a Chevrolet Bolt EV motor on a three-machine dynamometer: built three-phase HV motor cables, machined the motor mount, dogbone, and faceplate, wired sensor and control harnesses, and set up the oil system and dyno software.
  • Designed a 2-layer CAN-to-Ethernet adapter PCB in Altium and six custom mechanical parts in CAD, including a carbon-fiber 3D-printed motor oil-pump relocation adapter and a dynamometer wheel-plate spacer.
  • Named contributor on a resulting research publication.