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 RAJANGAM_REVIEW_BAE_CODE by
Diff: EPS.cpp
- Revision:
- 66:a5d2b8dc6b9e
- Parent:
- 65:d1b12729fcdc
- Child:
- 67: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()
