![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
Implementación de un MUX para seleccionar diferentes termistores y obtener sus valores analogos y después realizar calculos para obtener la temperatura.
main.cpp
- Committer:
- VicenteFerrara
- Date:
- 2017-03-31
- Revision:
- 0:b1b7cdf4b288
File content as of revision 0:b1b7cdf4b288:
#include "mbed.h" #define THERMISTORNOMINAL 100 #define TEMPERATURENOMINAL 25 #define NUMSAMPLES 10 #define BCOEFFICIENT 3960 #define SERIESRESISTOR 10000 Serial pc(USBTX, USBRX); DigitalOut control1(D3); DigitalOut control2(D4); DigitalOut control3(D5); DigitalOut control4(D6); DigitalOut control5(D7); AnalogIn thermistor(A0); int samples[NUMSAMPLES]; double sensorReadings[32]; void procesamientoDatos(int count){ uint8_t i; float average; for (; count < 8; count++){ for(i = 0; i < NUMSAMPLES; i++){ samples[i] = thermistor.read(); wait(0.1); } // average all the samples out average = 0; for (i=0; i< NUMSAMPLES; i++) { average += samples[i]; } average /= NUMSAMPLES; pc.printf("Average analog reading = %f\r\n", average); // convert the value to resistance average = 1023 / average - 1; average = SERIESRESISTOR / average; pc.printf("Thermistor resistance = %f\r\n", average); float steinhart; steinhart = average / THERMISTORNOMINAL; // (R/Ro) steinhart = log(steinhart); // ln(R/Ro) steinhart /= BCOEFFICIENT; // 1/B * ln(R/Ro) steinhart += 1.0 / (TEMPERATURENOMINAL + 273.15); // + (1/To) steinhart = 1.0 / steinhart; // Invert steinhart -= 273.15; // convert to C pc.printf("Temperature = %f\r\n", steinhart); sensorReadings[count] = steinhart; wait(0.1); } for (count=0; count<8; count++) { pc.printf("Sensor #%f\r", count); pc.printf(": %f\r\n", sensorReadings[count]); } wait(0.1); } int main() { for(int iX = 0; iX < 8; iX++){ switch(iX){ case 0: control1 = 0; control2 = 0; control3 = 0; control4 = 0; control5 = 0; procesamientoDatos(iX); break; case 1: control1 = 1; control2 = 0; control3 = 0; control4 = 0; control5 = 0; procesamientoDatos(iX); break; case 2: control1 = 0; control2 = 1; control3 = 0; control4 = 0; control5 = 0; procesamientoDatos(iX); break; case 3: control1 = 1; control2 = 1; control3 = 0; control4 = 0; control5 = 0; procesamientoDatos(iX); break; case 4: control1 = 0; control2 = 0; control3 = 1; control4 = 0; control5 = 0; procesamientoDatos(iX); break; case 5: control1 = 1; control2 = 0; control3 = 1; control4 = 0; control5 = 0; procesamientoDatos(iX); break; case 6: control1 = 0; control2 = 1; control3 = 1; control4 = 0; control5 = 0; procesamientoDatos(iX); break; case 7: control1 = 1; control2 = 1; control3 = 1; control4 = 0; control5 = 0; procesamientoDatos(iX); break; } } }