Medición Precisa de Radiación Solar con Arduino UNO y Shield Ethernet
Componentes y materiales
| Arduino UNO | ×1 |
| Arduino Ethernet Shield 2 | ×1 |
| Célula solar (panel pequeño) | ×1 |
| Resistencia 10 kΩ | ×1 |
Herramientas necesarias
- Multímetro digital
Sobre el proyecto
Introducción
Hay muchos sensores para temperatura, humedad, luz... pero no sensores accesibles para medir radiación solar. La irradiancia solar es la potencia por unidad de área recibida del Sol (radiación electromagnética). Su amplio rango espectral dificulta la medición. El instrumento profesional es el piranómetro (200-800$), inaccesible para aficionados.
Quería estimar la energía solar disponible en mi zona antes de comprar paneles fotovoltaicos. Decidí construir mi propio piranómetro casero, más barato y divertido, con componentes comunes y Arduino para los cálculos.
Montaje
- Identifica los cables de la célula solar (negro = tierra, rojo = vivo) con el multímetro: si el voltaje es positivo, el negro del multímetro está en tierra.
- Conecta tierra de la célula a GND de Arduino. Conecta el vivo al pin analógico A0 a través de la resistencia de 10 kΩ. La resistencia es clave: debe ser mucho mayor que la resistencia interna de la célula para nuestros cálculos.
Las células solares convierten energía solar en eléctrica: más radiación → más voltaje. Usamos esta relación directa para estimar la radiación.
Parámetros necesarios:
- Voltaje de referencia analógico Arduino = 5V (verifica tu placa).
- Voltaje máximo de salida de tu célula solar (varía según panel; en células de calculadora ~5V). Esencial para el cálculo.
- Dimensiones de la célula (longitud y ancho en mm) para calcular área.
Fórmulas:
- Potencia = (lectura_analogica²) / Resistencia
- Área = largo × ancho (en m²)
- Radiación solar = Potencia / Área (W/m²)
Código de ejemplo (Piranómetro básico)
/* Piranómetro casero con Arduino */
#define ANALOG_PIN A0
#define RESISTANCE 10 // Resistencia en kΩ
#define PANEL_LENGTH 60 // Longitud en mm
#define PANEL_WIDTH 20 // Ancho en mm
volatile float Area, Power, Radiation;
void setup() {
Serial.begin(9600);
while(!Serial);
delay(100);
}
void loop() {
Area = PANEL_LENGTH * PANEL_WIDTH / 10000.0; // m²
Power = pow(analogRead(ANALOG_PIN), 2) / RESISTANCE;
Radiation = Power / Area;
char msg[64];
sprintf(msg, "Radiacion solar: %.2f W/m2", Radiation);
Serial.println(msg);
delay(1000);
}
Valores típicos: 150-300 W/m² día normal; hasta 900 W/m² en día soleado o zonas ecuatoriales.
Funcionalidad Ethernet (servidor web)
Monta el Ethernet Shield sobre el Arduino (los pines coinciden). El código crea un servidor web que muestra la radiación en el navegador, actualizando cada 5 segundos.
#include <SPI.h>
#include <Ethernet.h>
// ... (definiciones igual que arriba)
byte mac[] = {0xDE, 0x0D, 0x8E, 0xEF, 0xFE, 0xED};
IPAddress ip(192, 168, 1, 177);
EthernetServer server(80);
void setup() {
Serial.begin(9600);
while (!Serial);
Ethernet.begin(mac, ip);
server.begin();
Serial.print("Servidor en: ");
Serial.println(Ethernet.localIP());
}
void loop() {
Area = PANEL_LENGTH * PANEL_WIDTH / 10000.0;
Power = pow(analogRead(ANALOG_PIN), 2) / RESISTANCE;
Radiation = Power / Area;
char msg[64];
sprintf(msg, "Radiacion solar: %.2f W/m2", Radiation);
EthernetClient client = server.available();
if (client) {
Serial.println("Nuevo cliente");
boolean currentLineIsBlank = true;
while (client.connected()) {
if (client.available()) {
char c = client.read();
if (c == '\n' && currentLineIsBlank) {
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println("Connection: close");
client.println("Refresh: 5");
client.println();
client.println("");
client.println("");
client.print(msg);
client.println("
");
client.println("");
break;
}
if (c == '\n') currentLineIsBlank = true;
else if (c != '\r') currentLineIsBlank = false;
}
}
delay(1);
client.stop();
Serial.println("Cliente desconectado");
}
}
Esquemáticos

Proceso de manufactura
- Medición de temperatura en Raspberry Pi con sensores 1-Wire Maxim y puente I2C DS2482
- Sensor K30 CO₂: Monitorización en tiempo real de la calidad del aire interior
- Facilitar la comunicación sordo‑ciego usando 1Sheeld y Arduino
- Alcancía Inteligente: Controla un Aceptador de Monedas con Arduino Nano
- Controla un LED por Bluetooth con Arduino – Guía DIY paso a paso
- Integración del sensor de huella capacitivo DFRobot (ID809) con Arduino o ESP8266
- Proyecto HMI Interactivo con Nextion, Arduino Mega y Múltiples Sensores
- Brazo Robótico de 6 Grados de Libertad Controlado por Nunchuk con Arduino
- Rastreador Solar V2.0 – Sistema Avanzado DIY de Seguimiento Solar
- Construir una rueda medidora DIY precisa con Arduino Nano y encoder rotativo
- Sistema Radar Compacto con Arduino Nano, Sensor HC-SR04 y Pantalla 1.8"