Mostrando entradas con la etiqueta Programación. Mostrar todas las entradas
Mostrando entradas con la etiqueta Programación. Mostrar todas las entradas

29 nov 2015

Monta tu propio Monitor de Energía por 30€ totalmente personalizable

Un Arduino UNO con TFT de 2,4" monitorizando el consumo de una casa

La crisis continúa, así que hay que ingeniárselas para dejar de enriquecer a las eléctricas, ya que el gobierno, con las subidas y el "peaje al sol", está en clara connivencia con ellas (no sea que se arruinen, se produzcan cortes y tengamos que rescatarlas entre todos... en fin, sin palabras).
Así que para saber si nos conviene bajar la potencia o cambiar a la TDH, o bien hacemos cálculos aproximados, o ponemos otro ICP (para saber si podemos bajar la potencia) o bien nos instalamos un monitor de energía, o, como vamos a ver en esta entrada, nos lo fabricamos nosotros mismos.
IMPORTANTE: Si tienes contador digital, es muy posible que puedas consultar consumos horarios en la web del suministrador y poder ver si te conviene la DH. (Las eléctricas tienen hasta 2018 para cambiar todos los contadores a Digitales con Telegestión, pero puedes pedir que te lo pongan ya por menos de 20€). 

Versión 1.0 del programa ya depurado
Es muy raro que en una vivienda no salga más a cuenta contratar la PVPC con TDH (Tarifa con Discriminación Horaria), ya que por las diferencias de precios y horarios, basta con consumir al menos el 30% por la noche para ahorrar; al 95% de las casas les convendría cambiarse, pasando a ahorrar algo sin cambiar los hábitos, o a ahorrar bastante cambiándolos:


De ahí ha surgido este pequeño proyecto de los ratos libres de un par de semanas, un Monitor de Energía basado en Arduíno, un RTC y una pequeña pantalla TFT, con muchas posibilidades de uso.

No es tan bueno como el "Mirubee Mirubox", que te dice con gráficas y todo tus hábitos de consumo, pero te ahorras 90€ y da la suficiente info... y siempre se puede mejorar el programa y placa Arduino hasta conseguir algo que se le acerque ;).
Cuando terminé el proyecto descubrí que no era el único con buenas ideas... como siempre. Hay muchos proyectos similares, la mayoría obtienen los pulsos del LED de su contador digital...

3 sept 2015

Domótica: Cómo activar un relé por USB en Windows para control de aparatos (persianas, luces, etc)



Aunque lo más económico y versátil actualmente es utilizar Arduino como placa programable, con lo que nos evitamos la conocida falta de fiabilidad de Windows, cuando queremos activar aparatos de forma programada en ocasiones es más sencillo utilizar un relé por USB, bien porque ya tenemos un equipo que ha de estar siempre encendido, o por otros motivos, lo que nos permite en teoría controlar hasta 8 interruptores por cada conector USB en un mismo equipo.

Tenía que sustituir un viejo sistema que utilizaba el puerto LPT1 para el control de una alarma horaria, así que tras investigar adquirí 2 ud. de este Relé controlado por USB en Aliexpress.

Y si queremos controlar varios dispositivos, los hay de hasta 8 canales (relés) en una misma unidad, con 10A de capacidad cada relé, por lo que las posibilidades se amplían bastante.

4 jul 2012

Como utilizar un termistor o sensor de temperatura con Arduino: Código para los NTC/PTC

Comprobando el funcionamiento del programa
Una de las aplicaciones más comunes de una placa electrónica Arduino es el control de temperatura mediante un sencillo Termistor (sensor de temperatura), por ejemplo si queremos activar un ventilador cuando la temperatura sube de cierto valor en un ordenador/motor, o activar mediante un relé un motor circulador en una caldera cuando detectemos que la temperatura está subiendo (y por ende el fuego está encendido), como hacíamos en la caldera casera con los termostatos AKO o Keld, sólo que con Arduino no sólo nos permitirá activar algún dispositivo, sino que nos permitirá mucho más juego, pudiendo controlar y manejar otros parámetros de nuestra caldera, como la temperatura de los humos, o del aire inyectado en la cámara de combustión, etc, como ya nos explicó Oscar González en BricoGeek sobre un proyecto de Xoel de Asturias.
Un termistor (thermistor) no es más que una resistencia cuyo valor varía según varía su temperatura (aunque no de forma lineal); los hay de muchos tipos, pero en esta entrada hablaré de uno NTC (Negativo, cuyo valor de resistencia decrece según crece la temperatura), y que miden diferentes rangos de temperatura, de -50 a +99ºC en este caso. Si queremos medir más temperatura, nos haría falta un termopar tipo K o tipo J, pero eso ya lo veremos más adelante. 
Pero para utilizar un termistor cualquiera que podamos conseguir, no basta con medir el valor de su resistencia y aplicar una regla de tres, porque como hemos dicho, no es un valor lineal (sino curvo), siendo mayores las diferencias de resistencia según aumenta la temperatura, de forma hiperbólica.

Para utilizar un termistor, o sabemos sus valores (datasheet), o tenemos que aproximarlos; según la fórmula SteinHart-Hart, tenemos que hallar un valor, llamado β (Beta) (el llamado valor de temperatura característica del material), y utilizarlo junto con su fórmula para obtener los ºC para un valor dado. Aquí está muy bien explicado, y aquí explicada la fórmula SteinHart-Hart.

Aunque parece difícil de entender para los que se les den mal las matemáticas (como a mí), pero no os preocupéis, que al final tenéis un programa que podéis usar y con sólo cambiar los datos del encabezado (valores de dos puntos, de la resistencia a 25ºC de vuestro termistor y del valor real de 5Vcc de vuestro Arduino y poco más) podréis usarlo en vuestro proyecto sin tener que comprender las fórmulas implicadas, pero prefiero entrar en detalle para los que les gusten tanto como a mí "el por qué de las cosas".

23 jul 2008

Crear base de datos mdb temporal para tablas temporales en MS Access

En las aplicaciones que desarrollo con Access me encuentro que si utilizo el mdb actual para crear tablas temporales el tamaño de archivo crece y crece aunque las tablas se borren (hasta que se realiza un compactado), por lo que es un problema ya que se ralentiza la carga de la aplicación y su funcionamiento.

Tengo algunos formularios cuyos datos pueden proceder de varias consultas y para evitar conflictos de escritura entre varios usuarios trabajo sobre una tabla temporal, permitiendo guardar los resultados y los cambios por usuario.
También es útil utilizarlas para trabajar con matrices de datos; es más rápido y eficiente utilizar una tabla bien indexada que una matriz de datos en memoria.

Buscando que solución adoptar para crear tablas en un mdb externo me encontré con un artículo y código fuente que me resolvía la papeleta totalmente, por lo que antes que hacer la reingieniería del código utilizando la idea, como no iba a mejorarlo sustancialmente lo he utilizado haciendo pequeños cambios (cambios sobre el original con licencia CC):