Feb
15

Sensores en Arduino (II): Temperatura

Si en artículo anterior veíamos cómo habíamos trabajado en clase midiendo temperaturas con termistores, veremos ahora qué hemos hecho para trabajar con sensores de temperatura de unión semiconductora tipo LM35. El proceso es enormemente más sencillo, ya que la gran ventaja de este tipo de sensores es su linealidad: en el caso del LM35, 10 mV/ºC. Por contra, sacrifican enormemente su precisión (errores hasta del orden de 0.6ºC), estabilidad y tiempo de respuesta.

En nuestro caso hemos usado los LM35 con encapsulado plástico TO-92. Su hoja de características podemos descargarla directamente de la web del fabricante.

LM35

Su conexionado básico para medir temperaturas entre +2 y +150ºC con Arduino es extremadamente sencillo: su rango de alimentación en Vs varía entre +4 y +20Vcc, y su salida varía del orden de 0V+10mv/ºC.

Conexionado LM35

Conectarlo a Arduino es igualmente evidente, sólo hay que respetar el patillaje del elemento.

LM35 Arduino UNO

El código para Arduino no puede ser más sencillo, aunque es posible recurrir a varias alternativas. La primera de ellas es transformar de forma directa la lectura del valor analógico en A0 a un valor de temperatura. El razonamiento es sencillo: dado que los pines analógicos de Arduino tienen una resolución de 10 bits (1024 valores) con un rango en tensión de 5V, Arduino es capaz de distinguir escalones de tensión de (5/1024). Podemos deducir pues que el valor en V del pin analógico (en este caso A0) será:

Lectura del pin(analogRead) * (5/1014) [V]

Transformándolo a mV, que es el rango del sensor LM35, tendremos:

Lectura del pin(analogRead) * (5/1024) * 1000 [mV]

Si además sabemos del Datasheet de nuestro LM35 que en su configuración básica la tensión en Vout es 10 mV/ºC, podemos concluir que el valor en ºC de la temperatura leída en el pin A0 es:

(Lectura del pin (analogRead) * (5/1024) * 1000) / 10, o lo que es lo mismo:

Lectura del pin (analogRead) * (5/1024) * 100.

Es por eso que podemos plantear:

Otra buena opción consiste en mapear nuestro rango de valores conociendo sus valores mínimos y máximos, aunque en este caso debemos estar seguros de los rangos mínimos y máximos de nuestro sensor en su configuración:

En los próximos días emplearemos algún otro tipo de sensor, crearemos algunas aplicaciones sencillas de control domótico aislado controlado por Ethernet y haremos nuestra propia biblioteca de funciones para los sensores empleados.

Feb
03

Sensores en Arduino (I): Temperatura

En Configuración de Instalaciones Domóticas y Automáticas de 2º curso del CFGS de Sistemas Electrotécnicos y Automatizados estamos ahora dedicando unas horas a la semana a la configuración de sistemas domóticos, para lo cual estamos integrando diferentes tipos de sensores en placas Arduino y elaborando algunas aplicaciones de control domótico en sistemas no propietarios.

Un caso especialmente interesante son los sensores de temperatura, en los cuales nos centraremos especialmente en los termistores NTC y los sensores de unión semiconductora (LM35 y TMP36), dejando fuera los RTD y termopares, que integraremos en sistemas automatizados basados en autómata programable.

En el caso de los termistores NTC, estamos trabajando con termistores NTC de 10K, con un rango de medición de -80ºC a 150ºC (de sobra para las aplicaciones que queremos diseñar).

Termistor NTC 10K

El principal problema que plantean los termistores a la hora de emplearlos en aplicaciones de control de temperatura es sin duda la no linealidad de la curva R/T. Por contra, ofrecen gran sensibilidad, precisión y bajo coste frente a otro tipo de sensores. Su integración en sistemas domóticos, y en este caso en Arduino, exige una modelización de la curva R/T, teniendo en cuenta que en este tipo de sensores, una pequeña variación de la temperatura provoca una gran variación de la resistencia asociada. En este caso, al ser NTC, un aumento de temperatura provoca una gran disminución de la resistencia y viceversa.

El método más corriente para modelizar la curva R/T de los termistores NTC consiste en aplicar la ecuación de Steinhart-Hart, que relaciona la temperatura con la resistencia de la forma:

Steinhart-hart

a,b y c son parámetros específicos de cada tipo de sensor, y por tanto deben ser determinados o especificados por el fabricante. En el caso de sensores NTC como es nuestro caso, es posible simplificar la ecuación de Steinhart-Hart por:

Steinhart-Hart NTC B

donde el parámetro B (beta) es específico de cada material (y además varía con la temperatura), To es la temperatura base de referencia (25ºC o 298.15 ºK) y Ro es la resistencia a esa temperatura de nuestro sensor (10K en nuestro caso).

Naturalmente, para poder modelizar las ecuaciones necesitamos conocer los valores de a, b y c o bien los valores de B, sin lo cual no podemos hacer gran cosa. El fabricante para este caso nos ofrece diversa documentación que será necesario diseccionar para poder averiguar aquello que nos interesa. Para el caso de los termistores de 10K (tipo F), el fabricante nos ofrecen las características de los mismos, dentro de las cuales podemos ver:

Termistores tipo F 10K

es decir, el fabricante ha modificado ligeramente la ecuación de Steinhart-Hart y nos ofrece valores de a, b, c y d para su modelización R/T (que no es la misma que la original y por tanto los coeficientes no son trasladables). Introducir la ecuación ahora en un sketch para Arduino es sencillo. El único problema se presenta a la hora de conocer los valores de Rth/R25, ya que en función de ellos debemos seleccionar a, b, c y d y además hallar Rth.

Para solucionar el primer problema, el fabricante nos proporciona además en el mismo documento una tabla de Rth/R25 a diferentes temperaturas. Podemos ver cómo en el rango entre 0ºC y 50ºC, que es donde utilizaremos nuestro sensor, nos situamos entre 0.36036 y 3.274, por lo que los valores de a, b, c y d nos quedan fijados.

Rth/R25

Para solucionar el segundo problema (hallar Rth), es necesario transformar las variaciones de tensión en el pin analógico de Arduino en variaciones de resistencia. Podemos hacerlo con un montaje sencillo de la siguiente forma:

NTC 10K Arduino

De este modo, analizando de forma sencilla el circuito, podemos concluir que Rth= (1024 x 10000 / (lectura A0)) – 10000. La lectura de A0 variará entre 0 y 1023, de modo que 0 corresponde a 0V en A0, y 1023 corresponde a 5V. De este modo, podemos hallar el valor de Rth en función del valor de lectura en el pin analógico. Introducimos igualmente dicha ecuación en Arduino, de forma que nos queda algo como:

El código anterior nos devolverá cada medio segundo el valor en ºC medido por el termistor NTC 10K.

Es posible no obstante plantear el código empleando para ello el parámetro B para nuestro termistor NTC. En este caso, podemos fijarnos en la tabla que el fabricante nos adjunta para termistores tipo F, donde se detalla el valor de B para cada rango de temperaturas. A pesar de que B no es constante con la temperatura, es posible considerarla más o menos constante por rangos:

Valor de B con la temperatura

De este modo, para nuestro caso podemos considerar su valor como 3895, y plantear ahora el código anterior como:

Obteniendo de esta forma valores muy similares a los obtenidos con el código anterior, por lo que la modelización puede considerarse correcta. En otro artículo plantearemos la simplificación obtenida (con los consiguientes sacrificios) al emplear sensores basados en unión semiconductora como los LM35 o TMP36.

Dic
24

Referencias de multivelocidad desde terminal en Siemens Micromaster 440

Una de las prácticas que estamos llevado a cabo estos días implica definir referencias de multivelocidad con el variador de frecuencia Micromaster 440 de Siemens desde el terminal, teniendo que parametrizar previamente el mismo.

Siemens Micromaster 440

De esta forma, empleando 3 entradas digitales podemos establecer 3 consignas de frecuencia diferentes para 3 velocidades distintas. El proceso es un poco tedioso, ya que hay que echar mano de los parámetros BiCo (Binary Connectors) del variador de frecuencia, y que básicamente permiten programar de forma flexible funciones más o menos complejas, relacionando para nuestro caso sets de parámetros a estados de entradas digitales. El procedimiento viene bastante bien documentado en la página de soporte de Siemens, pero con objeto de proporcionar una pequeña ayuda adicional, podemos hacer un resumen general del procedimiento.

La posibilidad de definir 3 consignas diferentes de frecuencia, cada una de ellas activada mediante una entrada digital del terminal, se basa en los parámetros indexados del MM440 frente al MM420: es posible almacenar diferentes valores de parámetros, cada uno de ellos bajo un índice (In000, In001 e In002), de forma que sea posible cambiar entre los valores de los parámetros ante, por ejemplo, como es nuestro caso, el cambio de una entrada digital.

Hay dos tipos de sets de parámetros en el MM440/MM430: CDS (Command Data Set o Juego de datos de comando) y DDS (Drive Data Set o Juego de datos de accionamiento). Los parámetros indexados pueden pertenecer bien al CDS o bien al DDS. La mayor parte de los parámetros tiene 3 índices diferentes (In000, In001 e In002) que pueden ser habilitados. Por defecto, el índice In000 es el que está activo.

La forma más cómoda de definir valores de índice para los parámetros es programar todos los parámetros para In000, y luego copiar estos valores a los índices In001 e In002, modificando posteriormente los valores deseados.

Para ello se emplean los parámetros P0809 [3] y P0819 [3], que permiten copiar el CDS/DDS de un índice a otro.

En este caso trabajaremos con los parámetros:

Parámetros_1

Parámetros_2

El mejor modo de ver el proceso completo es ilustrarlo mediante un ejemplo. De cara a hacerlo todo más sencillo, lo haremos con el mismo ejemplo de la página de Siemens Support. Supongamos que un motor tiene que funcionar con 3 frecuencias diferentes, cada una de ellas con diferentes rampas de aceleración / deceleración, y que deseamos activar estas 3 frecuencias empleando 3 entradas digitales, por ejemplo:

Entrada Digital Frecuencia Rampa aceleracion Rampa deceleracion
DIN1 20 Hz 10 s 10 s
DIN2 30 Hz 5 s 5 s
DIN3 40 Hz 1 s 1 s

Para poder conseguirlo será necesario definir 3 juegos de parámetros, cada uno de ellos en los 3 índices diferentes de diversos parámetros, cambiando entre ellos según la entrada digital activada. Programaremos en primer lugar los parámetros normales del In000 activados mediante DIN1, y programaremos posteriormente DIN2 y DIN3 mediante configuración BiCo.

1. Supongamos que los valores referidos al motor ya han sido configurados en sus respectivos parámetros y se ha realizado una puesta en marcha rápida. Deberemos ahora establecer el control desde el terminal (P0700[0]=2) y trabajar mediante frecuencias fijas (P1000[0]=3). Podemos también establecer los valores correspondientes a In000:

Parámetro / Valor Comentario
P1120[0]= 10s Rampa de aceleración de DIN1 = 10s
P1121[0]= 10s Rampa de deceleración de DIN1 = 10s
P1001[0]= 20 Hz Frecuencia fija 1 activada mediante DIN1 = 20Hz
P0701[0]= 16 DIN1 configurada como frecuencia fija + RUN

2. Preparamos ahora las entradas DIN2 y DIN3 para configuración BiCo, es decir, para poder descargar en ellas todo el juego de parámetros definido para DIN1, copiando posteriormente el In000 en los In001 e In002. Configuramos para ellos P0702[0] y P0703[0] a 99.

3. A continuación, para operar de la forma más cómoda posible, copiaremos el juego de parámetros definidos con el índice In000 en los índices In001 e In002. Dado que los parámetros frecuencia fija (P1001, P1002, P1003…), tiempo de aceleración (P1120) y tiempo de deceleración (P1121) pertenecen al DDS, copiaremos el juego de parámetros DDS del In000 (Set 0) al In001 (Set 1) e In002 (Set 2) de la siguiente forma:

Copiar DDS del Set 0 al Set 1: realizamos en orden las operaciones…

Parámetro / Valor Comentario
P0819[0]= 0 Copia el set DDS desde el Set 0
P0819[1]= 1 Pega el set DDS en el Set 1
P0819[2]= 2 Inicia la copia (tras realizar la copia vuelve otra vez a 0)

Copiar DDS del Set 0 al Set 2: realizamos en orden las operaciones…

Parámetro / Valor Comentario
P0819[0]= 0 Copia el set DDS desde el Set 0
P0819[1]= 2 Pega el set DDS en el Set 2
P0819[2]= 2 Inicia la copia (tras realizar la copia vuelve otra vez a 0)

4. Como se han configurado las DIN2 y DIN3 como BiCo en el paso 2, es posible ahora configurar en P0820 y P0821 la fuente de órdenes desde la cual se leen los sets 1 y 2 previamente configurados. Deberán aparecer los valores 722.1 y 722.2, de forma que configuramos:

Parámetro / Valor Comentario
P0820 = 722.1 Configuramos DIN2 (722.1) como fuente de órdenes para el Set 1
P0821 = 722.2 Configuramos DIN3 (722.2) como fuente de órdenes para el Set 2

5. Procedemos a configurar las diferentes rampas de aceleración / deceleración:

Parámetro / Valor Comentario
P1120[1] = 5 Aceleración de 5 segundos para In001 (Set 2 activado mediante DIN2)
P1121[1] = 5 Deceleración de 5 segundos para In001 (Set 2 activado mediante DIN2)
P1120[2] = 1 Aceleración de 1 segundos para In002 (Set 3 activado mediante DIN3)
P1121[2] = 1 Deceleración de 1 segundos para In002 (Set 3 activado mediante DIN3)

6. Establecemos por último las frecuencias fijas a las que funcionará el Set 1 y el Set 2:

Parámetro / Valor Comentario
P1001[1] = 30 Hz Frecuencia fija de Set 1 = 30 Hz y posterior RUN
P1001[2] = 40 Hz Frecuencia fija de Set 2 = 40 Hz y posterior RUN

Tenemos ya configurados los sets 1 y 2 de parámetros, activados respectivamente con DIN2 y DIN3, por lo que podemos ya, en función de la DIN activada, hacer funcionar a nuestro motor a consignas de frecuencia distintas, cada una de ellas con sus respectivas rampas de aceleración / deceleración. Es muy importante tener en cuenta que los parámetros CDS pueden cambiarse con el motor funcionando, y su cambio tendrá un efecto inmediato, pero por contra los parámetros DDS (como es nuestro caso) normalmente (con algunas excepciones) sólo pueden ser cambiados con el motor parado. Podemos comprobarlo intentando cambiar de forma directa de DIN1 a DIN2 o DIN3 sin desactivar previamente la entrada de origen.

 

Jul
17

Keep calm and use Evernote

Esto no es un manual de Evernote, ni por supuesto es su objetivo pretender descubrir, con fines didácticos o no, una herramienta que lleva funcionando desde que en 2008 abriese su beta al público. Para esos fines, hay infinidad de documentación infinitamente mejor que lo relatado en este post. A modo de ejemplo, y orientado al ámbito general, aconsejo consultar la serie Evernote de ThinkWasabi, de Berto Pena (imprescindible lectura), la de David Torné  o los artículos de productividad con Evernote de Yoriento. Si lo que se busca es una orientación al ámbito educativo, además de la recopilación de recursos de Evernote for Schools, hay miles de posts con información más exhaustiva, profunda y documentada que la aquí desarrollada, que no es más que la descripción de una experiencia de uso. Podría recomendar miles, pero en esta última categoría vale la pena leer:

  • 12 formas de usar Evernote para profesores y estudiantes (TotemGuard – Recursos TIC para profesores).
  • Evernote para profesores y alumnos (Blog Evernote, por Meritxell Viñas, de nuevo TotemGuard).
  • Evernote en las aulas (Blog del Diario Vasco, por @profesorjano).
  • Advanced Evernote iOS Webinar (excelente Webinar para el uso de Evernote bajo iOS)
  • Evernote for education Webinar (fantástico Webinar para aplicaciones de Evernote al ámbito educativo).
  • (…)

En fin, que sólo con enlaces da de lejos para rellenar más de un post. No tiene sentido pues manualizar de nuevo Evernote (palabro al canto).

Evernote

Mis comienzos con Evernote

Empecé usando Evernote sin tener mucha idea ni de qué representaba o cuál era su filosofía de uso, ni de su posible experiencia de usuario. Más bien como un experimento más de los cientos de servicios a los que uno se suscribe y de los que se queda con no más de un puñado.

Abr
23

Introducción al control PID con S7-1200 de Siemens.

Las últimas semanas he tenido la suerte y el gusto de poder estar en el IES Sáenz de Buruaga de Mérida impartiendo junto con David Pecellín un curso de Introducción a los Autómatas Programables con S7-1200 de Siemens, partiendo desde el control digital y llegando hasta el control analógico y control PID con estos dispositivos, gracias a la colaboración del fantástico departamento de Instalación y Mantenimiento del centro y a la magnífica organización de la asesoría de FP y Tecnología del CPR de Mérida.

Parte del material generado es una adaptación del generado anteriormente para el curso del IES San Roque de hace poco, pero parte es completamente nuevo. Quizá lo más interesante son los fundamentos del control PID y la implementación para estos dispositivos, que aquí dejo por si a alguien le puede resultar útil.

Un placer trabajar así, y espero que se repita la experiencia con el próximo curso de Arduino.

Feb
17

Autómatas Programables en las Instalaciones Térmicas y de Fluidos

Recientemente he estado dando un curso en el IES San Roque de Badajoz organizado por el CPR de Badajoz sobre Introducción a los Autómatas Programables y su aplicación a las Instalaciones Térmicas con tecnología Siemens (s7-200 y S7-1200) y he tenido que elaborar material para el curso que dejo aquí colgado por si a alguien le puede interesar para sus clases.

Siempre es un placer volver por allí y pasar buenos ratos en unos magníficos departamentos de Instalación & Mantenimiento y Energía & Agua, a pesar tristemente del equipo directivo de centro.

Mil gracias a los compañeros y asistentes que han hecho este material posible.

Nov
03

Otro curso más y nueva organización

Ha llegado a tal punto el abandono del blog que esta entrada dista casi un año de la anterior. No tenía tal sensación de dejadez. A pesar de no haber actualizado el mismo y no haber creado nuevos posts en tan largo periodo, la actividad en otros canales ha sido más que movida: nuevos blogs de aula como el de TermOeficiencia que usé el curso pasado en el IES San Roque, nuevos videotutoriales en YouTube y Vimeo y el sinfín de preparación de materiales de cada curso. Y por fin, la finalización de materiales de Formación Profesional a Distancia que ha sido un auténtico calvario.

Después de dos años en el IES San Roque de Badajoz más dedicado a las instalaciones térmicas y de fluidos y a la eficiencia energética, cambio este año al IES Javier García Téllez de Cáceres con el experimento de los Ciclos Formativos Bilingües. No es en absoluto sarcasmo. Es un experimento de verdad. Nos movemos con unas directrices muy laxas con las que cada uno de los 6 centros de Formación Profesional que este año empiezan la experiencia brega como puede. Supongo que como con todo lo que empieza, al cabo del tiempo uno depura las técnicas, los contenidos y las formas. Y se adapta. Pero la inercia al movimiento de una maquinaria formada por profesores y alumnos es grande, y cuesta coger el movimiento. La experiencia de estos dos primeros meses de curso es muy buena, pero la base de partida es baja, y costará subir los peldaños.

De momento, dado que durante este curso y supongo que el que viene me encontraré lejos de mi casa laboral, seguir empleando el portal FPSanRoque como alojamiento de contenidos para módulos profesionales alejados de la automatización y sistemas electrotécnicos se me antoja poco menos que inadecuado. De todas las alternativas que he barajado, la más adecuada por razones de funcionamiento de centro / departamento es seguir empleando esta página como referencia personal y reservar un portal (en este caso elaborado de forma muy simple con Joomla 2.5) para el alojamiento de contenidos para los alumnos. El alojamiento de contenidos no implica necesariamente la centralización de los mismos, pero sí la construcción de un índice de referencia para ellos. El espacio de almacenamiento en servidor es escaso, por lo que muchos de ellos los distribuiré entre mis en exceso explotados Dropbox, 4Shared y por supuesto, Evernote, al que reservo un post especial.

Hemos creado por último un Blog especial para el grupo Bilingüe del CFGS de Sistemas Electrotécnicos y Automatizados que trataremos de emplear colaborativamente como blog de aula, con el tratamiento especial que requiere la característica particular del ciclo formativo. Veremos qué tal resulta.

Nov
13

Novedades de curso

Tengo el blog más que abandonado, pero no por falta de publicaciones o materiales sino más bien por diversificación de los mismos. Hasta este curso he estado usando esta página como apoyo permanente para la docencia diaria de los ciclos formativos, pero me encontraba con el problema de la excesiva concentración de materiales muy distintos: unos permanentes, otros pasajeros y muchos de ellos, a pesar de estar categorizados, excesivamente mezclados.

Este curso, como experimento piloto, he empezado a segmentar. El primer paso ha sido crear un blog específico de aula para mis módulos profesionales (este curso, Eficiencia Energética de Instalaciones en el 2º curso del CFGS de Eficiencia Energética y Energía Solar Térmica, Procesos de Montaje de Instalaciones en el 1er curso del mismo ciclo, y Sistemas Electrotécnicos y Automáticos en el 1er curso del CFGS de Mantenimiento de Instalaciones Térmicas y de Fluidos). La experiencia está siendo positiva: me permite separar los contenidos permanentes (apuntes, exámenes, prácticas y materiales diversos) del portal estático de FP del IES San Roque, de los materiales dinámicos (artículos de actualidad, apoyos o aclaraciones a elementos conceptuales, videos, etc).

 Blog Termoeficiencia

Respecto a esto último aún me quedaba pendiente el asunto de los videos y videotutoriales. Hasta ahora he estado empleando Vimeo para los segundos (fundamentalmente por las limitaciones de 15 min de Youtube que misteriosamente, al menos a mí, me han desaparecido), pero tenía el problema de los videos de apoyo a módulos muy procedimentales como Procesos de Montaje de Instalaciones en los que de momento, aunque tenemos en preparación videos propios, me estoy basando en la gran cantidad de material de calidad que aglutina YouTube. Por fin he podido ordenar por listas de reproducción compartidas todos los materiales útiles en mi canal, aunque aún queda trabajo por hacer.

YouTube

Otro asunto que quedaba pendiente (y de momento, aunque insistiré en ello, sigue quedando), es la disposición de un sistema general de gestión (algo así como Rayuela, pero gestionado por nosotros y con nuestras particularidades) para que nuestros alumnos tengan un portal específico para cada uno de ellos donde puedan emplear herramientas compartidas como calendario, correo específico, etc. Naturalmente, montar esto y alojarlo en nuestro propio dominio no es tarea de un día ni de un mes, por lo que como opción principal opté por el registro con nuestro dominio en Google Apps y posteriormente intenté hacer un upgrade a Google Apps for Education, pero a pesar de haberlo hecho varias veces, de momento, nada. Ni una mísera respuesta de Google, por lo que si alguien ha conseguido algo y lo usa habitualmente en su centro, le agradecería que me descubriera el misterio. Al menos, con la puesta en funcionamiento de páginas de Google+ he podido crear la nuestra propia. Algo es algo.

Google Apps

Por último, por fin tenemos Moodle propio, aunque aún debo encontrar tiempo para ponerlo en servicio. Ahora que parece que por fin la tortura de preparación de materiales para la FPaD llega a su fin (o al menos eso parece), retomaré las tareas pendientes.

Ago
17

Aperitivos

Llevo mucho tiempo sin postear nada en el blog y hay mucho que contar. Con el inicio de curso ya acercándose tengo muchas pequeñas cosas preparadas e investigadas para ser puestas en marcha, pero de momento valgan de aperitivo dos pequeños tutoriales grabados como orientaciones para el módulo de Representación Gráfica de Instalaciones que estoy preparando para la FPaD. Ahí van…

Órdenes básicas de edición de entidades de dibujo en DraftSight:

Imagen de previsualización de YouTube

Textos en AutoCAD para Mac:

Imagen de previsualización de YouTube

Menos mal que en YouTube ya han cambiado la horrorosa licencia estándar por la posibilidad de licencia CC. No es configurable, pero menos da una piedra…

Jun
25

( )

Ningún profesor debería sobrevivir a sus alumnos. Un fuerte abrazo para Miguel Ángel esté donde esté.

Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Spain
This work by José María Delgado is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Spain.