jnlj

Dependencies:   mbed-rtos mbed

Fork of TFOX_CDMS_VR_1_0_WORKING by Team Fox

Committer:
pradeepvk2208
Date:
Thu Jul 02 08:08:53 2015 +0000
Revision:
8:48c7ddad90b7
Parent:
7:4f17f1afe95e
hi;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
sakthipriya 7:4f17f1afe95e 1 #include "HK_CDMS.h"
sakthipriya 7:4f17f1afe95e 2 #include "pin_config.h"
sakthipriya 7:4f17f1afe95e 3
sakthipriya 7:4f17f1afe95e 4
sakthipriya 7:4f17f1afe95e 5 Serial hk_cdms(USBTX, USBRX);
sakthipriya 7:4f17f1afe95e 6 //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])
sakthipriya 7:4f17f1afe95e 7 DigitalOut Select_Lines_C[]={D7,D6,D5,D4};
sakthipriya 7:4f17f1afe95e 8 AnalogIn Temperature_voltage_Input(PIN53); //output from IF mux
sakthipriya 7:4f17f1afe95e 9 //AnalogIn Sensor_Input(PIN53); //output from temperature sensor on CDMS
sakthipriya 7:4f17f1afe95e 10 char CDMS_HK_DATA[8];
sakthipriya 7:4f17f1afe95e 11
sakthipriya 7:4f17f1afe95e 12 void FCTN_CDMS_HK_INIT()
sakthipriya 7:4f17f1afe95e 13 {
sakthipriya 7:4f17f1afe95e 14 Select_Lines_C[0] = Select_Lines_C[1] = Select_Lines_C[2] = Select_Lines_C[3] = 0; //initialisation of variables
sakthipriya 7:4f17f1afe95e 15 }
sakthipriya 7:4f17f1afe95e 16
sakthipriya 7:4f17f1afe95e 17 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)
sakthipriya 7:4f17f1afe95e 18 {
sakthipriya 7:4f17f1afe95e 19 int l_y = (l_x - l_start)/l_step;
sakthipriya 7:4f17f1afe95e 20
sakthipriya 7:4f17f1afe95e 21 if(l_y <= 0)
sakthipriya 7:4f17f1afe95e 22 l_y = 0;
sakthipriya 7:4f17f1afe95e 23
sakthipriya 7:4f17f1afe95e 24 if(l_y >= 15)
sakthipriya 7:4f17f1afe95e 25 l_y = 15;
sakthipriya 7:4f17f1afe95e 26
sakthipriya 7:4f17f1afe95e 27 return l_y;
sakthipriya 7:4f17f1afe95e 28 }
sakthipriya 7:4f17f1afe95e 29
sakthipriya 7:4f17f1afe95e 30 Sensor_Data Sensor;
sakthipriya 7:4f17f1afe95e 31 Sensor_Data_Quantised Sensor_Quantised;
sakthipriya 7:4f17f1afe95e 32
sakthipriya 7:4f17f1afe95e 33 char* FCTN_CDMS_HK_MAIN()
sakthipriya 7:4f17f1afe95e 34 {
sakthipriya 7:4f17f1afe95e 35 float l_resistance_thermistor; //declaration of variables
sakthipriya 7:4f17f1afe95e 36 float l_voltage_thermistor;
sakthipriya 7:4f17f1afe95e 37 float l_Payload_voltage;
sakthipriya 7:4f17f1afe95e 38 int l_Loop_Iterator = 0;
sakthipriya 7:4f17f1afe95e 39 int l_Select_Line_Iterator = 3;
sakthipriya 7:4f17f1afe95e 40
sakthipriya 7:4f17f1afe95e 41 for(l_Loop_Iterator = 0; l_Loop_Iterator < 16; l_Loop_Iterator++)
sakthipriya 7:4f17f1afe95e 42 {
sakthipriya 7:4f17f1afe95e 43
sakthipriya 7:4f17f1afe95e 44 l_voltage_thermistor = Temperature_voltage_Input.read()*3.3; //voltage across thermistor
sakthipriya 7:4f17f1afe95e 45 l_resistance_thermistor = 24000*l_voltage_thermistor/(3.3 - l_voltage_thermistor); //resistance of thermistor
sakthipriya 7:4f17f1afe95e 46 l_Payload_voltage = Temperature_voltage_Input.read()*3.3;
sakthipriya 7:4f17f1afe95e 47
sakthipriya 7:4f17f1afe95e 48 Sensor.l_Temperature_thermistor[(l_Loop_Iterator)] = 0.00000004*l_resistance_thermistor*l_resistance_thermistor - 0.0039*l_resistance_thermistor + 347.97;
sakthipriya 7:4f17f1afe95e 49 Sensor.l_Temperature_sensor[l_Loop_Iterator] = (-90.7*3.3*Temperature_voltage_Input.read() + 190.1543);
sakthipriya 7:4f17f1afe95e 50
sakthipriya 7:4f17f1afe95e 51 if(l_Loop_Iterator % 2 == 0)
sakthipriya 7:4f17f1afe95e 52 {
sakthipriya 7:4f17f1afe95e 53 if(l_Loop_Iterator < 4)
sakthipriya 7:4f17f1afe95e 54 Sensor_Quantised.l_Temperature_thermistor[(l_Loop_Iterator)/2] = quantiz(tstart_thermistor,tstep_thermistor,Sensor.l_Temperature_thermistor[(l_Loop_Iterator)]);
sakthipriya 7:4f17f1afe95e 55
sakthipriya 7:4f17f1afe95e 56 else
sakthipriya 7:4f17f1afe95e 57 {
sakthipriya 7:4f17f1afe95e 58 if(4 < l_Loop_Iterator < 14)
sakthipriya 7:4f17f1afe95e 59 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]);
sakthipriya 7:4f17f1afe95e 60
sakthipriya 7:4f17f1afe95e 61 else
sakthipriya 7:4f17f1afe95e 62 Sensor_Quantised.l_Temperature_sensor[(l_Loop_Iterator)/2] = quantiz(tstart,tstep,Sensor.l_Temperature_sensor[l_Loop_Iterator]);
sakthipriya 7:4f17f1afe95e 63 }
sakthipriya 7:4f17f1afe95e 64 }
sakthipriya 7:4f17f1afe95e 65
sakthipriya 7:4f17f1afe95e 66 else
sakthipriya 7:4f17f1afe95e 67 {
sakthipriya 7:4f17f1afe95e 68
sakthipriya 7:4f17f1afe95e 69 if(l_Loop_Iterator < 4)
sakthipriya 7:4f17f1afe95e 70 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]);
sakthipriya 7:4f17f1afe95e 71
sakthipriya 7:4f17f1afe95e 72 else
sakthipriya 7:4f17f1afe95e 73 {
sakthipriya 7:4f17f1afe95e 74 if(4 < l_Loop_Iterator < 14)
sakthipriya 7:4f17f1afe95e 75 Sensor_Quantised.l_Payload_voltage[(l_Loop_Iterator)/2] = quantiz(tstart,tstep,Sensor.l_Payload_voltage[l_Loop_Iterator]);
sakthipriya 7:4f17f1afe95e 76
sakthipriya 7:4f17f1afe95e 77 else
sakthipriya 7:4f17f1afe95e 78 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]);
sakthipriya 7:4f17f1afe95e 79
sakthipriya 7:4f17f1afe95e 80 }
sakthipriya 7:4f17f1afe95e 81 }
sakthipriya 7:4f17f1afe95e 82
sakthipriya 7:4f17f1afe95e 83
sakthipriya 7:4f17f1afe95e 84
sakthipriya 7:4f17f1afe95e 85 // The following lines are used to iterate the select lines from 0 to 15
sakthipriya 7:4f17f1afe95e 86 for(l_Select_Line_Iterator = 3;l_Select_Line_Iterator >= 0;l_Select_Line_Iterator--)
sakthipriya 7:4f17f1afe95e 87 {
sakthipriya 7:4f17f1afe95e 88 if(Select_Lines_C[l_Select_Line_Iterator] == 0)
sakthipriya 7:4f17f1afe95e 89 {
sakthipriya 7:4f17f1afe95e 90 Select_Lines_C[l_Select_Line_Iterator] = 1;
sakthipriya 7:4f17f1afe95e 91 break;
sakthipriya 7:4f17f1afe95e 92 }
sakthipriya 7:4f17f1afe95e 93 else Select_Lines_C[l_Select_Line_Iterator] = 0;
sakthipriya 7:4f17f1afe95e 94 printf("%d\n",l_Select_Line_Iterator);
sakthipriya 7:4f17f1afe95e 95 }
sakthipriya 7:4f17f1afe95e 96
sakthipriya 7:4f17f1afe95e 97 wait_us(10.0); // A delay of 10 microseconds between each sensor output. Can be changed.
sakthipriya 7:4f17f1afe95e 98 }
sakthipriya 7:4f17f1afe95e 99 printf("vol %f temp %f",Temperature_voltage_Input.read()*3.3,-90.7*3.3*Temperature_voltage_Input.read() + 190.1543 );
sakthipriya 7:4f17f1afe95e 100 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);
sakthipriya 7:4f17f1afe95e 101 strcpy (CDMS_HK_DATA,Sensor_Quantised.l_Temperature_sensor);
sakthipriya 7:4f17f1afe95e 102 strcat (CDMS_HK_DATA,Sensor_Quantised.l_Temperature_thermistor);
sakthipriya 7:4f17f1afe95e 103 strcat (CDMS_HK_DATA,Sensor_Quantised.l_Payload_voltage);
sakthipriya 7:4f17f1afe95e 104 return(CDMS_HK_DATA);
sakthipriya 7:4f17f1afe95e 105 }