¿como funciona una sonda de temperatura?

Hola a todos, alguien podria explicarme el funcionamiento de una sonda de temperatura? el tema es que me he propuesto hacer un termometro pero soy nuevo en esto. Por lo que he leido las sondas emiten una variacion de voltage en funcion de la temperatura, pero no se como se plasma eso para que lo pueda interpretar el pic. Mi sonda es un ds1820 de maxim y tengo idea de conectarla a un 16F874A, esta sonda ademas tiene la particularidad de poder trabajar en modo parasito (con un unico cable conectado al pic) entonces es donde empiezo a dejar de entender muy bien. ¿Que datos son los que llegarian al pin del pic? tengo que conectar la sonda a algun pin en concreto? es decir, es necesaria la conexion a un conversor analogico-digital, tiene que ser a una de las patillas que tengan Vref???? Mis conocimientos han comenzado con el 16F84 pero carece de conversores y patillas Vref.

Muchas gracias de antemano a todos, espero que alguien me pueda solucionar las dudas. Un saudo
 
Efectivamente es como planteas,, si vas a coonectar la sonda de temperatura a ese micrcontrolador, seria mas especificamente en los pines que convierten esa señal analoga a digital, para el PIC16f874 dispones del puerto A como en entrada analoga que va desde RA0/AN0 a RA7/AN7, excepto RA4, los anteriores canales selecionables por programa ADCON0, si selecionas Ra0 por ejemplo a este pin colocas la salida de tu sensor y con una rutna en tu pic el se encarga de todo, busca lm35 con pic.. te servira..

saludos
 
Mucho me temo que el ds1820 se parece al LM35 como un huevo a una castaña.

Más bien yo me iría informando de todo lo que encuentres del protocolo 1-wire (protocolo serie con alimentación fantasma). Seguro que hay cosas escritas para el PIC.

Si no tienes mucha experiencia, me parece un proyecto algo arriesgado para un novato, pero bueno para curtir a alguien que ya conoce el puerto serie y tiene los conocimientos básicos.

Si realmente buscas algo sencillo, olvídate de lm35, ds1820, o Pt100 y tira para una NTC, que es lo más sencillo que te puedes encontrar y el mejor ejemplo para empezar con los conversores ADC.
 
Muchas gracias por responder.

Jairosaw:
He mirado lo que comentas del lm35, revisando informacion que tengo me he dado cuenta de que hay termometros con esa sonda pero montados sobre un 16F84 el cual carece tanto de conversores A/D como de pines Vref y como bien comenta Beamspot el ds1820 en concreto es para 1-wire y tiene la posibilidad de la alimentacion parasita. El lm35 por lo que he entendido lleva el conversor integrado y la señal sale preparada para su manipulacion directamente.

Beamspot:
Experiencia no tengo ninguna, :) ganas de aprender... demasiadas, pero el no tener quien me resuelva las dudas me atasca bastante, ahora mismo estoy intentando hacer un reloj, del reloj pasare al termometro y del termometro al termostato, etc... ese es el guion que me he propuesto (desde mi ignorancia) acepto todo tipo de criticas, correcciones y sugerencias, por ejemplo con lo que me dices, voy a cambiar el guion y voy a empezar a buscar info sobre la NTC que me comentas, que no tengo ni idea de lo que es, como crees que deberia plantearme el ir haciendo progresos? te agradeceria una barca en este mar de dudas.

Por otro lado animo a todos los novatos como yo, y no tan novatos, a participar. Seguro que entre todos aclaramos dudas y podemos aprender unos de otros para ir progresando.

Muchas gracias de nuevo. Un saludo
 
Hola perru, puedes usar el pic 16F628A que es el hermano mayor directo del F84, este si trae entradas análogas (4).
Que lenguaje de programación estás usando?.
Podrias empesar a leer el libro "Microcontroladores, Desarrollo de Proyectos".

Saludos
 

Adjuntos

  • 16f628-48.gif
    16f628-48.gif
    11.4 KB · Visitas: 11
Hola dj, gracias x la observacion. Lo de usar el 16F874A es simplemente x que tengo uno ya y para mis primeros pinitos me da que me sobra muy de largooooooo, jajajajajaja, de hecho todo lo que voy programando e intentando lo estoy simulando en proteus pero tengo en miras empezar con algo fisico, tengo x ahi una LCD de 4x16 y una placa trainer de esas asi que es cuestion de cuatro cosillas. Lo de la sonda es x lo mismo, me agencie un par de ds1820. En cuanto a libros ahora mismo estoy con uno que se llama "Microcontroladores PIC diseño practico de aplicaciones" y estoy a la espera de que me llegue el de "PIC 16F84" que debe ser la biblia del principiante. El primero esta muy bien para empezar pero hay cosillas que trata muy x encima y otras que no me quedan muy claras, ademas la mayoria de ejercicios que mas me interesan bienen en un cd que no poseo.

En cuanto al lenguaje estoy con el ensamblador, me parece y me han aconsejado que es lo mejor como base, y luego ya ire pasando a c o algo de eso creo que en cuanto a optimizacion de codigo es peor pero las instrucciones son mucho mas intuitivas, pero para poder correr hay que aprender a andar y yo estoy a cuatro patas todabia.

Muchas gracias. Un saludo
 
No me parece mal el planteamiento. Hacer un reloj con displays de 7 segmentos es una buena manera de empezar. Luego añadir un sensor de temperatura es el siguiente paso. Y para continuar, usar el LCD, que no es tan sencillo como parece.

Sobre las NTC, adjunto link a una colaboración que hice al respecto, algo más general, pero que es bastante digerible a pesar del título: http://wiki.webdearde.com/index.php...SP:_Medida_y_filtrado_de_temperaturas_con_NTC
 
Hola Beamspot. Yo de mayor quiero ser como tu!!!!!!!! menudo nivel. La idea general me ha quedado clara pero todo eso hay que hacer para obtener un termometro? programar tanta operacion matematica en asm tiene que dar muchisimaaaaaaaaas lineas de codigo, no? el reloj lo tengo casi terminado y seguido me pondre con un temporizador ajustable, ya que con lo que he leido creo que necesito mas base y practica para adentrarme con el termometro, ya le estoy dando vueltas al tema y ya me van surgiendo dudas... No tendras ninguna colaboracion al respecto? :) muchas gracias x la informacion
 
A ver, el artículo iba de una cosa diferente (DSP), pero cubre dos áreas: el termómetro, y el DSP. Quédate con el concepto de termómetro, medida de temperatura, ADC, interpolación, y olvídate de la parte de filtrado.

El C tiene sus ventajas, y aún más en el caso de cores tan malos (en mi opinión) como los que tienen los PIC. Ya verás que estás todo el rato moviendo datos a/desde el acumulador (W) y cambiando de banco. Eso mismo implementado en un micro con varios acumuladores (como los AVR, ARM, dsPIC, MIPS, etc) no sólo desaparece si no que reduce enormemente tanto el código como el tiempo de ejecución.

Aprender en ensamblador es (o debería ser en mi opinión) obligatorio, pero a la primera que uno entiende que hace o deja de hacer el micro, lo mejor es pasarse al C.

Por suerte o por desgracia, no tengo más colaboraciones tan extensas publicadas de nada (de momento).
 
Ke tal Beamspot. Tu me recomiendas C para programar mejor que asm? al "traducir" C a asm no se disparan las lineas de codigo? Para mi resultaria mucho mas sencillo de leer y escribir en C pero es lo que tenia entendido. En cuanto a las sondas de temperatura, el dato que entra en el PIC, x lo que he sacado en claro sera el numero del voltage correspondiente a la Tº, algo del tipo 0 mv , 10 mv, 20 mv... n mv esto se filtra x el conversor AD y el byte obtenido, mediante la programacion habria que referenciarlo a una tabla para pasarlo a sus grados correspondientes para mostrarlos, no?
 
Depende muy mucho del compilador, y sobre todo, del micro.

Mi experiencia programando tanto en ensamblador como en C los AVR y los Cypress PSoC me dice que esa es una noción incorrecta, especialmente para los micros 'C friendly' como los AVR/ARM/MIPS.

Tuve que optimizar alguna pequeña subrutina de algún programa escrito en C, compilado con IAR para obtener el máximo de velocidad, y apenas pude mejorar nada. Claro que saber cómo escribri el código en C para que salga más optimizado también ayuda. Como ejemplo, para los AVR y ARM, los bucles descendentes que terminan cuando el contador vale 0 se optimizan mejor y necesitan menos ciclos para ejecutarse.

Por otro lado, el C es como una gruesa alfombra bajo la cual muchos fabricantes esconden las miserias (y las virtudes) de muchos micros. Por eso considero interesante, obligado en mi opinión, el aprender ensamblador. Y por ello, te recomiendo que eches una mirada a los AVR (que son de 8 bits, más sencillos que los impresionantes ARM de 32), y verás la diferencia entre arquitecturas obsoletas como la del PIC (de los 70) y las más avanzadas (de los 90) de los micros multi acumulador (múltiples registros W).

Hace ya algún tiempo lancé un guanto a los programadores de PICs que trabajan en ensamblador, donde yo hice un sencillo programa en C para AVR, lo compilé con el GNUGCC - WinAVR (gratuito y no tan bueno como el IAR). El reto era hacer lo mismo en ensamblador, lo más optimizado posible, para los PIC, y comparar el resultado de la compilación, que queda en ensamblador, entre ambos micros. Nadie aceptó, pero se desde hace tiempo (de cuando programé un 16F84) cual es el resultado. Y es que los compiladores modernos para micros decentes, dan un resultado que difícilmente se consiguen en ensamblador aún dedicandole el doble de tiempo.

Respecto de la tabla que comentas, el problema es que hay que hacer dicha tabla, y si la haces para meter directamente el resultado del ADC, necesitas 1024 entradas en dicha tabla. Hacer una fórmula matemática que use sumas, restas y multiplicaciones de números enteros ocupa menos que dicha tabla, con algo de conocimiento. En ese punto, el C es muy ventajoso.

Un recurso habitual, más 'cutre' que el sistema que yo propuse, más limitado, se basa en 'linealizar' la NTC (o el sensor que utilices), donde se supone que la temperatura será directamente proporcional al valor de entrada, es decir T = K*ADC + C. Es decir, que con una multiplicación y una suma se arregla todo.

A veces hay que dividir, pero en tal caso el truco suele pasar por usar un multiplicador que te de un valor elevado que luego puedas dividir por una potencia de 2, que se consigue simplemente haciendo shifts.

La imaginación y las matemáticas de bachillerato son las herramientas básicas. No hay que complicarse mucho la vida.
 
Atrás
Arriba