measuring the salinity

Dependencies:   LinearAnalogSensors mbed

Fork of mbed_measuring_temperature by Mario Simaremare

Committer:
ekasinambela
Date:
Tue Jun 07 11:48:37 2016 +0000
Revision:
6:9de0807e2855
Parent:
5:d2b58a5771d7
Child:
7:b0d12907493f
turn of or turn on the  heater

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ekasinambela 0:da915495c7fc 1 #include "mbed.h"
ekasinambela 3:5baf5ad00c1c 2 #include <cmath>
ekasinambela 2:1aab63839dba 3 //#include <LinearTemp.h>
ekasinambela 2:1aab63839dba 4
ekasinambela 0:da915495c7fc 5 Serial pc(USBTX, USBRX);
ekasinambela 0:da915495c7fc 6 DigitalOut myled1(LED1), myled2(LED2);
ekasinambela 3:5baf5ad00c1c 7 AnalogIn pin_1(p16), pin_2(p15), pin_3(p17) ;
ekasinambela 6:9de0807e2855 8 AnalogOut pin_18 (p18);
ekasinambela 2:1aab63839dba 9 //LinearTemp mysensor(p15, 0.0050354, -273.15);
ekasinambela 2:1aab63839dba 10
ekasinambela 5:d2b58a5771d7 11 char program_name[128] = "G3-Waterplay Project";
mariosimaremare 1:6476db5e52e8 12
ekasinambela 4:49b028845be4 13 void salinityMeasurement();
ekasinambela 4:49b028845be4 14 void temperatureMeasurement();
ekasinambela 4:49b028845be4 15
mariosimaremare 1:6476db5e52e8 16 int main()
mariosimaremare 1:6476db5e52e8 17 {
ekasinambela 2:1aab63839dba 18 while(1){
ekasinambela 6:9de0807e2855 19 wait(2);
ekasinambela 4:49b028845be4 20 salinityMeasurement();
ekasinambela 4:49b028845be4 21 temperatureMeasurement();
ekasinambela 0:da915495c7fc 22 }
ekasinambela 0:da915495c7fc 23 }
ekasinambela 4:49b028845be4 24
ekasinambela 4:49b028845be4 25 //salinity function
ekasinambela 4:49b028845be4 26 void salinityMeasurement(){
ekasinambela 4:49b028845be4 27 float f = pin_1.read();
ekasinambela 4:49b028845be4 28
ekasinambela 4:49b028845be4 29 float vin = f * 3.3;
ekasinambela 4:49b028845be4 30 float divider = (float)5/ (float)3;
ekasinambela 4:49b028845be4 31 float vout = vin * divider;
ekasinambela 4:49b028845be4 32
ekasinambela 4:49b028845be4 33 //measure the salinity
ekasinambela 6:9de0807e2855 34 float salt = 16.3 * vout;
ekasinambela 6:9de0807e2855 35 pc.printf("vin: %f, vout: %f, salt: %f \n\r", vin, vout, salt);
ekasinambela 4:49b028845be4 36 }
ekasinambela 4:49b028845be4 37
ekasinambela 4:49b028845be4 38 //temperature function
ekasinambela 4:49b028845be4 39 void temperatureMeasurement(){
ekasinambela 4:49b028845be4 40 //measure the temperature
ekasinambela 4:49b028845be4 41 double f2 = pin_2.read();
ekasinambela 4:49b028845be4 42 double vin = f2 * 4.85;
ekasinambela 4:49b028845be4 43 double divider = (double)5/ (double)3;
ekasinambela 4:49b028845be4 44 double vout = vin * divider;
ekasinambela 4:49b028845be4 45
ekasinambela 4:49b028845be4 46 double RT = (vout * (double)15000) / (4.85 - vout);
ekasinambela 4:49b028845be4 47 double K0 = 0.00102119;
ekasinambela 4:49b028845be4 48 double K1 = 0.000222468 * (log(RT));
ekasinambela 4:49b028845be4 49 double K2 = double (1.33342 * pow (10.0, -7.0)) * pow ((double)log(RT), 3.0);
ekasinambela 4:49b028845be4 50 double TKelvin = 1.0 / (K0 + K1 + K2);
ekasinambela 4:49b028845be4 51 double Celcius = (TKelvin - 273.15)+5.0;
ekasinambela 4:49b028845be4 52
ekasinambela 6:9de0807e2855 53 //pc.printf("K0: %f, K1: %f, K2: %f \n\r", K0, K1, K2);
ekasinambela 6:9de0807e2855 54 //pc.printf("vin: %f, vout: %f, temperature: %f \n\r", vin, vout, Celcius);
ekasinambela 6:9de0807e2855 55 pc.printf("vin: %f, vout: %f, temperature: %f \n\r",vin, vout, Celcius);
ekasinambela 6:9de0807e2855 56
ekasinambela 6:9de0807e2855 57 if (Celcius < 26){
ekasinambela 6:9de0807e2855 58 pin_18 = 1;
ekasinambela 6:9de0807e2855 59 myled1 = 1;
ekasinambela 6:9de0807e2855 60 }else{
ekasinambela 6:9de0807e2855 61 pin_18 = 0;
ekasinambela 6:9de0807e2855 62 myled1 = 0;
ekasinambela 6:9de0807e2855 63 }
ekasinambela 4:49b028845be4 64 }
ekasinambela 4:49b028845be4 65
ekasinambela 4:49b028845be4 66