sábado, 16 de abril de 2016

ESTACIÓN METEOROLÓGICA ALIMENTADA CON ENERGÍA SOLAR , ARDUINO Y BLYNK (Parte 1)




Cada día la contaminación es una parte de nuestra vida día a día, por lo que he realizado una pequeña estación meteorológica , para medir algunos parámetros de las condiciones ambientales en donde vivimos.

Las Condiciones medio ambientales.

Esta situación es empeorada por el rápido crecimiento demográfico de las urbes. Los daños o costos ambientales resultantes ponen en peligro la futura productividad de las ciudades y la salud y calidad de vida de sus ciudadanos.
Las ciudades se han vuelto las principales “zonas rojas ambientales“ que requieren urgentemente de atención especial en las evaluaciones ambientales regionales y de proyecto, y en la planificación y administración ambiental a escala regional metropolitana.
Los sistemas y servicios urbanos (p.ej. agua potable, saneamiento, transporte público y caminos) se congestionan cada vez más debido al crecimiento demográfico, comercial e industrial, junto con una mala administración urbana.
Los recursos naturales (agua, aire, bosques, minerales, tierra), vitales para el desarrollo económico de las ciudades y de futuras generaciones, se pierden o malgastan mediante políticas urbanas inapropiadas.
Aumenta constantemente el radio de impacto de las ciudades sobre los recursos que se hallan lejos de sus fronteras. Es más, las áreas urbanas se encuentran inundadas por sus propios desechos y asfixiadas por sus propias emisiones como resultado de políticas y prácticas inadecuadas de control de la contaminación y manejo de los desechos.
Muchos impacto negativos se asocian con las condiciones antes descritas. Los mayores riesgos de salud en muchas ciudades de los países en desarrollo, aún se encuentran ligados al tradicional problema de la eliminación de la excreta.
Al mismo tiempo, existe una creciente preocupación en torno a los riesgos que para la salud representa la modernización debido a los desechos y emisiones tóxicos, traumas (accidentes de tránsito y otros, muertes violentas), y el estrés urbano.
La escala espacial de estos impacto va desde el hogar hasta la comunidad entera, el área urbana y en algunos casos, las regiones más allá. Los impacto de mayor preocupación aún se encuentran a menudo a escala doméstica y comunitaria, y se relacionan con las deficiencias de infraestructura y servicios urbanos.
Los habitantes de los urbes, particularmente los pobres, soportan la mayoría de las condiciones del ambiente deteriorado mediante la pérdida de salud y productividad y la disminución de la calidad de vida.
Se elevan los costos de la explotación de los recursos (p.ej. el costo de nuevas fuentes de agua potable) a medida que se acaban los recursos económicamente asequibles y de alta calidad.

Las emisiones relacionadas con los problemas ambientales regionales y globales, se generan cada vez en las áreas urbanas o como resultado de la demanda urbana (por ejemplo, la urbanización en sí podría ser un factor principal en la demanda mundial de energía durante la próxima generación).

https://es.wikipedia.org/wiki/Problemas_medioambientales_en_%C3%A1reas_urbanas

ESTACIÓN METEOROLÓGICA ALIMENTADA CON ENERGÍA SOLAR , ARDUINO Y BLYNK (Parte 2)


Empezaremos la construcción, de la estructura donde colocare la placa fotovoltáica , y el actuador linear, sera con tubo de PVC , de instalaciones de fontanería , de 32 mm, pongo imágenes para qeu puedan seguir su realización. 









































Actuador Lineal

ESTACIÓN METEOROLÓGICA ALIMENTADA CON ENERGÍA SOLAR , ARDUINO Y BLYNK (Parte 3)

SEGUIDOR SOLAR.

En esta tercera parte , construiremos la parte del programa referente el seguidor solar, que estará compuesto por dos FOTORESISTORES LDR.La LDR es un dispositivo electrónico semiconductor empleado para producir una señal de salida en respuesta a otra señal de entrada (una resistencia) que tiene la propiedad de variar su valor en función de la luz. En presencia de una gran intensidad de luz su resistencia eléctrica es baja, del orden de los 100 Ω. En cambio a oscuras, sin luz, su resistencia es alta, del orden de 10 MΩ.


Una Fotorresistencia está hecha de un semiconductor de alta resistencia. Si la luz que incide en el dispositivo es de alta frecuencia, los fotones son absorbidos por la elasticidad del semiconductor dando a los electrones la energía suficiente para saltar a la banda de conducción. El electrón libre que resulta (y su agujero asociado) conduce la electricidad, de tal modo que disminuye la resistencia.

Un dispositivo fotoeléctrico puede ser intrínseco o extrínseco. En los dispositivos intrínsecos, los únicos electrones disponibles están en la banda de la valencia, por tanto el fotón debe tener bastante energía para excitar un electrón a través de toda la banda prohibida. Los dispositivos extrínsecos tienen impurezas añadidas, que tienen energía de estado más cercano a la banda de conducción, ya que los electrones no han saltar lejos, los fotones con menos energía (es decir, los de mayor longitud de onda y frecuencia más baja) son suficientes para activar el dispositivo


Un seguidor solar es un dispositivo mecánico capaz de orientar los paneles solares de forma que éstos permanezcan aproximadamente perpendiculares a los rayos solares, siguiendo al sol desde el este en la alborada hasta el oeste en la puesta. Los seguidores solares son usados en todas las tecnologías de seguimiento solar: energía solar fotovoltaica convencional, energía solar fotovoltaica de concentración y energía termosolar de concentración.
SEGUIDOR SOLAR
Existen de varios tipos:
  • En dos ejes (2x): la superficie se mantiene siempre perpendicular al sol. Existen de dos tipos:
    • Monoposte: un único apoyo central.
    • Carrousel: varios apoyos distribuidos a lo largo de una superficie circular.
  • En un eje polar (1xp): la superficie gira sobre un eje orientado al sur e inclinado un ángulo igual a la latitud. El giro se ajusta para que la normal a la superficie coincida en todo momento con el meridiano terrestre que contiene al Sol. La velocidad de giro es de 15° por hora, como la del reloj.
  • En un eje azimutal (1xa): la superficie gira sobre un eje vertical, el ángulo de la superficie es constante e igual a la latitud. El giro se ajusta para que la normal a la superficie coincida en todo momento con el meridiano local que contiene al Sol. La velocidad de giro es variable a lo largo del día.
  • En un eje horizontal (1xh): la superficie gira en un eje horizontal y orientado en dirección norte-sur. El giro se ajusta para que la normal a la superficie coincida en todo momento con el meridiano terrestre que contiene al Sol.
Mi seguidor solar sera de un eje polar.

CONTROLADORA PARA EL MOTOR.

La controladora para el actuador es la L298, Este módulo basado en el chip L298N te permite controlar dos motores de corriente continua o un motor paso a paso bipolar de hasta 2 amperios.

El módulo cuenta con todos los componentes necesarios para funcionar sin necesidad de elementos adicionales, entre ellos diodos de protección y un regulador LM7805 que suministra 5V a la parte lógica del integrado L298N. Cuenta con jumpers de selección para habilitar cada una de las salidas del módulo (A y B). La salida A esta conformada por OUT1 y OUT2 y la salida B por OUT3 y OUT4. Los pines de habilitación son ENA y ENBrespectivamente.

PROGRAMA( parte 1) ARDUINO ,SEGUIDOR SOLAR.



Al final del proyecto, pondré un enlace para descargar el código de ARDUINO, totalmente terminado.
Seguidamente podemos ver un vídeo demostrativo como funciona el seguidor.











ESTACIÓN METEOROLÓGICA ALIMENTADA CON ENERGÍA SOLAR , ARDUINO Y BLYNK (Parte 4)

Sensor de humedad y temperatura DTH22.

Prestaciones.  


  • Alimentación: 3.3v – 5.5v, tomando como valor recomendado 5v.
  • Resolución decimal, es decir, los valores tanto para  humedad como para temperatura serán números con una cifra decimal.
  • Tiempo de muestreo: 2 segundos, es decir, sólo nos puede ofrecer datos cada 2 segundos.
En cuanto a sus prestaciones leyendo temperatura:
  • Rango de valores desde -40ºC hasta 80ºC de temperatura.
  • Precisión: ±0.5ºC, ±1ºC como máximo en condiciones adversas.
  • Tiempo de respuesta: <10 segundos, es decir, de media, tarda menos de 10 segundos en reflejar un cambio de temperatura real en el entorno.
Si hablamos de sus prestaciones leyendo humedad relativa:
  • Rango de valores desde 0% hasta 99.9% de Humedad Relativa.
  • Precisión: ±2%RH, a una temperatura de 25ºC.
  • Tiempo de respuesta: <5 segundos, es decir, de media, tarda menos de 5 segundos en reflejar un cambio de humedad relativa real en el entorno. Además, para darse esta afirmación, los tests indicaron que la velocidad del aire debe ser de 1 m/s.
Nuevamente estamos ante un sensor modesto, pero que ya nos es válido para un montón de proyectos caseros y semi profesionales. Siempre y cuando no se requiera de una medición constante ni milimétrica, el sensor DHT22 es un fiel candidato.
Conexionado.
Como siempre que nos encontramos con componentes encapsulados o pre soldados en una placa, una conexión va a estar condicionada por la cantidad de elementos -componentes- que ya forman parte del encapsulado que hemos adquirido. Una conexión totalmente funcional, contando con que nuestro DHT22 no trae ningún elemento extra es la siguiente:








Datasheet pulsar en el enlace.

Programa de ARDUINO. 
Poco a poco vamos completando nuestro código,tenemos el seguimiento solar de nuestro panel, y ahora tenemos implementado el sensor de humedad y temperatura. también tememos en el programa la programación del display oled, pero esto es solo para podernos guiar y ver los resultado.

































jueves, 7 de abril de 2016

CONEXIÓN ARDUINO Y EL AUTÓMATA S7 1200 DE SIEMENS.(Parte 1)





                                       


                    




 El salto de ARDUINO al mundo industrial, ya esta aquí, su bajo coste y su alta prestaciones hace que su introducción en el mundo industrial de la automatización es ya una realidad , claro esta siempre con sus limitaciones , nunca lo podremos comparar con un autómata de alta gama, como SIEMENS , etc. pero si pueden convivir y comunicarse entre si , por lo que puede formar parte de una red de control industrial .











Ardbox es un PLC basado en Arduino para uso a nivel industrial. La mayoría de sensores utilizados en la industria funcionan a 24Vcc. Debido a que ARDUINO funciona a un voltaje de 5Vcc y a 3.3Vcc según modelos, esto en principio imposibilita su utilización en este sector. Por este motivo Industrial Shields ha adaptado la electrónica original de Arduino para que trabaje a 24Vcc y además se ha asegurado que cumpla con los requisitos y normativas industriales.

Para la comunicación entre ARDUINO y S7 1200, hay que trabajar con las bibliotecas de senttimino, es una biblioteca de código abierto, para a comunicación con SIEMENS simatic s7.






Tratare de ir publicando en el blog ,según avance en el proyecto.








CONEXIÓN ARDUINO Y EL AUTÓMATA S7 1200 DE SIEMENS.(Parte 2)






Configuración de S7 1200 ,para comunicarlo con ARDUINO.

Settimino es una biblioteca de Arduino, que consta de tres archivos
1. Settimino.h           
2.             Settimino.cpp
3.             keywords.txt
Depende de la Biblioteca Ethernet suministrado (<Arduino Dir > \ bibliotecas \ Ethernet).
Para usarlo, al igual que otras bibliotecas, es necesario importar en su entorno de programación.
Para ello, siga este excelente tutorial
En cambio, para modificar / ampliar Settimino seguir

S7Client


La clase principal es exportada S7Client que es el objeto que es capaz de conectar y transferir los datos de Arduino a un PLC Siemens (y viceversa).
No hay una instancia global de S7Client , usted tiene que instancia (o ellos) en su dibujo.
Cada cliente utiliza un zócalo (a través de la EthernetClient objeto) para que pueda crear una instancia de hasta cuatro clientes o menos si está instanciadores otro objeto Ethernet (o derivados) en el mismo proyecto.
Este es el límite del chip W5100 Ethernet.
S7Client es una clase, pero como se puede ver en otras bibliotecas, el paradigma orientado a objetos debe ser revisada para Arduino, por la necesidad de tener un tamaño reducido para los programas, por lo que vamos a ver las opciones Settimino.
·       El entorno de Arduino no es multitarea es así, a pesar de que tiene 4 clientes, sólo uno a la vez es la activa.
·       El cliente está totalmente sincronizada, cada puesto de trabajo (transacción) se ejecuta por completo en su llamada a la función.
Dicho esto, se utiliza un búfer de datos global. Se comparte a través de todos los clientes, ya que sólo uno a la vez puede utilizarlo.
Este buffer de datos es capaz de contener solamente una PDU ver la comunicación de Siemens para entender lo que esto significa. Sustancialmente, la PDU es la base "segmento de datos" manejado por el PLC, si es necesario transferir más datos, deben utilizarse los estados de protocolo S7 que las transacciones subsiguientes (cada uno conteniendo una PDU).
La variable PDU es en sí misma global, es decir, es visible desde el boceto.
Por lo que tiene dos opciones para optimizar el uso de memoria.
1.    Si tiene que transferir más de 222 bytes (la carga útil de una PDU) que necesita un buffer externo.
2.    Si desea transferir pequeña cantidad de datos, se puede usar un tampón externo o utilizar directamente la variable PDU.
Veamos un ejemplo (consulte la sintaxis de las funciones S7Client para más información).
Esta es la PDU como se define en Settimino.h :
typedef struct {
   byte H [ Size_WR ];                      Header PDU //
   byte de datos [ Shift + MaxPduSize-Size_WR ];  // PDU de datos
TPDU};
TPDU PDU; // Declaración
El H matriz contiene la cabecera del protocolo, la DATOS matriz contiene la carga útil es decir, los datos en bruto del telegrama.
// La transferencia de datos grande
byte mybuffer [1024]; // 1K matriz

Cliente . ReadArea ( S7AreaDB , 24, 0, 1024, y mybuffer );

Estamos diciendo que el cliente pueda acceder a la base de datos 24, para leer 1024 bytes a partir del primero (0) y ponerlas en mybuffer .


// Transferencia de datos pequeños
Cliente . ReadArea ( S7AreaDB , 24, 0, 64, NULL);
Serial.println (PDU.DATA [0]); // Imprimir el primer byte recibido
Serial.println (PDU.DATA [1]); // imprimir la segunda y así sucesivamente ...

Estamos diciendo que el cliente pueda acceder a la base de datos 24, leer 64 bytes a partir del primero (0) y al dejarlos en el buffer interno.

Del mismo modo para las operaciones de escritura, a poner sus datos en una memoria intermedia o en PDU.DATA [] y luego llamar WriteArea ().

Nota:
El Cliente de forma segura recortar la cantidad de parámetros si se pasa NULL como puntero de memoria intermedia y la cantidad es mayor que el tamaño de PDU.DATA [].

S7Helper


datos de Siemens PLC son Big-Endian, los datos de Arduino son little-endian.
S7Helper es un objeto global que permite extraer los valores de derecha con formato de un memoria intermedia de bytes. El nombre de la instancia es S7 .
Vamos a suponer para cargar la siguiente DB 100.
Descripción: Descripción: C: \ Deploy Settimino 1,0 \ www \ settimino_ref_file \ image001.png

flotar presión ;
largo sin signo Encoder ;
int16_t de componentes ;
// Obtener 10 bytes empezando desde 0
Client . ReadArea ( S7AreaDB , 100, 0, 10, y mybuffer );

Mybuffer contendrá ahora una serie "desordenada" de bytes (El octeto).
Para acceder a los campos podemos escribir:
Presión = S7.FloatAt (y mybuffer , 0);
Codificador = S7.DWordAt (y mybuffer , 4);
Componente = S7.IntegerAt (y mybuffer , 8);

S7Helper tiene dos métodos sobrecargados para cada acceso de campo, por lo
Codificador = S7.DWordAt (4);

se referirá a PDU.DATA [4]

  modelos memoria 


Para optimizar aún más la huella, tres modelos de memoria están disponibles: Pequeño , normal y extendida .
Aunque el modelo extendido funciona muy bien en el Arduino UNO, es posible que desee reducir aún más el uso de la memoria "saltándose" algunas de las características que usted no necesita usar en su proyecto.
Por ejemplo, Settimino cliente puede controlar el PLC ponerlo en modo STOP o RUN, pero si sólo necesita leer / escribir datos, tal vez usted no necesita de estas características.
Para establecer el modelo de memoria que usted necesita simplemente para modificar la directiva al inicio del Settimino.h , escribiendo:

#define PEQUEÑO
o
#define NORMAL
o
#define _EXTENDED

El modelo "pequeña" contiene el conjunto mínimo de funciones para conectarse a un PLC y los datos de lectura / escritura.

El modo "normal" contiene la S7Helper.

Por último, el modelo de "Extended" contiene también las funciones ampliadas restantes.
Por defecto Settimino se libera en forma extendida .
Estas directrices son visibles desde el boceto.
Configuración S7 1200.

En las propiedades de el DB se selecciona la características señalada.




En las propiedades del PLC en la parte de protección se señala así.







Yo configure el DB con las siguientes variable.




Y el OB-1 asi.








Aquí tenemos como se comunica y ARDUINO lee los cambios de variable.