Pradeep Kotipalli
/
TFOX_CDMS_VR_1_0_WORKING
jnlj
Fork of TFOX_CDMS_VR_1_0_WORKING by
Embed:
(wiki syntax)
Show/hide line numbers
HK_CDMS.cpp
00001 #include "HK_CDMS.h" 00002 #include "pin_config.h" 00003 00004 00005 Serial hk_cdms(USBTX, USBRX); 00006 //DigitalOut Select_Lines_C[]={PIN85,PIN84,PIN39,PIN38}; //to mux on IF board,from LSB(Select_Lines_C[3]) to MSB(Select_Lines_C[0]) 00007 DigitalOut Select_Lines_C[]={D7,D6,D5,D4}; 00008 AnalogIn Temperature_voltage_Input(PIN53); //output from IF mux 00009 //AnalogIn Sensor_Input(PIN53); //output from temperature sensor on CDMS 00010 char CDMS_HK_DATA[8]; 00011 00012 void FCTN_CDMS_HK_INIT() 00013 { 00014 Select_Lines_C[0] = Select_Lines_C[1] = Select_Lines_C[2] = Select_Lines_C[3] = 0; //initialisation of variables 00015 } 00016 00017 int quantiz(float l_start,float l_step,float l_x) // accepts min and measured values and step->quantises on a scale 0-15..(4 bit quantisation) 00018 { 00019 int l_y = (l_x - l_start)/l_step; 00020 00021 if(l_y <= 0) 00022 l_y = 0; 00023 00024 if(l_y >= 15) 00025 l_y = 15; 00026 00027 return l_y; 00028 } 00029 00030 Sensor_Data Sensor; 00031 Sensor_Data_Quantised Sensor_Quantised; 00032 00033 char* FCTN_CDMS_HK_MAIN() 00034 { 00035 float l_resistance_thermistor; //declaration of variables 00036 float l_voltage_thermistor; 00037 float l_Payload_voltage; 00038 int l_Loop_Iterator = 0; 00039 int l_Select_Line_Iterator = 3; 00040 00041 for(l_Loop_Iterator = 0; l_Loop_Iterator < 16; l_Loop_Iterator++) 00042 { 00043 00044 l_voltage_thermistor = Temperature_voltage_Input.read()*3.3; //voltage across thermistor 00045 l_resistance_thermistor = 24000*l_voltage_thermistor/(3.3 - l_voltage_thermistor); //resistance of thermistor 00046 l_Payload_voltage = Temperature_voltage_Input.read()*3.3; 00047 00048 Sensor.l_Temperature_thermistor[(l_Loop_Iterator)] = 0.00000004*l_resistance_thermistor*l_resistance_thermistor - 0.0039*l_resistance_thermistor + 347.97; 00049 Sensor.l_Temperature_sensor[l_Loop_Iterator] = (-90.7*3.3*Temperature_voltage_Input.read() + 190.1543); 00050 00051 if(l_Loop_Iterator % 2 == 0) 00052 { 00053 if(l_Loop_Iterator < 4) 00054 Sensor_Quantised.l_Temperature_thermistor[(l_Loop_Iterator)/2] = quantiz(tstart_thermistor,tstep_thermistor,Sensor.l_Temperature_thermistor[(l_Loop_Iterator)]); 00055 00056 else 00057 { 00058 if(4 < l_Loop_Iterator < 14) 00059 Sensor_Quantised.l_Payload_voltage[(l_Loop_Iterator)/2] = Sensor_Quantised.l_Payload_voltage[(l_Loop_Iterator)/2] <<4 + quantiz(tstart,tstep,Sensor.l_Payload_voltage[l_Loop_Iterator]); 00060 00061 else 00062 Sensor_Quantised.l_Temperature_sensor[(l_Loop_Iterator)/2] = quantiz(tstart,tstep,Sensor.l_Temperature_sensor[l_Loop_Iterator]); 00063 } 00064 } 00065 00066 else 00067 { 00068 00069 if(l_Loop_Iterator < 4) 00070 Sensor_Quantised.l_Temperature_thermistor[(l_Loop_Iterator)/2] = Sensor_Quantised.l_Temperature_thermistor[(l_Loop_Iterator)/2] <<4 + quantiz(tstart_thermistor,tstep_thermistor,Sensor.l_Temperature_thermistor[l_Loop_Iterator]); 00071 00072 else 00073 { 00074 if(4 < l_Loop_Iterator < 14) 00075 Sensor_Quantised.l_Payload_voltage[(l_Loop_Iterator)/2] = quantiz(tstart,tstep,Sensor.l_Payload_voltage[l_Loop_Iterator]); 00076 00077 else 00078 Sensor_Quantised.l_Temperature_sensor[(l_Loop_Iterator)/2] = Sensor_Quantised.l_Temperature_sensor[(l_Loop_Iterator)/2] <<4 + quantiz(tstart,tstep,Sensor.l_Temperature_sensor[l_Loop_Iterator]); 00079 00080 } 00081 } 00082 00083 00084 00085 // The following lines are used to iterate the select lines from 0 to 15 00086 for(l_Select_Line_Iterator = 3;l_Select_Line_Iterator >= 0;l_Select_Line_Iterator--) 00087 { 00088 if(Select_Lines_C[l_Select_Line_Iterator] == 0) 00089 { 00090 Select_Lines_C[l_Select_Line_Iterator] = 1; 00091 break; 00092 } 00093 else Select_Lines_C[l_Select_Line_Iterator] = 0; 00094 printf("%d\n",l_Select_Line_Iterator); 00095 } 00096 00097 wait_us(10.0); // A delay of 10 microseconds between each sensor output. Can be changed. 00098 } 00099 printf("vol %f temp %f",Temperature_voltage_Input.read()*3.3,-90.7*3.3*Temperature_voltage_Input.read() + 190.1543 ); 00100 printf("CDMS_HK Data is Temperature_sensor=%s, l_Temperature_thermistor=%s, Payload_voltage=%s ",Sensor_Quantised.l_Temperature_sensor,Sensor_Quantised.l_Temperature_thermistor,Sensor_Quantised.l_Payload_voltage); 00101 strcpy (CDMS_HK_DATA,Sensor_Quantised.l_Temperature_sensor); 00102 strcat (CDMS_HK_DATA,Sensor_Quantised.l_Temperature_thermistor); 00103 strcat (CDMS_HK_DATA,Sensor_Quantised.l_Payload_voltage); 00104 return(CDMS_HK_DATA); 00105 }
Generated on Fri Jul 15 2022 14:57:04 by 1.7.2