This is a circuit to measure the temperature in the vehicle from two temperature sensors.

Dependencies:   mbed 4DGL-uLCD-SE

Committer:
tadhgjones
Date:
Thu Dec 17 14:37:13 2020 +0000
Revision:
0:94443daebe4c
Temperature Detection Circuit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
tadhgjones 0:94443daebe4c 1 #include "mbed.h"
tadhgjones 0:94443daebe4c 2 #include "uLCD_4DGL.h"
tadhgjones 0:94443daebe4c 3
tadhgjones 0:94443daebe4c 4
tadhgjones 0:94443daebe4c 5 // Analog input (pin 15)
tadhgjones 0:94443daebe4c 6 AnalogIn ain(p15);
tadhgjones 0:94443daebe4c 7 AnalogIn ain2(p16);
tadhgjones 0:94443daebe4c 8
tadhgjones 0:94443daebe4c 9 // USB serial (tx, rx)
tadhgjones 0:94443daebe4c 10 Serial pc(USBTX, USBRX);
tadhgjones 0:94443daebe4c 11
tadhgjones 0:94443daebe4c 12 // TX, RX, and RES pins
tadhgjones 0:94443daebe4c 13 uLCD_4DGL uLCD(p9,p10,p11);
tadhgjones 0:94443daebe4c 14
tadhgjones 0:94443daebe4c 15 void Temperature();
tadhgjones 0:94443daebe4c 16 void TempConstraints();
tadhgjones 0:94443daebe4c 17 float getTemp();
tadhgjones 0:94443daebe4c 18 float avgTemp();
tadhgjones 0:94443daebe4c 19 float getTemp2();
tadhgjones 0:94443daebe4c 20 float avgTemp2();
tadhgjones 0:94443daebe4c 21
tadhgjones 0:94443daebe4c 22 float voltage_in;
tadhgjones 0:94443daebe4c 23 float degrees_c;
tadhgjones 0:94443daebe4c 24 float avgT;
tadhgjones 0:94443daebe4c 25 float Temp;
tadhgjones 0:94443daebe4c 26 float a;
tadhgjones 0:94443daebe4c 27 float b;
tadhgjones 0:94443daebe4c 28
tadhgjones 0:94443daebe4c 29 int main() {
tadhgjones 0:94443daebe4c 30
tadhgjones 0:94443daebe4c 31
tadhgjones 0:94443daebe4c 32 // Collect temperatures with timestamps every second
tadhgjones 0:94443daebe4c 33 while(1) {
tadhgjones 0:94443daebe4c 34 uLCD.cls();
tadhgjones 0:94443daebe4c 35 uLCD.printf("Temperature:\n\n");
tadhgjones 0:94443daebe4c 36
tadhgjones 0:94443daebe4c 37 Temperature();
tadhgjones 0:94443daebe4c 38 wait(10);
tadhgjones 0:94443daebe4c 39 }
tadhgjones 0:94443daebe4c 40 }
tadhgjones 0:94443daebe4c 41
tadhgjones 0:94443daebe4c 42 void Temperature(){
tadhgjones 0:94443daebe4c 43
tadhgjones 0:94443daebe4c 44 a = avgTemp();
tadhgjones 0:94443daebe4c 45 b = avgTemp2();
tadhgjones 0:94443daebe4c 46
tadhgjones 0:94443daebe4c 47 TempConstraints();
tadhgjones 0:94443daebe4c 48
tadhgjones 0:94443daebe4c 49 uLCD.text_width(2);
tadhgjones 0:94443daebe4c 50 uLCD.text_height(2);
tadhgjones 0:94443daebe4c 51 Temp = (a + b)/2;
tadhgjones 0:94443daebe4c 52 pc.printf("%3.1f deg C\n\r", Temp);
tadhgjones 0:94443daebe4c 53 uLCD.printf("%3.1f \t", Temp);
tadhgjones 0:94443daebe4c 54 uLCD.text_width(1);
tadhgjones 0:94443daebe4c 55 uLCD.text_height(1);
tadhgjones 0:94443daebe4c 56 uLCD.printf("o");
tadhgjones 0:94443daebe4c 57 uLCD.text_width(2);
tadhgjones 0:94443daebe4c 58 uLCD.text_height(2);
tadhgjones 0:94443daebe4c 59 uLCD.printf("C");
tadhgjones 0:94443daebe4c 60 }
tadhgjones 0:94443daebe4c 61
tadhgjones 0:94443daebe4c 62 void TempConstraints() {
tadhgjones 0:94443daebe4c 63
tadhgjones 0:94443daebe4c 64 if(degrees_c <= 4){
tadhgjones 0:94443daebe4c 65 pc.printf("WARNING\nCOLD TEMPERATURES\nICE MAY BE PRESENT");
tadhgjones 0:94443daebe4c 66 }
tadhgjones 0:94443daebe4c 67 if(abs(a-b) > 4){
tadhgjones 0:94443daebe4c 68 uLCD.printf("WARNING\nTEMPERATURE SENSOR\nFAULT\n");
tadhgjones 0:94443daebe4c 69 }
tadhgjones 0:94443daebe4c 70 }
tadhgjones 0:94443daebe4c 71
tadhgjones 0:94443daebe4c 72 float getTemp(){
tadhgjones 0:94443daebe4c 73 voltage_in = ain * 3.3;
tadhgjones 0:94443daebe4c 74 degrees_c = ((voltage_in - 0.5) * 100.0);
tadhgjones 0:94443daebe4c 75 return degrees_c;
tadhgjones 0:94443daebe4c 76 }
tadhgjones 0:94443daebe4c 77
tadhgjones 0:94443daebe4c 78 float getTemp2(){
tadhgjones 0:94443daebe4c 79 voltage_in = ain2 * 3.3;
tadhgjones 0:94443daebe4c 80 degrees_c = ((voltage_in - 0.5) * 100.0);
tadhgjones 0:94443daebe4c 81 return degrees_c;
tadhgjones 0:94443daebe4c 82 }
tadhgjones 0:94443daebe4c 83
tadhgjones 0:94443daebe4c 84 //Thsi function obtaines the voltage from the first sensor
tadhgjones 0:94443daebe4c 85 float avgTemp(){
tadhgjones 0:94443daebe4c 86 float a = getTemp();
tadhgjones 0:94443daebe4c 87 float b = getTemp();
tadhgjones 0:94443daebe4c 88 float c = getTemp();
tadhgjones 0:94443daebe4c 89 float d = getTemp();
tadhgjones 0:94443daebe4c 90 float e = getTemp();
tadhgjones 0:94443daebe4c 91 float f = getTemp();
tadhgjones 0:94443daebe4c 92 float g = getTemp();
tadhgjones 0:94443daebe4c 93 float h = getTemp();
tadhgjones 0:94443daebe4c 94 float i = getTemp();
tadhgjones 0:94443daebe4c 95 float j = getTemp();
tadhgjones 0:94443daebe4c 96 float k = getTemp();
tadhgjones 0:94443daebe4c 97 float l = getTemp();
tadhgjones 0:94443daebe4c 98 float m = getTemp();
tadhgjones 0:94443daebe4c 99 float n = getTemp();
tadhgjones 0:94443daebe4c 100 float o = getTemp();
tadhgjones 0:94443daebe4c 101 float p = getTemp();
tadhgjones 0:94443daebe4c 102 float q = getTemp();
tadhgjones 0:94443daebe4c 103 float r = getTemp();
tadhgjones 0:94443daebe4c 104 float s = getTemp();
tadhgjones 0:94443daebe4c 105 float t = getTemp();
tadhgjones 0:94443daebe4c 106
tadhgjones 0:94443daebe4c 107 //The function is called to get 20 Values of the required voltage in order
tadhgjones 0:94443daebe4c 108 //to acieve an accurate resuilt and eliminate outlier effects
tadhgjones 0:94443daebe4c 109 avgT = (a+b+c+d+e+f+g+h+i+j+k+l+m+n+o+p+q+r+s+t)/20;
tadhgjones 0:94443daebe4c 110
tadhgjones 0:94443daebe4c 111 return avgT;
tadhgjones 0:94443daebe4c 112 }
tadhgjones 0:94443daebe4c 113
tadhgjones 0:94443daebe4c 114 //this function obtaines the voltage from the second sensor
tadhgjones 0:94443daebe4c 115 float avgTemp2(){
tadhgjones 0:94443daebe4c 116 float a = getTemp2();
tadhgjones 0:94443daebe4c 117 float b = getTemp2();
tadhgjones 0:94443daebe4c 118 float c = getTemp2();
tadhgjones 0:94443daebe4c 119 float d = getTemp2();
tadhgjones 0:94443daebe4c 120 float e = getTemp2();
tadhgjones 0:94443daebe4c 121 float f = getTemp2();
tadhgjones 0:94443daebe4c 122 float g = getTemp2();
tadhgjones 0:94443daebe4c 123 float h = getTemp2();
tadhgjones 0:94443daebe4c 124 float i = getTemp2();
tadhgjones 0:94443daebe4c 125 float j = getTemp2();
tadhgjones 0:94443daebe4c 126 float k = getTemp2();
tadhgjones 0:94443daebe4c 127 float l = getTemp2();
tadhgjones 0:94443daebe4c 128 float m = getTemp2();
tadhgjones 0:94443daebe4c 129 float n = getTemp2();
tadhgjones 0:94443daebe4c 130 float o = getTemp2();
tadhgjones 0:94443daebe4c 131 float p = getTemp2();
tadhgjones 0:94443daebe4c 132 float q = getTemp2();
tadhgjones 0:94443daebe4c 133 float r = getTemp2();
tadhgjones 0:94443daebe4c 134 float s = getTemp2();
tadhgjones 0:94443daebe4c 135 float t = getTemp2();
tadhgjones 0:94443daebe4c 136
tadhgjones 0:94443daebe4c 137 avgT = (a+b+c+d+e+f+g+h+i+j+k+l+m+n+o+p+q+r+s+t)/20;
tadhgjones 0:94443daebe4c 138
tadhgjones 0:94443daebe4c 139 return avgT;
tadhgjones 0:94443daebe4c 140 }
tadhgjones 0:94443daebe4c 141
tadhgjones 0:94443daebe4c 142
tadhgjones 0:94443daebe4c 143