Actualizado el 23 de Julio del 2017 (Publicado el 17 de Julio del 2017)
758 visualizaciones desde el 17 de Julio del 2017
467,2 KB
6 paginas
Creado hace 20a (10/01/2005)
LinuxFocus article number 315
http://linuxfocus.org
Monitoreo de temperatura con Linux
by Stefan Blechschmidt
<sb(at)sbsbavaria.de>
About the author:
Electricista confirmado, me
encontré a mi mismo en
1990 delante de una
estación de trabajo CAD
para desarrollar una estación
de control y conmutación.
Obviamente, me infecté
por un 'virus' entonces
desconocido.
Translated to English by:
Jürgen Pohl
<sept.sapins(at)verizon.net>
Abstract:
Los servidores Linux funcionan de una manera fiable y segura, no necesitan
ninguna atención especial, funcionan y funcionan y funcionan. Pero qué
ocurre si el pequeño pingüino se calienta. El verano pasado nos lo
mostró: deberÃ-amos dar a nuestro pequeño amigo un sistema de
monitoreo de temperatura. Este artÃ-culo le mostrará cómo instalar uno
con un esfuerzo pequeño, por unos 10 euros.
_________________ _________________ _________________
Los componentes
Brian C.Lane ha escrito un programa para el sensor de temperatura DS1820 de DALLAS Semiconductor. No
es difÃ-cil ensamblar un sistema de monitoreo de temperatura con estos dos componentes y algunas que otras
partes.
Nota:
Brian C.Lane ha modificado su página y eliminó la versión que uso. De todas formas puede bajarlo desde
aquÃ-: digitemp−1.3.tar.gz
Aquellos que deseen usar su versión actual digitem−3.2.0.tar.gz, pueden bajarlo desde
http://www.digitemp.com/software.shtml.
1/6
El sensor
El sensor fue producido en principio por DALLAS Semiconductor quien se ha fusionado a Maxim/Dallas
Semiconductor. De acuerdo con la especificación de datos, el sensor puede medir temperaturas desde
−55°C a 125°C. Los datos de las mediciones son generados como una señal digital con un ancho de 9
bits. Además cada sensor posee un número de identificación de 64 bits, permitiendo interconectar a
través de un bus varios sensores. Es posible utilizar 100 sensores en un bus de una longitud de 300m.
El circuito que estamos presentando aquÃ- funcionará con sólo 10 sensores en un bus de 60m. Actualmente
estoy usando 4 sensores en un bus de unos 12m.
Puede encontrar mas información sobre el sensor en esta hoja de especificaciones.
Quiero añadir que el circuito presentado aquÃ- puede medir sólo hasta 75°C, lo cual debe ser adecuado
para nuestra aplicación.
Los otros componentes
Para poder conectar el sensor a la interfaz serie, necesitamos componentes adicionales. Los encontrará en la
mayorÃ-a de los minoristas de componentes de electrónica, en Internet o −incluso mejor− en la tienda de
electrónica de la esquina.
Cantidad Identificación
1
2
1
1
1
1
1
1
Resistencia
Diodo Schottky 1N5818
1N5228
Diodo Zener
Diodo Zener
1N5234
DS18S20
Sensor
Socket, Serial
RS232C/9
Connector Shell SUB−D/9
Breadboard
Tipo
1,5 k Ohm
alter.Tipo
−−−−−−−−
BAT 43
ZPY 3,9V
ZPY 6,2V
−−−−−−−−
−−−−−−−−
−−−−−−−−
Papel laminado −−−−−−−−
Diseño de la interfaz
2/6
Puesto que el circuito de la interfaz es muy simple, elegÃ- ensamblarlo en un circuito experimental. Me
disculpo por mi trabajo de soldadura :−).
Con un poco de habilidad, los componentes pueden ser instalados en el conector de la interfaz serie.
Nota
En esta página de LinuxNetMag podemos encontrar un artÃ-culo de digitemp, también un foro
describiendo un circuito para mediciones por encima de 75°C. No he comprobado todavÃ-a ese circuito.
El circuito de la interfaz serie
Para nuestro circuito de intefaz sólo se requieren dos contactos del sensor, el conector VDD se puede
eliminar. Simplemente lo corté :−).
3/6
AquÃ- se muestra una tabla del circuito de la tarjeta de la interfaz, los sensores y el interfaz serie.
Descripción DB−25 DB−9 Sensor
DTR
RXD
TXD
GND
4
20
2
3
2
3
1 and 7 5
Data (PIN 2)
GND (PIN 1)
Instalación del software
El software esta disponible como un archivo tar,se puede instalar con el comando:
tar −xvzf digitemp−1.3.tar.gz
en el directorio actual.
En el nuevo directorio instalado digitemp1−3 encontraremos el código fuente, documentación y algunos
scripts en PERL, pero también los binarios digitemp, que se usarán tal como son.
Si se invoca a digitemp sin parámetros obtendremos una visión general de los parámetros.
DigiTemp v1.3 Copyright 1997−99 by Nexus Computing
Usage: digitemp −s [−i −d −l −r −v −t −p −a]
−i Initalize .digitemprc file
−s/dev/ttyS0 Set serial port
−l/var/log/temperature Send output to logfile
−f5 Fail delay in S
−r500 Read delay in mS
−v Verbose output
−t0 Read Sensor #
−a Read all Sensors
−d5 Delay between samples (in sec.)
−n50 Number of times to repeat
−o2 Output format for logfile
−o"output format string" See description below
Logfile formats: 1 = One line per sensor, time, C, F (default)
2 = One line per sample, elapsed time, temperature in C
3 = Same as #2, except temperature is in F
#2 and #3 have the data seperated by tabs, suitable for import
into a spreadsheet or other graphing software.
The format string uses strftime tokens plus 3 special ones for
digitemp − %s for sensor #, %C for centigrage, %F for fahrenheight.
The case of the token is important! The default format string is:
"%b %d %H:%M:%S Sensor %s C: %.2C F: %.2F" which gives you an
output of: May 24 21:25:43 Sensor 0 C: 23.66 F: 74.59
Tal y como nos indica la 'ayuda', los sensores instalados necesitan ser inicializados. Para esto necesitamos
definir la interfaz a la cual se conectará nuestro circuito, asÃ- como los parámetros para la inicialización.
El comando
4/6
digitemp −i −s/dev/ttyS0
consigue eso, en este caso la interfaz del circuito se conecta a la primera interfaz serie.
El software detecta los sensores, aparece un mensaje similar a este:
DigiTemp v1.3 Copyright 1997−99 by Nexus Computing
ROM #0 : 1032724700080086
ROM #1 : 1092214400080089
Nos damos cuenta que el software detectó 2 sensores. Además el archivo .digitemprc se creará en el
directorio actual, contrendrá los datos de los sensores, la interfaz y el formato de salida.
Con el comando ./digitemp −a ahora podremos leer la salida de los sensores. Observe el caracter ./,
aún estamos en un directorio que no es parte de la ruta actual.
Salida de la medición
DigiTemp v1.3 Copyright 1997−99 by Nexus Computing
Sep 24 21:53:35 Sensor 0 C: 37.94 F: 100.29
Sep 24 21:53:38 Sensor 1 C: 10.62 F: 51.129
Adaptando el sistema
Para integrar nuestro programa a nuestro sistema necesitamos hacer algunos ajustes.
Primero, necesitamos copiar los binaros, p.e. digitemp, en un directorio que nos permita la ejecución de
programas sin tener que definir la ruta absoluta. Yo he seleccionado /usr/local/bin/ para esto.
Aquellos que no estén seguros sobre esto pueden encontrar las rutas con echo $PATH. Además, el
archivo .digitemprc con los datos de inicialización necesita copiarse en el directorio del usuario que va
a llevar a cabo las mediciones. Para grabar los datos en un archivo y no en la consola, se debe aplicar la
opción −l[PATH/FILE NAME].
Mediciones automáticas
Ahora necesitamos automatizar nuestras mediciones, el bien probado cron lo hará. Con crontab −u
[USUARIO] −e podemos establecerlo por cada usario. La entrada
0−59/15 * * * * /usr/local/bin/digitemp −a −l/var/log/digitemp.log
inicia digitemp para ejecutar una medición cada 15 minutos y escribirlas en /var/log/digitemp.log.
Con el comando tail /var/log/digitemp.log podemos leer las últimas lÃ-neas de las mediciones.
Si el archivo /var/log/digitemp.log no está siendo generado, por favor compruebe los permisos de
acceso al archivo.
5/6
Comentarios finales
El archivo contiene algunos scripts en PERL para la interpretación gráfica. No los voy a describir aquÃ-.
Estoy barajando la idea de escribir otro artÃ-culo sobre cómo recoger los datos del sensor en la base de datos
MySQL y cómo interpretarlos a través de una interfaz web.
Esto se hará principalmente con PERL, MySQL, y CGIs.
Descarga
•
digitemp−1.3.tar.gz
Enlaces/Referencias
•
•
•
•
•
•
•
•
http://www.fli4l.de/ − Página web de fli4l
http://www.perl.org/ − Página web de PERL
Vista general de DS1820
Hoja de especificaciones de DS18S20
Página de Digitemp de Brian C.Lane
Página web de Brian C.Lane
Página web de Maxim/Dallas Semiconductor
ArtÃ-culo y foro de LinuxNetMag
Webpages maintained by the LinuxFocus Editor team
© Stefan Blechschmidt
"some rights reserved" see linuxfocus.org/license/
http://www.LinuxFocus.org
Translation information:
de −−> −− : Stefan Blechschmidt <sb(at)sbsbavaria.de>
de −−> en: Jürgen Pohl <sept.sapins(at)verizon.net>
en −−> es: Carlos Mayo (homepage)
2005−01−10, generated by lfparser_pdf version 2.51
6/6
Comentarios de: Monitoreo de temperatura con Linux (0)
No hay comentarios