hk

Dependencies:   mbed-rtos mbed

Fork of vr1_0CDMS_1_0 by Team Fox

Files at this revision

API Documentation at this revision

Comitter:
pradeepvk2208
Date:
Tue Jun 16 16:37:37 2015 +0000
Parent:
5:c77b49508927
Commit message:
cdmshk

Changed in this revision

HK_CDMS.cpp Show annotated file Show diff for this revision Revisions of this file
HK_CDMS.h Show annotated file Show diff for this revision Revisions of this file
mbed-rtos.lib Show annotated file Show diff for this revision Revisions of this file
pin_config.h Show annotated file Show diff for this revision Revisions of this file
diff -r c77b49508927 -r 1f8dbe33c66a HK_CDMS.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/HK_CDMS.cpp	Tue Jun 16 16:37:37 2015 +0000
@@ -0,0 +1,106 @@
+#include "HK_CDMS.h"
+#include "pin_config.h"
+ 
+ 
+Serial hk_cdms(USBTX, USBRX);
+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])
+ 
+AnalogIn Temperature_voltage_Input(PIN53);  //output from IF mux
+AnalogIn Sensor_Input(PIN53);    //output from temperature sensor on CDMS
+ 
+ 
+void FCTN_CDMS_HK_INIT()
+{
+    Select_Lines_C[0] = Select_Lines_C[1] = Select_Lines_C[2] = Select_Lines_C[3] = 0;  //initialisation of variables
+ 
+}
+ 
+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)
+{
+    int l_y = (l_x - l_start)/l_step;
+        
+    if(l_y <= 0)
+            l_y = 0;
+            
+    if(l_y >= 15)
+            l_y = 15;
+            
+    return l_y;
+} 
+ 
+Sensor_Data Sensor; 
+Sensor_Data_Quantised Sensor_Quantised;
+ 
+char* FCTN_CDMS_HK_MAIN()
+{
+    float l_resistance_thermistor;  //declaration of variables
+    float l_voltage_thermistor;
+    float l_Payload_voltage;
+    int l_Loop_Iterator = 0;
+    int l_Select_Line_Iterator = 3;
+ 
+    for(l_Loop_Iterator = 0; l_Loop_Iterator < 16; l_Loop_Iterator++)
+    {
+ 
+        l_voltage_thermistor = Temperature_voltage_Input.read()*3.3;       //voltage across thermistor
+        l_resistance_thermistor = 24000*l_voltage_thermistor/(3.3 - l_voltage_thermistor);           //resistance of thermistor
+        l_Payload_voltage = Temperature_voltage_Input.read()*3.3;
+               
+        Sensor.l_Temperature_thermistor[(l_Loop_Iterator)] = 0.00000004*l_resistance_thermistor*l_resistance_thermistor - 0.0039*l_resistance_thermistor + 347.97;
+        Sensor.l_Temperature_sensor[l_Loop_Iterator] = (-90.7*3.3*Temperature_voltage_Input.read() + 190.1543);  
+              
+        if(l_Loop_Iterator % 2 == 0) 
+        {
+             if(l_Loop_Iterator < 4)
+             Sensor_Quantised.l_Temperature_thermistor[(l_Loop_Iterator)/2] = quantiz(tstart_thermistor,tstep_thermistor,Sensor.l_Temperature_thermistor[(l_Loop_Iterator)]);
+               
+             else  
+             {
+                if(4 < l_Loop_Iterator < 14)
+                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]); 
+                
+                else
+                Sensor_Quantised.l_Temperature_sensor[(l_Loop_Iterator)/2] = quantiz(tstart,tstep,Sensor.l_Temperature_sensor[l_Loop_Iterator]); 
+             }
+        }
+                                              
+        else
+        {
+            
+            if(l_Loop_Iterator < 4)
+            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]);
+            
+            else
+            {
+                if(4 < l_Loop_Iterator < 14)
+                Sensor_Quantised.l_Payload_voltage[(l_Loop_Iterator)/2] = quantiz(tstart,tstep,Sensor.l_Payload_voltage[l_Loop_Iterator]);
+                
+                else
+                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]); 
+        
+            }
+        }
+    
+       
+          
+       // The following lines are used to iterate the select lines from 0 to 15
+       for(l_Select_Line_Iterator = 3;l_Select_Line_Iterator >= 0;l_Select_Line_Iterator--)
+       {
+            if(Select_Lines_C[l_Select_Line_Iterator] == 0)
+            {
+                Select_Lines_C[l_Select_Line_Iterator] = 1;
+                break;
+            }
+            else Select_Lines_C[l_Select_Line_Iterator] = 0;
+            printf("%d\n",l_Select_Line_Iterator);
+       }
+      
+        wait_us(10.0); //  A delay of 10 microseconds between each sensor output. Can be changed.
+    }
+     
+     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);
+     strcpy (CDMS_HK_DATA,Sensor_Quantised.l_Temperature_sensor);
+     strcat (CDMS_HK_DATA,Sensor_Quantised.l_Temperature_thermistor);
+     strcat (CDMS_HK_DATA,Sensor_Quantised.l_Payload_voltage);
+     return(CDMS_HK_DATA);
+}
\ No newline at end of file
diff -r c77b49508927 -r 1f8dbe33c66a HK_CDMS.h
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/HK_CDMS.h	Tue Jun 16 16:37:37 2015 +0000
@@ -0,0 +1,29 @@
+#include "mbed.h"
+ 
+#define tstart -40
+#define tstep 8
+#define tstep_thermistor 8
+#define tstart_thermistor -40
+ 
+typedef struct Sensor_Data
+{
+    
+    float l_Temperature_sensor[2];
+    float l_Temperature_thermistor[4]; //read by thermistors on solar panels
+    float l_Payload_voltage[9]; //for payload analog signals
+ 
+} Sensor_Data;
+ 
+typedef struct Sensor_Data_Quantised
+{
+    char l_Temperature_sensor[1];
+    char l_Temperature_thermistor[2];
+    char l_Payload_voltage[5];
+    
+} Sensor_Data_Quantised;
+ 
+void FCTN_CDMS_HK_INIT();
+char* FCTN_CDMS_HK_MAIN();
+ 
+int quantiz(float l_start,float l_step,float l_x);
+char CDMS_HK_DATA[8];
\ No newline at end of file
diff -r c77b49508927 -r 1f8dbe33c66a mbed-rtos.lib
--- a/mbed-rtos.lib	Tue Jun 16 16:09:47 2015 +0000
+++ b/mbed-rtos.lib	Tue Jun 16 16:37:37 2015 +0000
@@ -1,1 +1,1 @@
-http://mbed.org/users/mbed_official/code/mbed-rtos/#ed4ff3bea947
+http://mbed.org/users/mbed_official/code/mbed-rtos/#5c72830f2d48
diff -r c77b49508927 -r 1f8dbe33c66a pin_config.h
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/pin_config.h	Tue Jun 16 16:37:37 2015 +0000
@@ -0,0 +1,102 @@
+// 100 LQFP format pin assignment
+#define PIN1 PTE0
+#define PIN2 PTE1
+#define PIN3 PTE2
+#define PIN4 PTE3
+#define PIN5 PTE4
+#define PIN6 PTE5
+#define PIN7 PTE6
+//#define 8 
+//#define 9 
+//#define 10 
+//#define 11 
+//#define 12 
+//#define 13 
+#define PIN14 PTE16
+#define PIN15 PTE17
+#define PIN16 PTE18
+#define PIN17 PTE19
+#define PIN18 PTE20
+#define PIN19 PTE21
+#define PIN20 PTE22
+#define PIN21 PTE23
+//#define 22 
+//#define 23 
+//#define 24 
+//#define 25 
+#define PIN26 PTE29
+#define PIN27 PTE30
+#define PIN28 PTE31
+//#define 29 
+//#define 30 
+#define PIN31 PTE24
+#define PIN32 PTE25
+#define PIN33 PTE26
+#define PIN34 PTA0
+#define PIN35 PTA1
+#define PIN36 PTA2
+#define PIN37 PTA3
+#define PIN38 PTA4
+#define PIN39 PTA5
+#define PIN40 PTA6
+#define PIN41 PTA7
+#define PIN42 PTA12
+#define PIN43 PTA13
+#define PIN44 PTA14
+#define PIN45 PTA15
+#define PIN46 PTA16
+#define PIN47 PTA17
+//#define 48 
+//#define 49 
+#define PIN50 PTA18
+#define PIN51 PTA19
+#define PIN52 PTA20
+#define PIN53 PTB0
+#define PIN54 PTB1
+#define PIN55 PTB2
+#define PIN56 PTB3
+#define PIN57 PTB7
+#define PIN58 PTB8
+#define PIN59 PTB9
+#define PIN60 PTB10
+#define PIN61 PTB11
+#define PIN62 PTB16
+#define PIN63 PTB17
+#define PIN64 PTB18
+#define PIN65 PTB19
+#define PIN66 PTB20
+#define PIN67 PTB21
+#define PIN68 PTB22
+#define PIN69 PTB23
+#define PIN70 PTC0
+#define PIN71 PTC1
+#define PIN72 PTC2
+#define PIN73 PTC3
+//#define 74 
+//#define 75 
+#define PIN76 PTC20
+#define PIN77 PTC21
+#define PIN78 PTC22
+#define PIN79 PTC23
+#define PIN80 PTC4
+#define PIN81 PTC5
+#define PIN82 PTC6
+#define PIN83 PTC7
+#define PIN84 PTC8
+#define PIN85 PTC9
+#define PIN86 PTC10
+#define PIN87 PTC11
+#define PIN88 PTC12
+#define PIN89 PTC13
+#define PIN90 PTC16
+#define PIN91 PTC17
+#define PIN92 PTC18
+#define PIN93 PTD0
+#define PIN94 PTD1
+#define PIN95 PTD2
+#define PIN96 PTD3
+#define PIN97 PTD4
+#define PIN98 PTD5
+#define PIN99 PTD6
+#define PIN100 PTD7
+