How the Charger Works
From mains AC power to a fully-charged battery - a complete walkthrough of every stage inside the Solterra on-board charger, including PFC, DC conversion, protection systems, and thermal management.
System Overview
The Solterra on-board charger (OBC) is a sealed, high-efficiency power converter that takes single-phase or three-phase AC from a wall outlet and delivers regulated DC to the vehicle's battery pack through the BMS.
It operates in two broad configurations: CAN-enabled (communicating with the BMS via CAN bus) and Non-CAN (voltage-based termination only). CAN-enabled operation provides closed-loop control and full fault visibility.
| STTL A Series | Domestic/ South Asia |
| STTL B Series | Export EU Series |
| STTL C Series | Export US Series |
| OBC Series | LEV, Bus, Truck, E-LCVs |
Inside the Charger Power Path
A stage-by-stage view of how mains AC is filtered, corrected, isolated, and delivered to the battery, with BMS feedback shown as the control loop.
View Draw.io XML
<?xml version="1.0" encoding="UTF-8"?>
<mxfile host="Electron" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/29.6.1 Chrome/142.0.7444.265 Electron/39.8.0 Safari/537.36" version="29.6.1">
<diagram id="14ulfH52iFPR4vLPIP12" name="Page-1">
<mxGraphModel dx="6445" dy="3725" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1654" pageHeight="1169" math="0" shadow="0">
<root>
<mxCell id="0" />
<mxCell id="1" parent="0" />
<mxCell id="2" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=none;strokeColor=#23445D;strokeWidth=2;dashed=1;dashPattern=10 5;fontSize=13;fontStyle=1;verticalAlign=top;align=left;spacingLeft=10;spacingTop=6;arcSize=0;" value="<b>EV Battery Charger</b>" vertex="1">
<mxGeometry height="490" width="855" x="319" y="370" as="geometry" />
</mxCell>
<mxCell id="3" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=none;strokeColor=#6d8764;strokeWidth=2;dashed=1;dashPattern=10 5;fontSize=13;fontStyle=1;verticalAlign=top;align=left;spacingLeft=10;spacingTop=6;arcSize=0;" value="<b>External Systems</b>" vertex="1">
<mxGeometry height="490" width="265" x="1236" y="370" as="geometry" />
</mxCell>
<mxCell id="4" parent="1" style="shape=mxgraph.electrical.signal_sources.ac_source;sketch=0;html=1;dashed=0;fillColor=#dae8fc;strokeColor=#6c8ebf;strokeWidth=2;outlineConnect=0;" value="" vertex="1">
<mxGeometry height="76" width="76" x="182" y="452" as="geometry" />
</mxCell>
<mxCell id="5" parent="1" style="text;html=1;align=right;verticalAlign=middle;resizable=0;strokeColor=none;fillColor=none;fontSize=12;fontColor=#1F3864;" value="<b>L</b>" vertex="1">
<mxGeometry height="20" width="20" x="154" y="450" as="geometry" />
</mxCell>
<mxCell id="6" parent="1" style="text;html=1;align=right;verticalAlign=middle;resizable=0;strokeColor=none;fillColor=none;fontSize=12;fontColor=#1F3864;" value="<b>N</b>" vertex="1">
<mxGeometry height="20" width="20" x="154" y="480" as="geometry" />
</mxCell>
<mxCell id="7" parent="1" style="text;html=1;align=right;verticalAlign=middle;resizable=0;strokeColor=none;fillColor=none;fontSize=12;fontColor=#1F3864;" value="<b>PE ⏚</b>" vertex="1">
<mxGeometry height="20" width="30" x="154" y="510" as="geometry" />
</mxCell>
<mxCell id="8" parent="1" style="text;html=1;align=center;verticalAlign=top;resizable=0;strokeColor=none;fillColor=none;fontSize=10;fontColor=#6c8ebf;fontStyle=1;" value="AC INPUT · 230 V / 50-60 Hz" vertex="1">
<mxGeometry height="18" width="115" x="162.5" y="532" as="geometry" />
</mxCell>
<mxCell id="9" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#f5f5f5;strokeColor=#666666;fontSize=11;verticalAlign=middle;fontColor=#333333;" value="<b>EMI FILTER &amp; PROTECTION</b><br/>X/Y caps · CM/DM choke<br/>Fuse · NTC · SPD" vertex="1">
<mxGeometry height="160" width="155" x="344" y="410" as="geometry" />
</mxCell>
<mxCell id="10" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#fff2cc;strokeColor=#d6b656;fontSize=11;verticalAlign=middle;" value="<b>PFC BOOST STAGE</b><br/>Active power factor correction<br/>~400 V DC bus<br/>PF > 0.98" vertex="1">
<mxGeometry height="160" width="155" x="529" y="410" as="geometry" />
</mxCell>
<mxCell id="11" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontSize=11;verticalAlign=middle;arcSize=3;" value="<b>DC-DC ISOLATED STAGE</b><br/>LLC half-bridge resonant<br/>Galvanic isolation<br/>High efficiency" vertex="1">
<mxGeometry height="160" width="165" x="772" y="410" as="geometry" />
</mxCell>
<mxCell id="12" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;fontSize=11;verticalAlign=middle;arcSize=0;" value="<b>OUTPUT STAGE</b><br/>LC filter · Output relay<br/>OVP · OCP · HVIL" vertex="1">
<mxGeometry height="120" width="155" x="974" y="430" as="geometry" />
</mxCell>
<mxCell id="13" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#e1d5e7;strokeColor=#9673a6;fontSize=11;verticalAlign=middle;" value="<b>AUXILIARY SUPPLY</b><br/>Isolated SMPS<br/>Powers all control ICs" vertex="1">
<mxGeometry height="110" width="155" x="529" y="670" as="geometry" />
</mxCell>
<mxCell id="14" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#e1d5e7;strokeColor=#9673a6;fontSize=11;verticalAlign=middle;" value="<b>CONTROL SYSTEM (MCU)</b><br/>PFC + DC-DC closed-loop<br/>Fault detection · Protection<br/>CAN transceiver" vertex="1">
<mxGeometry height="130" width="165" x="772" y="660" as="geometry" />
</mxCell>
<mxCell id="15" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#e1d5e7;strokeColor=#9673a6;fontSize=11;verticalAlign=middle;" value="<b>THERMAL MANAGEMENT</b><br/>NTC sensors<br/>Fan speed regulation" vertex="1">
<mxGeometry height="110" width="155" x="994" y="670" as="geometry" />
</mxCell>
<mxCell id="16" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#fff2cc;strokeColor=#d6b656;strokeWidth=2;fontSize=11;fontStyle=1;fontColor=#7d5a00;" value="<b>CAN Bus</b>" vertex="1">
<mxGeometry height="22" width="290" x="974" y="825" as="geometry" />
</mxCell>
<mxCell id="17" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;strokeWidth=2;dashed=1;dashPattern=8 4;fontSize=11;verticalAlign=middle;arcSize=0;" value="<b>BATTERY PACK</b><br/>Li-ion cells + BMS<br/>CC / CV charge mode<br/>SOC &amp; fault reporting" vertex="1">
<mxGeometry height="160" width="210" x="1256" y="410" as="geometry" />
</mxCell>
<mxCell id="18" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#ffe6cc;strokeColor=#d79b00;strokeWidth=2;dashed=1;dashPattern=8 4;fontSize=11;verticalAlign=middle;arcSize=0;" value="<b>EXTERNAL CONTROL SYSTEM</b><br/>BMS · Vehicle ECU<br/>Charge requests · SOC<br/>Fault status reporting" vertex="1">
<mxGeometry height="130" width="210" x="1256" y="660" as="geometry" />
</mxCell>
<mxCell id="30" edge="1" parent="1" source="4" style="html=1;strokeColor=#6c8ebf;strokeWidth=2.5;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;edgeStyle=orthogonalEdgeStyle;endArrow=classicThin;endFill=0;rounded=0;curved=0;" target="9" value="">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="31" edge="1" parent="1" source="9" style="html=1;strokeColor=#d6b656;strokeWidth=2.5;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;edgeStyle=orthogonalEdgeStyle;endArrow=classicThin;endFill=0;rounded=0;curved=0;" target="10" value="">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="32" edge="1" parent="1" source="10" style="html=1;strokeColor=#d6b656;strokeWidth=2.5;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;fontSize=10;fontStyle=1;edgeStyle=orthogonalEdgeStyle;endArrow=classicThin;endFill=0;rounded=0;curved=0;" target="11" value="~400 V DC">
<mxGeometry relative="1" x="-0.0909" y="-20" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="33" edge="1" parent="1" source="11" style="html=1;strokeColor=#82b366;strokeWidth=2.5;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;edgeStyle=orthogonalEdgeStyle;endArrow=classicThin;endFill=0;rounded=0;curved=0;" target="12" value="">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="34" edge="1" parent="1" source="12" style="html=1;strokeColor=#82b366;strokeWidth=3;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;fontSize=11;fontStyle=1;fontColor=#2D6A4F;edgeStyle=orthogonalEdgeStyle;endArrow=classicThin;endFill=0;rounded=0;curved=0;" target="17" value="DC output">
<mxGeometry relative="1" x="0.0236" y="-20" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="35" edge="1" parent="1" source="10" style="edgeStyle=orthogonalEdgeStyle;html=1;strokeColor=#9673a6;strokeWidth=1.5;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;rounded=0;curved=0;endArrow=classicThin;endFill=0;" target="13" value="">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="36" edge="1" parent="1" source="13" style="edgeStyle=orthogonalEdgeStyle;html=1;strokeColor=#9673a6;strokeWidth=1.5;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;rounded=0;curved=0;endArrow=classicThin;endFill=0;" target="14" value="">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="37" edge="1" parent="1" source="14" style="edgeStyle=orthogonalEdgeStyle;html=1;strokeColor=#9673a6;strokeWidth=1.5;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;endArrow=classicThin;endFill=0;" target="15" value="">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="38" edge="1" parent="1" source="14" style="edgeStyle=orthogonalEdgeStyle;html=1;strokeColor=#9673a6;strokeWidth=1.5;dashed=1;dashPattern=6 3;exitX=0.3;exitY=0;exitDx=0;exitDy=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;fontSize=9;rounded=0;curved=0;endArrow=classicThin;endFill=0;" target="10" value="PWM ctrl /DIGITAL Control">
<mxGeometry relative="1" x="-0.0994" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="39" edge="1" parent="1" source="14" style="edgeStyle=orthogonalEdgeStyle;html=1;strokeColor=#9673a6;strokeWidth=1.5;dashed=1;dashPattern=6 3;exitX=0.7;exitY=0;exitDx=0;exitDy=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;rounded=0;curved=0;endArrow=classicThin;endFill=0;" target="11" value="">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="40" edge="1" parent="1" source="14" style="edgeStyle=orthogonalEdgeStyle;html=1;strokeColor=#d79b00;strokeWidth=2;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.1;entryY=0.5;entryDx=0;entryDy=0;rounded=0;curved=0;endArrow=classicThin;endFill=0;" target="16" value="">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="41" edge="1" parent="1" source="18" style="edgeStyle=orthogonalEdgeStyle;html=1;strokeColor=#d79b00;strokeWidth=2;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;rounded=0;curved=0;endArrow=classicThin;endFill=0;" target="16" value="">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="1361" y="836" />
</Array>
<mxPoint x="1336" y="835.9999999999998" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="42" edge="1" parent="1" source="17" style="edgeStyle=orthogonalEdgeStyle;html=1;strokeColor=#d79b00;strokeWidth=1.5;dashed=1;dashPattern=6 3;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;fontSize=9;startArrow=block;startFill=1;endArrow=block;endFill=1;" target="18" value="BMS data">
<mxGeometry relative="1" as="geometry" />
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile> Daily Operation
These are the everyday limits and charge-order rules that matter most in the field.
| Area | Requirement | Practical Note |
|---|---|---|
| AC supply | 150 Vac to 270 Vac L-N | Single phase L+N+E | 50 Hz | 16A max | Use a healthy, properly earthed socket sized for the charger current. |
| Environment | -30 C to 65 C | 5% to 95% RH | below 2000 m altitude | Full output is available up to 45 C ambient, then output reduces until 65 C. |
| Charge order | Connect DC to vehicle first, then AC to the socket, then switch on | At end of charge, switch off AC first, then remove the DC connector. |
| Ventilation | Minimum 10 cm clearance on all sides | Never cover the vents or insert objects into them. |
Stage-by-Stage Breakdown
EMI Filter & Inrush Protection
AC SideThe first thing mains power encounters is an EMI (electromagnetic interference) filter - a combination of X/Y capacitors and common-mode chokes that suppresses high-frequency noise from propagating back onto the grid or into the charger. An NTC thermistor (negative temperature coefficient) limits inrush current at power-on, protecting both the charger and the supply fuse. The AC input stage also includes 6 kV surge protection so line transients are absorbed before they can stress the downstream PFC and DC-DC stages. A fuse on the input provides overcurrent protection.
PFC Stage - Power Factor Correction
Critical StageThe PFC (Power Factor Correction) stage is an active boost converter that converts the rectified AC (which has a sinusoidal shape) into a stable high-voltage DC bus, typically around 400V. It simultaneously shapes the input current to be sinusoidal and in-phase with the input voltage, achieving a power factor >0.98. This minimises reactive power draw from the grid.
Why two fault types? The charger distinguishes between PFC Internal Fault (failure inside the PFC controller, gate drivers, or MOSFET) and PFC External Fault (bad AC input voltage - too high, too low, wrong frequency, or poor plug contact). External faults are field-fixable; internal faults require factory service.
DC-DC Stage - Isolated Converter
Galvanic IsolationThe DC-DC stage takes the ~400V PFC bus and converts it to the battery's required voltage (typically 48-96V for two-wheeler packs) using a high-frequency LLC resonant converter with a transformer providing galvanic isolation. This isolation is safety-critical - it means the battery pack is never directly connected to mains potential.
Charging follows a CC/CV (Constant Current / Constant Voltage) profile: the charger pushes a regulated constant current until the battery reaches its target voltage (CV phase), then holds the voltage while current tapers to zero. For CAN-enabled chargers, the BMS dictates exact current and voltage setpoints in real time.
Output Filter, Relay & Protections
Battery SideBefore output voltage reaches the connector, it passes through LC output filtering to reduce ripple, then through an internal relay. The relay opens instantly on any fault condition - overvoltage, overcurrent, short circuit, or overtemperature. Output voltage ripple is kept below 0.5% of full load at nominal conditions.
Thermal Management
The charger uses active fan cooling and three independent thermal sensors to protect both internal stages and the surrounding environment.
External Temperature Sensor
Monitors ambient temperature at the charger's intake. If ambient exceeds the rated limit, the charger triggers an External Temperature Fault and shuts down output to prevent thermal damage to surroundings or the battery.
DC Stage Thermal Sensor
Monitors the DC-DC converter heatsink temperature. The charger operates at full rated current up to 45C ambient, then stepwise derates output current as temperature rises toward 65C, then shuts down. The internal temperature shall never exceed 85C.
PFC Stage Thermal Sensor
Monitors the PFC section. Overtemperature here indicates high ambient, blocked vents, or excessive input-side losses. Clear dust from vents every 3-6 months to prevent this fault.
Protection Systems
Multiple layers of protection are active simultaneously during operation.
| Protection Type | Trigger Condition | Response | User Action |
|---|---|---|---|
| Overcurrent (AC) | Input current exceeds rated limit | PFC shuts down; NTC thermistor absorbs inrush | Check supply fuse and wiring gauge |
| Overvoltage (DC Out) | Output voltage exceeds setpoint + margin | Output relay opens; fault LED | Check battery voltage and BMS setpoints |
| Short Circuit (DC) | Near-zero impedance at DC output | Immediate relay open; fault mode | Not protected in Activation Mode (see Activation page) |
| Under-voltage (Battery) | Battery voltage below minimum threshold | Output withheld; UV fault LED | See Activation Function |
| Overtemperature | Any of 3 thermal sensors exceed limit | Output derates then shuts down | Improve ventilation; reduce ambient temp |
| Precharge Timeout | Output current = 0 for extended period | Fault mode after timeout | Check battery and connections; may need replacement |
| Reverse Polarity | DC output connected backwards | Not protected in Activation Mode | Verify connector polarity before plugging in |
Preventive Maintenance
Most repeated field faults come from airflow restriction, damaged cables, or poor connector condition rather than charger hardware failure.
| Interval | Task | What To Do |
|---|---|---|
| Every charge | Visual inspection | Check the AC plug, DC connector, and both cables for damage, corrosion, fraying, or heat marks before connecting. |
| Monthly | Connector check | Inspect for loose pins, heat discoloration, or corrosion at all accessible connectors. |
| Every 3-6 months | Vent cleaning | Clear cooling fins and ventilation slots using a dry cloth, dry brush, or gentle compressed air. |
| Every 3-6 months | Cable inspection | Check strain-relief points and the full cable run for cracks, chafing, or crush damage. |
| Every 6 months | Battery health test | Run a capacity or discharge test so weak packs are found before they become field failures. |
| Annually | Torque check | Re-torque mounting and battery-side connections to the specified values. |
Non-CAN Charger: Important Risks
Non-CAN chargers use only voltage-based termination. There is no communication loop with the BMS. This creates uncontrollable risks that Solterra users should understand:
Solterra Technologies Pvt Ltd accepts no liability for property or personal injury resulting from these Non-CAN scenarios. CAN-enabled operation is strongly recommended for all new deployments.
Related Technical Guides
Keep moving between the support guides below to narrow the issue faster.
How RCDs Work
Learn how an RCD compares live and neutral current, why imbalance trips it, and which wiring mistakes create confusion.
Activation / Wakeup Function
See how Solterra chargers wake deeply discharged batteries and what risks apply during activation.
CAN Bus Communication Guide
Follow the charger-BMS handshake flow, message types, and CAN fault diagnosis guidance.
3000A / 3000BG 120/220V Operation Mode
See how special-firmware 3000A and 3000BG chargers latch into 120V or 220V mode across an 85-270VAC input range.
Step-by-Step Troubleshooting
Pick a symptom and follow the correct field checks before escalating to service.