Partes del Termómetro

Ariel Palazzesi . Vista 391521 veces

Con bastante frecuencia recibimos consultas sobre cómo funciona o cuáles son las partes de que conforman un termómetro. Hoy decidimos no solo explicarte como funciona uno de estos instrumentos, sino que también te damos todos los datos necesarios para que construyas un termómetro electrónico utilizando lo aprendido en el tutorial sobre programación de microcontroladores.

  • En general, los termómetros empleados con fines domésticos pueden ser de dos tipos: mecánicos o electrónicos. Dentro de la primera categoría se incluyen los denominados termómetros de mercurio, que basan su funcionamiento en la propiedad que tienen los cuerpos de dilatarse a medida que aumenta la temperatura. En el caso de los termómetros de mercurio, se dispone de un pequeño depósito lleno de este metal, que está conectado a un capilar de vidrio transparente sobre el que se encuentra una escala graduada en grados.

    Cuando la temperatura es baja, el mercurio ocupa menos espacio que a altas temperaturas. De esta manera, a medida que sube la temperatura el mercurio de va desplazando por dentro del capilar, ya que no cabe dentro del depósito. La forma de leer estos termómetros consiste en observar la escala y ver hasta qué punto ha subido el metal. Este tipo de termómetro se hizo muy popular debido a su bajo costo y a que funciona perfectamente en el rango de temperaturas en las que vive el hombre.

    Pero últimamente han aparecido en el mercado los termómetros electrónicos, cuya lectura es más sencilla, y además, no contienen mercurio, que es un gran contaminante del medio ambiente. Estos termómetros funcionan convirtiendo las variaciones de temperatura en una variación de una tensión o corriente, que luego es evaluada por un microcontrolador y mostrada sobre un display.

    • Construiremos dos PCB. Construiremos dos PCB.
    • Vista del lado soldaduras. Vista del lado soldaduras.

    Algunos de los sensores de temperatura más modernos incluso incorporan en su interior un pequeño microprocesador que se encarga de hacer la conversión entre temperatura y un valor digital, que puede enviar por uno de sus pines en forma de una serie de “0”s y “1”s cuando es “interrogado” desde el exterior. Uno de los más económicos y fáciles de conseguir es el DS1820, de Dallas.

    Utilizando un pequeño microcontrolador y uno de estos sensores de temperatura resulta muy fácil construir un termómetro digital casero. En este caso, las partes del termómetro serán el sensor de temperatura, el microcontrolador y el display. El esquema electrónico que vemos más abajo muestra la forma en que se deben conectar estos elementos.

    Los que han seguido las notas sobre electrónica en NeoTeo no tendrán dificultades en descubrir cómo funciona el circuito, que emplea un registro de desplazamiento de 16 posiciones para el manejo del display. Hemos dividido el circuito impreso en dos partes, una para la electrónica de control y otra para el display propiamente dicho. Ambos PCB pueden verse en las imágenes que acompañan el artículo.

    • Este es el circuito eléctrico del termómetro. Este es el circuito eléctrico del termómetro.
    • Las dos placas se unen mediante cablecillos. Las dos placas se unen mediante cablecillos.
    • PCB 1: Placa del controlador. PCB 1: Placa del controlador.
    • PCB 2: Placa de los displays. PCB 2: Placa de los displays.

    Por supuesto, la parte más importante de todo el proyecto es el programa que debemos cargar en el microcontrolador para que sea capaz de mostrar en el display la información deseada. No abundaremos aquí respecto de la forma en que se interroga y obtienen datos desde el sensor DS1820, ya que el artículo sería demasiado extenso, pero consultando su hoja de datos podrán sacarse las dudas que tengan sobre su funcionamiento.

    El software que listamos a continuación está lo suficientemente comentado como para que no surjan dudas sobre su funcionamiento. Lo hemos escrito en el BASIC del PIC SIMULATOR IDE, y muestra temperaturas en 0 y 99 grados centígrados. El sensor de Dallas tiene una precisión mayor, pero no hemos utilizado decimales para que el proyecto sea más sencillo y fácil de comprender.


    '---------------------------------------------------
    Termómetro 00 a 99 grados con 16F627A – v1.01.00
    '----- CONFIGURO PUERTOS-----
    PORTA = 0
    CMCON = 7 'Configuro A como Digital I/O
    TRISA = 0 'todo Salidas
    TRISB = 0 'todo Salidas
    '----- Variables----------------------------
    Dim tempe1 As Byte 'Parte entera de la temperatura a mostrar
    Dim tempe2 As Byte 'Decimales de la temperatura a mostrar
    Dim comando As Byte 'Comando a enviar al DS1820
    Dim tempe As Word 'Temperatura leída (usada en las rutinas del DS1820)
    Dim i As Byte 'Variable auxiliar multipropósito
    Dim col As Byte 'Variable auxiliar multipropósito
    Dim aux As Byte 'Variable auxiliar multipropósito
    Dim aux2 As Byte 'Variable auxiliar multipropósito
    Dim unidad As Byte 'Variable: unidades
    Dim decena As Byte 'Variable: decenas
    '----- Símbolos----------------------------
    Symbol ds1820pin = PORTB.3 'Puerto en que se conecta el DS1820
    Symbol ds1820rw = PORTB.3 '1=Leer DS1820 / 0=Escribir DS1820
    Symbol clock = PORTB.6
    Symbol data = PORTB.7
    '
    '-- CUERPO DEL PROGRAMA----------------------------------------------------------
    '
    loop:
    'Leo la temperatura del sensor ------------------------
    Gosub init1820 'Inicializo el sensor y...
    comando = 0xcc '..Salteo la ROM.
    Gosub write1820

    comando = 0x44 'Comienzo la conversión A/D de la temperatura
    Gosub write1820
    WaitUs 2000 ' Espero a que termine la conversión

    Gosub init1820 'Inicializo el sensor y...
    comando = 0xcc '..Salteo la ROM.
    Gosub write1820
    comando = 0xbe 'Pido que me envíe lo que calculo el sensor...
    Gosub write1820
    WaitMs 750 ' Espero ...
    Gosub read1820 'Me lo devuelve en tempe1 y tempe2

    'tempe1 = 15
    'Calculo el valor de cada digito
    decena = tempe1 / 10
    unidad = tempe1 - decena * 10

    If decena = 0 Then aux = %01101111
    If decena = 1 Then aux = %00101000
    If decena = 2 Then aux = %01011101
    If decena = 3 Then aux = %01111100
    If decena = 4 Then aux = %00111010
    If decena = 5 Then aux = %01110110
    If decena = 6 Then aux = %01110111
    If decena = 7 Then aux = %00101100
    If decena = 8 Then aux = %01111111
    If decena = 9 Then aux = %01111110
    Gosub escribo
    If unidad = 0 Then aux = %01101111
    If unidad = 1 Then aux = %00101000
    If unidad = 2 Then aux = %01011101
    If unidad = 3 Then aux = %01111100
    If unidad = 4 Then aux = %00111010
    If unidad = 5 Then aux = %01110110
    If unidad = 6 Then aux = %01110111
    If unidad = 7 Then aux = %00101100
    If unidad = 8 Then aux = %01111111
    If unidad = 9 Then aux = %01111110
    Gosub escribo
    WaitMs 10000
    Goto loop
    End
    ‘Rutinas --------------------------------
    escribo:
    For col = 1 To 8
    If aux.0 = 0 Then
    data = 0
    WaitUs 2
    clock = 0
    WaitUs 2
    clock = 1
    WaitUs 2
    Else
    data = 1
    WaitUs 2
    clock = 0
    WaitUs 2
    clock = 1
    WaitUs 2
    Endif
    aux = ShiftRight(aux, 1)
    Next col
    Return

    '-------------------------------------------------
    'Inicializa el DS1820
    '-------------------------------------------------
    init1820:
    ds1820rw = 0 ' Pongo el pin como salida
    ds1820pin = 0 'Pongo en cero el pin del DS1820
    WaitUs 500 ' Espero más de 480 us
    ds1820rw = 1 ' Pongo el pin como entrada
    WaitUs 100 ' Espero más de 60 us a que "reaccione"
    WaitUs 500 ' Espero a que finalice de enviarme el estado
    Return

    '-------------------------------------------------
    'Envia comandos al DS1820
    '-------------------------------------------------
    write1820:
    For aux = 1 To 8 'Recorro los 8 bits de "Comando"
    If comando.0 = 0 Then
    Gosub write0
    Else
    Gosub write1
    Endif
    comando = ShiftRight(comando, 1)
    Next aux
    Return

    '-------------------------------------------------
    'Envia un cero al DS1820
    '-------------------------------------------------
    write0:
    ds1820rw = 0 ' Pongo el pin como salida
    ds1820pin = 0
    WaitUs 60 'hay que mantener bajo el pin mas 60 us
    ds1820rw = 1
    Return

    '-------------------------------------------------
    'Envia un uno al DS1820
    '-------------------------------------------------
    write1:
    ds1820rw = 0 ' Pongo el pin como salida
    ds1820pin = 0
    WaitUs 1 'hay que mantener bajo el pin menos de 15 60 us
    ds1820rw = 1
    WaitUs 60 'espero el resto del tiempo...
    Return

    '-------------------------------------------------
    'Lee temperatura del DS1820
    '-------------------------------------------------
    read1820:
    For aux = 1 To 16 ' los 16 bits de temp (word)
    tempe = ShiftRight(tempe, 1)
    Gosub readbit
    Next aux
    'Calculo la temperatura (tempe1) y las decimas (tempe2)
    tempe1 = ShiftRight(tempe.LB, 1)
    tempe1 = 128 - tempe1 - 3

    If tempe.0 = 1 Then
    tempe2 = 0
    Else
    tempe2 = 5
    Endif
    Return

    '-------------------------------------------------
    'Lee un bit del DS1820
    '-------------------------------------------------
    readbit:
    tempe.15 = 1
    ds1820rw = 0 ' Pongo el pin como salida
    ds1820pin = 0
    WaitUs 1
    ds1820rw = 1
    If ds1820pin = 1 Then
    tempe.15 = 0
    Endif
    WaitUs 60
    Return


    Antes de compilar el programa debemos asegurarnos que el microcontrolador seleccionado en el PIC SIMULATOR IDE sea el correcto. El PIC16F628A o PIC16F627A pueden emplearse sin problemas, y seguramente con pequeñas modificaciones en el esquema eléctrico se podría adaptar para emplear microcontroladores diferentes.

    • PCB 1: Distribución de los componentes. PCB 1: Distribución de los componentes.
    • PCB 2: Distribución de los componentes en el display. PCB 2: Distribución de los componentes en el display.
    • Modelo terminado, con el DS1820 unido mediante un cable extenso. Modelo terminado, con el DS1820 unido mediante un cable extenso.

¿Y tú, qué opinas?

  • #1 voltio
    voltio lunes, 14 de enero de 2008, 17:21

    hola, muy bueno el proyecto, se puede hacer con decimas ?? que modificaciones hay que hacer ??? si puedes enviarme un mail te lo agradecere mucho para seguir comprendiendo este tema de los pics. Saludos cordiales Ruben

    Responder >> Attention Minus Plus Votos: -1 de 23
  • #2 Ariel Palazzesi
    Ariel Palazzesi miércoles, 23 de enero de 2008, 10:13

    Hola Ruben! Si, puede construirse con decimales. Basta con agregar un par de digitos mas para ellos, y modificar las rutinas que leen el sensore de temperatura. En su datasheet esta explicada la manera de interrogarlo. Saludos!

    Responder >> Attention Minus Plus Votos: 2 de 18
  • #3
    miércoles, 06 de febrero de 2008, 16:52

    den la explicacion ma exacta porque esa no se entiende muy bien

    Responder >> Attention Minus Plus Votos: 3 de 19
  • #4 la fresa
    la fresa jueves, 07 de febrero de 2008, 05:17

    jaja esta padre pero no le entiendo jajajajajajajajaajajajaja bye bye...........

    Responder >> Attention Minus Plus Votos: 5 de 17
  • #6 sai
    sai sábado, 01 de marzo de 2008, 04:57

    explikenn las partes del termometro y hasta donde llega su escal BIEN!!!!

    Responder >> Attention Minus Plus Votos: 4 de 16
  • #7 karen
    karen domingo, 02 de marzo de 2008, 23:52

    no e4splican bien las partes de un termometro

    Responder >> Attention Minus Plus Votos: 13 de 27
  • #8 ana
    ana miércoles, 12 de marzo de 2008, 02:23

    deberian de poner un esquema de las partes del termometro

    Responder >> Attention Minus Plus Votos: 25 de 35
  • #9 VIRRIA
    VIRRIA martes, 18 de marzo de 2008, 23:14

    DEBERIAN PONER IMAGENES EN VEZ DE TANTA LETRA QUE NO SIRVE PARA NADA

    Responder >> Attention Minus Plus Votos: 19 de 31
  • #10 ro
    ro lunes, 24 de marzo de 2008, 18:04

    foo solo quiero. ver el termometro.. "dibujado" y con sus partes.. no quiero leer nadaaaaaaaaaaaaaaaaaaaaa chau es una mierda jaa

    Responder >> Attention Minus Plus Votos: 20 de 32
  • #11 silvia
    silvia jueves, 10 de abril de 2008, 01:14

    quiero el termometro dibujado con sus partes

    Responder >> Attention Minus Plus Votos: 39 de 49
  • #12 lucho
    lucho martes, 22 de abril de 2008, 23:29

    Hola soy nuevo tengo 12 años, revisando esta web encontre el tema interesante. Ahora me pregunto ¿es posible hacer un termometro que mida mas de 99ºC?
    ¿que opciones existen de hacer uno que mida hasta 300ºC o mas?
    Esque mi tio es bombero voluntario aca en chile, siempre habla de lo importante de saber la temperatura al interior del incendio cuando trabaja.
    ¿servira?
    creo que se sorprendera si le regalo uno hacho por mi, ya que siempre dice que: es mejor hacerlo que no hacerlo..
    Agradecido
    Luchito.

    Responder >> Attention Minus Plus Votos: 2 de 20
  • #14 <a href="../../foro/member.php?u=6721" target="_self">marshall_260</a>
    marshall_260 miércoles, 23 de abril de 2008, 12:27

    #12Hola Lucho!
    Te felicito por el entusiamo! Efectivamente, es posible hacer un termometro que mida más de 99ºC. Este que mostramos aqui esta pensado para medir temperaturas ambiente, por lo que el rango es pequeño. Pero si utilizas una "termocupla" como sensor, puedes medir hasta 1000 grados!!!
    Se trata de una aplicacion industrial, que no tiene mucho interes para el publico en general (que casi nunca tiene que medir esas temperaturas).
    Si usas google, busca "interfaz medir temperatura termocupla PIC" y vas a encontrar circuitos para tu termometro.

    Saludos.

    Responder >> Attention Minus Plus Votos: 1 de 11
  • #15 <a href="../../foro/member.php?u=7956" target="_self">mateos84</a>
    mateos84 martes, 13 de mayo de 2008, 22:45

    hola que tal!
    tengo una pregunta..
    el programa para este anda bien en el pic16f628?
    y si me podrias dar mas info de este proyecto porque me esta gustando
    y tengo ganas de acerlo como proyecto final
    grax..

    espero la respuestas

    Responder >> Attention Minus Plus Votos: 0 de 6
  • #16 <a href="../../foro/member.php?u=6721" target="_self">marshall_260</a>
    marshall_260 miércoles, 14 de mayo de 2008, 13:09

    Hola nor!
    Funcionará perfectamente, ya que el 16F627A y el 16F628A son identicos, solo difieren en la cantidad de memoria (el 628A tiene el doble). Solo tenlo en cuenta al compilar el programa. Yo mismo he construido varios de estos termometros (para heladeras con vinos que se consumen a una temperatura determinada, por ejemplo) usando uno u otro microcontrolador, sin problemas.

    Suerte con el proyecto!
    Ariel.

    Responder >> Attention Minus Plus Votos: -3 de 5
  • #17 <a href="../../foro/member.php?u=7956" target="_self">mateos84</a>
    mateos84 jueves, 15 de mayo de 2008, 23:23

    que tal?
    ..fuera del tema de temperatura,,
    sabes algo a cerca de hidroponia??
    es ese cultivo en agua..
    necesito poder controlar(automatizar) una bomba que se encargue de
    oxigenar el agua..
    en donde yo ponga cuantas veces al dia funcione y cuanto tiempo..
    bue..
    te pregunto por si sabes..
    sino gracias de todos modos..

    nor//

    Responder >> Attention Minus Plus Votos: -4 de 6
  • #18 <a href="../../foro/member.php?u=3036" target="_self">Alfred0601</a>
    Alfred0601 martes, 20 de mayo de 2008, 05:48

    Excelente Trabajo! muy sencillo pero se usa para una gran aplicacion. se los agradesco por semejante aporte, ojala sigan asi!! estare pendiente de proximas entradas.

    Saludos.

    Responder >> Attention Minus Plus Votos: -1 de 7
  • #19 coralina
    coralina jueves, 22 de mayo de 2008, 04:31

    hola super interesante todos sus comentarios...

    Responder >> Attention Minus Plus Votos: 1 de 7
  • #20 luis guevara
    luis guevara martes, 24 de junio de 2008, 06:19

    #5cuales son las parets del termometro de mercurio y del electronico

    Responder >> Attention Minus Plus Votos: 0 de 4
  • #21 vale
    vale viernes, 27 de junio de 2008, 20:20

    hola como estas?
    linda la pagina, pero lo que necesito son todas las partes del termometro y lamentablemente no las tenes, de todos modos muchas gracias y esta buena la pagina pero no es lo que preciso!
    te animarias a contarme un poco de las partes o hacer un esquema?
    gracias!
    vale...

    Responder >> Attention Minus Plus Votos: -1 de 7
  • #22 luisfiis
    luisfiis sábado, 26 de julio de 2008, 23:50

    me pudrias proporcionar el archvo en hexadecimal tengo problemas en el manejo del mplab

    Responder >> Attention Minus Plus Votos: 0 de 4
  • « «« Anterior1234Siguiente »» »
    Cargando...Cargando...

  • nuevo comentario
    Nombre

    Campo obligatorio

    Email

    Escriba una dirección de correo electrónico con el formato sunombre@ejemplo.com.

    Campo obligatorio

 
Ir arriba