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

Dependencies:   NTCThermistor mbed

main.cpp

Committer:
markoheyns
Date:
2017-02-06
Revision:
0:8a5d6b639e51

File content as of revision 0:8a5d6b639e51:

#include "mbed.h"
 
#define THERMISTORNOMINAL 10000      
#define TEMPERATURENOMINAL 25
#define BCOEFFICIENT 3435
//#define SERIESRESISTOR 10000
#define SERIESRESISTOR 10000
#define TEMPRATE 0.2
#define NUMSAMPLES 100

AnalogIn thermistor1(A0);
AnalogIn thermistor2(A1);
AnalogIn thermistor3(A2);
AnalogIn thermistor4(A3);
AnalogIn thermistor5(A4);
AnalogIn thermistor6(A5);
AnalogIn thermistor7(D11);
 Serial pc(SERIAL_TX, SERIAL_RX);
DigitalOut led(LED1);
float tempArray[7];
unsigned int samples[NUMSAMPLES];

void readProbeX(int probeNum) {
    float resistance = 0;
    float average;
    int i;
    for (i=0; i< NUMSAMPLES; i++) {
        switch (probeNum){
            case 0:
            samples[i] = thermistor1.read_u16();
            break;
            case 1:
            samples[i] = thermistor2.read_u16();
            break;
             case 2:
            samples[i] = thermistor3.read_u16();
            break;
             case 3:
            samples[i] = thermistor4.read_u16();
            break;
             case 4:
            samples[i] = thermistor5.read_u16();
            break;
             case 5:
            samples[i] = thermistor6.read_u16();
            break;
            case 6:
            resistance = thermistor7.read_u16();
            break;
            default:
            break;
                
        }
        wait(0.002);
    }
    // average all the samples out
    average = 0;
    for (i=0; i< NUMSAMPLES; i++) {
        average += samples[i];
    }
    average /= NUMSAMPLES;
    resistance = average;
    resistance = (float) SERIESRESISTOR / ((65536 / resistance) - 1.0);
    float steinhart;
    steinhart = (log(resistance / THERMISTORNOMINAL))/BCOEFFICIENT + (1.0 / (TEMPERATURENOMINAL + 273.15));
    steinhart = (1.0 / steinhart) - 273.15;   
    tempArray[probeNum] = steinhart;    
    //printf("read temp %d = %.1f C\n",probeNum,  tempArray[probeNum]);
    //wait(0.5);
}
void init(){

}
int main() {
    //printf("\nFermenter Temp Array\n");
     //pc.printf("Hello World !\n");
    while(1) {
        int x;
        for (x = 0;  x < 7; x++){
            readProbeX(x);
        }
        for (x = 6;  x >= 0; x--){
            printf("Temp Probe %d = %.1f C\n",x,  tempArray[x]);
        }
        //printf("%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f\n", tempArray[0], tempArray[1], tempArray[2], tempArray[3], tempArray[4], tempArray[5], tempArray[6]);
        pc.printf("\n");
        wait(5.0);
 
    }

}