Hi @Chwan-Hsen,
I saw your question about entering the IGBT I-V curve data into Simscape and totally understand your frustration. Looking at your datasheet plots, I can see exactly what you mean - the Vge=20V curve (the top green one) saturates really early around 2-3V, while the lower gate voltage curves like Vge=9V and 10V extend all the way out to 10V. When GraphData Extractor forces everything onto a common grid, it's truncating at the shortest curve and you lose all that valuable data from the other curves.
The good news is there's a straightforward remedy that's actually physically justified. The N-Channel IGBT block does require a common Vce grid for all your gate voltages, but you can extend the short curves yourself before entering the data. Here's the approach: Extract each curve individually from your datasheet with its natural voltage range first. Then for the saturated curves (like your Vge=20V, 15V, 13V, and 12V curves that end early), extend them by calculating the on-state resistance from their last few data points and extrapolating linearly. This makes physical sense because at high gate voltages, the IGBT is fully saturated and just behaves like a resistor beyond the saturation point.
Here's a quick MATLAB snippet:
% Create common grid based on your longest curve (goes to 10V)
Vce_common = 0:0.5:10;
% After extracting your Vge=20V curve (ends around 2-3V)
Vce_20V = [0, 0.5, 1.0, 1.5, 2.0, 2.5]; % your extracted points
Ic_20V = [0, 150, 400, 520, 580, 600]; % approximate from your plot
Ic_20V_extended = interp1(Vce_20V, Ic_20V, Vce_common, 'linear', 'extrap');
% After extracting your Vge=15V curve
Vce_15V = [0, 0.5, 1.0, 1.5, 2.0, 3.0];
Ic_15V = [0, 120, 350, 480, 550, 590];
Ic_15V_extended = interp1(Vce_15V, Ic_15V, Vce_common, 'linear', 'extrap');
% After extracting your Vge=13V curve
Vce_13V = [0, 0.5, 1.0, 2.0, 3.0, 4.0];
Ic_13V = [0, 100, 300, 450, 510, 540];
Ic_13V_extended = interp1(Vce_13V, Ic_13V, Vce_common, 'linear', 'extrap');
% After extracting your Vge=12V curve
Vce_12V = [0, 0.5, 1.0, 2.0, 4.0, 6.0];
Ic_12V = [0, 80, 250, 380, 450, 480];
Ic_12V_extended = interp1(Vce_12V, Ic_12V, Vce_common, 'linear', 'extrap');
% After extracting your Vge=11V curve (extends further)
Vce_11V = [0, 1.0, 2.0, 4.0, 6.0, 8.0, 10.0];
Ic_11V = [0, 200, 320, 390, 420, 440, 450];
Ic_11V_extended = interp1(Vce_11V, Ic_11V, Vce_common, 'linear', 'extrap');
% After extracting your Vge=10V curve
Vce_10V = [0, 1.0, 2.0, 4.0, 6.0, 8.0, 10.0];
Ic_10V = [0, 150, 240, 300, 330, 350, 360];
Ic_10V_extended = interp1(Vce_10V, Ic_10V, Vce_common, 'linear', 'extrap');
% After extracting your Vge=9V curve (longest range)
Vce_9V = [0, 1.0, 2.0, 4.0, 6.0, 8.0, 10.0];
Ic_9V = [0, 100, 180, 230, 260, 280, 290];
Ic_9V_extended = interp1(Vce_9V, Ic_9V, Vce_common, 'linear', 'extrap');
% Build matrix for Simscape (rows = Vge, columns = Vce)
Vge_vector = [9, 10, 11, 12, 13, 15, 20]; % from your plot
Ic_matrix = [
Ic_9V_extended;
Ic_10V_extended;
Ic_11V_extended;
Ic_12V_extended;
Ic_13V_extended;
Ic_15V_extended;
Ic_20V_extended
];
Validation tip: Plot everything after you create the common grid to make sure it looks right:
figure;
plot(Vce_common, Ic_matrix');
xlabel('Vce (V)');
ylabel('Ic (A)');
legend(string(Vge_vector) + 'V');
grid on;
title('Extended IGBT I-V Characteristics');
Please see attached.
Looking at your second image, I can see the truncation problem clearly - all your curves get cut off at around 5V and you're losing the extended data. By handling the extrapolation manually like I described above, you avoid this truncation and get to use the full voltage range for the curves that need it.
One caution: the Simscape block has some requirements - current must be zero when voltage is zero, and conductance (dIc/dVce) must be positive everywhere. The extrapolation approach I described should naturally satisfy these.
Entering the Data into Simscape
Once you've validated your plot and everything looks good, you can enter the data into the N-Channel IGBT block:
1. Open your N-Channel IGBT block
2. Set Modeling option to: Full I-V and capacitance characteristics | No thermal port
3. Set I-V characteristics defined by to: Lookup table (2D, temperature independent)
4. In the Main tab, enter:
* Vector of gate-emitter voltages, Vge: Vge_vector
* Vector of collector-emitter voltages, Vce: Vce_common
* Tabulated collector currents, Ic(Vge,Vce): Ic_matrix
The block will now use your complete, non-truncated I-V characteristics for simulation.
Hope this helps!