Hardware > Bricometeo
Sensor de Radiacion Solar en w/m^2
jmviper:
Bueno pues he experimentado un poco más con el sensor de radiación....
Tenía sin estrenar todavía el conversor analógico-digital MCP3008 (de 2 a 4€ de precio) y no había probado el bus SPI de la Orange Pi por el que funciona y ayer me puse a hacer el cableado en el protoboard.
No hice que funcionase. Siempre me daba la salida 0 V hasta que esta tarde, a punto de tirar la toalla *-* *-* se me ha ocurrido sacar el MCP del protoboard y volverlo a meter a ver si es que no hacía buen contacto y voilá, se ha puesto a leer los valores de salida.
Después con un script Python que en encontrado por la web y adaptándolo a las lecturas de salida del sensor ya lo tengo funcionando en la Orange Pi.
Resultado:
root@orangepipc:/home/jmviper# ./spi_test.py
--------------------------------------------
Radiacion : 115 W/m2 0.1935 V
--------------------------------------------
Radiacion : 115 W/m2 0.1935 V
--------------------------------------------
Radiacion : 115 W/m2 0.1935 V
--------------------------------------------
Radiacion : 115 W/m2 0.1935 V
--------------------------------------------
Radiacion : 115 W/m2 0.1935 V
--------------------------------------------
Radiacion : 115 W/m2 0.1935 V
--------------------------------------------
Radiacion : 113 W/m2 0.1903 V
--------------------------------------------
Radiacion : 115 W/m2 0.1935 V
--------------------------------------------
Radiacion : 113 W/m2 0.1903 V
--------------------------------------------
Radiacion : 113 W/m2 0.1903 V
--------------------------------------------
Radiacion : 21 W/m2 0.0355 V
--------------------------------------------
Radiacion : 23 W/m2 0.0387 V
--------------------------------------------
Radiacion : 121 W/m2 0.2032 V
--------------------------------------------
Radiacion : 708 W/m2 1.1839 V
--------------------------------------------
Radiacion : 119 W/m2 0.2 V
Ha sido con el flash del móvil encendido y estando quieto las lecturas eran muy estables como se ve y cuando lo he acercado y alejado se ve el cambio.
La salida saca la conversión a W/m2 y los V. Comprobado con el multímetro no hay más de un 1% de diferencia en la salida de la tensión.
Falta probarlo en la Raspi (que no tengo) que también tiene bus SPI para quien se atreva y anime. Si se mira el GPIO y los pines del SPI junto con este integrado o su hermano menor el MCP3004 (el MCP3008 tiene 8 entradas analógicas y el MCP3004 tienen 4).
El pero es que tendría que ser la instalación por cable (4 hilos) si se quiere la Raspi en la casa y el sensor a como mucho 20 ó 30 m y según la documentación de la Davis cada 30 m de cable salen 45 W/m2 de más en la lectura.
spyfly:
--- Cita de: Ubik en 11 de Marzo de 2018, 22:08:01 ---Más de 100,00 euros en factura, te lo paran seguro, o casi seguro.
Si el vendedor declara menos de 100 euros, . . .. no hay aranceles.
La tienda es Scaled Instruments, Responden bien a los correos, . . . . vamos que se pueden comentar cosas con el propietario.
Yo lo tengo claro, si puedo, este verano voy a pedir uno, el sensor UVA, tendrá que esperar que es más pasta.
El próximo proyecto es montar la cámara web, que creo que tengo ya todo menos tiempo de montarla y luego el sensor de radiación.
--- Fin de la cita ---
Si necesitas ayuda con la cam me dices... y he montado ya varias... de hecho tengo una publicada en www.meteo.spyfly.es
spyfly:
Parece que mi sensor solar de davis si que funciona... y era tema de la roseta que no hacia buen contacto con el rj11 del sensor. Tal vez cuestion de comprarme otra roseta nueva y listo...
spyfly:
Ya lo he montando en una roseta nueva y parece que ya conecta bien con el arduino. Además he cambiado la filosofía, he aplicado el teorema de si mahoma no va a la montaña la montaña va a mahoma.
Es decir, el arduino se colgaba al enviar por FTP el archivo si había mala conexión a internet. En una conexión de fibra estable no habia problema pero con el ADSL malísimo que tengo se paraba cada 2 por 3. Así que ahora lo que he echo es que el arduino simplemente lo que hace es publicar el dato en una web propia, así no depende de internet para nada, y si hay desconexiones ni se entera.
Y en el servidor donde tengo cumulus voy a poner un script que cada minuto se conecte a esa web, la lea, saque le html y la suba al servidor web. Este programa ya lo controlo para que si no hay internet o hay cortes no se pare nunca... y vaya sobrescribiendo el archivo en en el FTP siempre con el nuevo valor de la web que lee del arduino. En este programa pondré un control de errores de lectura de web del arduino etc...
Por ahora solo tengo el servidor web del arduino, si quereis el código aqui lo teneis. Se puede montar sin problema en un arduino normal con una tarjeta ethernet. Vamos que unos 9€ ambas cosas en aliexpress.
spyfly:
#include <SPI.h>
#include <Ethernet.h>
#include <avr/wdt.h>
#include <Arduino.h>
/* Parametros internos del programa */
int resetPin = 2;
float PanelValue;
volatile float Watt;
EthernetClient client;
EthernetClient dclient;
EthernetServer server(80);
/* Parametros de Red */
IPAddress ip( 172, 16, 1, 37 );
IPAddress gateway( 172, 16, 1, 1 );
IPAddress subnet( 255, 255, 255, 0 );
/* ----------------------------------------------------------------------------------------- */
/* ----------------------------------------------------------------------------------------- */
/* ----------------------------------------------------------------------------------------- */
void setup()
{
/* Pasamos el boton reset de arduino al reset de la ethernet */
digitalWrite(2, HIGH);
delay(200);
pinMode(2, OUTPUT);
/* Conexion a la tarjeta Ethernet*/
Serial.begin(9600);
digitalWrite(10,HIGH);
/* Levantamos la tarjeta Ethernet */
byte mac[] = { 0x90, 0x89, 0x88, 0x88, 0x89, 0x92 }; // Se puede cambiar la mac del arduino cambiado estos parametros
/* Levantamos la tarjeta Ethernet con IP Fija */
Ethernet.begin(mac, ip, gateway, gateway, subnet);
/* Levantamos la tarjeta Ethernet con IP por DHCP
if (Ethernet.begin(mac) == 0)
{
Serial.println("Ha fallado el DHCP a la hora de asignar IPs");
digitalWrite(resetPin, LOW);
}
*/
digitalWrite(10,HIGH);
delay(200);
/* Impresion por pantalla de la IP */
Serial.print("IP del arduino ");
Serial.println(Ethernet.localIP());
/* Iniciamos el Servidor Web */
server.begin();
}
/* ----------------------------------------------------------------------------------------- */
/* ----------------------------------------------------------------------------------------- */
/* ----------------------------------------------------------------------------------------- */
void loop()
{
PanelValue = analogRead(A0)*5.0/1023;
Serial.print("Voltaje medido: ");
Serial.print(PanelValue);
Serial.println(" V.");
Watt = PanelValue/0.00167;
Serial.print(Watt);
Serial.println(" W/M2 ");
EthernetClient client = server.available();
if (client)
{
boolean currentLineIsBlank = true;
while (client.connected())
{
if (client.available())
{
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println("Connection: close");
client.println("Refresh: 5"); // Refresco automático de la web para el navegador web
client.println();
client.println("<!DOCTYPE HTML>");
client.println("<html>");
// output the value of each analog input pin
client.println("
");
client.print("Radiacion Solar: ");
client.print(Watt);
client.print(" W/m^2");
client.println("
");
client.println("</html>");
break;
}
}
}
delay(1);
client.stop();
Ethernet.maintain();
}
Navegación
[#] Página Siguiente
[*] Página Anterior
Ir a la versión completa