EPAVersion: 2023-09-12

2018 Chevrolet Bolt 150kW 400V FWD EDU - ALPHA Generation Process

This document summarizes the process to generate full efficiency and power loss maps for a 2018 Chevrolet Bolt 150kW 400V FWD Electric Drive Unit (EDU) which includes the inverter, emotor and the gearing using test data collected from the vehicle operating on a hub dynamometer by Southwest Research Institute provided in support of Task Order #9 under Contract #68HERC20D0014 with EPA. The input data file represents valid measurements from three independent mapping runs combined into one result file sorted by speed and torque. The generated efficiency map is used as an input for ALPHA and represents the combined operating boundaries and electrical power consumption of the electric motor, inverter, and gearing, combined together as an EDU.

SUGGESTED CITATION:
2018 Chevrolet Bolt 150kW 400V FWD EDU - ALPHA Map Package. Version 2023-09. Ann Arbor MI: US EPA National Vehicle and Fuel Emissions Laboratory, National Center for Advanced Technology, 2023.

EDU Physical Characteristics

The following table sets the key physical characteristics for the 2018 Chevrolet Bolt 150kW 400V FWD electric motor, inverter, and gearing (EDU) used in the ALPHA model based on published information provided by SwRI. The items in the table follow ALPHA’s code syntax for “emachines,” which is: emach.characteristic name_engineering units = value; % comments.

The EDU’s inertia value was calculated using SolidWorks models based on measured dimensions of the EDU components including the electric motor as well as the associated gearing in the EDU. The inertia value is calculated in the frame of reference of the motor speed; the corresponding inertia value at the EDU output speed can be calculated by multiplying the given inertia by the square of the EDU’s gear ratio.

emach                             = class_REVS_emachine_geared;
emach.name                        = '2018 Chevrolet Bolt 150kW 400V FWD EDU';
emach.type                        = enum_emachine_type.EDU;
emach.gear.efficiency_norm        = 1;
emach.inertia_kgm2                = 0.041748; %[kgm^2] Reference description above
emach.gear.ratio                  = 7.05;
emach.max_speed_radps             = 8250 * unit_convert.rpm2radps;
emach.max_torque_Nm               = 360;
emach.max_motor_power_W           = 150000;
emach.max_generator_power_W       = emach.max_motor_power_W;
nominalVoltage_V                  = 400;

Import EDU Data

The following code imports EDU efficiency data provided by SwRI found in 3b- 2018 Chevrolet Bolt 150kW 400V FWD EDU - SwRI Test Data.xlsx. This test data consists of valid measurements from three independent mapping runs on a hub dynamometer combined into one result file sorted by speed and torque.

EPA reviews the quality of the test data we import to ensure consistency with expected data trends and emotor system physics. Any data points considered significant outliers are removed from the dataset before generating the final efficiency map. In addition, since many of the datasets are missing low-speed and torque datapoints, occasionally a few “grounding” datapoints are added to help the curve fitting algorithm extrapolate the gradients near the map’s boundaries.

tbl_data         = readmatrix('3b- 2018 Chevrolet Bolt 150kW 400V FWD EDU - SwRI Test Data.xlsx','Sheet','Data','Range','A4:E257');
speed_rpm        = tbl_data(1:end,2);
torque_Nm        = tbl_data(1:end,4);
elec_powerloss_W = tbl_data(1:end,5)*1000;

gp.speed_rpm       = [0.01; 3500];
gp.torque_Nm       = [0.01; 360];
gp.powerloss_w     = [0.002; 15290];

data(1).name             = 'EDU Data';
data(1).speed_rpm        = [gp.speed_rpm; speed_rpm(torque_Nm > 0)];
data(1).torque_Nm        = [gp.torque_Nm; torque_Nm(torque_Nm > 0)];
data(1).elec_powerloss_W = [gp.powerloss_w; elec_powerloss_W(torque_Nm > 0)];
data(1).gp               = gp;

EDU Torque Limits

The following table sets the torque limits of the EDU input map based on test data collected by SwRI provided in 3b- 2018 Chevrolet Bolt 150kW 400V FWD EDU - SwRI Test Data.xlsx. The maximum torque line is set by defining maximum torque (axis 2) at discrete speeds (axis 1) of the operating map.

emach.positive_torque_limit_Nm.axis_2.signal        =  'voltage_V';
emach.positive_torque_limit_Nm.axis_2.breakpoints   = nominalVoltage_V;
emach.negative_torque_limit_Nm.axis_2.signal        =  'voltage_V';
emach.negative_torque_limit_Nm.axis_2.breakpoints   = nominalVoltage_V;

Build the emachine Object in Matlab

The script below creates an “emach” object which is converted into power loss space for the “drive” quadrant, extrapolated to the edges of the operating space (rather than efficiency space), and scaled for maximum power.

These power losses were then “mirrored” to the regen quadrant considering the average of the empirical internal mechanical and electrical losses differences typically seen between operating in the “drive” and “regen” quadrants. Since the dataset did not have any measured regen data, we mirrored the drive quadrant power loss data onto the regen quadrant multiplied by a factor of 1.05 (or 105 %) which represents an empirical average of the additional regen losses observed in confidential data available to this program.

emach = emach.load_data(data,'mirror_factor',1.05,'use_cluster_breakpoints', true);

EDU Efficiency Map

The following code generates the Efficiency Map shown below for this EDU which includes the combined efficiency data of the electric motor, inverter, and gearing. The efficiency data points used to generate the efficiency map are superimposed on this image.

A clean version of the efficiency map (without data points) is included in 4a- 2018 Chevrolet Bolt 150kW 400V FWD EDU.pdf. The 6- 2018 Chevrolet Bolt 150kW 400V FWD EDU - Electrical Power Consumption Data.xlsx file contains a sample data set extracted from this efficiency map.

REVS_plot_emachine(emach,'efficiency');
REVS_plot_emachine_data_overlay(data,'efficiency','gear_ratio',emach.gear.ratio);

Power Loss Difference (%) Table

To ensure the quality of the map results, the relative power loss difference is calculated by comparing the power loss data derived from the power loss data found in 3b- 2018 Chevrolet Bolt 150kW 400V FWD EDU - SwRI Test Data.xlsx file and the ALPHA map power data. The relative power loss difference for these data points is calculated using the following formula:

$$\delta P_{loss} = \frac{P_{loss}(map) - P_{loss}(data)}{P_{loss}(data)}$$

Where

$$P_{loss} = | P_{mech} - P_{elec} |$$

The results of the analysis were assembled in a table which was reviewed and confirmed to be within acceptable limits. The significant variation in torque and speed measurements resulted in a significantly large table which was retained internally but not displayed in this publication.

Power Loss Map

A clean version of the Power Loss map is shown below and in 5a- Chevrolet Bolt 150kW 400V FWD EDU - Power Loss.pdf. The additional plots show system losses, converted to effective torque loss, as a function of motor output torque and speed. Effective torque loss represents the total power loss in the system as a loss of mechanical power. The associated speed is kept constant, and thus the total loss is expressed as a loss of torque. Torque losses are presented on a log scale.

REVS_plot_emachine(emach,'power loss');
REVS_plot_emachine(emach,'torque loss curves');

Generate ALPHA .m file for ALPHA Model Simulations

This code generates and writes the created ALPHA emachine definition into an “.m file” for use in later ALPHA vehicle model simulations. The .m file is the actual input file used in ALPHA that defines power consumption over the speed and torque operating limits of the 2018 Chevrolet Bolt 150kW 400V FWD EDU.

emach.write_mscript('emachine_2018_Chevrolet_Bolt_150kW_400V_FWD_EDU.m');

Motor Build: emachine_2018_Chevrolet_Bolt_150kW_400V_FWD_EDU.m


% ALPHA ELECTRIC MOTOR DEFINITION
% Generated 12-Sep-2023 08:49:39

% Constructor
mg = class_REVS_emachine_geared();
mg.name =  '2018 Chevrolet Bolt 150kW 400V FWD EDU'; 
mg.source_filename = mfilename;

% Physical Description
mg.electrical_source =  'propulsion'; 
mg.inertia_kgm2 =  0.041748; 
mg.type = enum_emachine_type.EDU;
mg.gear.ratio =  7.05; 
mg.gear.efficiency_norm =  1; 

% Capacity Limits
mg.max_speed_radps =  863.93797973719302; 
mg.max_torque_Nm =  360; 
mg.max_motor_power_W =  150000; 
mg.max_generator_power_W =  150000; 
mg.positive_torque_limit_Nm = class_REVS_dynamic_lookup;
mg.positive_torque_limit_Nm.axis_1.signal =  'emach_spd_radps'; 
mg.positive_torque_limit_Nm.axis_1.breakpoints = [	    -872.57735953456495	   -863.93797973719302	   -784.60521968946148	   -714.50060168471714	   -655.89616128141392	   -606.17662072485962	   -563.46381969157767	   -526.37411347517730	   -493.86566853815759	   -465.13905209557385	   -439.57060892096985	   -416.66666666666669	    0.0000000000000000	    416.66666666666669	    439.57060892096985	    465.13905209557385	    493.86566853815759	    526.37411347517730	    563.46381969157767	    606.17662072485962	    655.89616128141392	    714.50060168471714	    784.60521968946148	    863.93797973719302	    872.57735953456495		]; 
mg.positive_torque_limit_Nm.axis_2.signal =  'voltage_V'; 
mg.positive_torque_limit_Nm.axis_2.breakpoints =  400; 
mg.positive_torque_limit_Nm.table = [	     0.0000000000000000	    173.62357428206766	    191.17894736842106	    209.93684210526317	    228.69473684210527	    247.45263157894738	    266.21052631578948	    284.96842105263158	    303.72631578947369	    322.48421052631579	    341.24210526315790	    360.00000000000000	    360.00000000000000	    360.00000000000000	    341.24210526315790	    322.48421052631579	    303.72631578947369	    284.96842105263158	    266.21052631578948	    247.45263157894738	    228.69473684210527	    209.93684210526317	    191.17894736842106	    173.62357428206766	    0.0000000000000000		]; 
mg.negative_torque_limit_Nm = class_REVS_dynamic_lookup;
mg.negative_torque_limit_Nm.axis_1.signal =  'emach_spd_radps'; 
mg.negative_torque_limit_Nm.axis_1.breakpoints = [	    -872.57735953456495	   -863.93797973719302	   -784.60521968946148	   -714.50060168471714	   -655.89616128141392	   -606.17662072485962	   -563.46381969157767	   -526.37411347517730	   -493.86566853815759	   -465.13905209557385	   -439.57060892096985	   -416.66666666666669	    0.0000000000000000	    416.66666666666669	    439.57060892096985	    465.13905209557385	    493.86566853815759	    526.37411347517730	    563.46381969157767	    606.17662072485962	    655.89616128141392	    714.50060168471714	    784.60521968946148	    863.93797973719302	    872.57735953456495		]; 
mg.negative_torque_limit_Nm.axis_2.signal =  'voltage_V'; 
mg.negative_torque_limit_Nm.axis_2.breakpoints =  400; 
mg.negative_torque_limit_Nm.table = [	    -0.0000000000000000	   -173.62357428206766	   -191.17894736842106	   -209.93684210526317	   -228.69473684210527	   -247.45263157894738	   -266.21052631578948	   -284.96842105263158	   -303.72631578947369	   -322.48421052631579	   -341.24210526315790	   -360.00000000000000	   -360.00000000000000	   -360.00000000000000	   -341.24210526315790	   -322.48421052631579	   -303.72631578947369	   -284.96842105263158	   -266.21052631578948	   -247.45263157894738	   -228.69473684210527	   -209.93684210526317	   -191.17894736842106	   -173.62357428206766	   -0.0000000000000000		]; 

% Losses & Efficiency
mg.electric_power_W = class_REVS_dynamic_lookup;
mg.electric_power_W.axis_1.signal =  'emach_spd_radps'; 
mg.electric_power_W.axis_1.breakpoints = [	     0.0000000000000000	    52.359877559829854	    104.71774127821510	    209.43951023931942	    314.15732610425493	    366.51914291880917	    418.86156718611892	    523.59877559829920	    628.32850402797021	    732.95101937501852	    837.75222319310444	    864.04269949231275		]; 
mg.electric_power_W.axis_2.signal =  'emach_trq_Nm'; 
mg.electric_power_W.axis_2.breakpoints = [	    -363.10000000000002	   -290.52499999999998	   -235.85500000000002	   -181.65689655172412	   -129.48043478260868	   -81.950000000000017	   -50.518181818181830	   -23.669696969696968	    0.0000000000000000	    9.1155844155844150	    50.518181818181816	    81.950000000000003	    129.48043478260871	    181.65689655172412	    235.85500000000002	    290.52499999999998	    363.10000000000002		]; 
mg.electric_power_W.table = [
    11855.100013476964	    7577.5279986573732	    5073.9103828413599	    3104.4995511687266	    1616.9076265988538	    697.77488005132238	    296.59569282932006	    81.972557534512276	    10.198695278633151	    7.3858787261741847	    237.63276527301258	    638.71415338733345	    1534.6377390764019	    2958.7945208689580	    4834.5171994283464	    7217.6076733123236	    11290.441771867803	;
   -6614.1506135326699	   -7427.6643635704613	   -6986.4420039602610	   -6022.6290703444047	   -4897.7175044799487	   -3244.5760403893491	   -2029.7604861151590	   -917.08645422938753	    211.54451735989775	    682.19546641864235	    3217.5028035089981	    5289.0300535963079	    8571.9607573911726	    12834.327901006214	    17456.922407877013	    22625.381621797442	    30819.221791499727	;
   -25250.492879267160	   -22260.670371555312	   -19020.711500218742	   -15245.257638609022	   -11387.234823491513	   -7312.1568776531522	   -4490.7171061477075	   -1988.4778284406782	    365.67602507961243	    1313.0381653719612	    6037.2334979085936	    9797.6797321302347	    15627.326816854715	    22620.210228633379	    30105.315857443104	    38196.876800347192	    50187.317670241959	;
   -62474.098095962967	   -52056.627756422255	   -43254.930145942773	   -33880.475021020931	   -24616.097504750651	   -15631.930641133649	   -9498.2458669451335	   -4207.9509989918342	    604.47574581258834	    2503.3021276015388	    11596.039456531302	    18625.932371783871	    29500.360737460378	    42013.557993275062	    55247.285611157022	    69219.590298623269	    88974.522493401731	;
   -99710.494642572303	   -81890.442077389831	   -67447.165680140475	   -52536.833836329155	   -37854.742001808692	   -23896.331677811559	   -14478.619207577474	   -6374.9028010033753	    892.69693803757889	    3743.2335590675989	    17184.115646291910	    27511.539564227787	    43364.056193425531	    61385.120399590734	    80427.404768826251	    100203.99925138443	    127746.74467672396	;
   -116965.74542142624	   -97099.628991832797	   -79949.450553138871	   -62109.421471667134	   -44502.426183705960	   -28068.152230555501	   -17011.071509384987	   -7433.1863300803743	    1149.5209272155610	    4483.4824266730457	    19932.289890899243	    31905.136211128000	    50271.149005204919	    70839.624506051070	    92632.081554290824	    115419.48395960536	    148432.96274129802	;
   -137229.23349007397	   -112446.66857381859	   -92270.102815560895	   -71581.157492049228	   -51153.111882452780	   -32170.320284755053	   -19445.993098651499	   -8513.2123629095731	    1238.5486044187735	    5037.6828219713198	    22778.970746277289	    36386.802643142168	    57168.266035614637	    80382.314023876927	    105000.59604510046	    130492.69684600562	    166240.44518582601	;
   -171767.58548351109	   -138444.92606714182	   -115243.31042839699	   -89984.499167452101	   -64491.079286901331	   -40562.504154560840	   -24402.774185691826	   -10592.955701118182	    1633.9867000153395	    6383.5810898544814	    28397.037447905030	    45143.373436945709	    70943.228078015032	    100001.82313380299	    131350.60885796690	    165141.01736254152	    207595.95741019893	;
   -204018.89441605355	   -165174.42998221843	   -136132.78969683117	   -107090.86022216053	   -77055.046707672780	   -48549.023431929832	   -29355.352284599801	   -12759.312260312583	    1988.3322149148835	    7693.1150625359542	    33982.040825869692	    54299.607713325597	    85452.759988885708	    120853.82219853508	    159681.68453466191	    199088.95725348307	    251125.51502313034	;
   -235243.36410917615	   -190099.13805171265	   -156090.46969751071	   -122444.16473127535	   -89058.854240899091	   -56064.243684632209	   -33840.507166401745	   -14529.613111196142	    2628.4381411791260	    9271.1007203440586	    40019.560527504596	    63882.408100949375	    100467.95440652338	    143337.44974165119	    188850.94321189835	    234696.19713342583	    295559.52432421362	;
   -265992.78228517110	   -214395.34147844490	   -175599.00834973133	   -137292.43434599854	   -100452.73250143812	   -63317.333131182313	   -37943.110469838633	   -15982.603290651025	    3568.1394240218069	    11155.563904944333	    46452.595305195835	    73739.450877399111	    116108.92948896762	    166365.68211762721	    218534.00736432459	    271007.21160698880	    340575.08016056271	;
   -273701.45166855765	   -220485.69351790083	   -180454.55801954324	   -140867.17161579712	   -103106.48368246498	   -65091.273754135516	   -39032.015927670895	   -16381.357406022553	    3796.5811531983222	    11623.255825830118	    47988.931618805640	    76262.465238634628	    120223.50048327979	    172286.77837424327	    226017.31773742044	    280120.65731184377	    351872.62204816716	]; 
mg.unpowered_torque_loss_Nm = class_REVS_dynamic_lookup;
mg.unpowered_torque_loss_Nm.axis_1.signal =  'emach_spd_radps'; 
mg.unpowered_torque_loss_Nm.axis_1.breakpoints = [	    -15000.000000000000	    15000.000000000000		]; 
mg.unpowered_torque_loss_Nm.table = [	     0.0000000000000000	    0.0000000000000000		];