Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: FreescaleIAP mbed-rtos mbed
Fork of QM_BAE_review_1 by
Diff: EPS.cpp
- Revision:
- 68:a5d2b8dc6b9e
- Parent:
- 65:d1b12729fcdc
- Child:
- 69:c0dd13285d80
--- a/EPS.cpp Thu Nov 24 09:45:08 2016 +0000 +++ b/EPS.cpp Sun Dec 04 07:58:20 2016 +0000 @@ -467,8 +467,12 @@ { actual_data.voltage_actual[Iteration]=VoltageInput.read(); //wait_ms(100); //remove + eps_pc.printf("\n\rthe raw voltage values VOL[%d] = %f",Iteration,actual_data.voltage_actual[Iteration]); + wait_ms(2); actual_data.current_actual[Iteration]=CurrentInput.read(); - + wait_ms(2); + eps_pc.printf("\n\rthe raw current values CURR[%d] = %f",Iteration,actual_data.current_actual[Iteration]); + SelectLinea0=!(SelectLinea0); if(Iteration%2==1) SelectLinea1=!(SelectLinea1); @@ -484,42 +488,45 @@ //// printf("\n\r %d %d %d %d", s0,s1,s2,s3); wait_ms(1); + /*$ wait of 3 milli sec $*/ } for(Iteration=0; Iteration<16; Iteration++) { if(Iteration==1) //EPS 3.0 in EPS 2.1 it was 14th element - actual_data.voltage_actual[Iteration]= (-90.7*3.3*actual_data.voltage_actual[Iteration])+190.1543; + actual_data.voltage_actual[Iteration]= (-90.7*(3.3*actual_data.voltage_actual[Iteration]))+190.1543; else - actual_data.voltage_actual[Iteration]= actual_data.voltage_actual[Iteration]*3.3*62/11; - - printf("Voltage[%d] %f\r\n",Iteration,actual_data.voltage_actual[Iteration]); + actual_data.voltage_actual[Iteration] = (actual_data.voltage_actual[Iteration]*3.3*62)/11.0; + + eps_pc.printf("VVVoltage[%d] %f\r\n",Iteration,actual_data.voltage_actual[Iteration]); } - for(Iteration=0;Iteration<12;Iteration++){ + for(Iteration=0;Iteration<16;Iteration++){ if(Iteration<8)// thermistors before in version 2.1 now from12th element but 8-11 are null values only { - actual_data.current_actual[Iteration]= actual_data.current_actual[Iteration]*3.3/(50*rsens); + actual_data.current_actual[Iteration]= 1000*(actual_data.current_actual[Iteration]*3.3)/(50*rsens); + // if it gives the better resolution //actual_data.current_actual[Iteration]= 100*(actual_data.current_actual[Iteration]*3.3)/(50*rsens); + } - else if(Iteration==8) { - actual_data.current_actual[Iteration]= (-90.7*3.3*actual_data.current_actual[Iteration])+190.1543;//Temperature + actual_data.current_actual[Iteration] = (actual_data.current_actual[Iteration]*3.3*62)/11.0;//Load BUS voltage } - else if(Iteration==9) { - actual_data.current_actual[Iteration]= actual_data.current_actual[Iteration])*3.3*62/11;//Load BUS voltage + actual_data.current_actual[Iteration]= (-90.7*(3.3*actual_data.current_actual[Iteration]))+190.1543;//Temperature } + /*1oth and 11th data are NC*/ else if(Iteration<12) { actual_data.current_actual[Iteration]= 0; } - else - actual_data.current_actual[Iteration]=actual_data.current_actual[Iteration]*3.3; + else{ /*earlier loop missing*/ + actual_data.current_actual[Iteration] = (actual_data.current_actual[Iteration]*3.3); int resistance; - resistance=24000*actual_data.current_actual[Iteration]/(3.3-actual_data.current_actual[Iteration]); - if(actual_data.current_actual[Iteration]>1.47) + resistance = (24300*actual_data.current_actual[Iteration])/(3.3-actual_data.current_actual[Iteration]); + + if(actual_data.current_actual[Iteration]<1.38) { actual_data.current_actual[Iteration]=3694/log(24.032242*resistance); } @@ -528,31 +535,44 @@ actual_data.current_actual[Iteration]=3365.4/log(7.60573*resistance); } + actual_data.current_actual[Iteration] = actual_data.current_actual[Iteration] - 273.15; /*converting from C to kelvin*/ + + } printf("Current[%d] %f\r\n",Iteration,actual_data.current_actual[Iteration]); } + //actual_data.BAE_temp_actual=(-90.7*3.3*actual_data.BAE_temp_actual)+190.1543; actual_data.BAE_temp_actual=(-90.7*3.3*BAE_temp_sensor.read())+190.1543; - actual_data.Batt_voltage_actual=Batt_voltage.read()*3.3*5.63; + actual_data.Batt_voltage_actual = (Batt_voltage.read()*3.3*5.63) * 10; //quantizing data //changing the algo for(Iteration=0; Iteration<16; Iteration++){ if(Iteration==1) - quant_data.voltage_quant[Iteration] = float_to_uint8(0.0,25,actual_data.voltage_actual[Iteration]);//quantiz(tstart,tstep,actual_data.voltage_actual[Iteration]); + quant_data.voltage_quant[Iteration] = float_to_uint8(-50,150,actual_data.voltage_actual[Iteration]);//quantiz(tstart,tstep,actual_data.voltage_actual[Iteration]); /*for keeping the record of the temp'*/ else - quant_data.voltage_quant[Iteration] = float_to_uint8(0.0,25,actual_data.voltage_actual[Iteration]);//quantiz(vstart,vstep,actual_data.voltage_actual[Iteration]); + quant_data.voltage_quant[Iteration] = 10*actual_data.voltage_actual[Iteration]; + //quant_data.voltage_quant[Iteration] = float_to_uint8(0.0,25,actual_data.voltage_actual[Iteration]);//quantiz(vstart,vstep,actual_data.voltage_actual[Iteration]); + eps_pc.printf("\n\r quan vol data[%d],\t %d",Iteration,quant_data.voltage_quant[Iteration]); } - for(Iteration=0;Iteration<12;Iteration++){ - if(Iteration<8) - quant_data.current_quant[Iteration] = float_to_uint8(0.0,3000,actual_data.current_actual[Iteration]);//quantiz(cstart,cstep,actual_data.current_actual[Iteration]); - else - quant_data.current_quant[Iteration] = float_to_uint8(0.0,3000,actual_data.current_actual[Iteration]);//quantiz(tstart_thermistor,tstep_thermistor,actual_data.current_actual[Iteration]); - } + for(Iteration=0;Iteration<16;Iteration++){ + if(Iteration<8)/*consedering 200 mili amp as limit here*/ + quant_data.current_quant[Iteration] = float_to_uint8(0.0,2640,actual_data.current_actual[Iteration]);//quantiz(cstart,cstep,actual_data.current_actual[Iteration]); + else if(Iteration==8) + quant_data.current_quant[Iteration] = 10*actual_data.current_actual[Iteration]; + /*quant_data.current_quant[Iteration] = float_to_uint8(0.0,25,actual_data.current_actual[Iteration]);//quantiz(tstart_thermistor,tstep_thermistor,actual_data.current_actual[Iteration]); /*the bus voltage inside*/ + else if(Iteration==9) + quant_data.current_quant[Iteration] = float_to_uint8(-50,150,actual_data.current_actual[Iteration]); /*the temp of board*/ + else if(Iteration>9)/*changed from 25 to 300 what value do we expectt?*/ + quant_data.current_quant[Iteration] = float_to_uint8(-50,100,actual_data.current_actual[Iteration]); + + eps_pc.printf("\n\r quan curr data[%d],\t %d",Iteration,quant_data.current_quant[Iteration]); + } for(Iteration=0;Iteration<2;Iteration++){ - quant_data.Batt_temp_quant[Iteration] = float_to_uint8(-50,100,actual_data.Batt_temp_actual[Iteration]);//quantiz(tstart,tstep,actual_data.Batt_temp_actual[Iteration]); + quant_data.Batt_temp_quant[Iteration] = float_to_uint8(-50,150,actual_data.Batt_temp_actual[Iteration]);//quantiz(tstart,tstep,actual_data.Batt_temp_actual[Iteration]); } //to be changed no need to quantized @@ -562,7 +582,7 @@ /*no need*/// ->> quant_data.Batt_gauge_quant[2]=quantiz(crate_start,crate_step,actual_data.Batt_gauge_actual[2]); /*no need*/// ->> quant_data.Batt_gauge_alerts=actual_data.Batt_gauge_actual[3]; - quant_data.BAE_temp_quant= float_to_uint8(-50,100,actual_data.BAE_temp_actual); + quant_data.BAE_temp_quant= float_to_uint8(-50,150,actual_data.BAE_temp_actual); //// for(Iteration=0;Iteration<3;Iteration++){ //// quant_data.AngularSpeed_quant[Iteration]=actual_data.AngularSpeed_actual[Iteration]; @@ -574,17 +594,24 @@ //// printf("\n\r b value %f",quant_data.Bvalue_quant[Iteration]); //// } - quant_data.Batt_voltage_quant= float_to_uint8(0,25.0,actual_data.Batt_voltage_actual); + //changed + quant_data.Batt_voltage_quant = 10*(actual_data.Batt_voltage_actual); + /*quant_data.Batt_voltage_quant= float_to_uint8(0,25.0,actual_data.Batt_voltage_actual);*/ + /* + for(Iteration=0; Iteration<16; Iteration++) + eps_pc.printf("Current[%d] %d\r\n",Iteration, quant_data.current_quant[Iteration]); + for(Iteration=0; Iteration<16; Iteration++) + eps_pc.printf("vvol[%d] %d\r\n",Iteration,quant_data.voltage_quant[Iteration]);*/ //?? WHAT DO here arch_data.Batt_1_temp=quant_data.Batt_temp_quant[0]; arch_data.Batt_2_temp=quant_data.Batt_temp_quant[1]; - arch_data.EPS_PCB_temp=quant_data.voltage_quant[14]; + arch_data.EPS_PCB_temp=quant_data.voltage_quant[1]; //arch_data.Batt_SOC=quant_data.Batt_gauge_quant[1]; arch_data.power_mode=actual_data.power_mode; arch_data.faultPoll_status=actual_data.faultPoll_status; arch_data.faultIr_status=actual_data.faultIr_status; - arch_data.Batt_voltage=quant_data.Batt_voltage_quant; + arch_data.Batt_voltage=quant_data.Batt_voltage_quant ; //// printf("\n\r in hk"); } @@ -780,17 +807,19 @@ bool firstCount=true; // goes to EPS init -void saveMin(char x,char y){ +uint8_t saveMin(uint8_t x,uint8_t y){ if(y<x){ x=y; + return x; } } -void saveMax(char x,char y){ +uint8_t saveMax(uint8_t x,uint8_t y){ if (y>x) { x=y; } + return x; } @@ -800,7 +829,7 @@ bae_HK_minmax.voltage_min[i] = quant_data.voltage_quant[i]; bae_HK_minmax.voltage_max[i] = quant_data.voltage_quant[i]; } - for (int i = 0; i < 12; ++i){ + for (int i = 0; i < 16; ++i){ bae_HK_minmax.current_min[i] = quant_data.current_quant[i]; bae_HK_minmax.current_max[i] = quant_data.current_quant[i]; } @@ -841,19 +870,19 @@ else { for (int i = 0; i < 16; ++i) { - saveMin(bae_HK_minmax.voltage_min[i],quant_data.voltage_quant[i]); - saveMax(bae_HK_minmax.voltage_max[i],quant_data.voltage_quant[i]); + bae_HK_minmax.voltage_min[i] = saveMin(bae_HK_minmax.voltage_min[i],quant_data.voltage_quant[i]); + bae_HK_minmax.voltage_max[i] = saveMax(bae_HK_minmax.voltage_max[i],quant_data.voltage_quant[i]); } - for (int i = 0; i < 12; ++i) + for (int i = 0; i < 16; ++i) { - saveMin(bae_HK_minmax.current_min[i],quant_data.current_quant[i]); - saveMax(bae_HK_minmax.current_max[i],quant_data.current_quant[i]); + bae_HK_minmax.current_min[i] = saveMin(bae_HK_minmax.current_min[i],quant_data.current_quant[i]); + bae_HK_minmax.current_max[i] = saveMax(bae_HK_minmax.current_max[i],quant_data.current_quant[i]); } for (int i = 0; i < 2; ++i) { - saveMin(bae_HK_minmax.Batt_temp_min[i],quant_data.Batt_temp_quant[i]); - saveMax(bae_HK_minmax.Batt_temp_max[i],quant_data.Batt_temp_quant[i]); + bae_HK_minmax.Batt_temp_min[i] = saveMin(bae_HK_minmax.Batt_temp_min[i],quant_data.Batt_temp_quant[i]); + bae_HK_minmax.Batt_temp_max[i] = saveMax(bae_HK_minmax.Batt_temp_max[i],quant_data.Batt_temp_quant[i]); } /* for (int i = 0; i < 3; ++i) @@ -862,32 +891,80 @@ saveMax(bae_HK_minmax.Batt_gauge_max[i], quant_data.Batt_gauge_quant[i]); } */ - saveMin(bae_HK_minmax.Batt_SOC_min, ((uint8_t)(actual_data.Batt_gauge_actual[1])) ); - saveMax(bae_HK_minmax.Batt_SOC_max, ((uint8_t)(actual_data.Batt_gauge_actual[1])) ); + bae_HK_minmax.Batt_SOC_min = saveMin(bae_HK_minmax.Batt_SOC_min, ((uint8_t)(actual_data.Batt_gauge_actual[1])) ); + bae_HK_minmax.Batt_SOC_max = saveMax(bae_HK_minmax.Batt_SOC_max, ((uint8_t)(actual_data.Batt_gauge_actual[1])) ); - saveMin(bae_HK_minmax.BCN_TEMP_min, BCN_TMP); - saveMin(bae_HK_minmax.BCN_TEMP_max, BCN_TMP); + bae_HK_minmax.BCN_TEMP_min = saveMin(bae_HK_minmax.BCN_TEMP_min, BCN_TMP); + bae_HK_minmax.BCN_TEMP_max = saveMin(bae_HK_minmax.BCN_TEMP_max, BCN_TMP); for (int i = 0; i < 3; ++i) { - saveMin(bae_HK_minmax.bit_data_acs_mg_min[i], actual_data.bit_data_acs_mg[i]); - saveMax(bae_HK_minmax.bit_data_acs_mg_max[i], actual_data.bit_data_acs_mg[i]); + bae_HK_minmax.bit_data_acs_mg_min[i] = saveMin(bae_HK_minmax.bit_data_acs_mg_min[i], actual_data.bit_data_acs_mg[i]); + bae_HK_minmax.bit_data_acs_mg_max[i] = saveMax(bae_HK_minmax.bit_data_acs_mg_max[i], actual_data.bit_data_acs_mg[i]); } for (int i = 0; i < 3; ++i) { - saveMin(bae_HK_minmax.bit_data_acs_mm_min[i], actual_data.bit_data_acs_mm[i]); - saveMax(bae_HK_minmax.bit_data_acs_mm_max[i], actual_data.bit_data_acs_mm[i]); + bae_HK_minmax.bit_data_acs_mm_min[i] = saveMin(bae_HK_minmax.bit_data_acs_mm_min[i], actual_data.bit_data_acs_mm[i]); + bae_HK_minmax.bit_data_acs_mm_max[i] = saveMax(bae_HK_minmax.bit_data_acs_mm_max[i], actual_data.bit_data_acs_mm[i]); } - saveMin(bae_HK_minmax.BAE_temp_min,quant_data.BAE_temp_quant); - saveMax(bae_HK_minmax.BAE_temp_max,quant_data.BAE_temp_quant); - saveMin(bae_HK_minmax.Batt_voltage_min,quant_data.Batt_voltage_quant); - saveMin(bae_HK_minmax.Batt_voltage_max,quant_data.Batt_voltage_quant); + bae_HK_minmax.BAE_temp_min = saveMin(bae_HK_minmax.BAE_temp_min,quant_data.BAE_temp_quant); + bae_HK_minmax.BAE_temp_max = saveMax(bae_HK_minmax.BAE_temp_max,quant_data.BAE_temp_quant); + bae_HK_minmax.Batt_voltage_min = saveMin(bae_HK_minmax.Batt_voltage_min,quant_data.Batt_voltage_quant); + bae_HK_minmax.Batt_voltage_max = saveMin(bae_HK_minmax.Batt_voltage_max,quant_data.Batt_voltage_quant); } firstCount=false; + + //printing the min_max data shouldn't give the tc to get new min max data shouldn't call the case 0x41 now to reset the min_max data + for (int i = 0; i < 16; ++i) + eps_pc.printf("\n\rthe min volatages are %d = %d",i,bae_HK_minmax.voltage_min[i]); + for (int i = 0; i < 16; ++i) + eps_pc.printf("\n\rthe min current are %d = %d",i,bae_HK_minmax.current_min[i]); + for (int i = 0; i < 2; ++i) + eps_pc.printf("\n\rthe min bae_temp are %d = %d",i,bae_HK_minmax.Batt_temp_min[i]); + + eps_pc.printf("\n\rthe min batt_SOC_min are %d",bae_HK_minmax.Batt_SOC_min); + eps_pc.printf("\n\rthe min BCN_TEMP_min are %d",bae_HK_minmax.BCN_TEMP_min); + + for (int i = 0; i < 3; ++i) + { + eps_pc.printf("\n\rthe min bit_data_acs_mg_min are %d = %d",i,bae_HK_minmax.bit_data_acs_mg_min[i]); + } + for (int i = 0; i < 3; ++i) + { + eps_pc.printf("\n\rthe min bit_data_acs_mm_min are %d = %d",i,bae_HK_minmax.bit_data_acs_mm_min[i]); + } + + eps_pc.printf("\n\rthe min BAE_temp_min are %d",bae_HK_minmax.BAE_temp_min); + eps_pc.printf("\n\rthe min Batt_voltage_min %d",bae_HK_minmax.Batt_voltage_min); + + //max data now + for (int i = 0; i < 16; ++i) + eps_pc.printf("\n\rthe max volatages are %d = %d",i,bae_HK_minmax.voltage_max[i]); + for (int i = 0; i < 16; ++i) + eps_pc.printf("\n\rthe max current are %d = %d",i,bae_HK_minmax.current_max[i]); + for (int i = 0; i < 2; ++i) + eps_pc.printf("\n\rthe max bae_temp are %d = %d",i,bae_HK_minmax.Batt_temp_max[i]); + + eps_pc.printf("\n\rthe max batt_SOC_max are %d",bae_HK_minmax.Batt_SOC_max); + eps_pc.printf("\n\rthe max BCN_TEMP_max are %d",bae_HK_minmax.BCN_TEMP_max); + + for (int i = 0; i < 3; ++i) + { + eps_pc.printf("\n\rthe max bit_data_acs_mg_max are %d = %d",i,bae_HK_minmax.bit_data_acs_mg_max[i]); + } + for (int i = 0; i < 3; ++i) + { + eps_pc.printf("\n\rthe max bit_data_acs_mm_max are %d = %d",i,bae_HK_minmax.bit_data_acs_mm_max[i]); + } + + eps_pc.printf("\n\rthe max BAE_temp_max are %d ",bae_HK_minmax.BAE_temp_max); + eps_pc.printf("\n\rthe max Batt_voltage_max %d ",bae_HK_minmax.Batt_voltage_max); + + } - + //............................................BATTERY GAUGE......................................// void FCTN_BATTERYGAUGE_INIT()