Posts Tagged ‘automatización’
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.
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.
Conectarlo a Arduino es igualmente evidente, sólo hay que respetar el patillaje del elemento.
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:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
/*+--------------------------------------- LECTURA DE VALORES DE TEMPERATURA CON LM35 Autor: JMDelgado Fecha: 04-02-2014 ----------------------------------------+*/ //GLOBAL int analogPin = 0; float temperatura; //SETUP void setup() { Serial.begin(9600); } //LOOP void loop() { temperatura = analogRead(analogPin); //Leemos el valor de temperatura del pin A0 temperatura = 500 * temperatura / 1024; //Transformamos la lectura a valor de temperatura en ºC Serial.print("Temperatura: "); //Imprimimos la temperatura en ºC Serial.print(temperatura); Serial.println(" ºC"); delay(500); //Esperamos medio segundo para imprimir de nuevo } |
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:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
/*+--------------------------------------- LECTURA DE VALORES DE TEMPERATURA CON LM35 Autor: JMDelgado Fecha: 04-02-2014 ----------------------------------------+*/ //GLOBAL int analogPin = 0; float temperatura; //SETUP void setup() { Serial.begin(9600); } //LOOP void loop() { temperatura = map(analogRead(analogPin),0,1023,-55,150); //Mapeamos el rango de lectura 0-1023 a -55,150 Serial.print("Temperatura: "); //Imprimimos la temperatura en ºC Serial.print(temperatura); Serial.println(" ºC"); delay(500); //Esperamos medio segundo para imprimir de nuevo } |
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.
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.