Termómetro multiple de cinco sondas con arduino

Con gran ayuda de gente de este foro y del foro de científicos aficionados terminé este sencillo instrumento que usaré con fines didácticos y creo merece la pena colgar porque puede usarse para muchos fines, si alguien tiene que tomarse la temperatura bucal y rectal es bueno tener dos termómetros :smiley:

Se usan como sondas los conocidos diodos 1N4148 que son muy económicos y muy nobles.
Circuito eléctrico
Esta imagen muestra como ejemplo la conexión de dos sondas


Con este código se hace la calibración

//Código para calibrar las sondas del termómetro
void setup() {
Serial.begin(9600); 
analogReference(INTERNAL);// pone como referencia iterna 1.1V
}
void loop() {
Serial.print (" Term 1= ");
Serial.print (analogRead(0));
Serial.print (" Term 2= ");
Serial.print (analogRead(1));
Serial.print (" Term 3= ");
Serial.print (analogRead(2));
Serial.print (" Term 4= ");
Serial.print (analogRead(3));
Serial.print (" Term 5= ");
Serial.println (analogRead(4));
delay(1000); 
}


Atamos las 5 sondas con una banda elástica y las colocamos en una copa con hielo y un poco de agua dejando unos minutos para que se estabilicen las lecturas.
Y tomamos nota de las lecturas de cada sonda a 0°
Igual hacemos a 100°
Luego volcamos esos datos en el codigo de uso que es este

// termometro múltiple fácil de calibrar
int termometro1= 0;// entrada A0
int termometro2= 0;// entrada A1
int termometro3= 0;// entrada A2
int termometro4= 0;// entrada A3, se pueden poner mas sondas en A4 y 5
int termometro5= 0;
void setup() {
Serial.begin(9600); 
analogReference(INTERNAL);// pone como referencia iterna 1.1V
}
void loop() {
termometro1 = map(analogRead(0),450,631,100,0); // a 0°C la lectrura de analgRead es 140 y a 100°C es 99
termometro2 = map(analogRead(1),460,630,100,0);// calibrar cada sonda por separado y poner los valores correspondientes en map
termometro3 = map(analogRead(2),450,630,100,0);
termometro4 = map(analogRead(3),449,630,100,0);
termometro5 = map(analogRead(4),449,630,100,0);
// para ver en el monitor
Serial.print (" Term 1= ");
Serial.print (termometro1);
Serial.print (" Term 2= ");
Serial.print (termometro2);
Serial.print (" Term 3= ");
Serial.print (termometro3);
Serial.print (" Term 4= ");
Serial.print (termometro4);
Serial.print (" Term 5= ");
Serial.println (termometro5);
delay(1000); 
}

Donde dice:

termometro1 = map(analogRead(0),450,631,100,0);

debemos reemplazar los valores en rojo por las lecturas que tomamos a 0° y a 100° para la sonda 1,
Luego igual con la sonda2, 3, 4 y 5
Hecho esto grabamos y levantamos el código a arduino, activamos el monitor y tenemos que tener lectura igual +/- 1° en todas las sondas marcando temperatura ambiente

Así:

Eso ya podemos usar una sonda para la boca y otra para las partes mas íntimas je.
Como siempre en mi blog esta todo mas detallado

Excelente :slight_smile: Te iba a sugerir en el otro hilo que crearas uno pasando todo en limpio, pero te me adelantaste.

Una consulta, y es algo que creo leí investigando sobre como usar los diodos como sensores de temperatura.

¿Es para usar en medios líquidos, o en contacto con lo que queremos medir cierto?

¿Para la temperatura ambiente, sería inexacto?

Anda para temperatura ambiente también, no lo he comparado, pero tiene que funcionar sin problemas.

Con las indicaciones de un amigo y un pequeño truco ya tenemos las temperaturas con un dígito decimal
Dejo el código

// termometro múltiple fácil de calibrar
float termometro1= 0;// entrada A0
float termometro2= 0;// entrada A1
float termometro3= 0;// entrada A2
float termometro4= 0;// entrada A3, se pueden poner mas sondas en A4 y 5
float termometro5= 0;
int tiempo=0;
int cnt=0;
float t1=0;
float t2=0;
float t3=0;
float t4=0;
float t5=0;
void setup() {
 Serial.begin(9600); 
analogReference(INTERNAL);// pone como referencia iterna 1.1V
}
void loop() {
   t1 = map(analogRead(0),452,632,1000,0); // a 0°C la lectrura de analgRead es 140 y a 100°C es 99
   t2 = map(analogRead(1),459,630,1000,0);// calibrar cada sonda por separado y poner los valores correspondientes en map   
   t3 = map(analogRead(2),450,629,1000,0);
   t4 = map(analogRead(3),449,628,1000,0);
   t5 = map(analogRead(4),473,641,1000,0);
   termometro1= t1/10;
    termometro2= t2/10;
     termometro3= t3/10;
      termometro4= t4/10;
       termometro5= t5/10;
   tiempo =millis()/1000;
   // para ver en el monitor
Serial.print (tiempo);
Serial.print (" Term 1= ");   
Serial.print (termometro1,1);
Serial.print ("        Term 2= ");
Serial.print (termometro2,1);
Serial.print ("        Term 3= ");
Serial.print (termometro3,1);
Serial.print ("        Term 4= ");
Serial.print (termometro4,1);
Serial.print ("        Term 5= ");
Serial.println (termometro5,1);
 delay(1000); 
}

Como se ve en el monitor:

Saludos

Gracias por compartir la información. Método muy útil, sencillo y barato de tener sondas de temperatura.

Si alguno de los moderadores me puede echar una mano y cambiar la foto, hay una errata en el diagrama que colgué al principio, el circuito correcto es este: