De sensorcontroller van het TLS2 project.

Dependencies:   mbed

Committer:
RichardHoekstra
Date:
Tue Nov 08 18:49:33 2016 +0000
Revision:
0:eea3cc9d2701
Child:
1:c9fae063e6f3
First update;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
RichardHoekstra 0:eea3cc9d2701 1 #include "mbed.h"
RichardHoekstra 0:eea3cc9d2701 2
RichardHoekstra 0:eea3cc9d2701 3
RichardHoekstra 0:eea3cc9d2701 4 /* De sensor controller heeft de volgende taken
RichardHoekstra 0:eea3cc9d2701 5 1. Sensoren uitlezen
RichardHoekstra 0:eea3cc9d2701 6 1. De frequentie moet per sensor aanpasbaar zijn.
RichardHoekstra 0:eea3cc9d2701 7 2. Reageren op I2C data requests
RichardHoekstra 0:eea3cc9d2701 8 3. Indien mogelijk meerdere samples nemen van de hoogste prioriteit sensor
RichardHoekstra 0:eea3cc9d2701 9
RichardHoekstra 0:eea3cc9d2701 10 De volgende 'dingen' moeten kunnen worden ingesteld
RichardHoekstra 0:eea3cc9d2701 11 1. 'Hoofd'sensor
RichardHoekstra 0:eea3cc9d2701 12 2. Sample rate _per_ sensor
RichardHoekstra 0:eea3cc9d2701 13 3. Moving Average van 'Hoofd'sensor
RichardHoekstra 0:eea3cc9d2701 14 */
RichardHoekstra 0:eea3cc9d2701 15
RichardHoekstra 0:eea3cc9d2701 16 void i2c_request(){
RichardHoekstra 0:eea3cc9d2701 17 //To be written
RichardHoekstra 0:eea3cc9d2701 18 }
RichardHoekstra 0:eea3cc9d2701 19
RichardHoekstra 0:eea3cc9d2701 20
RichardHoekstra 0:eea3cc9d2701 21 float sensorVal[3] = {0};
RichardHoekstra 0:eea3cc9d2701 22 //Index 0: druksensor waarde
RichardHoekstra 0:eea3cc9d2701 23 //Index 1: flowsensor waarde
RichardHoekstra 0:eea3cc9d2701 24 //Index 2: temperatuursenor waarde
RichardHoekstra 0:eea3cc9d2701 25 #define druksensor 0
RichardHoekstra 0:eea3cc9d2701 26 #define flowsensor 1
RichardHoekstra 0:eea3cc9d2701 27 #define tempsensor 2
RichardHoekstra 0:eea3cc9d2701 28
RichardHoekstra 0:eea3cc9d2701 29 int main() {
RichardHoekstra 0:eea3cc9d2701 30 //Pins
RichardHoekstra 0:eea3cc9d2701 31 AnalogIn drukSensor(A0);
RichardHoekstra 0:eea3cc9d2701 32 AnalogIn flowSensor(A1);
RichardHoekstra 0:eea3cc9d2701 33 AnalogIn tempSensor(A2);
RichardHoekstra 0:eea3cc9d2701 34
RichardHoekstra 0:eea3cc9d2701 35 //Sample time
RichardHoekstra 0:eea3cc9d2701 36 int tick_ms_druksensor = 10, //100 Hz
RichardHoekstra 0:eea3cc9d2701 37 tick_ms_flowsensor = 10, //100 Hz
RichardHoekstra 0:eea3cc9d2701 38 tick_ms_tempsensor = 1000; //1 Hz
RichardHoekstra 0:eea3cc9d2701 39
RichardHoekstra 0:eea3cc9d2701 40 //mbed ondersteund onneindig veel timers
RichardHoekstra 0:eea3cc9d2701 41 Timer t_druk,
RichardHoekstra 0:eea3cc9d2701 42 t_flow,
RichardHoekstra 0:eea3cc9d2701 43 t_temp;
RichardHoekstra 0:eea3cc9d2701 44
RichardHoekstra 0:eea3cc9d2701 45 t_druk.start();
RichardHoekstra 0:eea3cc9d2701 46 t_flow.start();
RichardHoekstra 0:eea3cc9d2701 47 t_temp.start();
RichardHoekstra 0:eea3cc9d2701 48 while(1) {
RichardHoekstra 0:eea3cc9d2701 49 if(t_druk.read_ms() >= tick_ms_druksensor){
RichardHoekstra 0:eea3cc9d2701 50 //Lees de druksensor uit
RichardHoekstra 0:eea3cc9d2701 51 sensorVal[druksensor] = drukSensor.read();
RichardHoekstra 0:eea3cc9d2701 52 t_druk.reset();
RichardHoekstra 0:eea3cc9d2701 53 }
RichardHoekstra 0:eea3cc9d2701 54 if(t_flow.read_ms() >= tick_ms_flowsensor){
RichardHoekstra 0:eea3cc9d2701 55 //Lees de flowsensor uit
RichardHoekstra 0:eea3cc9d2701 56 sensorVal[flowsensor] = flowSensor.read();
RichardHoekstra 0:eea3cc9d2701 57 t_flow.reset();
RichardHoekstra 0:eea3cc9d2701 58 }
RichardHoekstra 0:eea3cc9d2701 59 if(t_temp.read_ms() >= tick_ms_tempsensor){
RichardHoekstra 0:eea3cc9d2701 60 //Lees de temperatuursensor uit
RichardHoekstra 0:eea3cc9d2701 61 sensorVal[tempsensor] = tempSensor.read();
RichardHoekstra 0:eea3cc9d2701 62 t_temp.reset();
RichardHoekstra 0:eea3cc9d2701 63 }
RichardHoekstra 0:eea3cc9d2701 64 }
RichardHoekstra 0:eea3cc9d2701 65 }