Robert Fletcher
Published

An Isolated 12V Flyback Power Supply Using Infineon ICE3BS02

This project demonstrates how to design an isolated 12V AC-DC flyback power supply using the Infineon ICE3BS02 offline PWM controller.

IntermediateWork in progress13
An Isolated 12V Flyback Power Supply Using Infineon ICE3BS02

Things used in this project

Hardware components

Infineon ICE3BS02
Main offline flyback PWM controller
×1
External Power MOSFET
Primary-side switching device
×1
Flyback Transformer
Provides energy transfer and galvanic isolation
×1
Fast Recovery Rectifier
Secondary-side output rectification
×1
TL431
Adjustable output voltage reference and feedback control
×1
Optocoupler
Transfers isolated feedback signals to the primary side
×1
Current Sense Resistor
Monitors primary switch current
×1
Electrolytic Capacitors
×1
Film Capacitors
×1
Gate Resistors
×1
Arduino Uno
×1
Voltage Divider Resistors
×1
LCD Display
×1
Fuse and Surge Protection Components
×1

Software apps and online services

Arduino IDE
Arduino IDE
KiCad
KiCad
LTspice
Serial Plotter

Hand tools and fabrication machines

Digital Multimeter
Oscilloscope
Electronic DC Load
Soldering Station
PCB Prototyping Equipment
Wire Strippers and Cutters
Insulated Hand Tools
Isolation Transformer

Story

Read more

Schematics

1. Main flyback converter architecture

2. Arduino output monitoring circuit

Code

Code

C/C++
code
/*
  Project: ICE3BS02 Flyback Power Supply Monitor
  Board: Arduino Uno

  Function:
  - Monitor isolated 12V DC output
  - Calculate output voltage using a resistor divider
  - Display voltage through Serial Monitor

  Hardware:
  - 100k resistor (upper divider)
  - 33k resistor (lower divider)
  - Arduino Uno
  - Analog input A0

  IMPORTANT:
  Connect this circuit only to the isolated
  secondary side of the flyback converter.
*/

const int voltagePin = A0;

const float referenceVoltage = 5.0;
const float upperResistor = 100000.0;
const float lowerResistor = 33000.0;

const float dividerRatio =
  (upperResistor + lowerResistor) / lowerResistor;

const int adcResolution = 1023;

void setup() {
  Serial.begin(9600);

  Serial.println("ICE3BS02 Power Supply Monitor");
  Serial.println("-----------------------------");
  Serial.println("Output Voltage Monitoring");
}

void loop() {

  int adcValue = analogRead(voltagePin);

  float measuredVoltage =
    (adcValue * referenceVoltage) / adcResolution;

  float outputVoltage =
    measuredVoltage * dividerRatio;

  Serial.print("ADC Value: ");
  Serial.print(adcValue);

  Serial.print(" | Output Voltage: ");
  Serial.print(outputVoltage, 2);

  Serial.println(" V");

  delay(500);
}

Credits

Robert Fletcher
20 projects • 1 follower
Senior semiconductor engineer at AVAQ Semiconductor. With extensive experience in electronic components, supply chain solutions & sourcing.

Comments