Mostrando entradas con la etiqueta Arduino. Mostrar todas las entradas
Mostrando entradas con la etiqueta Arduino. Mostrar todas las entradas

martes, 9 de febrero de 2016

Tres Relojes

Poco a poco voy introduciendo más cosas en el invento de la caldera:


   La novedad son los dos cuadros de la izquierda, el de los tres relojes (que son los que antes tenía en cuadros separados), incluye además los botones de encender y apagar, que ejecutan el Talkback que cierra o abre el relé del invento que arranca o para la caldera.
  El cuadro de altura Nubes es una estimación teórica de la altura de la base de las nubes basada en la temperatura y el punto de rocio, suponiendo que la distribución del gradiente de temperaturas es lineal desde el suelo y dado que según subimos la temperatura baja, en algún punto la temperatura del aire alcanzará la temperatura del punto de rocio, con lo cual se condensará la humedad.
   Cálculo atura base nubes en Wikipedia, este es el método que he usado, pero he visto otros por ahí, la realidad es que desde que lo he montado, voy siguiendo estos días de invierno y cuando se ve un nivel de nubes bajo, suele amanecer con niebla o nuboso-lluvioso.
   Tampoco se puede relacionar con el  nivel exacto de las nubes, pero como indicador de niebla o nubes bajas, parece válido.

Aquí os dejo la actualización del análisys MATLAB que calcula las variables derivadas (altura base nubes, velocidad de viento, sensación térmica y punto de rocio):


readChannelID = 56115;
TemperatureFieldID = 1;
HumidityFieldID = 2;
tempC = thingSpeakRead(readChannelID,  'ReadKey','------------------------------', 'Fields', TemperatureFieldID, 'Timeout', 20);
url = 'https://api.thingspeak.com/apps/thinghttp/send_request?api_key=--------------------------------';
VViento = urlfilter(url, 'speed');
v=VViento*3.6;
Wch = (13.12+(0.6215*tempC)-(11.37*(power(v,0.16)))+(0.3965*tempC*(power(v,0.16))));
b = 17.62;
c = 243.5;
humidity = thingSpeakRead(readChannelID, 'ReadKey','---------------------------------------', 'Fields', HumidityFieldID, 'Timeout', 20);
gamma = log(humidity/100) + b*tempC ./ (c+tempC);
dewPoint = c*gamma ./ (b-gamma);
display(tempC, 'ºC temp actual');
display(Wch, 'ºC sensacion termica');
display(humidity, '% humedad relativa');
display(VViento, 'viento en m/s');
display(v, 'viento en km/h');
display(dewPoint, 'Dew point ºC');
altnubes=((tempC-dewPoint)/2.5)*304,799;
display(altnubes, 'Altura Base Nubes m.');
writeChannelID = 56115;
writeAPIKey = '-----------------------------';
thingSpeakWrite(writeChannelID, 'Fields',[4,5,6],'Values', [dewPoint,Wch,v], 'Writekey', writeAPIKey);
thingSpeakWrite(71070,'Fields',[2],'Values', [altnubes],'WriteKey','-------------------------------');

miércoles, 3 de febrero de 2016

Las cosas hablan!

Mi caldera me ha escrito un mail.

Hoy me ha llegado un correo de la caldera, como estaba previsto en el programa, al llegar a los 300l en el tanque de Gasoil, envió el siguiente mail:

Caldera calderadecasa@........com a traves de smtpcorp.com                                14:02(hace 7horas)
para mi

El nivel de Gasoil está al 30%
Temp=11,86ºC / Humedad=40%H.R. / Gasoil=293,47litros / Presion atm=1020,0hPa.


Es bastante emocionante a pesar de la sencillez del mensaje, sobre todo cuando no te lo esperas, ya ni me acordaba de que tenía que recibir el mensaje y fue una agradable sorpresa.
Ahora esperemos que llegue otro al llegar a los 200l, a los 100l, a los 75, a los 50... con un mensaje cada vez más dramático.

El resto del invento aquí.


martes, 5 de enero de 2016

Compensación de la presión

  Pues parece que los sensores de presión hay que compensarlos en altura...
  Después de poner el sensor de presión que me había cargado, el BMP180, y ver durante unos días que mide menos que el pronóstico del tiempo, y menos que los sensores de las páginas web con datos meteorológicos, investigando por ahí veo que parece que se compensan en altura.
  Es lógico, sino fuera así, las isobaras de los mapas del tiempo se deformarían sobre tierra firme dependiendo de la altura, según el datasheet:


El sensor se utiliza también para calcular la altura en aviones, drones, por eso al estar situado a 800 metros de altura mide menos que la presión a nivel del mar, despejando la presión a nivel del mar y sustituyendo la altura a la que está instalado el sensor, da que la presión a nivel del mar es igual a la presión medida dividido por 0,90873.

  En cuanto tenga un rato lo implemento en el hardware.

  El resto del montaje aquí

sábado, 12 de diciembre de 2015

Caldera WiFi

  Una caldera de Gasoil debe ser uno de los aparatos menos tecnológicos que quedan, pero como está tan de moda lo de "Internet de las cosas", vamos a darle un poco de inteligencia a la vieja caldera.
  Después de mucho tiempo invertido en el sistema de control de la caldera de Gasoil, varias entradas en este blog (aquí la última parte) y un montón de cacharros conectados para, al final, abandonarlo despues de casi dos años, vuelvo con un nuevo intento.
  Un sistema mucho más sencillo que se basa en una página web "Internet of Things" donde se registran todos los datos recogidos de la caldera y que simplifica muchísimo el sistema.
  En esencia es un microcontrolador con conexión wifi y tres sensores, como no hay cables para la conexión de red, todo es más sencillo y más limpio.
  Se trata de un ESP8266, un micro potente y capaz que en un encapsulado realmente pequeño integra, además de varios de los periféricos de un arduino, la capacidad de acceder a redes WiFi sin conectar hardware adicional, además se puede programar desde el IDE de Arduino, instalando una extensión como se explica aquí, lo que abre un montón de posibilidades.

  Esta historia empezó con el objetivo de tener la posibilidad de poder encender o apagar la caldera en remoto, desde el móvil o desde cualquier sitio con acceso a internet, pero una vez vistas las posibilidades que ofrece el cacharro junto con la página de ThingSpeak, se convirtió en algo mucho más completo, resumen de características:

  • Medición contínua del nivel de combustible, con envío de email automáticamente cuando se alcanzan unos niveles determinados.
  • Medición de:
    • Temperatura exterior.
    • Nivel de humedad relativa exterior.
    • Presión atmosférica.  
  • Capacidad de arranque/paro remoto.
  Además de las capacidades que añade ThingSpeak de registrar todos los datos que se le envien desde el micro, tenemos algunas variables adicionales calculadas en la nube y otras consultadas como la velocidad de viento, así tenemos:
  • Sensación térmica (calculada según la temperatura y la velocidad del viento).
  • Punto de rocío (calculada en base a la temperatura y humedad).
La velocidad del viento la consulto a Openweather.org programando un request ThngHTTP desde la página de Thingspeak.



   Al utilizar ThingSpeak no hace falta ni el reloj en tiempo real ni la tarjeta SD para guardar las lecturas, la plataforma en la nube que es ThingSpeak ya se ocupa de asociar a cada lectura la fecha y la hora correspondiente y de guardar las lecturas, según ellos sin límite de espacio (sí hay un límite en cuanto a la frecuencia de refresco que no puede ser en intervalos menores de 15 segundos).
  Hay un acceso público con algo menos de información aquí, donde podéis consultar datos en tiempo real y ver la temperatura o humedad en la Sierra antes de venir.

  Montaje:


  El ESP-12 (la versión del ESP8266 que estoy usando) es realmente pequeño, tanto que los pines están a menor distancia que la normal en los zócalos de circuitos integrados o de las protoboard, con lo que hay que buscar una forma de adaptarlo, yo utilicé una fila de pines estándar por cada lado soldados con unos trocitos de cobre, de los que se recortan de resistencias o condensadores.
Mide aproximadamente centímetro y medio por dos y medio.

  Una vez tenemos ya los pines  a la distancia estándar, ya lo podemos pinchar en la placa de prototipos y empezar a hacer pruebas:
  

  Como se puede ver en el prototipo hay varios sensores que pueden medir temperaturas, pero sólo se utiliza el BMP-180 para presión y temperatura, después de tener varios funcionando en paralelo, descarté el DS18b20, el DHT se utiliza sólo para la lectura de humedad, ya que su resolución de temperatura es muy pobre.
  El sensor de distancia por ultrasonidos se pone en la boca de llenado del tanque y nos mide la distancia hasta la superficie, con lo que podemos calcular la capacidad restante, está instalado como describía hace más de dos años aquí, y por cierto, está impecable, no le ha afectado ni la corrosión, ni los vapores del gasoil, ni nada parecido como se decía en algún comentario.
  Como este sensor funciona a 5V (el resto funcionan a 3,3V) necesitamos un divisor de tensión en su salida para adaptarlo a los niveles de entrada del ESP, que son las dos resistencias en la linea Echo del sensor.
  Los sensores de temperatura, humedad  y de presión atmosférica están, obviamente, en el exterior, al igual que el del tanque de gasoil que está en el trastero, todo cableado con un único cable UTP.
La placa ya funcionando.

Esquema:




Programa:


El programa está estructurado en funciones, dentro de la función principal, loop, se hace una lectura de cada sensor a través de una función de filtro, llamada medaianamodal, que hace 30 lecturas del sensor correspondiente, las ordena, descarta las de los extremos y calcula la media aritmética de los 10 valores centrales.
 Luego se comprueba el tiempo que ha pasado desde la última actualización y si han pasado más de 3 minutos, se llama a la función que sube los datos a ThingSpeak, además se comprueba si el nivel de combustible llega a unos valores que son:
   500l, envía un correo simplemente diciendo el nivel y las lecturas actuales.
   300l, envía un correo avisando de que el nivel está al 30%.
   200l, envía correo con el nivel al 20%.
   100l, envía correo avisando que queda un 10% y pidiendo repostar.
   50l, envía correo avisando que queda un 5% y pidiendo repostaje URGENTE.

  La rutina para enviar el correo está basada en la de jeanotP1314, en Instructables, Gracias por compartirlo, es un trabajo fantástico.
   Se comprueba si hay algún comando para ejecutar con la función getTalkBack() y se actúa sobre la salida que alimenta el relé.
  Y eso es todo el loop, el resto son funciones para ejecutar las acciones comentadas.

   El programa os lo dejo aquí.

  Hay una parte de programa que vive en la nube, es el programa que consulta la velocidad del viento en Openweathermap.org, calcula los datos de punto de rocio y sensación térmica y graba los datos en los canales correspondientes, es un programa de Matlab Analisys que os dejo en un archivo de texto aquí para copiar y pegar.
  Hay además una temporización, un TimeControl como le llaman en ThingSpeak que ejecuta el análisis cada 20 minutos.
  Por cierto, el cálculo de la sensación térmica está basado en la fórmula que os dejo en esta hoja excell, y que se puede imprimir para ver de un vistazo la sensación térmica.

Programa, esquema y demás aquí.

Conclusión:

  El utilizar una plataforma de almacenamiento en la nube como ThingSpeak, facilita mucho estos proyectos, además tiene varias funcionalidades que se pueden utilizar para ejecutar acciones cuando se den unas condiciones, p.e que la temperatura alcance un valor o cuando pase un tiempo determinado, para analizar los datos, etc.
  Por supuesto el montaje se puede utilizar para otras cosas, en este caso es una caldera pero igualmente se puede controlar un aire acondicionado, se puede utilizar otras salidas adicionales o podemos utilizar otros comandos, como veis en el programa, los comandos son cadenas de texto, no simplemente unos o ceros, con lo cual podemos enviar p.e. un comando que indique la temperatura que queremos y que el sistema funcione como un termostato, o un comando que indique el tiempo que queremos que esté encendida, o... las posibilidades son infinitas.
  Otra cosa que se puede hacer muy fácilmente es que el correo de aviso de nivel de combustible se envie directamente al proveedor para que venga a reponer, o que se genere un correo de alarma en caso de que se den otras circunstancias.
  En fin, se abren un montón de posibilidades.


lunes, 20 de abril de 2015

Autoclave (Horno para curar fibra de carbono)

    Me dice mi amigo Santiago que necesita un sistema de control para poder fabricar piezas de fibra de carbono para sus aviones.
   El proceso de fabricación necesita unas condiciones de presión y temperatura determinadas además de controlar los tiempos de curado, básicamente consiste en preparar los perfiles del ala y forrarlos con las capas de fibra de carbono, resina y kevlar, meterlo en una bolsa de plástico y hacer el vacio para que la presión atmosférica oprima el montaje en todas direcciones.
   Además se sube la temperatura y se mantiene en esas condiciones el tiempo que necesite.
   Hay otras etapas de curado, de endurecimiento y demás, así que el sistema ha de ser capaz de poder ejecutar cada etapa con unos valores diferentes.

Prototipo del control funcionando.
 

martes, 6 de agosto de 2013

Nivel de combustible y consumos

(3ª parte del invento de sistema de control de caldera de gasoil, post aquí)

Aun no he podido dedicar tiempo a la integración de la SD para el registro de datos, pero lso registro de forma manual, una o dos veces al día, con la hora que sí que está en la pantalla LCD y funciona perfectamente.
Los datos recogidos parecen indicar que el funcionamiento del sensor es un poco más estable al ir bajando el nivel del tanque, esto puede estar relacionado con la sensibilidad de la electrónica incluida en el sensor, posiblemente funcionará mejor midiendo tiempos de retorno más largos de los ultrasonidos.

lunes, 5 de agosto de 2013

Lecturas del DataLogger de la caldera

Datos de temperaturas recogidos.

(6ª parte del invento de control de caldera de gasoil, post aquí)

Una vez funcionando el data logger, aun con las limitaciones expuestas en post anteriores, ya podemos empezar a analizar los datos recogidos y casi tomar algunas decisiones.

A pesar de que la resolución de la toma de datos es demasiado alta, y el manejo de la hoja excell se hace muy lento, los datos son realmente buenos y permiten ampliar cualquier parte de la gráfica con gran detalle.


Temperaturas y consumos

 (Parte del invento de control de caldera de gasoil, post aquí)

 Para todos aquellos que me dicen que hace tiempo que no publico nada, sólo puedo decir que últimamente he dedicado mi tiempo a otro invento que me han encargado y que posiblemente tenga aplicación comercial, algún día igual me dejan publicarlo.

  Es cierto que no he avanzado nada con el sistema de control de la caldera, pero sí que sigue funcionando desde la última publicación y al menos sirve como data-logger, de hecho os pongo a continuación un resumen de los datos recogidos:

martes, 18 de junio de 2013

Primera lectura del registro SD

(5ª parte del invento de control de caldera de gasoil, post aquí)

Ya tengo los primeros datos registrados en la tarjeta SD, los dejo en este link, como se puede ver la configuración del muestreo es una locura, para menos de un día de registro hay más de 55.000 líneas de datos.
Ya lo preveía en el anterior post y efectivamente se confirma. hay que reducir la tasa de muestreo y además hay que programar mejor la captura de los datos, el muestreo puede variar en función de otras variables, por ejemplo, no tiene sentido registrar frecuentemente la temperatura del circuito de calefacción mientras no arranque la caldera, después es posible que se necesite una mayor frecuencia de muestreo.
Lo iremos viendo según se avance.
A pesar de que los datos sean muy densos, se pueden analizar y sacar algunas conclusiones:

martes, 12 de febrero de 2013

Integración del módulo tajetas SD

(4ª parte del invento de sistema de control de caldera de gasoil, post aquí)

Esta vez me ha costado más de lo que esperaba, he perdido mucho tiempo con el lector de tarjetas SD, ya que no conseguía hacerlo funcionar.
El poco tiempo del que dispongo lo perdí algunas noches de las últimas dos semanas peleando con el lector de tarjetas que no funcionaba, conseguía identificar la tarjeta, la capacidad disponible, los archivos presentes, pero no grababa ni daba mensaje de error, probé de todo, hasta me puse a investigar dentro de las librerías, que a su vez llaman a otras librerías que se encargan de la comunicación serie y de las que sospechaba, ya que con el único sketch con el que leía la tarjeta, tenía una función para ajustar la velocidad del bus a la mitad.
Al final, después de muchas pruebas, casualmente probé otra tarjeta diferente (una Lexar de 2Gb) que tenía por ahí y funciona perfectamente.

lunes, 28 de enero de 2013

Integración del reloj en el sistema de control

El siguiente paso en el crecimiento del sistema pasa por integrar el reloj para que el sistema pueda saber fecha y hora para cuando recoja los datos pueda registrar el momento en que los toma.
El reloj que he utilizado es el DS1307 un integrado capaz de mantener la hora, fecha, el calendario discrminando los meses de 30 o 31 días, años bisiestos, etc, es capaz de mantener la hora sincronizada durante años sin la alimentación principal y sólo con una pila de botón.
Integra además un bus de comunicaciones serie  I2C para comunicarse con el microcontrolador mediante sólo dos cables, ahorrando así puertos de entrada/salida para poder usarlos luego para sensores.

lunes, 14 de enero de 2013

Sensor de nivel de combustible


 Ayer he incluido algunos resultados de la primera semana de funcionamiento del sensor.
Al final del post.
http://inventosychapuzas.blogspot.com.es/2013/01/sistema-de-control-de-caldera-de-gasoil.html

Día Hora Volumen
07-ene 21:01 941,35
07-ene 22:05 940,83
07-ene 22:30 943,96
08-ene 0:11 940,31
08-ene 7:00 935,08
08-ene 20:00 937,69
08-ene 23:08 930,38
09-ene 7:15 930,9
09-ene 19:20 928,29
09-ene 22:23 927,77
10-ene 7:20 928,29
10-ene 21:00 919,93
10-ene 21:31 923,07
11-ene 7:30 917,84
11-ene 17:30 918,89
11-ene 21:00 918,36
11-ene 21:36 914,18
12-ene 10:00 916,27
12-ene 13:00 918,36
12-ene 13:30 915,75
12-ene 16:20 912,09
13-ene 1:30 908,96
13-ene 10:30 906,87
13-ene 17:00 906,87
13-ene 19:30 908,96

martes, 8 de enero de 2013

Sistema de control de caldera de Gasoil.

Introducción.

Despues de hacer unas modificaciones en la caldera de Gasoil, debido a que se oxidó el acumulador de agua caliente y me vi obligado a cambiarlo, me encontré con que la adaptación del intercambio de calor entre la caldera y el nuevo acumulador no era la mejor, por eso, pensando en regular los termostatos mecánicos que trae la caldera, creo que será mejor diseñar un sistema nuevo que dote de cierta inteligencia al conjunto.
Como se estropeó el acumulador que trae la caldera incorporado, un tanque vitrificado de 100l, se oxidó por dentro y no hacía más que manchar el agua caliente, y después de gastar tiempo y dinero intentando repararlo, cambiando el ánodo de sacrificio, limpiándolo ,etc. Me vi en la tesitura de gastarme el dinero en cambiar el tanque por otro igual, para lo que hay que desmontar la caldera totalmente o instalar un tanque nuevo, de mayor capacidad y con doble serpentín para instalar más adelante un panel solar de A.C.S. y gastarme prácticamente lo mismo, evidentemente opté por la segunda opción.
Una vez terminada la instalación, me encuentro que funciona perfectamente pero parece que le cuesta un poco más calentar el tanque y sin embargo la caldera mantiene una temperatura residual de unos 80ºC, parece un problema de acoplamiento entre la regulación de los termostatos y la transferencia térmica del nuevo serpentín que hay en el nuevo tanque.
Sería posible regular los termostatos mecánicos y adaptarlo un poco mejor, pero ya puestos, porqué no aprovechar la capacidad de un microcontrolador y hacer un uso más eficiente del combustible?
Además así se puede dejar mientras tanto todo el sistema existente con los mismos tarados de termostatos y presostatos por seguridad y en un futuro como un sistema redundante de seguridad.

Iluminación automática eco-suave.


Suave iluminación automática.

Este primer invento que me decido a publicar consiste en un montaje para controlar una iluminación LED mediante un detector de presencia pero controlando el encendido y apagado de forma que se hagan con suavidad.
La idea básica persigue el ahorro energético, la funcionalidad y la comodidad sin olvidar la estética, se compone de una etapa de alimentación de los LED, un led driver, un conjunto de LED de 1W cada uno, un microcontrolador para generar los patrones de subida, mantenimiento y bajada de intensidad luminosa y un detector de presencia para controlar cuando debe activarse.