Hi @Chwan-Hsen Chen,
I am here to help you. Please let me know if you need further assistance or help.


Hi @Chwan-Hsen Chen,
I am here to help you. Please let me know if you need further assistance or help.
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!
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!