Cientificosaficionados.com

Los foros de los científicos aficionados de la red.
Fecha actual Mar May 26, 2020 12:17 pm

Todos los horarios son UTC [ DST ]




Nuevo tema Responder al tema  [ 15 mensajes ]  Ir a página 1, 2  Siguiente
Autor Mensaje
NotaPublicado: Sab Abr 27, 2013 10:36 pm 
Desconectado
Avatar de Usuario

Registrado: Mar May 30, 2006 11:12 pm
Mensajes: 4239
Ubicación: Villa Huidobro Córdoba Argentina
País: Argentina
Ciudad: Villa Huidobro
Hola, necesito un termómetro múltiple con 4 o 5 sondas, asi es que me dispuse hacerlo con esa preciosa herramienta que es arduino, las sondas estan hechas con dioditos 1N4148 y una resistencia de 2K2.
Para calibrar metí las sondas 1 por 1 en agua con hielo y agua hirviendo respectivamente tomando los valores de analogRead
Por ejemplo
Sonda 1
0°C = 140
100°C= 99
Sonda 2
0°C= 140
100°= 101
Asi cada valor lo puse en el mapeo para que me de directo la lectura en el monitor.
El código es este
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

void setup() {
 
 Serial.begin(9600);

}
void loop() {
  int val = analogRead(0);
  int val1 = analogRead(1);
  int val2 = analogRead(2);
  int val3 = analogRead(3);
   termometro1 = map(val,99,140,100,0); // a 0°C la lectrura de analgRead es 140 y a 100°C es 99
   termometro2 = map(val1,101,140,100,0);// calibrar cada sonda por separado y poner los valores correspondientes en map   
   termometro3 = map(val2,99,140,100,0);
   termometro4 = map(val3,99,140,100,0);
   // para ver en el monitor
Serial.print (" Term 1 ");   
Serial.print (termometro1,2);
Serial.print (" Term 2 ");
Serial.print (termometro2,2);
Serial.print (" Term 3 ");
Serial.print (termometro3,2);
Serial.print (" Term 4 ");
 Serial.println (termometro4,2);
 delay(100);
}

Las sondas funcionan bien cada una por separado y marcan la temperatura "casi" bien, el problema es que las lecturas no van de grado en grado, es decir si pongo una sonda en agua fría la temperatura empieza a bajar pero salta por ejemplo de 14 a 12 grados y de 12 a 10 asi va de 2 bajando y a veces de a 3, que error puede haber que me hace ese trabajo?
En esta imagen las sondas estan tomando la temperatura ambiente, la temperatura 3 fluctúa entre 20 y 22 y no pasa por el 21.
Imagen

_________________
César
Villa Huidobro Córdoba
Argentina

Espacio de César
Web: http://espaciodecesar.com/
Youtube: https://www.youtube.com/user/anajesusa
Facebook: https://www.facebook.com/espaciodecesar?ref=bookmarks


Arriba
 Perfil  
 
NotaPublicado: Dom Abr 28, 2013 12:12 am 
Desconectado

Registrado: Mar Jun 29, 2010 10:53 pm
Mensajes: 100
País: España
Ciudad: Barcelona
No he programado nunca con esto pero....

Y si quitas los int al analogread, o antes de hacer el int lo multiplicas por 10?

Estas intentando dar una lectura de 0 a 100 cuando la entrada solo varía 41


Arriba
 Perfil  
 
NotaPublicado: Dom Abr 28, 2013 12:19 am 
Desconectado

Registrado: Lun Abr 20, 2009 8:53 am
Mensajes: 581
Ubicación: Avilés, España
Si observas los valores obtenidos en la lectura de tus sondas te darás cuenta que tienes una variación de 40 puntos (aproximadamente) entre el valor mínimo y el máximo (140 Max. 99 o 101 Min.), este conjunto de valores vas a mapearlo sobre una escala de 100 puntos (0º a 100º); como estás utilizando enteros no podrás conseguir una sensibilidad mayor de INT(100/40) que son más de 2 grados. Tienes que arreglartelas de alguna manera para conseguir un mayor espán en los valores de entrada, o amplificas o pruebas modificando el valor de la resistencia en serie (aunque por aquí no creo que consigas suficiente aumento de la sensibilidad).

Espero haberme explicado.

Un saludo.

_________________
1º desconfía de lo que ves.
2º lo que no ves no lo creas hasta que no lo veas
3º después del 2º punto vuelve a aplicar el 1º
mpaniaguam


Arriba
 Perfil  
 
NotaPublicado: Dom Abr 28, 2013 12:45 am 
Desconectado
Avatar de Usuario

Registrado: Mar May 30, 2006 11:12 pm
Mensajes: 4239
Ubicación: Villa Huidobro Córdoba Argentina
País: Argentina
Ciudad: Villa Huidobro
Tal cual mpaniaguam, es lo que me temía, justamente el salto es de 2 y a veces 3 que es la relación que me da los 40/100, ya probé con resistencias distintas y peor, voy a probar con las junturas de transistores en lugar de los 1N4148 para ver si tengo un rango mas aceptable. Muchas gracias a ambos por las respuestas, ya había hecho lo que indicaste jordi3sk97.
Saludos

_________________
César
Villa Huidobro Córdoba
Argentina

Espacio de César
Web: http://espaciodecesar.com/
Youtube: https://www.youtube.com/user/anajesusa
Facebook: https://www.facebook.com/espaciodecesar?ref=bookmarks


Arriba
 Perfil  
 
NotaPublicado: Dom Abr 28, 2013 2:49 am 
Desconectado
Avatar de Usuario

Registrado: Lun Dic 04, 2006 2:13 pm
Mensajes: 3222
Ubicación: Barrio Buceo
País: Uruguay
Ciudad: Montevideo
No te va a funcionar cambiando las junturas.
Las posibles soluciones pasan por adaptar el rango de medidas al rango del micro. El micro mide con 10 bit de precisión (1024 valores) pero para ello tus valores deben estar entre 0V y 5 V si mal no recuerdo.
Hay dos opciones claras que son, una cambiar la tensión de referencia para no usar los 5 V del micro (no recuerdo si el Arduino permite esta opción) y la segunda es usar un operacional para adaptar el rango de medida.
La tercer opción es usar un circuito especializado analógico (LM35) que no son demasiado caros. Hay una cuarta que es usar un Dallas DS18B20 digital, la mejor de las opciones, pero ya es mas caro. Si buscas en la red encuentras todo.

Salud

_________________
El permanente cambio es una constante universal.


Arriba
 Perfil  
 
NotaPublicado: Dom Abr 28, 2013 5:30 am 
Desconectado
Avatar de Usuario

Registrado: Mar May 30, 2006 11:12 pm
Mensajes: 4239
Ubicación: Villa Huidobro Córdoba Argentina
País: Argentina
Ciudad: Villa Huidobro
Si, lo de las cambiar junturas no anduvo, resolví (tercera opción Ale, je) poniendo un transistor amplificando y santas pascuas tengo un rango de 1000 y pico, mañana con mas tiempo voy a bajar un poco la ganancia del amplificador.
Gracias por la ayuda.

_________________
César
Villa Huidobro Córdoba
Argentina

Espacio de César
Web: http://espaciodecesar.com/
Youtube: https://www.youtube.com/user/anajesusa
Facebook: https://www.facebook.com/espaciodecesar?ref=bookmarks


Arriba
 Perfil  
 
NotaPublicado: Dom Abr 28, 2013 8:22 am 
Desconectado

Registrado: Lun Ene 01, 2007 11:56 pm
Mensajes: 462
Ubicación: barcelona (España)
El circuito amplificador por transistor debe estar compensado en temperatura para que no varie enormemente con un simple cambio de la temperatura ambiente.

Otra solucion es utilizar una NTC/PTC, tipica solucion de las placas madre de los ordenadores.
http://ww1.microchip.com/downloads/en/A ... 21895d.pdf


Arriba
 Perfil  
 
NotaPublicado: Dom Abr 28, 2013 10:04 am 
Desconectado
Avatar de Usuario

Registrado: Lun Mar 29, 2010 10:47 am
Mensajes: 1910
País: España
Ciudad: Alcorcón Madrid
Aquí hablan del problema y de cómo solucionarlo. Parece ser que el truco usando sólo el 1N4148 es usar la referencia interna de 1.1V del arduino, para ganar mucha resolución.

http://arduino.cc/forum/index.php?topic=118079.0

_________________
Qué bien y qué pronto, le dijo la tonta al tonto.


Arriba
 Perfil  
 
NotaPublicado: Dom Abr 28, 2013 11:00 am 
Desconectado

Registrado: Mar Jun 30, 2009 10:32 am
Mensajes: 261
Ubicación: Castellón de la Plana
País: España
Ciudad: Castellón
Otra opción que a mi me ha ido muy bien es utilizar una sonda de temperatura de precisión específica, que básicamente es lo que se comenta, una unión de referencia y un amplificador de precision.

He probado el LM35 y el TMP36 (para temperaturas positivas el primero y para negativas y positivas el segundo). Leen hasta unos 150 ºC. Sacan una referencia analógica de 0,1 voltios exactos por cada ºC, de manera que el escalado es muy sencillo.

Estos circuitos comprados por ebay no llegan al euro por unidad, de manera que no son un desembolso exagerado y presentan una alternativa bastante robusta.

Un saludo.


Arriba
 Perfil  
 
NotaPublicado: Dom Abr 28, 2013 12:24 pm 
Desconectado
Avatar de Usuario

Registrado: Dom Abr 30, 2006 2:07 pm
Mensajes: 2127
País: España
Ciudad: Sabadell
Más fácil todavía. Por lo que yo he observado las fluctuaciones entre dos mediciones son proporcionales a la medida real, no tienes más que hacer la media entre varias mediciones para obtener un resultado más exacto y estable.

Saludos :D


Arriba
 Perfil  
 
Mostrar mensajes previos:  Ordenar por  
Nuevo tema Responder al tema  [ 15 mensajes ]  Ir a página 1, 2  Siguiente

Todos los horarios son UTC [ DST ]


¿Quién está conectado?

Usuarios navegando por este Foro: Google [Bot] y 3 invitados


No puede abrir nuevos temas en este Foro
No puede responder a temas en este Foro
No puede editar sus mensajes en este Foro
No puede borrar sus mensajes en este Foro

Buscar:
Desarrollado por phpBB® Forum Software © phpBB Group
Traducción al español por Huan Manwë para phpbb-es.com