Pages: [1]   Go Down
Author Topic: Termómetro multiple de cinco sondas con arduino  (Read 1002 times)
0 Members and 1 Guest are viewing this topic.
Argentina
Offline Offline
Full Member
***
Karma: 1
Posts: 104
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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-grin

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
Code:
//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
Code:
// 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
http://anajesusa.wordpress.com/2013/04/28/cinco-termmetros-a-la-vez-con-arduino/
Logged


Offline Offline
Sr. Member
****
Karma: 8
Posts: 252
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Excelente smiley 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?
Logged

My 3x3x3 Led Cube

[url=http://arduino.cc/forum/index.php/topic,1642

Argentina
Offline Offline
Full Member
***
Karma: 1
Posts: 104
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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


Argentina
Offline Offline
Full Member
***
Karma: 1
Posts: 104
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Con las indicaciones de un amigo y un pequeño truco ya tenemos las temperaturas con un dígito decimal
Dejo el código
Code:
// 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
Logged


Torremolinos (Málaga)
Offline Offline
Jr. Member
**
Karma: 0
Posts: 90
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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

José Antonio Castillo Rodríguez
Responsable de diseño de producto
Functio & Ars S.L.
www.functionars.com

Argentina
Offline Offline
Full Member
***
Karma: 1
Posts: 104
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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:
Logged


Pages: [1]   Go Up
Jump to: