Buoyancy Firmware  1.0
Buoyancy Vehicle Firmware Documentation
mission.h
Go to the documentation of this file.
1 #ifndef _MISSION_H_
2 #define _MISSION_H_
3 
4 #include "main.h"
5 #include "timers.h"
6 
16 #define PID_kP 0.04
17 #define PID_kI 0.0015
18 #define PID_kD 0.05
19 #define PID_kI_THRESHOLD 1.0
21 #define PID_LIMIT_MIN 0
22 #define PID_LIMIT_MAX 0.055
24 #define MAX_DEPTH 50.0
25 #define MIN_DEPTH 0.0
27 #define PSI_RANGE 100.0
28 #define MEASURED_OFFSET 0.19
29 #define PSI_WEATHER_OFFSET 0.123
30 #define PSI_1ATM_PRESSURE 14.7
31 #define BAR_RANGE 5.89475728
32 #define SAADC_MAX 16320.0
33 #define SAADC_MIN 1730
34 #define PSI_TO_MH2O 0.703070
35 #define PSI_TO_PASCAL 6894.76
36 #define SAADC_VOLTAGE_ERROR 0.022
37 #define PASCAL_MAX 790828.66
38 #define PASCAL_MIN 101352.90
39 #define PRESSURE_VOLTAGE_MAX 4.5
40 #define PRESSURE_VOLTAGE_MIN 0.5
41 #define PRESSURE_VOLTAGE_RANGE 4.0
43 #define MAX_NR_OF_MISSIONS 4
44 #define DEFAULT_M1_DEPTH 1.5
45 #define DEFAULT_M1_TIME 180
46 #define DEFAULT_M2_DEPTH 1.0
47 #define DEFAULT_M2_TIME 180
49 #define EMA_alpha 0.1
53 typedef struct
54 {
55  float kp;
56  float ki;
57  float kd;
58  float output;
59  float kiThreshold;
62 }pidData_t;
63 
64 
66 typedef struct
67 {
70  float pressure;
72  float psi;
73  float pascal;
74  float measuredDepth;
77 
78 
80 typedef struct
81 {
82  float depth;
86 
88 typedef struct
89 {
90  missiondata_t missionNr[4];
96  bool running;
99 }mission_t;
100 
101 
103 typedef struct{
104 
108  uint8_t filename[];
109 }logFile_t;
110 
112 typedef struct{
113 
114  float timeStamp;
116  float setpoint;
118  float PIDoutput;
121  float pressurePsi;
124  float temperature;
125  float motionData;
127 }missionLog_t;
128 
129 
130 
131 extern mission_t mission;
139 void prepareMission(void);
140 
147 void missionInit(void);
148 
151 void runMission(void);
152 
155 void CalcPressureAndDepth(void);
156 
159 void missionLogInit(void);
160 
169 void updateMissionLog(void);
170 
171 
172 #endif // _MISSION_H_
173 
174 
uint32_t latestLogFile
Previous added log file number on SD card.
Definition: mission.h:107
float measuredDepth
Pressure value measured in depth relative to water surface.
Definition: mission.h:74
float pascal
Pressure value measured in pascal.
Definition: mission.h:73
float PIDoutput
Last calculated PID output.
Definition: mission.h:118
mission_t mission
mission structure instance
Definition: main.c:76
unsigned char uint8_t
Definition: nrf_drv_uart_PP.c:22
structure for mission related structures and data values
Definition: mission.h:88
logFile_t file
Log file information.
Definition: mission.h:126
float output
PID output value.
Definition: mission.h:58
uint32_t battery
raw battery value from SAAADC
Definition: mission.h:68
float pressureVoltage
Pressure value in volts.
Definition: mission.h:71
structure for holding measured data values
Definition: mission.h:66
float motionData
9-axis motion data measured by ICM20948 motion sensor - Currently not configured
Definition: mission.h:125
float pistonPosition
Piston position as read from the motor position encoder.
Definition: mission.h:61
float batteryVoltage
Battery value in volts.
Definition: mission.h:69
float ki
Integral gain coefficient.
Definition: mission.h:56
void prepareMission()
Definition: mission.c:69
pidData_t pidData
PID data instance to hold pid related data.
Definition: mission.h:92
structure for data values written to log file
Definition: mission.h:112
void missionLogInit()
Definition: mission.c:223
float setpoint
Target depth of current mission.
Definition: mission.h:116
structure for holding mission specific data
Definition: mission.h:80
bool running
Flag to signal that mission is currently running.
Definition: mission.h:96
float pressureVoltage
Pressure measured in volts.
Definition: mission.h:119
float batteryVoltage
Battery measured in volts.
Definition: mission.h:123
float timeStamp
Timestamp to keep track of time during mission.
Definition: mission.h:114
measuredData_t MeasuredData
Measured data instance for holding measured data values.
Definition: mission.h:93
float temperature
Water temperature measured by TMP117 temperature sensor - Currently not configured.
Definition: mission.h:124
uint32_t filenr
Hold the filenumber used to write, read, or delete a specific log file.
Definition: mission.h:105
uint32_t nrOfLogfiles
Total number of log files on SD card.
Definition: mission.h:106
float pressureDepth
Pressure measured in meter with respect to surface.
Definition: mission.h:120
uint8_t nrOfMissions
Calculated number of missions based on configured mission data.
Definition: mission.h:94
float psi
Pressure value measured in psi.
Definition: mission.h:72
uint8_t missionFinished
counter to keep track of the number of missions that have finished during a dive
Definition: mission.h:95
uint8_t missionNr
Currently running mission id.
Definition: mission.h:115
float kp
Proportional gain coefficient.
Definition: mission.h:55
float kiThreshold
Ki threshold - When measured depth is further away than threshold Ki term is not part of pid calculat...
Definition: mission.h:59
float pistonPosition
current piston position
Definition: mission.h:117
structure for holding PID related data
Definition: mission.h:53
float pressurePsi
Pressure measured in psi.
Definition: mission.h:121
void missionInit()
Initialize mission module.
Definition: mission.c:31
void updateMissionLog()
Definition: mission.c:233
float pressurePascal
Pressure measured in pascal.
Definition: mission.h:122
structure for log file related data
Definition: mission.h:103
uint32_t time
in seconds.
Definition: mission.h:83
unsigned int uint32_t
Definition: nrf_drv_uart_PP.c:30
uint32_t timeStamp
Timestamp to keep track of mission duration.
Definition: mission.h:97
float atmosphericPressure
Atmospheric pressure to help pressure sensor compensate for high or low barometric pressure...
Definition: mission.h:60
void runMission()
Definition: mission.c:95
missiondata_t currentMission
mission data instance to hold the currently running mission data
Definition: mission.h:91
float outside_temperature
Temperature measured by TMP117, attached to pressure housing to measure water temperature.
Definition: mission.h:75
float depth
in meters from 0 to 50.
Definition: mission.h:82
float kd
Derivative gain coefficient.
Definition: mission.h:57
float pressure
raw pressure sensor value from SAAADC
Definition: mission.h:70
void CalcPressureAndDepth(void)
Definition: mission.c:201