Software for wall mounted dew point sensor

Dependencies:   mbed HYT Watchdog TextLCD

Committer:
koosvanderwat
Date:
Fri Nov 29 10:18:58 2019 +0000
Revision:
3:25b7f448750d
Parent:
2:ad0b044d0a10
No changes

Who changed what in which revision?

UserRevisionLine numberNew contents of line
simon 0:334327d1a416 1 #include "mbed.h"
simon 0:334327d1a416 2 #include "TextLCD.h"
koosvanderwat 3:25b7f448750d 3 #include "HYT.h"
koosvanderwat 3:25b7f448750d 4 #include "Watchdog.h"
simon 0:334327d1a416 5
koosvanderwat 3:25b7f448750d 6 // Setup Hardware
koosvanderwat 3:25b7f448750d 7 HYT SENSOR (D0,D1); //Nucleo (SDA,SCL) (D0,D1) (D4,D5)
koosvanderwat 3:25b7f448750d 8 TextLCD lcd(D9, D6, D5, D4, D3, D2); // rs, e, d4-d7
koosvanderwat 3:25b7f448750d 9
koosvanderwat 3:25b7f448750d 10 // Setup Watchdog
koosvanderwat 3:25b7f448750d 11 Watchdog wd;
koosvanderwat 3:25b7f448750d 12
koosvanderwat 3:25b7f448750d 13 //Define Pins
koosvanderwat 3:25b7f448750d 14 AnalogOut AOUT(A3);
koosvanderwat 3:25b7f448750d 15 DigitalOut my_led(LED1);
koosvanderwat 3:25b7f448750d 16 DigitalOut Alarm_led(A7);
koosvanderwat 3:25b7f448750d 17
koosvanderwat 3:25b7f448750d 18 //Setup Timer
koosvanderwat 3:25b7f448750d 19 Ticker timeKeeping;
koosvanderwat 3:25b7f448750d 20
koosvanderwat 3:25b7f448750d 21 //Setup Variables
koosvanderwat 3:25b7f448750d 22 float Calibration = 0; // RH correction value
koosvanderwat 3:25b7f448750d 23 float SetPoint = 5; // Max Dew Point in Celsius to trigger alarm.
koosvanderwat 3:25b7f448750d 24 int Counter = 0;
koosvanderwat 3:25b7f448750d 25 float RHValue = 0;
koosvanderwat 3:25b7f448750d 26 float TempValue = 0;
koosvanderwat 3:25b7f448750d 27 float A = 0;
koosvanderwat 3:25b7f448750d 28 float DewPoint = -50;
koosvanderwat 3:25b7f448750d 29 float sample = 0;
koosvanderwat 3:25b7f448750d 30 float test = 0;
simon 0:334327d1a416 31
simon 0:334327d1a416 32 int main() {
koosvanderwat 3:25b7f448750d 33 //lcd.printf("Hello World5!\n");
koosvanderwat 3:25b7f448750d 34 Alarm_led=1;
koosvanderwat 3:25b7f448750d 35 //lcd.setBacklight(TextLCD::LightOn);
koosvanderwat 3:25b7f448750d 36 //lcd.setCursor(TextLCD::CurOff_BlkOff);
koosvanderwat 3:25b7f448750d 37 wd.Configure(4.0);
koosvanderwat 3:25b7f448750d 38
koosvanderwat 3:25b7f448750d 39 wait_ms(100);
koosvanderwat 3:25b7f448750d 40
koosvanderwat 3:25b7f448750d 41 lcd.printf("TegnonEfficiency\n");
koosvanderwat 3:25b7f448750d 42 lcd.locate(0,1);
koosvanderwat 3:25b7f448750d 43 lcd.printf("Dew Point Sensor\n");
koosvanderwat 3:25b7f448750d 44
koosvanderwat 3:25b7f448750d 45 wait_ms(1000);
koosvanderwat 3:25b7f448750d 46
koosvanderwat 3:25b7f448750d 47 lcd.cls();
koosvanderwat 3:25b7f448750d 48
koosvanderwat 3:25b7f448750d 49 lcd.printf("Dew Point:");
koosvanderwat 3:25b7f448750d 50 lcd.locate(0,1);
koosvanderwat 3:25b7f448750d 51 lcd.printf("RH:");
koosvanderwat 3:25b7f448750d 52 lcd.locate(8,1);
koosvanderwat 3:25b7f448750d 53 lcd.printf("T:");
koosvanderwat 3:25b7f448750d 54
koosvanderwat 3:25b7f448750d 55 while(1) {
koosvanderwat 3:25b7f448750d 56 Counter = Counter + 1;
koosvanderwat 3:25b7f448750d 57 wait(1);
koosvanderwat 3:25b7f448750d 58 wd.Service();
koosvanderwat 3:25b7f448750d 59 my_led = !my_led;
koosvanderwat 3:25b7f448750d 60
koosvanderwat 3:25b7f448750d 61 if(Counter == 10)
koosvanderwat 3:25b7f448750d 62 {
koosvanderwat 3:25b7f448750d 63 lcd.cls();
koosvanderwat 3:25b7f448750d 64 lcd.printf("Dew Point:");
koosvanderwat 3:25b7f448750d 65 lcd.locate(0,1);
koosvanderwat 3:25b7f448750d 66 lcd.printf("RH:");
koosvanderwat 3:25b7f448750d 67 lcd.locate(8,1);
koosvanderwat 3:25b7f448750d 68 lcd.printf("T:");
koosvanderwat 3:25b7f448750d 69 Counter = 0;
koosvanderwat 3:25b7f448750d 70 }
koosvanderwat 3:25b7f448750d 71
koosvanderwat 3:25b7f448750d 72 if(DewPoint > SetPoint) {
koosvanderwat 3:25b7f448750d 73 Alarm_led = !Alarm_led;
koosvanderwat 3:25b7f448750d 74 } else {
koosvanderwat 3:25b7f448750d 75 Alarm_led=1;
koosvanderwat 3:25b7f448750d 76 }
koosvanderwat 3:25b7f448750d 77
koosvanderwat 3:25b7f448750d 78 SENSOR.MRCommand();
koosvanderwat 3:25b7f448750d 79 wait_ms(100);
koosvanderwat 3:25b7f448750d 80 SENSOR.DFCommand();
koosvanderwat 3:25b7f448750d 81 wait_ms(100);
koosvanderwat 3:25b7f448750d 82
koosvanderwat 3:25b7f448750d 83 RHValue = (SENSOR.humidity);
koosvanderwat 3:25b7f448750d 84 TempValue = (SENSOR.temperature);
koosvanderwat 3:25b7f448750d 85
koosvanderwat 3:25b7f448750d 86 if(RHValue > 1)
koosvanderwat 3:25b7f448750d 87 {
koosvanderwat 3:25b7f448750d 88
koosvanderwat 3:25b7f448750d 89 A = log( RHValue * 0.01 * pow(10, 7.5*TempValue/(237.2+TempValue) ) );
koosvanderwat 3:25b7f448750d 90 DewPoint = ( 23720 * A/(17.269-A))/100;
koosvanderwat 3:25b7f448750d 91
koosvanderwat 3:25b7f448750d 92 if(DewPoint < -50) {
koosvanderwat 3:25b7f448750d 93 DewPoint = -50;
koosvanderwat 3:25b7f448750d 94 }
koosvanderwat 3:25b7f448750d 95
koosvanderwat 3:25b7f448750d 96 if(DewPoint > 20) {
koosvanderwat 3:25b7f448750d 97 DewPoint = 20;
koosvanderwat 3:25b7f448750d 98 }
koosvanderwat 3:25b7f448750d 99
koosvanderwat 3:25b7f448750d 100 test = 0.01428728*DewPoint+0.714364;
koosvanderwat 3:25b7f448750d 101
koosvanderwat 3:25b7f448750d 102 lcd.locate(10,0);
koosvanderwat 3:25b7f448750d 103 lcd.printf(" ");
koosvanderwat 3:25b7f448750d 104 lcd.locate(10,0);
koosvanderwat 3:25b7f448750d 105 lcd.printf("%.1f%", DewPoint);
koosvanderwat 3:25b7f448750d 106 lcd.printf("C");
koosvanderwat 3:25b7f448750d 107 lcd.locate(3,1);
koosvanderwat 3:25b7f448750d 108 lcd.printf(" ");
koosvanderwat 3:25b7f448750d 109 lcd.locate(3,1);
koosvanderwat 3:25b7f448750d 110 lcd.printf("%.1f%", RHValue);
koosvanderwat 3:25b7f448750d 111 lcd.locate(10,1);
koosvanderwat 3:25b7f448750d 112 lcd.printf(" ");
koosvanderwat 3:25b7f448750d 113 lcd.locate(10,1);
koosvanderwat 3:25b7f448750d 114 lcd.printf("%.1f%", TempValue);
koosvanderwat 3:25b7f448750d 115 lcd.printf("C\n");
koosvanderwat 3:25b7f448750d 116
koosvanderwat 3:25b7f448750d 117 AOUT = 0.0142857142857143*DewPoint+0.7142857143;
koosvanderwat 3:25b7f448750d 118
koosvanderwat 3:25b7f448750d 119 }
koosvanderwat 3:25b7f448750d 120 else
koosvanderwat 3:25b7f448750d 121 {
koosvanderwat 3:25b7f448750d 122 AOUT = 0;
koosvanderwat 3:25b7f448750d 123 lcd.cls();
koosvanderwat 3:25b7f448750d 124 wait_ms(1000);
koosvanderwat 3:25b7f448750d 125 lcd.locate(0,0);
koosvanderwat 3:25b7f448750d 126 lcd.printf(" Sensor \n");
koosvanderwat 3:25b7f448750d 127 lcd.locate(0,1);
koosvanderwat 3:25b7f448750d 128 lcd.printf(" Error \n");
koosvanderwat 3:25b7f448750d 129 }
koosvanderwat 3:25b7f448750d 130
koosvanderwat 3:25b7f448750d 131 } // While(1)
koosvanderwat 3:25b7f448750d 132 } //Void Main
koosvanderwat 3:25b7f448750d 133
koosvanderwat 3:25b7f448750d 134