Program to measure temperature array and send results to PC via serial.

Dependencies:   NTCThermistor mbed

Committer:
markoheyns
Date:
Mon Feb 06 22:22:26 2017 +0000
Revision:
0:8a5d6b639e51
Conical Fermenter Temp Array Logger

Who changed what in which revision?

UserRevisionLine numberNew contents of line
markoheyns 0:8a5d6b639e51 1 #include "mbed.h"
markoheyns 0:8a5d6b639e51 2
markoheyns 0:8a5d6b639e51 3 #define THERMISTORNOMINAL 10000
markoheyns 0:8a5d6b639e51 4 #define TEMPERATURENOMINAL 25
markoheyns 0:8a5d6b639e51 5 #define BCOEFFICIENT 3435
markoheyns 0:8a5d6b639e51 6 //#define SERIESRESISTOR 10000
markoheyns 0:8a5d6b639e51 7 #define SERIESRESISTOR 10000
markoheyns 0:8a5d6b639e51 8 #define TEMPRATE 0.2
markoheyns 0:8a5d6b639e51 9 #define NUMSAMPLES 100
markoheyns 0:8a5d6b639e51 10
markoheyns 0:8a5d6b639e51 11 AnalogIn thermistor1(A0);
markoheyns 0:8a5d6b639e51 12 AnalogIn thermistor2(A1);
markoheyns 0:8a5d6b639e51 13 AnalogIn thermistor3(A2);
markoheyns 0:8a5d6b639e51 14 AnalogIn thermistor4(A3);
markoheyns 0:8a5d6b639e51 15 AnalogIn thermistor5(A4);
markoheyns 0:8a5d6b639e51 16 AnalogIn thermistor6(A5);
markoheyns 0:8a5d6b639e51 17 AnalogIn thermistor7(D11);
markoheyns 0:8a5d6b639e51 18 Serial pc(SERIAL_TX, SERIAL_RX);
markoheyns 0:8a5d6b639e51 19 DigitalOut led(LED1);
markoheyns 0:8a5d6b639e51 20 float tempArray[7];
markoheyns 0:8a5d6b639e51 21 unsigned int samples[NUMSAMPLES];
markoheyns 0:8a5d6b639e51 22
markoheyns 0:8a5d6b639e51 23 void readProbeX(int probeNum) {
markoheyns 0:8a5d6b639e51 24 float resistance = 0;
markoheyns 0:8a5d6b639e51 25 float average;
markoheyns 0:8a5d6b639e51 26 int i;
markoheyns 0:8a5d6b639e51 27 for (i=0; i< NUMSAMPLES; i++) {
markoheyns 0:8a5d6b639e51 28 switch (probeNum){
markoheyns 0:8a5d6b639e51 29 case 0:
markoheyns 0:8a5d6b639e51 30 samples[i] = thermistor1.read_u16();
markoheyns 0:8a5d6b639e51 31 break;
markoheyns 0:8a5d6b639e51 32 case 1:
markoheyns 0:8a5d6b639e51 33 samples[i] = thermistor2.read_u16();
markoheyns 0:8a5d6b639e51 34 break;
markoheyns 0:8a5d6b639e51 35 case 2:
markoheyns 0:8a5d6b639e51 36 samples[i] = thermistor3.read_u16();
markoheyns 0:8a5d6b639e51 37 break;
markoheyns 0:8a5d6b639e51 38 case 3:
markoheyns 0:8a5d6b639e51 39 samples[i] = thermistor4.read_u16();
markoheyns 0:8a5d6b639e51 40 break;
markoheyns 0:8a5d6b639e51 41 case 4:
markoheyns 0:8a5d6b639e51 42 samples[i] = thermistor5.read_u16();
markoheyns 0:8a5d6b639e51 43 break;
markoheyns 0:8a5d6b639e51 44 case 5:
markoheyns 0:8a5d6b639e51 45 samples[i] = thermistor6.read_u16();
markoheyns 0:8a5d6b639e51 46 break;
markoheyns 0:8a5d6b639e51 47 case 6:
markoheyns 0:8a5d6b639e51 48 resistance = thermistor7.read_u16();
markoheyns 0:8a5d6b639e51 49 break;
markoheyns 0:8a5d6b639e51 50 default:
markoheyns 0:8a5d6b639e51 51 break;
markoheyns 0:8a5d6b639e51 52
markoheyns 0:8a5d6b639e51 53 }
markoheyns 0:8a5d6b639e51 54 wait(0.002);
markoheyns 0:8a5d6b639e51 55 }
markoheyns 0:8a5d6b639e51 56 // average all the samples out
markoheyns 0:8a5d6b639e51 57 average = 0;
markoheyns 0:8a5d6b639e51 58 for (i=0; i< NUMSAMPLES; i++) {
markoheyns 0:8a5d6b639e51 59 average += samples[i];
markoheyns 0:8a5d6b639e51 60 }
markoheyns 0:8a5d6b639e51 61 average /= NUMSAMPLES;
markoheyns 0:8a5d6b639e51 62 resistance = average;
markoheyns 0:8a5d6b639e51 63 resistance = (float) SERIESRESISTOR / ((65536 / resistance) - 1.0);
markoheyns 0:8a5d6b639e51 64 float steinhart;
markoheyns 0:8a5d6b639e51 65 steinhart = (log(resistance / THERMISTORNOMINAL))/BCOEFFICIENT + (1.0 / (TEMPERATURENOMINAL + 273.15));
markoheyns 0:8a5d6b639e51 66 steinhart = (1.0 / steinhart) - 273.15;
markoheyns 0:8a5d6b639e51 67 tempArray[probeNum] = steinhart;
markoheyns 0:8a5d6b639e51 68 //printf("read temp %d = %.1f C\n",probeNum, tempArray[probeNum]);
markoheyns 0:8a5d6b639e51 69 //wait(0.5);
markoheyns 0:8a5d6b639e51 70 }
markoheyns 0:8a5d6b639e51 71 void init(){
markoheyns 0:8a5d6b639e51 72
markoheyns 0:8a5d6b639e51 73 }
markoheyns 0:8a5d6b639e51 74 int main() {
markoheyns 0:8a5d6b639e51 75 //printf("\nFermenter Temp Array\n");
markoheyns 0:8a5d6b639e51 76 //pc.printf("Hello World !\n");
markoheyns 0:8a5d6b639e51 77 while(1) {
markoheyns 0:8a5d6b639e51 78 int x;
markoheyns 0:8a5d6b639e51 79 for (x = 0; x < 7; x++){
markoheyns 0:8a5d6b639e51 80 readProbeX(x);
markoheyns 0:8a5d6b639e51 81 }
markoheyns 0:8a5d6b639e51 82 for (x = 6; x >= 0; x--){
markoheyns 0:8a5d6b639e51 83 printf("Temp Probe %d = %.1f C\n",x, tempArray[x]);
markoheyns 0:8a5d6b639e51 84 }
markoheyns 0:8a5d6b639e51 85 //printf("%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f\n", tempArray[0], tempArray[1], tempArray[2], tempArray[3], tempArray[4], tempArray[5], tempArray[6]);
markoheyns 0:8a5d6b639e51 86 pc.printf("\n");
markoheyns 0:8a5d6b639e51 87 wait(5.0);
markoheyns 0:8a5d6b639e51 88
markoheyns 0:8a5d6b639e51 89 }
markoheyns 0:8a5d6b639e51 90
markoheyns 0:8a5d6b639e51 91 }
markoheyns 0:8a5d6b639e51 92